SDK 56 Breaking Changes
React Native 0.85, Hermes V1, Expo Router separation, platform requirements, and migration checklist.
Key takeaways
- Expo SDK 56 (released 2026-05-21) moves to React Native 0.85, React 19.2.3, Node.js 22.13.x+, iOS 16.4+, and Xcode 26.4+.
expo/fetchbecomes the defaultglobalThis.fetch, so manual imports are usually unneeded; isolate regressions withEXPO_PUBLIC_USE_RN_FETCH=1.- Expo Router separates React Navigation dependencies, so run the
sdk-56-expo-router-react-navigation-replacecodemod on app-code imports. expo-file-systemFile.copy()andDirectory.move()are now async, and@expo/vector-iconsis no longer an implicit dependency.- Hermes V1 is the default, so re-validate Reanimated, MMKV, Skia, and
expo-updatesrelaunch/rollback paths before shipping.
Baseline
Expo SDK 56 was released on 2026-05-21. The official SDK table points to React Native 0.85, React 19.2.3, React Native Web 0.21.0, and Node.js 22.13.x or later. Because SDK 55 already moved Expo apps fully onto New Architecture, the SDK 56 upgrade is less about removing Legacy Architecture and more about runtime, build, platform, and router boundaries.
| Item | SDK 55 | SDK 56 |
|---|---|---|
| React Native | 0.83 | 0.85 |
| React | 19.2.0 | 19.2.3 |
| Minimum Node.js | 20.19.x | 22.13.x |
| Minimum iOS | 15.1+ | 16.4+ |
| Xcode | 26.2+ | 26.4+ |
| Hermes | V0 default | V1 default |
| Expo UI | SwiftUI stable, Compose beta | SwiftUI and Compose stable |
Breaking Changes
| Change | Impact | Response |
|---|---|---|
expo/fetch becomes the default globalThis.fetch implementation | Manual expo/fetch imports are usually no longer needed. Some fetch polyfills can conflict | Temporarily set EXPO_PUBLIC_USE_RN_FETCH=1 if you need to isolate a regression |
expo-file-system File.copy() and Directory.move() are async | Code that expected synchronous behavior may miss a Promise | Use await, or explicit copySync() and moveSync() for sync behavior |
| Expo Router separates React Navigation dependencies | Direct @react-navigation/* imports in app code can break | Run npx expo-codemod sdk-56-expo-router-react-navigation-replace <src> |
@expo/vector-icons is no longer an implicit expo dependency | Apps relying on implicit icon dependency may fail imports | Add an explicit dependency or migrate to scoped vector icon packages |
| Minimum iOS is 16.4 and Xcode is 26.4 | Older devices are out of support | Update product, support, and MDM device policies |
| Expo Go for SDK 56 is not generally distributed through app stores | Store-installed Expo Go is not the QA standard for SDK 56 | Use development builds or eas go |
Hermes V1 Default
React Native 0.85 uses Hermes V1 by default. Startup, runtime behavior, and memory use can improve, but JSI, worklet, and native module assumptions written for V0 can surface.
Prioritize:
- JSI-heavy libraries such as Reanimated, MMKV, and Skia.
expo-updatesrelaunch and rollback paths.- Cold launch P95/P99 on lower-end Android devices.
- EAS Update bytecode diff download and apply paths.
Upgrade Checklist from SDK 55
- Pin Node.js to 22.13.x or later in CI and local toolchain files.
- Verify iOS builds on an Xcode 26.4+ image.
- Reflect the iOS 16.4+ minimum in product support and MDM policy.
- Run
npx expo install --fixandnpx expo-doctor. - Replace Expo Router app-code imports from
@react-navigation/*withexpo-routerimports. - Add an explicit icon dependency if you use
@expo/vector-icons. - Audit
File.copy()andFile.move()call sites for missingawait. - Validate network SDKs, Sentry breadcrumbs, and React Query retry behavior after the fetch change.
- Protect OTA delivery with
runtimeVersion: { "policy": "fingerprint" }or an explicit runtime policy. - Add EAS Observe
ObserveRootandmarkInteractive()instrumentation. - Test Expo UI and
expo-widgetsscreens in real development builds.
Suggested Upgrade Sequence
npm install expo@^56.0.0
npx expo install --fix
npx expo-doctor
npx expo-codemod sdk-56-expo-router-react-navigation-replace appIf the project uses Continuous Native Generation, regenerate the native project after the SDK upgrade and review any custom native patches against the new templates.