Check Your React Native Upgrade Compatibility
Paste your package.json to identify version mismatches, potential upgrade issues, and recommended next steps.
Need help upgrading your React Native app?
I help teams upgrade React Native and Expo, fix native dependency issues, and resolve iOS and Android build problems.
How the checker works
The checker reads the dependencies and devDependencies of your package.json in the browser and compares each declared version range with published data. It never runs the file and never guesses compatibility from how new a version looks.
- Expo SDK targets: every package is compared with the
bundledNativeModules.jsonof that SDK branch in the Expo repository. That is the same listnpx expo installuses to pick versions. - React Native targets:
reactis compared with thereactpeer range React Native publishes on npm, and the React version in the official app template is shown as the expected value. - Libraries: for Reanimated, Worklets, Gesture Handler, Screens, React Navigation and other tracked libraries, the checker resolves the newest version your range allows and reads the
peerDependenciesthat version declares. - Project rules: crossing React Native 0.82 (New Architecture only), multi-SDK jumps, Node.js requirements, and packages declared in both dependency sections.
What the statuses mean
- Confirmed mismatch: your declared range and the official range do not overlap. Fix these first.
- Possible risk: the ranges overlap but are not the same, the package left the SDK, or a library declares no React Native range. Your lockfile decides what is installed.
- Unknown compatibility: no official source covers this package for the target, or the version spec is a git URL, tag or local path.
- Known compatible: your range sits inside the range Expo lists for the SDK, or inside the React Native range the library declares.
What it cannot tell you
The report is a starting point, not a build. It does not see your lockfile, your ios and android folders, config plugins, patch-package patches, or custom native code. After you change versions, run the official doctors and build release variants on both platforms:
# Expo projects
npx expo install --check
npx expo-doctor
# React Native CLI projects
npx @react-native-community/cli doctor
cd ios && pod install
For the full process, read the React Native upgrade guide. To see what each SDK ships, use the Expo SDK compatibility table. Not sure which version you are on? See how to check your React Native version.
FAQ
Is my package.json uploaded anywhere?
No. The file is read and analyzed in your browser. Nothing is sent to a server unless you fill in the help request form and tick the box to include the report.
Does a clean report mean my upgrade will work?
No. The checker compares declared version ranges with published data. It cannot see your lockfile, native code, patches or config plugins. Run npx expo-doctor or the React Native doctor and test release builds on both platforms.
Where does the compatibility data come from?
From the Expo versions API and the bundledNativeModules.json file of each Expo SDK branch, the Expo versions documentation, and the peerDependencies that react-native and each tracked library publish on npm. The verification date is shown on every report.
Why is a package marked as unknown?
Unknown means no official source covers that package for your target. The checker does not guess compatibility from version numbers. Check the library's changelog or React Native Directory.
Can I check a bare React Native project without Expo?
Yes. Pick a React Native version as the target. The analysis is narrower: it checks React against the react peer range of that React Native release, library peer ranges, the Node.js requirement and the New Architecture cut-over, and links to the Upgrade Helper diff.