PluginBench
Skill
Official
Pass
Audit score 90

react18-dep-compatibility

github/awesome-copilot

How to install react18-dep-compatibility

npx skills add https://github.com/github/awesome-copilot --skill react18-dep-compatibility
Claude Code
Cursor
Windsurf
Cline
Full instructions (SKILL.md)

Source of truth, from github/awesome-copilot.


name: react18-dep-compatibility description: 'React 18.3.1 and React 19 dependency compatibility matrix.'

React Dependency Compatibility Matrix

Minimum versions required for React 18.3.1 and React 19 compatibility.

Use this skill whenever checking whether a dependency supports a target React version, resolving peer dependency conflicts, deciding whether to upgrade or use legacy-peer-deps, or assessing the risk of a react-router v5 to v6 migration.

Review this matrix before running npm install during a React upgrade and before accepting an npm dependency conflict resolution, especially where concurrent mode compatibility may be affected.

Core Upgrade Targets

PackageReact 17 (current)React 18.3.1 (min)React 19 (min)Notes
react17.x18.3.119.0.0Pin exactly to 18.3.1 for the R18 orchestra
react-dom17.x18.3.119.0.0Must match react version exactly

Testing Libraries

PackageReact 18 MinReact 19 MinNotes
@testing-library/react14.0.016.0.0RTL 13 uses ReactDOM.render internally - broken in R18
@testing-library/jest-dom6.0.06.0.0v5 works but v6 has React 18 matcher updates
@testing-library/user-event14.0.014.0.0v13 is sync, v14 is async - API change required
jest27.x27.xjest 27+ with jsdom 16+ for React 18
jest-environment-jsdom27.x27.xMust match jest version

Apollo Client

PackageReact 18 MinReact 19 MinNotes
@apollo/client3.8.03.11.03.8 adds useSyncExternalStore for concurrent mode
graphql15.x16.xApollo 3.8+ peer requires graphql 15 or 16

Read references/apollo-details.md for concurrent mode issues and MockedProvider changes.

Emotion

PackageReact 18 MinReact 19 MinNotes
@emotion/react11.10.011.13.011.10 adds React 18 concurrent mode support
@emotion/styled11.10.011.13.0Must match @emotion/react version
@emotion/cache11.10.011.13.0If used directly

React Router

PackageReact 18 MinReact 19 MinNotes
react-router-domv6.0.0v6.8.0v5 → v6 is a breaking migration - see details below
react-router-dom v55.3.4 (workaround)❌ Not supportedSee legacy peer deps note

react-router v5 → v6 is a SEPARATE migration sprint. Read references/router-migration.md.

Redux

PackageReact 18 MinReact 19 MinNotes
react-redux8.0.09.0.0v7 works on R18 legacy root only - breaks on concurrent mode
redux4.x5.xRedux itself is framework-agnostic - react-redux version matters
@reduxjs/toolkit1.9.02.0.0RTK 1.9 tested against React 18

Other Common Packages

PackageReact 18 MinReact 19 MinNotes
react-query / @tanstack/react-query4.0.05.0.0v3 doesn't support concurrent mode
react-hook-form7.0.07.43.0v6 has concurrent mode issues
formik2.2.92.4.0v2.2.9 patched for React 18
react-select5.0.05.8.0v4 has peer dep conflicts with R18
react-datepicker4.8.06.0.0v4.8+ added React 18 support
react-dnd16.0.016.0.0v15 and below have R18 concurrent mode issues
prop-typesanyanyStandalone - unaffected by React version

Conflict Resolution Decision Tree

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 Rules

Only use --legacy-peer-deps when:

  • The package has no React 18 compatible release
  • The package is actively maintained (not abandoned)
  • The conflict is only a peer dep declaration mismatch (not actual API incompatibility)

Document every --legacy-peer-deps usage in a comment at the top of package.json or in a MIGRATION.md file explaining why it was necessary.

Related skills

More from github/awesome-copilot and the wider catalog.

REreact18-enzyme-to-rtl logo

react18-enzyme-to-rtl

Official
github/awesome-copilot

Provides exact Enzyme → React Testing Library migration patterns for React 18 upgrades. Use this skill whenever Enzyme tests need to be rewritten - shallow, mount, wrapper.find(), wrapper.simulate(), wrapper.prop(), wrapper.state(), wrapper.instance(), Enzyme configure/Adapter calls, or any test file that imports from enzyme. This skill covers the full API mapping and the philosophy shift from implementation testing to behavior testing. Always read this skill before rewriting Enzyme tests - do not translate Enzyme APIs 1:1, that produces brittle RTL tests.

687 installsAudited
REreact18-legacy-context logo

react18-legacy-context

Official
github/awesome-copilot

Provides the complete migration pattern for React legacy context API (contextTypes, childContextTypes, getChildContext) to the modern createContext API. Use this skill whenever migrating legacy context in class components - this is always a cross-file migration requiring the provider AND all consumers to be updated together. Use it before touching any contextTypes or childContextTypes code, because migrating only the provider without the consumers (or vice versa) will cause a runtime failure. Always read this skill before writing any context migration - the cross-file coordination steps here prevent the most common context migration bugs.

693 installsAudited
REreact18-lifecycle-patterns logo

react18-lifecycle-patterns

Official
github/awesome-copilot

Provides exact before/after migration patterns for the three unsafe class component lifecycle methods - componentWillMount, componentWillReceiveProps, and componentWillUpdate - targeting React 18.3.1. Use this skill whenever a class component needs its lifecycle methods migrated, when deciding between getDerivedStateFromProps vs componentDidUpdate, when adding getSnapshotBeforeUpdate, or when fixing React 18 UNSAFE_ lifecycle warnings. Always use this skill before writing any lifecycle migration code - do not guess the pattern from memory, the decision trees here prevent the most common migration mistakes.

690 installsAudited
REreact18-string-refs logo

react18-string-refs

Official
github/awesome-copilot

Provides exact migration patterns for React string refs (ref="name" + this.refs.name) to React.createRef() in class components. Use this skill whenever migrating string ref usage - including single element refs, multiple refs in a component, refs in lists, callback refs, and refs passed to child components. Always use this skill before writing any ref migration code - the multiple-refs-in-list pattern is particularly tricky and this skill prevents the most common mistakes. Use it for React 18.3.1 migration (string refs warn) and React 19 migration (string refs removed).

690 installsAudited
REreact19-concurrent-patterns logo

react19-concurrent-patterns

Official
github/awesome-copilot

Preserve React 18 concurrent patterns and adopt React 19 APIs (useTransition, useDeferredValue, Suspense, use(), useOptimistic, Actions) during migration.

807 installsAudited
REreact19-source-patterns logo

react19-source-patterns

Official
github/awesome-copilot

Reference for React 19 source-file migration patterns, including API changes, ref handling, and context updates.

777 installsAudited