
Today we're announcing the release of Expo SDK 57. This is a small, focused release: it brings React Native 0.86 to Expo. We intend for this to be the easiest Expo SDK upgrade you've ever made. It represents a possible shift towards a new Expo SDK release cadence that could provide you with simple non-breaking upgrades in between more significant releases.
React Native 0.86
SDK 57 upgrades React Native from 0.85 to 0.86. The React version is unchanged from SDK 56 — both SDK 56 and SDK 57 use React 19.2. React Native 0.86 is intended to have no breaking changes from 0.85. To decide whether it's worth upgrading your app, refer to the React Native 0.86 release notes for the full picture.
Highlights include: fixes and improvements to edge-to-edge support on Android, light/dark mode emulation in React Native DevTools, and several rendering, layout, and animation-related fixes.
Exploring a new Expo SDK release cadence
For several years, Expo SDK has seen major releases three times per year. We found that this cadence provided a good balance between stability for app developers and freedom for our team to ship significant new features and improvements. It also helped to reduce thrash in Expo Go.
During the same period, React Native has been releasing six times per year. The React Native team prioritized shipping often in order to incrementally roll out the New Architecture, a new React Native DevTools experience, Hermes V1, and more. Each Expo SDK release would target a single React Native version, and for versions that were not targeted, developers could use canary releases if needed. However, now that these massive changes to React Native have shipped, the focus has shifted towards stability.
The new release model that React Native is moving towards will aim to provide a release with "no user-facing breaking changes" approximately every second release. The recently released 0.86 is the second of these non-breaking releases. At Expo, the fact that these releases are intended to be non-breaking has prompted us to revisit our release cadence. If we can provide these releases to developers almost immediately, as optional upgrades, with little effort required for the app developer beyond running npx expo install expo@latest --fix, then we think we should do it. So, we are exploring that approach with SDK 57.
Why not include React Native 0.86 in SDK 56 if it is non-breaking?
This is a good question! We considered bumping from 0.85 to 0.86 in SDK 56, and ultimately decided that the set of changes between the versions was too significant for an app developer to pull in with a routine npx expo install --fix. There are 601 commits touching 1,552 files between 0.85.0 and 0.86.0, and we believe that the decision to pull those into your app should be intentional. Even though these commits are intended to not cause breaking changes, we think it's best to err on the side of being conservative.
Additionally, moving this bump to a new SDK version allows us on the Expo team to roll out small changes that wouldn't be appropriate to ship to an existing stable release, but that we think are genuinely useful for users. The following list includes some of those changes that are worth calling out.
Does this new cadence impact the Expo SDK maintenance window?
SDK releases will continue to have a lifetime of approximately one year. We may revisit the details of this policy in the future. What this means today is that Expo SDK 54 (September 2025) will receive critical fixes until the next SDK release (September or October 2026).
Will there be a new Expo Go version on the App Store and Play Store?
We'd like to release a new version for SDK 57, but we're still waiting on approval. Expo Go for SDK 57 is available with eas go for iOS devices, and through Expo CLI for Android devices/emulators and iOS simulators (learn more).
Other highlights
While SDK 57 is primarily about the React Native 0.86 upgrade, a few other improvements landed alongside it:
expo-dev-client: the iOS launcher includes a new setting to choose between auto-launching your most recent project or showing the launcher (#47131), allowing you to override the configuration set with the config plugin.expo prebuild: now clears and regenerates the native android and ios directories by default; pass--no-cleanto apply changes to the existing folders instead (#47209).expo-image: addedwriteToCacheAsyncandreadFromCacheAsyncto seed and read the image cache by cache key (#46620).expo-router:Stack.Toolbar.Badgeis now supported in header left and right placements and on toolbar menu icons on Android (#46537, #47276).expo-navigation-bar:setStyleandsetHiddennow apply to React Native<Modal>windows on Android (#46491).- Bump animation and gesture libraries: SDK 57 bundles newer versions of
react-native-reanimated(4.3 to 4.5),react-native-worklets(0.8 to 0.10), andreact-native-gesture-handler(2.31 to 2.32).
Upgrading your app
You should expect this to be a straightforward upgrade from SDK 56 / React Native 0.85, thanks to the absence of breaking changes in React Native 0.86.
Try using our upgrade skills (installation instructions) with Claude Code, or a similar tool of your choice, to upgrade your app.
Here's how to upgrade your app to Expo SDK 57 from 56:
- Upgrade all dependencies to match SDK 57:
- Check for any possible known issues with Expo Doctor:
- Make sure to check the changelog for all other breaking changes!
- If you use Continuous Native Generation:
- Delete the android and ios directories if you generated them for a previous SDK version in your local project directory. They'll be re-generated next time you run a build, either with
npx expo run:ios,npx expo prebuild, or with EAS Build.
- Delete the android and ios directories if you generated them for a previous SDK version in your local project directory. They'll be re-generated next time you run a build, either with
- If you don't use Continuous Native Generation:
- Run
npx pod-installif you have aniosdirectory. - Apply any relevant changes from the Native project upgrade helper.
- Optionally, you could consider adopting prebuild for easier upgrades in the future.
- Run
- If you use development builds with expo-dev-client: Create a new development build after upgrading.
- If you use Expo Go: consider migrating to development builds. Expo Go is not recommended as a development environment for production apps.
- Having trouble? Refer to the Troubleshooting your SDK upgrade guide.
- Questions? Join our weekly office hours on Wednesdays at 12:00PM Pacific on Discord.