react18-dep-compatibility

Par github · awesome-copilot

Matrice de compatibilité des dépendances React 18.3.1 et React 19.

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

Matrice de compatibilité des dépendances React

Versions minimales requises pour la compatibilité avec React 18.3.1 et React 19.

Utilisez cette skill lors de la vérification si une dépendance supporte une version cible de React, de la résolution de conflits de peer dependencies, du choix entre une mise à jour ou l'utilisation de legacy-peer-deps, ou de l'évaluation du risque d'une migration react-router v5 vers v6.

Consultez cette matrice avant d'exécuter npm install lors d'une mise à jour React et avant d'accepter une résolution de conflit de dépendance npm, en particulier où la compatibilité du mode concurrent peut être affectée.

Core Upgrade Targets

Package React 17 (current) React 18.3.1 (min) React 19 (min) Notes
react 17.x 18.3.1 19.0.0 Épinglez exactement à 18.3.1 pour l'orchestre R18
react-dom 17.x 18.3.1 19.0.0 Doit correspondre exactement à la version react

Testing Libraries

Package React 18 Min React 19 Min Notes
@testing-library/react 14.0.0 16.0.0 RTL 13 utilise ReactDOM.render en interne - cassé en R18
@testing-library/jest-dom 6.0.0 6.0.0 v5 fonctionne mais v6 a des mises à jour de matchers React 18
@testing-library/user-event 14.0.0 14.0.0 v13 est sync, v14 est async - changement d'API requis
jest 27.x 27.x jest 27+ avec jsdom 16+ pour React 18
jest-environment-jsdom 27.x 27.x Doit correspondre à la version jest

Apollo Client

Package React 18 Min React 19 Min Notes
@apollo/client 3.8.0 3.11.0 3.8 ajoute useSyncExternalStore pour le mode concurrent
graphql 15.x 16.x Apollo 3.8+ peer requires graphql 15 ou 16

Lisez references/apollo-details.md pour les problèmes de mode concurrent et les changements de MockedProvider.

Emotion

Package React 18 Min React 19 Min Notes
@emotion/react 11.10.0 11.13.0 11.10 ajoute le support du mode concurrent React 18
@emotion/styled 11.10.0 11.13.0 Doit correspondre à la version @emotion/react
@emotion/cache 11.10.0 11.13.0 Si utilisé directement

React Router

Package React 18 Min React 19 Min Notes
react-router-dom v6.0.0 v6.8.0 v5 → v6 est une migration avec rupture - voir détails ci-dessous
react-router-dom v5 5.3.4 (contournement) ❌ Non supporté Voir note legacy peer deps

react-router v5 → v6 est un sprint de migration SÉPARÉ. Lisez references/router-migration.md.

Redux

Package React 18 Min React 19 Min Notes
react-redux 8.0.0 9.0.0 v7 fonctionne sur la racine legacy R18 uniquement - cassé en mode concurrent
redux 4.x 5.x Redux lui-même est agnostique au framework - la version react-redux compte
@reduxjs/toolkit 1.9.0 2.0.0 RTK 1.9 testé contre React 18

Other Common Packages

Package React 18 Min React 19 Min Notes
react-query / @tanstack/react-query 4.0.0 5.0.0 v3 ne supporte pas le mode concurrent
react-hook-form 7.0.0 7.43.0 v6 a des problèmes de mode concurrent
formik 2.2.9 2.4.0 v2.2.9 patchée pour React 18
react-select 5.0.0 5.8.0 v4 a des conflits de peer dep avec R18
react-datepicker 4.8.0 6.0.0 v4.8+ a ajouté le support React 18
react-dnd 16.0.0 16.0.0 v15 et versions antérieures ont des problèmes de mode concurrent R18
prop-types any any Standalone - non affecté par la version React

Arbre de décision pour la résolution de conflits

npm ls montre un conflit peer pour le package X
         │
         ▼
Le package X a-t-il une version supportant React 18 ?
  OUI → npm install X@[min-compatible-version]
  NON ↓
         │
Le package est-il critique pour l'app ?
  OUI → vérifiez les issues GitHub pour une branche/fork React 18
      → vérifiez si le mainteneur a une PR ouverte
      → dernier recours : --legacy-peer-deps (documentez pourquoi)
  NON → envisagez de supprimer le package

Règles de --legacy-peer-deps

N'utilisez --legacy-peer-deps que lorsque :

  • Le package n'a aucune version compatible React 18
  • Le package est activement maintenu (pas abandonné)
  • Le conflit est seulement une déclaration de peer dep (pas une incompatibilité d'API réelle)

Documentez chaque utilisation de --legacy-peer-deps dans un commentaire en haut de package.json ou dans un fichier MIGRATION.md expliquant pourquoi c'était nécessaire.

Skills similaires