React Native New Architecture: Migration Guide and Real Performance Data
Ahtisham Shahzad
React Native Lead
8 April 2025
8 min readThe React Native New Architecture has been 'coming soon' for so long that teams stopped paying attention. Now it's stable, the migration path is clear, and the performance improvements are real and measurable. We've completed 12 migrations. Here's what you'll actually encounter.
What Actually Changed in the New Architecture
- JSI (JavaScript Interface): Replaces the old async bridge. JavaScript can now call native code synchronously. This eliminates the serialisation/deserialisation overhead that caused dropped frames during heavy native interactions.
- Fabric: The new rendering system. Components render on the UI thread with synchronous state updates. Solves the 'animation jank during JS thread congestion' problem that was endemic to the old architecture.
- TurboModules: Native modules are now lazy-loaded and accessible via JSI rather than the bridge. Startup time improvements are significant — we measured 200–400ms faster cold starts on older Android devices.
- Codegen: Strongly typed interfaces between JS and native, generated at build time. This is a double-edged sword — great for correctness, source of most migration breaking changes.
The Breaking Changes You Will Hit
⚠️ Third-party native modules are the main blocker
Most migration time is spent waiting for or patching third-party native modules to support the New Architecture. Before starting a migration, audit all packages that include native code and check their New Architecture support status. react-native-camera, react-native-maps, and payment SDKs are the common blockers.
- Native modules must use TurboModule spec: Any custom native module built with the old NativeModules pattern needs to be rewritten to use TurboModuleSpec.
- ViewManagers must use Fabric spec: Custom native UI components need the new Fabric component spec. This is the most involved migration step.
- Synchronous native calls change behaviour: Code that relied on the async bridge's 'post to next frame' timing may behave differently when JSI makes calls synchronous.
12
Apps migrated to New Architecture
38%
Avg startup time improvement
55%
Reduction in dropped frames (FlatList)
3–5 days
Avg migration time per app
Tags
You might also like
Work with us
Ready to build your product?
We help product teams across the UK, Netherlands, Australia, and North America ship faster without compromising quality. Let's talk about your project.
Talk to our team →
