Published: September 9, 2026 · Last updated: September 9, 2026 · Author: Softix
If you already ship an Expo / React Native app for US customers, Expo SDK 56 New Architecture is not an optional experiment anymore. Per Expo’s New Architecture guide, SDK 55 and later run entirely on the New Architecture—it is always on and cannot be disabled. Expo SDK 54 was the last release where you could still set newArchEnabled: false. React Native 0.82+ removed the legacy opt-out; SDK 56 rides React Native 0.85 and React 19.2 (SDK 56 changelog).
Softix’s operating model for product leaders who need a store-safe cutover without freezing feature work: Audit–Migrate–Ship.
- Audit — Map SDK pin, native dependency New Architecture compatibility, and known Hermes / animation-stack issues before you touch production channels.
- Migrate — Enable New Architecture on SDK 54 first if you are still on legacy; only then upgrade the SDK. Avoid a dual big-bang.
- Ship — Rebuild with EAS Build, discipline EAS Update
runtimeVersion, and run a regression checklist that product actually owns.
This is a migration ops guide. It is not a “should we pick React Native?” strategy piece—that lives in Softix’s Is React Native right for your app?. Channel questions (PWA vs store binaries) belong in PWA vs native for SMB reach. Here we assume Expo is already the delivery path and the job is to get onto a supported architecture without surprising App Store / Play releases.
Why Expo SDK 56 New Architecture matters for SMB product teams
The legacy React Native architecture was frozen (no new features or bugfixes). New React / React Native capabilities—Suspense-friendly behavior, newer styling paths, and many popular libraries—are New Architecture–only. Expo reports that as of January 2026, roughly 83% of SDK 54 projects built with EAS Build already ran New Architecture (docs).
For an SMB product leader, the business risk is concrete:
- You cannot “stay forever” on legacy while chasing library updates that only ship New Arch builds (for example, newer
react-native-reanimatedand FlashList lines called out in Expo’s upgrading to SDK 56 advice). - Jumping SDK + New Architecture + Hermes V1 + Router changes in one PR makes every crash look like “the upgrade,” with no isolation.
- OTA (EAS Update) without a correct
runtimeVersionpolicy can serve JS bundles that do not match the native binary you just rebuilt for New Arch.
Softix opinion (not a vendor SLA): treat New Architecture as a release-engineering project with a named owner, a freeze window, and a rollback story—not as a Friday afternoon expo install chore.
Audit: compatibility before you flip flags
1) Pin where you are
Document in one place (ticket or README):
| Check | Why it matters |
|---|---|
Current Expo SDK (expo package) |
SDK 54 is the last legacy-capable train; 55+ is New Arch–only |
newArchEnabled in app config |
Explicit false on 53/54 is the usual “we opted out” signal |
| Dev client vs Expo Go | Production apps should already use development builds; Expo Go for SDK 56 is not on public stores |
| Native directories / CNG | Continuous Native Generation vs checked-in ios/android changes upgrade steps |
2) Run doctor against React Native Directory
Expo’s guide recommends:
npx expo-doctor@latest
Doctor integrates React Native Directory so you can see which dependencies are unmaintained, incompatible, or untested on New Architecture. Configure exclusions only when you have a documented reason (expo.doctor.reactNativeDirectoryCheck in package.json). Softix default: fix or replace flagged native modules before enabling New Arch on a release branch.
Common replacement patterns called out in Expo’s troubleshooting list include moving off abandoned community packages toward maintained forks or Expo modules (clipboard, masked-view, filesystem, geolocation, date pickers). Treat that list as a starting audit, not a complete inventory of your graph.
3) Audit Hermes and animation stacks
The SDK 56 changelog notes Hermes V1 as default on React Native 0.85, with a known memory regression when apps import react-native-worklets / react-native-reanimated. Expo’s August 27 update points teams toward SDK 57 as an easy follow-on fix for that Hermes V1 issue. Softix Audit step for animation-heavy apps:
- Measure memory / startup on a development build with your real Reanimated / Worklets usage.
- Decide explicitly: land on SDK 56 briefly vs plan the cutover to include the SDK 57 patch train Expo describes as minor-equivalent.
- Do not invent crash rates—capture your own profiler or EAS Observe-style signals once available.
4) Product-owned regression map
Engineering lists screens; product lists money and trust paths: login, paywall, offline sync, camera/scanner, maps, push deep links, biometric unlock. Softix Audit output is a one-page matrix: screen → native deps → New Arch risk → owner → pass/fail.
Migrate: New Architecture first on SDK 54, then SDK
Expo’s upgrade blog is explicit: avoid upgrading the Expo SDK and adopting New Architecture at the same time. New Architecture is usually the bigger behavioral change; combining it with SDK 56’s other deltas (Router / React Navigation import moves, vector-icons packaging, fetch defaults, iOS 16.4 floor, Xcode bumps) destroys isolability.
Softix Migrate sequence (recommended)
Step A — If you are on SDK 54 (or earlier with New Arch off)
- Branch from production.
- Enable New Architecture on SDK 54 (
newArchEnabled: true/ remove an explicitfalseper docs). - Clean prebuild or EAS Build a development client.
- Walk the Audit matrix. Fix or temporarily remove incompatible native modules until the app is usable.
- Ship that New Arch binary through your normal TestFlight / internal track before any SDK 56 work.
Step B — Upgrade SDK in isolation
- From the known-good New Arch baseline, run
npx expo install expo@^56.0.0 --fix(or your pinned target) and re-runnpx expo-doctor@latest. - Read SDK 56 Deprecations and Notable breaking changes in the changelog—especially Expo Router’s fork of React Navigation imports (
npx expo-codemod sdk-56-expo-router-react-navigation-replace),@expo/vector-iconspackaging, andexpo/fetchasglobalThis.fetch. - Rebuild the development client. Only now are you testing “SDK 56 on New Arch,” not both unknowns at once.
Step C — If you are already on SDK 55+
You are already on mandatory New Architecture. Your Migrate work is dependency cleanup, Hermes V1 / Reanimated validation, and the Ship checklist—not flipping newArchEnabled.
Softix opinion: if a critical native module has no New Arch path and no maintained replacement, that is a product decision (feature flag off, native rewrite, or custom software module via Expo Modules / inline modules)—not something to paper over with newArchEnabled: false on an unsupported SDK.
Ship: EAS Build, Update, and runtimeVersion discipline
Native binaries first
New Architecture is a native change. JavaScript OTA cannot turn legacy binaries into Fabric/TurboModule runtimes. Softix Ship rule:
- Produce store / TestFlight binaries with EAS Build (or local
expo run:*) after New Arch is stable on a development build. - Only then resume EAS Update for JS/Hermes bytecode on that new native floor.
SDK 56 enables Hermes bytecode diffing for updates by default (smaller patches vs full bundles). Keep that benefit; do not treat it as permission to skip binary rebuilds when native config or architecture changes.
runtimeVersion policy
Document how runtimeVersion (or your policy fingerprint) maps to native compatibility. When you ship a New Arch binary, bump or otherwise invalidate update channels so old OTAs cannot land on mismatched natives—and so New Arch–only JS does not target leftover legacy installs still in the wild during phased rollout.
Regression checklist (minimum)
- Cold start and resume on low-memory Android devices (Hermes V1 watchpoint).
- Reanimated / gesture / bottom-sheet flows.
- Maps, payments, camera, and any interop-layer modules from Audit.
- Deep links and push → screen.
- Offline queue / storage (filesystem migrations if you moved APIs).
- One full store-bound build per platform with the same profile you use for production.
Release shape Softix prefers for SMBs
| Phase | What ships | Success signal |
|---|---|---|
| Internal | Dev client + New Arch on SDK 54 (if needed) | Matrix green; no P0 native crashes |
| Closed beta | Store binary on New Arch (+ SDK 56 if ready) | Crash-free session rate holds vs prior baseline you measure |
| Phased production | Gradual % rollout; OTA only after binary floor | Support queue quiet; update failures monitored |
| Follow-on | SDK 57 if Hermes V1 / Worklets memory bites | Memory graphs stabilize |
No fabricated “X% faster” claims. Softix will help you instrument; we will not invent benchmarks.
Softix limits (read before you approve)
- We do not claim Expo or Meta roadmaps beyond what their docs state.
- We do not guarantee App Review timelines, crash-free rates, or store ranking.
- Expo Go availability for SDK 56 on public stores is explicitly unsettled in the changelog—plan on development builds.
- If you are still choosing between web shell and native, stop and read Softix mobile app development / web app development service pages and the PWA vs native brief first.
FAQ
Is New Architecture required for Expo SDK 56?
Yes in practice: SDK 55+ always runs New Architecture; you cannot disable it. SDK 54 is the last opt-out train (Expo docs).
Can we upgrade to SDK 56 and enable New Arch in one PR?
Expo advises against it. Softix Migrate follows that advice: New Arch on SDK 54 first when you still need a bridge, then SDK upgrade.
What if expo-doctor flags a library?
Replace, fork, or fence the feature. Do not ship “green” doctor by excluding packages without a written risk acceptance.
Do we need a new binary for OTA after New Arch?
Yes for the architecture cutover itself. OTA updates JS/Hermes against a compatible native runtime; they do not retrofit legacy natives.
How is this different from Softix’s older React Native article?
Is React Native right for your app? is framework selection. This post is Audit–Migrate–Ship once Expo is already chosen.
Next step with Softix
If you want a scoped cutover plan for one production Expo app—dependency Audit, SDK 54 bridge vs direct 56 path, EAS Build/Update runtimeVersion policy, and a product-owned regression matrix—talk to Softix. Bring your current SDK, whether newArchEnabled is false, and the three flows that must not break on payday week.
Related Softix delivery pages: mobile app development, custom software development, web app development.
Share


