Back to Tutorials

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.

Updated July 29, 2026 12 min read Paddy B
Expo SDK 57 React Native 0.86 Upgrade Migration

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 prebuild cleans by default: it now clears and regenerates the native android and ios directories. Pass --no-clean only when you intentionally want to apply changes to the existing directories.
  • expo-image cache APIs: writeToCacheAsync and readFromCacheAsync can seed and read the image cache by key.
  • Expo Router toolbar badges: Stack.Toolbar.Badge supports more header and Android toolbar-menu placements.
  • Android modal navigation bars: expo-navigation-bar style 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-57

Commit or stash unrelated work first. A focused upgrade diff makes package and native-project changes much easier to review.

2. Check Node.js

node --version

SDK 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 --fix

This 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 --check

Resolve 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 prebuild

In 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:android

Or 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 android

Test 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 start

For 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@latest and 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.

Related Expo guides