ページ内ナビ
概要
RelayはReact componentの近くにGraphQL data requirementを宣言し、compilerがquery artifactを生成、runtimeがnetwork request・normalized store・cache・mutation・optimistic updateを管理するdata frameworkです。UIとdata dependencyをcolocateしつつ、application全体のfetch/cache policyを統一できます。
特徴と向いている用途
公式資料に基づく紹介・実機未検証 · 内容確認日:
主な特徴
GraphQL fragment/queryをviewの近くへcolocateする
componentが必要とするfieldをGraphQLとして宣言し、Relay compilerがそれらを検証・変換してruntime artifactへ生成します。
出典:[1]
runtimeがnormalized store・fetch policy・mutationを管理する
Relay runtimeはnetwork、record store、query execution、mutation、subscription、optimistic update等を提供し、server responseをnormalized cacheへ統合します。
React hooksでquery・fragment・mutationをcomponentへ接続する
react-relayはuseLazyLoadQuery、useFragment、useMutation、RelayEnvironmentProvider等を公開し、generated artifactとruntime environmentをReact treeへ接続します。
出典:[3]
向いている用途
大規模React applicationでGraphQL data dependencyとcache policyを一貫管理したい場合に向く
viewごとのdata requirementをcolocateしつつ、network request aggregation、normalized cache、mutation consistencyをframeworkへ任せたいproductに適します。
出典:[1]
導入前の確認
react-relay 21.0.1はReact 16.9〜19をpeer rangeに持つ
package metadataはReact ^16.9.0 || ^17 || ^18 || ^19をpeer dependencyとして定義し、relay-runtime 21.0.1へ依存します。
出典:[2]
21.0.1はpublished npm bundleへのTypeScript定義欠落を修正する
21.0.0で新しいTypeScript definition fileがnpm bundleに含まれない問題があり、21.0.1で修正されています。TypeScript利用時は21.0.1以降を優先できます。
出典:[5]
参考にした公式資料
- [1]Relay v21.0.1 README(2026-10-05)
- [2]react-relay 21.0.1 package metadata(2026-10-05)
- [3]react-relay 21.0.1 public exports(2026-10-05)
- [4]relay-runtime 21.0.1 public exports(2026-10-05)
- [5]Relay v21.0.1 release(2026-10-05)
- [6]Relay MIT license(2026-10-05)
編集部からの補足
RelayはGraphQL schemaとcompiler生成artifactを前提にするため、単純なfetch wrapperより導入構成が重いframeworkです。schema/build pipelineまで含めて評価してください。
3ステップで試す
- 1
Relay 21.0.1を固定して導入する
一時npm projectへReact bindingとruntimeを同一versionで固定して導入します。
demo=$(mktemp -d "${TMPDIR:-/tmp}/relay.XXXXXX") && cd "$demo" && npm init -y >/dev/null && npm install --save-exact react-relay@21.0.1 relay-runtime@21.0.1 react@19.2.0 - 2
package versionを確認する
react-relayとrelay-runtimeが同じreview対象versionであることを確認します。
test "$(node -e "console.log(require('react-relay/package.json').version+'/'+require('relay-runtime/package.json').version)")" = '21.0.1/21.0.1' - 3
主要React hook/runtime APIを確認する
GraphQL serverへ接続せず、React hookとnormalized runtimeの主要API exportを確認します。
test "$(node -e "const R=require('react-relay'); const RT=require('relay-runtime'); console.log(['useLazyLoadQuery','useFragment','useMutation','RelayEnvironmentProvider'].every(k=>k in R)&&['Environment','Network','RecordSource','Store'].every(k=>k in RT))")" = 'true'
成長
成長の推移 · 直近30日
18,965 Stars
推移データを蓄積中です。
開発アクティビティ
直近90日・週次
- Commit(直近30日)
- 116
- Open PR
- 227
開発アクティビティを蓄積中です。
Built with
カテゴリとタグ
カテゴリ
GitHubデータ
関連情報
関連記事を投稿するこのOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。
あわせて探訪
- Axios109,284 Stars
共通タグ 2件 · 共通カテゴリ 1件
browser・Node.jsでinterceptor・adapter・timeout・cancellationを共通化するPromise-based HTTP client
JavaScript - Svelte88,287 Stars
共通タグ 2件 · 共通カテゴリ 1件
componentをcompile時に効率的なJavaScriptへ変換し、runesでreactive UIを記述する
JavaScript - Express69,520 Stars
共通タグ 2件 · 共通カテゴリ 1件
routingとmiddlewareを薄いHTTP layerとして組み合わせ、Node.js API/Web backendを構築するframework
JavaScript - React Router56,590 Stars
共通タグ 2件 · 共通カテゴリ 1件
URL・nested route・navigation・data flowをReact applicationへ組み込むmulti-strategy router
TypeScript - styled-components41,099 Stars
共通タグ 2件 · 共通カテゴリ 1件
template literalでscoped CSS・theme・SSRをReact componentへ統合するCSS-in-JS library
TypeScript - tRPC40,690 Stars
共通タグ 2件 · 共通カテゴリ 1件
サーバーとクライアントの型をつなぎ、API変更の食い違いを開発中に見つける
TypeScript
情報の誤りを報告
掲載内容に誤りや古い情報があればお知らせください。