Expo SDK 57 Upgrade Guide: React Native 0.86
Upgrade an existing Expo SDK 56 app to SDK 57 with the official dependency commands, the correct compatibility details, native project steps, Expo Go guidance, and a production test checklist.
Expo SDK 57 at a glance
The short version: Expo SDK 57 is a small, focused release that moves Expo from React Native 0.85 to 0.86. React remains on 19.2.3. For most SDK 56 projects, the core upgrade is npx expo install expo@^57.0.0 --fix, followed by npx expo-doctor@latest and a fresh native build.
- Released: June 30, 2026.
- React Native: 0.86.
- React: 19.2.3.
- Minimum Node.js: 22.13.x.
- Android: Android 7+, compile SDK 36, target SDK 36.
- iOS: iOS 16.4+ with Xcode 26.4+.
Expo describes React Native 0.86 as an intentionally non-breaking release from 0.85, so an SDK 56 to 57 migration should be smaller than a typical Expo SDK upgrade. It is still a native runtime change: test your libraries and build a new binary before production.
What changed in Expo SDK 57?
React Native 0.86
The main reason for SDK 57 is React Native 0.86. Its highlights include Android edge-to-edge fixes, light and dark mode emulation in React Native DevTools, and rendering, layout, and animation fixes. React stays at 19.2.3, the same version used by SDK 56.
Expo package and tooling updates
expo prebuildcleans by default: it now clears and regenerates the nativeandroidandiosdirectories. Pass--no-cleanonly when you intentionally want to apply changes to the existing directories.expo-imagecache APIs:writeToCacheAsyncandreadFromCacheAsynccan seed and read the image cache by key.- Expo Router toolbar badges:
Stack.Toolbar.Badgesupports more header and Android toolbar-menu placements. - Android modal navigation bars:
expo-navigation-barstyle and visibility methods now apply to React Native modal windows. - Animation packages: the bundled versions move to Reanimated 4.5, Worklets 0.10, and Gesture Handler 2.32.
- Development client: the iOS launcher adds a setting for opening the most recent project automatically or showing the launcher.
Expo SDK 57 compatibility
| Dependency or platform | SDK 57 | SDK 56 |
|---|---|---|
| React Native | 0.86 | 0.85 |
| React | 19.2.3 | 19.2.3 |
| React Native Web | 0.21.0 | 0.21.0 |
| Minimum Node.js | 22.13.x | 20.19.x |
| iOS / Xcode | iOS 16.4+ / Xcode 26.4+ | iOS 16.4+ / Xcode 26.4+ |
| Android SDK | compile 36 / target 36 | compile 36 / target 36 |
Use npx expo install --check inside your project for package-level compatibility. Expo’s installer knows the tested version of each Expo and supported third-party package for your SDK.
How to upgrade Expo SDK 56 to 57
1. Start from a clean branch
git status
git switch -c upgrade/expo-sdk-57Commit or stash unrelated work first. A focused upgrade diff makes package and native-project changes much easier to review.
2. Check Node.js
node --versionSDK 57’s documented minimum is Node.js 22.13.x. Align local development and CI before changing dependencies.
3. Upgrade Expo and compatible dependencies
npx expo install expo@^57.0.0 --fixThis is the upgrade command from Expo’s SDK 57 release notes. It installs Expo 57 and aligns React, React Native, Expo modules, and supported third-party packages with the SDK.
4. Run Expo Doctor
npx expo-doctor@latest
npx expo install --checkResolve dependency mismatches before rebuilding. Avoid hiding peer-dependency problems with --legacy-peer-deps; that can leave the project installed but outside Expo’s supported package set.
5. Regenerate or update native projects
If you use Continuous Native Generation and do not maintain native changes by hand, remove native directories generated for the previous SDK and let Expo recreate them:
npx expo prebuildIn SDK 57, expo prebuild cleans by default. If you maintain ios and android manually, do not overwrite them: run npx pod-install for iOS and apply the relevant changes from Expo’s Native Project Upgrade Helper.
6. Rebuild development clients
npx expo run:ios
npx expo run:androidOr create new EAS development builds if that is your normal workflow. Metro reloads and OTA updates cannot replace the React Native version embedded in an already installed binary.
7. Test and inspect the diff
npx expo start --clear
git diff -- package.json app.json app.config.js ios androidTest launch, navigation, gestures, animations, deep links, authentication, notifications, and any custom native modules on real iOS and Android builds.
Creating a new SDK 57 app
During the SDK 57 transition, Expo’s documentation recommends selecting the SDK 57 template explicitly:
npx create-expo-app@latest MyApp --template default@sdk-57
cd MyApp
npx expo startFor an existing app, use the upgrade steps above instead of copying a new template over your project.
Known SDK 57 issue to test
Hermes V1 and Reanimated memory usage
Expo’s SDK 57 release notes call out increased memory usage when react-native-reanimated is imported with Hermes V1. The reported increase can be 25–30%, and it also affects SDK 56. Expo points to Worklets bundle mode as the current workaround while the upstream fix lands.
If your app uses Reanimated heavily, compare memory on representative screens before and after the upgrade. Do not rely on launch success alone.
Does Expo Go support SDK 57?
Expo’s SDK 57 release post explains that SDK 57 builds of Expo Go are available through Expo’s device and simulator tooling while store availability transitions. Check the current Expo Go documentation for your platform before planning a physical-device workflow.
For production apps, Expo recommends development builds instead of Expo Go. A development build includes your actual native dependencies and gives you a more representative environment for upgrade testing.
Production migration checklist
- Upgraded local development and CI to Node.js 22.13 or newer
- Ran
npx expo install expo@^57.0.0 --fix - Ran
npx expo-doctor@latestand resolved warnings - Reviewed package, app config, lockfile, and native-project changes
- Rebuilt the iOS and Android development clients
- Tested launch, navigation, gestures, animations, and deep links
- Tested authentication, notifications, and other critical integrations
- Measured memory on Reanimated-heavy screens
- Verified EAS Update runtime compatibility before publishing an OTA update
- Completed a staged production rollout with crash and performance monitoring
Expo SDK 57 FAQ
Which React Native version does Expo SDK 57 use?
Expo SDK 57 uses React Native 0.86. SDK 56 uses React Native 0.85.
Which React version does Expo SDK 57 use?
Expo SDK 57 uses React 19.2.3. React did not change between SDK 56 and 57.
Is SDK 57 a major breaking upgrade?
Expo describes it as a small, focused release, and React Native 0.86 is intended to have no user-facing breaking changes from 0.85. Native and third-party dependencies can still expose regressions, so a new build and regression test pass are required.
Can I upgrade directly from SDK 55?
You can, but moving through SDK 56 first gives you a smaller diff and a clearer place to diagnose problems. SDK 55 also introduced the always-on React Native New Architecture, so verify that migration before attributing every issue to SDK 57.
Can an OTA update move an installed SDK 56 app to SDK 57?
No. SDK 57 contains a different React Native runtime. Publish a new native binary and keep EAS Update runtime versions aligned so incompatible JavaScript is not delivered to older builds.
Should I install Expo CLI globally?
No global Expo CLI install is required. Use the project CLI through npx expo. If you use EAS, npx eas-cli@latest is a reliable way to run the current EAS CLI without depending on a stale global install.