mcpField
R
react18-dep-compatibility

react18-dep-compatibility

github.com/github开发40.5k764 次安装今天更新
代码仓库

关于 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. 01规划 React 版本升级
  2. 02解决 npm peer dependency 冲突
  3. 03评估 react-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 依赖冲突解决方案之前,请先查看此矩阵,尤其是在并发模式兼容性可能受到影响的情况下。

核心升级目标

PackageReact 17(当前)React 18.3.1(最低)React 19(最低)Notes
react17.x18.3.119.0.0为 R18 orchestra 精确锁定到 18.3.1
react-dom17.x18.3.119.0.0必须与 react 版本完全一致

测试库

PackageReact 18 最低React 19 最低Notes
@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 需要 jest 27+ 配合 jsdom 16+
jest-environment-jsdom27.x27.x必须与 jest 版本一致

Apollo Client

PackageReact 18 最低React 19 最低Notes
@apollo/client3.8.03.11.03.8 为并发模式添加了 useSyncExternalStore
graphql15.x16.xApollo 3.8+ peer 要求 graphql 15 或 16

阅读 references/apollo-details.md 了解并发模式问题和 MockedProvider 变更。

Emotion

PackageReact 18 最低React 19 最低Notes
@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

PackageReact 18 最低React 19 最低Notes
react-router-domv6.0.0v6.8.0v5 → v6 是破坏性迁移 - 详见下文
react-router-dom v55.3.4(变通方案)❌ 不支持参见 legacy peer deps 说明

react-router v5 → v6 是一个独立的迁移冲刺。 阅读 references/router-migration.md。

Redux

PackageReact 18 最低React 19 最低Notes
react-redux8.0.09.0.0v7 仅在 R18 legacy root 上可用 - 在并发模式下会失效
redux4.x5.xRedux 本身与框架无关 - react-redux 版本才是关键
@reduxjs/toolkit1.9.02.0.0RTK 1.9 已针对 React 18 测试

其他常用包

PackageReact 18 最低React 19 最低Notes
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 dep 冲突
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 dep 声明不匹配(而非实际 API 不兼容)

记录每一次 --legacy-peer-deps 的使用,在 package.json 顶部的注释或 MIGRATION.md 文件中说明为何有必要使用。

评论

支持 Markdown