mcpField
R
react-19

react-19

github.com/fusengine開発3452 回インストール4 日前に更新
リポジトリ

react-19 について

react-19 は、React 開発者向けにコアのフックと機能を解説するスキルです。React 19.3 の API、従来のフック、React 18 からの変更に加え、実装パターンやテンプレートを扱います。

主な機能

  1. 01React 19 のフックと API
  2. 02従来のフックのリファレンス
  3. 03React 18 から 19 への移行情報
  4. 04コンポーネントと性能のテンプレート

活用シーン

  1. 01コンポーネントに適したフックの選択
  2. 02フォームと楽観的更新の実装
  3. 03React 18 プロジェクトの移行
  4. 04性能パターンの確認

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/fusengine/agents --skill react-19

インストール後、Claude Code で/react-19を入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
actions-api.md
activity-component.md
context-improvements.md
custom-hooks-patterns.md
document-metadata.md
hooks-improved.md
lazy-loading.md
migration-18-19.md
new-hooks.md
profiling.md
react-compiler.md
ref-as-prop.md
resource-loading.md
suspense-patterns.md
references/templates/
action-form.md
activity-tabs.md
custom-hooks.md
document-metadata.md
effect-patterns.md
error-boundary.md
external-store.md
lazy-components.md
optimistic-update.md
profiling-devtools.md
ref-as-prop.md
ref-patterns.md
resource-loading.md
state-patterns.md
use-context.md
use-deferred-value.md

詳細

React 19.3 のフックと機能を網羅しています。レンダー中に Promise/コンテキストを読み取る `use()`、UI を即座に更新する `useOptimistic`、フォームのアクション状態を管理する `useActionState`、子コンポーネントから保留状態を取得する `useFormStatus`、リアクティブでないエフェクトコールバックのための `useEffectEvent`、状態を維持したまま UI を非表示/表示する `Activity` コンポーネント、`` と `addTransitionType` によるアニメーション、Fragment refs、ブラウザー専用レンダリングのための `use(browser())`(19.3 の新機能)、さらに React Compiler による自動メモ化(手動の `useMemo`/`useCallback` はほぼ不要になります)を扱います。

従来のすべてのフック(useState、useEffect、useLayoutEffect、useRef、useImperativeHandle、useMemo、useCallback、useId、useSyncExternalStore)と、React 18 から 19 への破壊的変更(forwardRef の代わりに ref をプロパティとして渡す、<Context.Provider> の代わりに <Context value={}> を使う)についても説明します。これは React のフックと機能に関する中核スキルです。グローバル状態については react-state、フォームについては react-forms、SOLID アーキテクチャのルールについては solid-react を参照してください。

React 19.3 のコア機能

エージェントのワークフロー(必須)

実装を始める前に、必ず 3 つのエージェントを並列で起動します。それぞれ name を指定して Agent を 1 回ずつ呼び出してください。

  1. fuse-ai-pilot:explore-codebase - 既存の React パターンとコンポーネント構造を分析します
  2. fuse-ai-pilot:research-expert - Context7/Exa を使って React 19.3 の最新ドキュメントを確認します
  3. mcp__context7__query-docs - use()、useOptimistic、useActionState、Activity のパターンを確認します

実装後、検証のために fuse-ai-pilot:sniper を実行します。


React 19.3 の新機能

19.3 で安定版となりました(react/react-dom 19.3.0、2026-09-09。@types/react 19.3 には TypeScript ≥ 5.6 が必要です)。

API目的ガイド
<ViewTransition>ブラウザーの View Transition API を使って、表示/終了/更新/共有をアニメーション化しますreferences/suspense-patterns.md
addTransitionType(type)別のアニメーションを選択できるよう、Transition にタグを付けますreferences/suspense-patterns.md
<Fragment ref>ラッパーの <div> を使わずに FragmentInstance(イベント、フォーカス、オブザーバー)を利用できますreferences/ref-as-prop.md
use(browser(reason?)) (react-dom)ブラウザー専用レンダリング。サーバーではサスペンドし、HTML では Suspense のフォールバックを表示しますreferences/new-hooks.md

動作の変更:Transition が相互にエンタイトルしなくなりました。StrictMode ではハイドレーション中にエフェクトが 2 回呼び出されます。use() の条件付きブロック解除時に DEV 警告が表示されます → references/migration-18-19.md。

RSC のセキュリティ: react-server-dom-* は 19.2.4 以上が必要です(CVE-2025-55182 の RCE と、その後に発見された DoS の CVE に対応)。19.2.7 以上または 19.3.0 を推奨します。

新しいフック(19.0~19.2)
フック目的ガイド
use()レンダー中に Promise/コンテキストを読み取りますreferences/new-hooks.md
useOptimistic楽観的 UI 更新references/new-hooks.md
useActionStateフォームのアクション状態を管理しますreferences/new-hooks.md
useFormStatusフォームの保留状態(子コンポーネント)references/new-hooks.md
useEffectEventエフェクト内でリアクティブでないコールバックを使いますreferences/new-hooks.md

→ 詳しい使い方については references/new-hooks.md を参照してください。


従来のフック(React 18 以降)

