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›New Architecture Deep Dive
한국어English

New Architecture Deep Dive

JSI, Fabric, TurboModules, and production optimization strategy.

Key takeaways

  • Since SDK 55 New Architecture is the operating baseline; SDK 56 layers React Native 0.85, Hermes V1, a new animation backend, and Expo Modules performance work on top.
  • Each layer has a distinct failure signal: Hermes V1 (cold launch regression), JSI (worklet errors), TurboModules (module not found), and Fabric (layout flicker).
  • Wrap native APIs behind domain-oriented JS functions, convert native exceptions to typed error codes, and force every event subscription to define cleanup.
  • Hold cold launch P95 within 10% of previous production and native crash-free sessions at 99.5% or higher as the performance budget.
  • Debug in order: run expo-doctor, use a development build with native logs, then confirm sourcemaps, dSYMs, and ProGuard mappings for Hermes crashes.

Production View of New Architecture

After SDK 55, Expo apps should treat New Architecture as the operating baseline. SDK 56 builds on it with React Native 0.85, Hermes V1, a newer animation backend, and Expo Modules performance work.

Core Layers

LayerRoleFailure signal
Hermes V1JS execution and bytecode loadingcold launch regression, JSI crashes
JSIDirect JS/native object boundarynative module crash, worklet errors
TurboModulesLazy native module loadingmodule not found, sync/async mismatch
FabricConcurrent-friendly rendererlayout flicker, measurement mismatch
Expo Modules APISwift/Kotlin native capability DSLautolinking, permission, lifecycle bugs

SDK 56 Review Points

  • Re-baseline startup metrics because Hermes V1 is the default.
  • Check network instrumentation and polyfills after expo/fetch becomes the global fetch path.
  • Validate the new animation backend with Reanimated and worklets on a device matrix.
  • Keep iOS prebuilt Expo Modules enabled unless a package truly requires source build.
  • Use expo-doctor and the SDK 55 to 56 router codemod to avoid mixed Expo Router and React Navigation imports.

Native Boundary Rules

  1. Wrap native APIs behind domain-oriented JS functions.
  2. Convert native exceptions into typed error codes.
  3. Keep sync functions rare and limited to startup-critical paths.
  4. Force every event subscription to define cleanup.
  5. Treat native module additions and permission changes as binary releases, not OTA-only changes.

Performance Budget

MetricRecommended budget
Cold launch P95No more than 10% worse than previous production
TTI P95Compare at the 10% rollout gate
JS bundle loadReview with OTA payload size after bytecode diffing
Native crash-free sessions99.5% or higher
Android ANRTrack lower-end devices separately

Debugging Order

  1. Run npx expo-doctor.
  2. Use a development build with React Native DevTools and native logs together.
  3. For Hermes crashes, confirm sourcemaps, dSYMs, and ProGuard mapping uploads first.
  4. For native module crashes, compare the EAS Build artifact, commit, and runtimeVersion.
  5. If a crash appears only after OTA, check EAS Update group and binary runtime compatibility first.

Related docs

Testing Strategy

E2E, native module tests, visual regression, and release gates for Expo SDK 56 apps.

Expo Modules API v2 Native Extensions

Swift/Kotlin modules, inline modules, type generation, and testing strategy.

SDK 56 Breaking Changes

React Native 0.85, Hermes V1, Expo Router separation, platform requirements, and migration checklist.

React 19.2 Concurrency Patterns

Mobile patterns for transitions, Suspense, and route-level loading in Expo SDK 56.

On this page

Production View of New ArchitectureCore LayersSDK 56 Review PointsNative Boundary RulesPerformance BudgetDebugging Order