mcpField
R
react18-dep-compatibility

react18-dep-compatibility

github.com/github開発40.5k764 回インストール1 日前に更新
リポジトリ

react18-dep-compatibility について

React 開発者向けの依存関係互換性リファレンスで、一般的なパッケージが React 18.3.1 と React 19 に対応する最低バージョンを示します。アップグレード計画、peer dependency の競合解消、React Router 移行リスクの評価に役立ちます。

主な機能

  1. 01React 18 と 19 の最低バージョン表
  2. 02主要なテスト・状態管理パッケージを網羅
  3. 03React Router のバージョン互換性情報
  4. 04peer dependency 競合の解決指針
  5. 05legacy-peer-deps の使用条件

活用シーン

  1. 01React バージョンのアップグレード計画
  2. 02npm の peer dependency 競合解消
  3. 03react-router v5 から v6 への移行評価

インストール

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

$npx skills add https://github.com/github/awesome-copilot --skill react18-dep-compatibility

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

同梱ファイルreferences/apollo-details.mdreferences/router-migration.md

詳細

React 依存関係の互換性マトリックス

React 18.3.1 および React 19 との互換性に必要な最小バージョンです。

依存関係が対象の React バージョンをサポートしているか確認する場合、peer dependency の競合を解決する場合、アップグレードするか legacy-peer-deps を使うか判断する場合、または react-router v5 から v6 への移行リスクを評価する場合は、常にこのスキルを使用してください。

React のアップグレード中に npm install を実行する前、および npm の依存関係競合の解決方法を採用する前に、特にコンカレントモードの互換性に影響する可能性がある場合は、このマトリックスを確認してください。

アップグレードの主な対象

パッケージReact 17(現在)React 18.3.1(最小)React 19(最小)備考
react17.x18.3.119.0.0R18 オーケストレーションでは 18.3.1 に正確に固定してください
react-dom17.x18.3.119.0.0react のバージョンと完全に一致させる必要があります

テストライブラリ

パッケージReact 18 の最小バージョンReact 19 の最小バージョン備考
@testing-library/react14.0.016.0.0RTL 13 は内部で ReactDOM.render を使用するため、R18 では動作しません
@testing-library/jest-dom6.0.06.0.0v5 も動作しますが、v6 には React 18 向けの matcher 更新があります
@testing-library/user-event14.0.014.0.0v13 は同期型、v14 は非同期型のため、API の変更が必要です
jest27.x27.xReact 18 では jsdom 16 以降とともに jest 27 以降を使用します
jest-environment-jsdom27.x27.xjest のバージョンと一致させる必要があります

Apollo Client

パッケージReact 18 の最小バージョンReact 19 の最小バージョン備考
@apollo/client3.8.03.11.03.8 でコンカレントモード向けに useSyncExternalStore が追加されました
graphql15.x16.xApollo 3.8 以降の peer dependency は graphql 15 または 16 を要求します

コンカレントモードの問題と MockedProvider の変更については、references/apollo-details.md をお読みください。

Emotion

パッケージReact 18 の最小バージョンReact 19 の最小バージョン備考
@emotion/react11.10.011.13.011.10 で React 18 のコンカレントモードがサポートされました
@emotion/styled11.10.011.13.0@emotion/react と同じバージョンにする必要があります
@emotion/cache11.10.011.13.0直接使用する場合

React Router

パッケージReact 18 の最小バージョンReact 19 の最小バージョン備考
react-router-domv6.0.0v6.8.0v5 → v6 は破壊的変更を伴う移行です。詳しくは以下を参照してください
react-router-dom v55.3.4(回避策)❌ 未サポートレガシー peer deps に関する注記を参照してください

react-router v5 → v6 は別個の移行スプリントです。 references/router-migration.md をお読みください。

Redux

パッケージReact 18 の最小バージョンReact 19 の最小バージョン備考
react-redux8.0.09.0.0v7 は R18 のレガシールートでのみ動作し、コンカレントモードでは動作しません
redux4.x5.xRedux 自体はフレームワークに依存しません。重要なのは react-redux のバージョンです
@reduxjs/toolkit1.9.02.0.0RTK 1.9 は React 18 に対してテストされています

その他の一般的なパッケージ

パッケージReact 18 の最小バージョンReact 19 の最小バージョン備考
react-query / @tanstack/react-query4.0.05.0.0v3 はコンカレントモードをサポートしていません
react-hook-form7.0.07.43.0v6 にはコンカレントモードの問題があります
formik2.2.92.4.0v2.2.9 には React 18 向けの修正が適用されています
react-select5.0.05.8.0v4 は R18 との peer dependency 競合があります
react-datepicker4.8.06.0.0v4.8 以降で React 18 のサポートが追加されました
react-dnd16.0.016.0.0v15 以前には R18 のコンカレントモードに関する問題があります
prop-types任意任意単独で動作するため、React のバージョンの影響を受けません

競合解決の判断ツリー

npm ls shows peer conflict for package X
         │
         ▼
Does package X have a version that supports React 18?
  YES → npm install X@[min-compatible-version]
  NO  ↓
         │
Is the package critical to the app?
  YES → check GitHub issues for React 18 branch/fork
      → check if maintainer has a PR open
      → last resort: --legacy-peer-deps (document why)
  NO  → consider removing the package

--legacy-peer-deps のルール

--legacy-peer-deps を使用するのは、次の場合に限ります。

  • パッケージに React 18 互換のリリースがない
  • パッケージが現在も保守されている(放棄されていない)
  • 競合が peer dependency の宣言の不一致に限られ、実際の API 互換性の問題ではない

--legacy-peer-deps の使用はすべて、必要だった理由を説明するコメントを package.json の先頭か MIGRATION.md ファイルに記録してください。

コメント