Skip to content
useffect.sh
Book 30 min with a senior
Scale · versions and New Architecture

React Native upgrade and New Architecture migration

The New Architecture has been on by default since React Native 0.76. Since 0.82, it can no longer be turned off. Every version you skip makes the jump more expensive. We do it with you, PR by PR, without freezing the roadmap.

Short answer

The useffect.sh React Native upgrade brings an existing app to a recent version of React Native or Expo and moves it onto the New Architecture, Fabric and TurboModules included. It is for teams whose app has fallen several versions behind, depends on libraries that stopped following, or has to leave the Legacy Architecture: React Native 0.81 and Expo SDK 54 are the last versions that allow it. The mission starts with a five-day diagnosis: inventory of dependencies, native modules and patches, New Architecture compatibility, state of the CI. Then one or more senior engineers run the upgrade in your repo, version by version when needed, through PRs reviewed in your own process, with a demo every week. Unmaintained libraries are replaced or patched, in-house native modules migrated, tests and CI brought back to green. You get an up-to-date app, runbooks, and an upgrade procedure your team can replay next time.

of diagnosis before the first PR
5 days
on React Native since the first release
2015
a week, in your repo
1 demo

01

When to call us

  • More than two versions behind.

    Every React Native release moves things around in the Podfile, the Gradle files and the native templates. The accumulated diff becomes a project of its own.

  • Libraries that don’t support the New Architecture.

    A key component has no Fabric-compatible version, its repo is archived, and replacing it touches twenty screens.

  • Patches nobody knows how to reapply.

    The patch-package files in node_modules pile up, their author left, and every bump breaks them.

  • The CI runs on deprecated tooling.

    Xcode, the JDK, Gradle and Ruby are held back to stay compatible with an old version. The pipeline breaks every time the runners update.

  • The CocoaPods trunk goes read-only.

    From December 2, 2026, it accepts no new podspecs. Builds will keep working, but new pod versions will no longer land there.

  • The stores require an SDK your version can’t target.

    Since April 28, 2026, Apple requires Xcode 26 and the iOS 26 SDK; since August 31, 2026, Google Play requires API level 36 for every new app or update. An old React Native version eventually stops getting through.

02

How it runs

  1. 1 / Days 1–5

    Upgrade diagnosis

    Inventory of dependencies and their New Architecture compatibility, in-house native modules, patches, state of the CI and tests. A written diagnosis, three pages max, with the upgrade path and the hard spots.

  2. 2 / Weeks 1–2

    Prepare the ground

    Tests on the critical flows if they are missing, a reproducible CI, a measured baseline build: cold start, size, crash-free rate. That is the comparison point for everything after.

  3. 3 / Weeks 2–N

    Upgrade, version by version

    Official diff applied, libraries replaced or patched, native modules migrated to TurboModules and Fabric, Hermes verified. One PR per step, reviewed in your process, a demo every week.

  4. 4 / Last weeks

    Verify and hand over

    Phased release on both stores, comparison against the baseline build, an upgrade runbook for next time.

03

What you get

  • Written diagnosis with the upgrade path
  • App on a recent version, New Architecture enabled
  • Dependencies replaced or patched, patches documented
  • Native modules migrated to TurboModules and Fabric
  • CI and tests green on the new version
  • Replayable upgrade runbook

04

Comparable missions

05

Common questions

How much does a React Native upgrade cost?

It depends on how many versions there are to catch up, on in-house native modules, on libraries to replace and on the state of the tests. The five-day diagnosis is there to cost it on evidence, before the first PR.

Do we have to go through every intermediate version?

Not always, but often. When several versions separate the project from the target, we upgrade in steps to isolate regressions. If the Legacy Architecture is still on, we go through React Native 0.81 or Expo SDK 54, enable the New Architecture, verify, then carry on: that is the path the React Native team recommends.

Can we keep shipping during the upgrade?

Yes. The upgrade lives on a branch that is rebased regularly, and PRs land in steps through your review process. Your releases continue. We only avoid opening a large native project in parallel.

Our app is on Expo. Is it different?

The path is shorter: each Expo SDK targets one React Native version, and prebuild regenerates the native projects. The work then goes into dependencies, config plugins and your native modules. If the app is still bare React Native, an Expo migration can be part of the job.

What happens to our in-house native code?

Swift, Objective-C, Kotlin or Java modules are migrated to TurboModules and Fabric, or to Expo Modules if the app runs on Expo. Those no longer needed are removed, with an ADR that says why.

Who handles the next upgrade?

Your team. We leave an upgrade runbook, documented patches and a CI that checks the build on both platforms. The next one should not need us.

Updated October 26, 2026

Your React Native version has an expiry date.

30 minutes with a senior to estimate the upgrade path. Free, reply within 48 hours.