react / react/react-native

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

Aperta
#57,079 2 commenti 4 reazioni 0 assegnatari Vedi su GitHub

Nessuno ha ancora preso questa issue.

Needs: Attention Needs: Repro
Lingua principale
C++
Stelle
127k
Fork
25.3k
Merge medio
1g 23h
PR unite (30g)
4

Descrizione

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.

Guida per i contributori

Apri la guida per i contributori

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Direzione di ricerca

Confronta la dipendenza peer react nei metadati del pacchetto con i controlli esatti della versione in Libraries/Renderer/implementations/ReactNativeRenderer-dev.js. Riproduci l’installazione con react@19.2.6, quindi determina se il contratto del pacchetto o le indicazioni dovrebbero impedire la discrepanza a runtime; il lavoro è completato quando le versioni di React supportate vengono rifiutate o identificate chiaramente prima dell’avvio dell’applicazione.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Valutazione

Stack tecnologico
react-native
Ambito
mobile
Tipo di issue
Bug
Difficoltà
3/5
Tempo stimato
1-2 giorni
Stato di attività
Tranquilla
Chiarezza
Abbastanza chiara
Idoneità per principianti
55/100

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.