Skip to main content
reopt Handbook
reopt Handbook
Expo Enterprise Production

New Architecture

SDK 56 Breaking ChangesNew Architecture Deep DiveReact 19.2 Concurrency Patterns

Native Extensions

Expo UI Nativeexpo-widgets Home Screen WidgetsExpo Modules API v2 Native Extensions

Build and Release

Advanced EAS Build PipelinesEAS Update OTA StrategySecurity, Signing, and Compliance

Operations and Quality

Performance Monitoring and ProfilingTesting StrategyEnterprise Distribution and MDM

Appendix

Verification ReportUpdates
Handbook›Expo Enterprise Production›SDK 56 Breaking Changes
한국어English

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/fetch becomes the default globalThis.fetch, so manual imports are usually unneeded; isolate regressions with EXPO_PUBLIC_USE_RN_FETCH=1.
  • Expo Router separates React Navigation dependencies, so run the sdk-56-expo-router-react-navigation-replace codemod on app-code imports.
  • expo-file-system File.copy() and Directory.move() are now async, and @expo/vector-icons is no longer an implicit dependency.
  • Hermes V1 is the default, so re-validate Reanimated, MMKV, Skia, and expo-updates relaunch/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.

ItemSDK 55SDK 56
React Native0.830.85
React19.2.019.2.3
Minimum Node.js20.19.x22.13.x
Minimum iOS15.1+16.4+
Xcode26.2+26.4+
HermesV0 defaultV1 default
Expo UISwiftUI stable, Compose betaSwiftUI and Compose stable

Breaking Changes

ChangeImpactResponse
expo/fetch becomes the default globalThis.fetch implementationManual expo/fetch imports are usually no longer needed. Some fetch polyfills can conflictTemporarily set EXPO_PUBLIC_USE_RN_FETCH=1 if you need to isolate a regression
expo-file-system File.copy() and Directory.move() are asyncCode that expected synchronous behavior may miss a PromiseUse await, or explicit copySync() and moveSync() for sync behavior
Expo Router separates React Navigation dependenciesDirect @react-navigation/* imports in app code can breakRun npx expo-codemod sdk-56-expo-router-react-navigation-replace <src>
@expo/vector-icons is no longer an implicit expo dependencyApps relying on implicit icon dependency may fail importsAdd an explicit dependency or migrate to scoped vector icon packages
Minimum iOS is 16.4 and Xcode is 26.4Older devices are out of supportUpdate product, support, and MDM device policies
Expo Go for SDK 56 is not generally distributed through app storesStore-installed Expo Go is not the QA standard for SDK 56Use 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-updates relaunch 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 --fix and npx expo-doctor.
  • Replace Expo Router app-code imports from @react-navigation/* with expo-router imports.
  • Add an explicit icon dependency if you use @expo/vector-icons.
  • Audit File.copy() and File.move() call sites for missing await.
  • 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 ObserveRoot and markInteractive() instrumentation.
  • Test Expo UI and expo-widgets screens 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 app

If the project uses Continuous Native Generation, regenerate the native project after the SDK upgrade and review any custom native patches against the new templates.

Related docs

Verification Report

Official sources, freshness, source conflicts, and code example verification for the Expo SDK 56 handbook.

SDK 55 Breaking Change Archive

Compatibility path for the old SDK 55 breaking changes page. Use the SDK 56 page for the current baseline.

Shared Packages

Enterprise Project Architecture · Govern reusable packages for UI, contracts, configuration, and domain logic.

Expo Enterprise Production

An advanced production handbook for Expo apps using New Architecture, Expo UI, widgets, and EAS pipelines.

New Architecture Deep Dive

JSI, Fabric, TurboModules, and production optimization strategy.

On this page

BaselineBreaking ChangesHermes V1 DefaultUpgrade Checklist from SDK 55Suggested Upgrade Sequence