react / react/react-native

react-native@0.85.3 peerDependencies allow react@19.2.6 but embedded renderer requires exact 19.2.3

Ouverte
#57,079 2 commentaires 4 réactions 0 personnes assignées Voir sur GitHub

Personne n'a encore pris cette issue.

Needs: Attention Needs: Repro
Langage dominant
C++
Étoiles
127k
Forks
25.3k
Merge moyen
1 j 23 h
PR mergées (30 j)
4

Description

Description

react-native@0.85.3 declares this peer dependency:

{
  "react": "^19.2.3"
}

That allows package managers to install react@19.2.6, but the embedded React Native renderer in the same package appears to require react@19.2.3 exactly at runtime.

In Libraries/Renderer/implementations/ReactNativeRenderer-dev.js from react-native@0.85.3:

var isomorphicReactPackageVersion = React.version;
if ("19.2.3" !== isomorphicReactPackageVersion)
  throw Error(
    'Incompatible React versions: The "react" and "react-native-renderer" packages must have the exact same version. Instead got:\n  - react:                  ' +
      (isomorphicReactPackageVersion +
        "\n  - react-native-renderer:  19.2.3\nLearn more: https://react.dev/warnings/version-mismatch")
  );

The renderer internals also report:

version: "19.2.3",
rendererPackageName: "react-native-renderer",
reconcilerVersion: "19.2.3"

So the install-time contract says react@19.2.6 is acceptable, while the runtime contract rejects it.

Steps to reproduce
  1. Install react-native@0.85.3.
  2. Install react@19.2.6 and react-dom@19.2.6.
  3. Launch a React Native app.
Expected behavior

The package metadata should prevent installing a React version that the embedded renderer will reject at runtime, or tooling/docs should make this exact-version requirement explicit enough to catch before app launch.

For example, one of these would avoid the mismatch:

  • narrow react-native@0.85.3's peerDependencies.react to the exact renderer-compatible version, 19.2.3, or
  • add install/doctor guidance that react must exactly match the embedded react-native-renderer version, not just satisfy the semver peer range.
Actual behavior

react@19.2.6 satisfies ^19.2.3, but the app fails at runtime because the embedded react-native-renderer is 19.2.3.

Environment

Observed from package contents:

{
  "reactNativeVersion": "0.85.3",
  "reactPeer": "^19.2.3",
  "rendererCheck": "19.2.3",
  "rendererVersion": "19.2.3"
}

This came up in a pnpm monorepo where web packages resolve react@19.2.6 and an Expo/RN mobile app correctly needs react@19.2.3. The monorepo context made the mismatch more visible, but the underlying issue seems to be that the package metadata permits a React patch version that the renderer rejects.

Guide de contribution

Ouvrir le guide de contribution

Par où commencer

  1. Lisez l'issue en entier, puis le guide de contribution du projet.
  2. Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
  3. Forkez le dépôt et travaillez sur une branche.
  4. Ouvrez une pull request qui référence le numéro de l'issue.

Piste de recherche

Comparez la dépendance peer react dans les métadonnées du package avec les vérifications exactes de version dans Libraries/Renderer/implementations/ReactNativeRenderer-dev.js. Reproduisez l’installation avec react@19.2.6, puis déterminez si le contrat du package ou les indications devraient empêcher la divergence à l’exécution ; le travail est terminé lorsque les versions de React prises en charge sont rejetées ou clairement identifiées avant le lancement de l’application.

Rédigé par le modèle d'indexation à partir du texte de l'issue.

Évaluation

Stack technique
react-native
Domaine
mobile
Type d'issue
Bug
Difficulté
3/5
Temps estimé
1-2 jours
Activité
Calme
Clarté
Plutôt claire
Accessibilité débutants
55/100

Recevez les nouvelles issues par e-mail

Un résumé court des issues GitHub adaptées aux débutants.