State フック
フック目的ガイド
useStateコンポーネントのローカル状態references/use-state.md

→ グローバル状態については react-state スキルを参照してください。

Effect フック
フック目的ガイド
useEffect描画後の副作用references/use-effect.md
useLayoutEffect描画前に DOM を同期しますreferences/use-layout-effect.md
Ref フック
フック目的ガイド
useRefDOM へのアクセス、変更可能な値references/use-ref.md
useImperativeHandleref API をカスタマイズしますreferences/use-imperative-handle.md
パフォーマンス関連のフック(Compiler 使用時はまれ)
フック目的ガイド
useMemoコストの高い値をメモ化するreferences/use-memo.md
useCallback関数をメモ化するreferences/use-callback.md

→ React Compiler がほとんどのメモ化を自動的に処理します

その他のフック
フック目的ガイド
useIdアクセシビリティのための一意な IDreferences/use-id.md
useSyncExternalStore外部ストアのサブスクリプションreferences/use-sync-external-store.md
カスタムフック

→ パターンについては references/custom-hooks-patterns.md を参照してください → 実装については references/templates/custom-hooks.md を参照してください


Activity コンポーネント(19.2 以降で安定)

状態を維持したままコンポーネントを表示/非表示にします:

<Activity mode={isActive ? 'visible' : 'hidden'}>
  <TabContent />
</Activity>

→ パターンについては references/activity-component.md を参照してください

React Compiler(1.0 安定版、2025 年 10 月 — React 17 以降)

自動メモ化により、useMemo/useCallback はほとんど不要になります:

  • ビルド時の最適化
  • ほとんどの場合、手動でのメモ化は不要です
  • インタラクションが 2.5 倍高速になったとの報告があります

→ 詳細については references/react-compiler.md を参照してください


クイックリファレンス

use() フック
// Read promise in render (with Suspense)
const data = use(dataPromise)

// Read context conditionally (unique to use())
if (condition) {
  const theme = use(ThemeContext)
}

→ references/templates/use-promise.md を参照してください

useOptimistic
const [optimisticValue, setOptimistic] = useOptimistic(actualValue)
// Update UI immediately, server updates later

→ references/templates/optimistic-update.md を参照してください

useActionState
const [state, action, isPending] = useActionState(asyncFn, initialState)

→ references/templates/action-form.md を参照してください

useEffectEvent(19.2 以降で安定)
const onEvent = useEffectEvent(() => {
  // Always has fresh props/state, doesn't trigger re-run
})

useEffect(() => {
  connection.on('event', onEvent)
}, []) // No need to add onEvent to deps

→ references/new-hooks.md を参照してください


18 からの破壊的変更

変更移行方法
ref はプロパティですforwardRef のラッパーを削除します
Context はプロバイダーです<Context value={}> を直接使用します
useFormStatusreact-dom からインポートします

→ references/migration-18-19.md を参照してください


ベストプラクティス

  1. データ取得:useEffect ではなく、use() + Suspense を使用します
  2. フォーム:Actions + useActionState を使用します
  3. 楽観的 UI:即時のフィードバックには useOptimistic を使用します
  4. タブ/モーダル:状態を維持するには <Activity> を使用します
  5. エフェクトイベント:非リアクティブなコールバックには useEffectEvent を使用します
  6. メモ化:React Compiler に任せます

テンプレート

React 19 のパターン
テンプレート用途
templates/action-form.mduseActionState を使用したフォーム
templates/optimistic-update.mduseOptimistic のパターン
templates/activity-tabs.mdActivity コンポーネントのタブ
templates/use-promise.mdpromise で use() を使用
従来のフックパターン
テンプレート用途
templates/state-patterns.mduseState のパターン
templates/effect-patterns.mduseEffect のパターン
templates/ref-patterns.mduseRef のパターン
templates/custom-hooks.mdカスタムフックの実装
templates/external-store.mduseSyncExternalStore のパターン
パフォーマンスパターン
テンプレート用途
templates/virtual-list.md大規模なリスト向けの TanStack Virtual
templates/lazy-components.mdコード分割と遅延読み込み
templates/profiling-devtools.mdReact DevTools Profiler

パフォーマンス

仮想化

大規模なリスト(100 件以上)では、表示されている項目だけをレンダリングします。 → references/virtualization.md を参照してください

遅延読み込み

バンドルサイズを小さくするため、ルートやサイズの大きいコンポーネントをコード分割します。 → references/lazy-loading.md を参照してください

プロファイリング

DevTools Profiler でレンダリングのパフォーマンスを測定します。 → references/profiling.md を参照してください

注: React Compiler(1.0 以降)では、useMemo/useCallback の手動最適化はほとんど不要です。まずプロファイリングを行い、最適化が必要かどうかを確認してください。


使用禁止(古いパターン)

  • ❌ データ取得に useEffect を使用 → use() + Suspense を使用します
  • ❌ forwardRef を使用 → ref をプロパティとして使用します
  • ❌ <Context.Provider> を使用 → <Context value={}> を使用します
  • ❌ あらゆる箇所で手動で useMemo/useCallback を使用 → Compiler に任せます
  • ❌ 状態を維持するために条件付きレンダリングを使用 → <Activity> を使用します

コメント