Skip to content

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

@ArcSolver

Description

@ArcSolver

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Needs: AttentionIssues where the author has responded to feedback.Needs: ReproThis issue could be improved with a clear list of steps to reproduce the issue.

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions