react-native@0.85.3 peerDependencies allow react@19.2.6 but embedded renderer requires exact 19.2.3
Nobody has claimed this yet.
- Dominant language
- C++
- Stars
- 127k
- Forks
- 25.3k
- Avg merge
- 1d 23h
- Merged PRs (30d)
- 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
- Install
react-native@0.85.3. - Install
react@19.2.6andreact-dom@19.2.6. - 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'speerDependencies.reactto the exact renderer-compatible version,19.2.3, or - add install/doctor guidance that
reactmust exactly match the embeddedreact-native-rendererversion, 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.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Compare the react peer dependency in the package metadata with the exact version checks in Libraries/Renderer/implementations/ReactNativeRenderer-dev.js. Reproduce the installation with react@19.2.6, then determine whether the package contract or guidance should prevent the runtime mismatch; done means the supported React versions are rejected or clearly identified before app launch.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- react-native
- Domain
- mobile
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 55/100