React Native New Architecture: What Changed in 2025–2026?
For most of React Native's first decade, its architecture had a fundamental flaw that every developer learned to work around: the bridge.
Every interaction between JavaScript and native code had to pass through an asynchronous message queue, serialize data to JSON, cross to a separate thread, and deserialize on the other side. It worked. But it was never fast, it scaled poorly under heavy UI load, and it made certain performance-critical features , real-time animations, synchronous layout reads, concurrent rendering genuinely difficult to build.
The React Native New Architecture is the fix. And in 2025–2026, it stopped being optional.
React Native 0.76 made the New Architecture the default in late 2024. React Native 0.82 (October 2025) permanently disabled the old architecture, there is no flag to turn it off. The legacy bridge was frozen in June 2025, receiving no further updates or bug fixes. As of Expo SDK 55 (React Native 0.83), the New Architecture is always enabled, full stop.
This post explains what actually changed, why it matters for apps you're building or maintaining today, and what the migration looks like in practice.
TL;DR: React Native's New Architecture replaces the async bridge with JSI (direct C++ calls), Fabric (concurrent renderer), TurboModules (lazy-loaded native modules), and Codegen (auto-generated type bindings). The legacy architecture was permanently disabled in React Native 0.82 (October 2025). Production migrations show 43% faster cold starts, 39% faster rendering, and 26% lower memory usage. React 19 and Hermes V1 are now fully integrated.
The Legacy Bridge: What It Was and Why It Had to Go?
In the original React Native architecture, JavaScript and native code lived on completely separate threads. Communication between them worked like this:
- JavaScript called a native function
- The call was serialized into a JSON string
- The JSON was sent across a bridge thread (asynchronous — no return value was possible)
- The native side deserialized the JSON, executed the function, serialized the result back to JSON
- The result crossed the bridge again, back to JavaScript
This design was pragmatic. It decoupled JavaScript from native code and made React Native portable. But it created a set of problems that compounded as apps got more complex.
Read More- Create a React Native App Without Expo
Legacy Bridge: The Core Problems
| Problem | Technical Cause | User-Visible Symptom |
|---|---|---|
| Serialization overhead | Every JS-to-native call required JSON encode/decode | Stutters on rapid UI updates |
| Asynchronous-only | No synchronous calls possible | Workarounds needed for layout reads, gestures |
| Bridge congestion | High call volume created a queue bottleneck | Dropped frames under load |
| No concurrent rendering | Incompatible with React 18 concurrent features | useTransition, Suspense didn't work properly |
| Eager module loading | All native modules initialized at startup, even unused ones | Slow cold start on every launch |
| No type safety | JS and native type mismatches only caught at runtime | Runtime crashes from interface drift |
The bridge wasn't just slow - it was architecturally incompatible with where React was heading. React 18's concurrent rendering model requires the ability to interrupt, pause, and resume rendering. The old bridge's asynchronous, fire-and-forget model couldn't support that.
The Four Pillars of the New Architecture
The New Architecture is built on four interdependent components that together replace everything the bridge used to do.
| Component | What It Replaces | What It Adds |
|---|---|---|
| JSI (JavaScript Interface) | The async bridge | Direct synchronous C++ calls between JS and native |
| Fabric | The legacy UI manager | Concurrent renderer, synchronous layout reads, React 18/19 support |
| TurboModules | Legacy NativeModules | Lazy initialization, type-safe specs, JSI-backed performance |
| Codegen | Manual type definitions | Auto-generated type-safe bindings from TypeScript specs |
They're not independent — they compose. JSI is the foundation everything else builds on. Fabric and TurboModules are built on top of JSI. Codegen generates the bindings that make TurboModules type-safe. Pull any one of these out and the system doesn't work.
Read More- Building a Robust React Native Foundation for Complex Apps
JSI: JavaScript Interface - The Foundation
JSI is the most significant change in the entire New Architecture. Every other improvement depends on it.
What JSI does: It gives JavaScript a direct reference to C++ host objects — without any serialization, without any message queue, without any async handoff.
What this means in practice: JavaScript can now call native functions synchronously, the same way it calls any other function. There's no bridge to cross. No JSON to encode or decode. No thread hop.
// This was IMPOSSIBLE with the old bridge — synchronous native calls didn't exist
const model = NativeDeviceInfo.getDeviceModel(); // returns immediately // With the old bridge, you had to do this: NativeDeviceInfo.getDeviceModel((model) => { // callback-based, asynchronous, delayed });JSI vs The Bridge: Side-by-Side
| Dimension | Legacy Bridge | JSI |
|---|---|---|
| Call mechanism | Async message passing | Synchronous direct C++ reference |
| Data format | JSON serialization | No serialization — direct memory access |
| Thread model | Separate bridge thread | In-process, no thread overhead |
| Performance overhead | 10× vs native | Near-native — JSI eliminates 10× overhead |
| Synchronous calls | Not possible | Fully supported |
| React Concurrent features | Incompatible | Fully compatible |
| Memory model | Copies across boundary | Shared memory, no copies |
The JSI change alone unlocked an entire category of high-performance apps that were genuinely not feasible with the old bridge. Real-time gesture tracking, synchronous layout measurements, concurrent UI updates — all become clean implementations instead of workarounds.
Fabric: The New Rendering Engine
Fabric is React Native's new renderer. It replaces the legacy UIManager and is written primarily in C++, which allows it to share core logic across Android and iOS for the first time.
The key design goal of Fabric was to align React Native's rendering with React's concurrent model — making Suspense, useTransition, automatic batching, and useLayoutEffect work the same way in React Native as they do on the web.
What Fabric Changes About Rendering?
| Feature | Legacy Renderer | Fabric |
|---|---|---|
| Rendering model | Asynchronous, no interruption | Concurrent — can pause, resume, prioritize |
| React 18/19 features | Partial/broken | Full support (Suspense, Transitions, batching) |
| Layout reads | Asynchronous only | Synchronous when needed (useLayoutEffect works correctly) |
| Shared C++ core | Separate Android/iOS implementations | Unified C++ core across platforms |
| Shadow tree | JS-side only | Shared between JS and native (immutable snapshots) |
| useTransition | Not supported | Fully supported |
| Suspense for data fetching | Not supported | Fully supported |
| Automatic batching | Manual batching required | Automatic for all state updates |
What This Means for Your UI?
If you've been using React hooks and patterns from the web ecosystem, Fabric makes them work correctly in React Native. useTransition lets you mark state updates as non-urgent — the UI stays responsive while heavy work runs in the background. Suspense boundaries work for data fetching, not just code splitting. useLayoutEffect runs synchronously before paint, which makes tooltip positioning and conditional rendering based on measurements correct for the first time.
TurboModules: Lazy, Type-Safe Native Modules
TurboModules replace the legacy NativeModules system. They solve two separate problems: performance and type safety.
Performance: In the old system, every native module was initialized at app startup — even modules you'd never use in a given session. For large apps with dozens of native modules, this was a meaningful source of startup latency. TurboModules load lazily: a module initializes only when it's first accessed.
Type safety: Legacy NativeModules relied on manual, runtime-checked interfaces. Type mismatches between JavaScript and native code only surfaced when the code actually ran. TurboModules use typed specs — TypeScript interfaces that define the exact contract between JS and native, verified at build time by Codegen.
What This Means for Your UI?
If you've been using React hooks and patterns from the web ecosystem, Fabric makes them work correctly in React Native. useTransition lets you mark state updates as non-urgent — the UI stays responsive while heavy work runs in the background. Suspense boundaries work for data fetching, not just code splitting. useLayoutEffect runs synchronously before paint, which makes tooltip positioning and conditional rendering based on measurements correct for the first time.
TurboModules: Lazy, Type-Safe Native Modules
TurboModules replace the legacy NativeModules system. They solve two separate problems: performance and type safety.
Performance: In the old system, every native module was initialized at app startup even modules you'd never use in a given session. For large apps with dozens of native modules, this was a meaningful source of startup latency. TurboModules load lazily: a module initializes only when it's first accessed.
Type safety: Legacy NativeModules relied on manual, runtime-checked interfaces. Type mismatches between JavaScript and native code only surfaced when the code actually ran. TurboModules use typed specs — TypeScript interfaces that define the exact contract between JS and native, verified at build time by Codegen.
Read More- Do You Know Why React Native is a Good Choice for Startups?
Legacy NativeModules vs TurboModules
| Dimension | Legacy NativeModules | TurboModules |
|---|---|---|
| Initialization | Eager — all modules at startup | Lazy — only when first called |
| Communication | Via bridge (async, serialized) | Via JSI (synchronous or async, no serialization) |
| Type safety | Runtime type checking only | Build-time type verification via Codegen |
| Startup impact | All modules contribute to cold start | Only accessed modules contribute |
| Synchronous calls | Not possible | Fully supported |
| Performance | 10× bridge overhead | Near-native direct access |
// TurboModule spec — TypeScript interface verified at build time export interface Spec extends TurboModule { // Synchronous — impossible with the old bridge getDeviceModel(): string; // Async — works as before, but without bridge overhead getBatteryLevel(): Promise<number>; getStorageInfo(): Promise<{ total: number; available: number }>; } export default TurboModuleRegistry.getEnforcing<Spec>('DeviceInfo');Codegen: Auto-Generated Type Safety
Codegen is the automation layer that makes TurboModules and Fabric components type-safe without manual boilerplate. It reads your TypeScript (or Flow) specs and generates the native binding code automatically.
What Codegen generates:
- C++ headers for TurboModule implementations
- Native view prop types for Fabric components
- Type-validated interfaces between JavaScript and native code
The practical effect is that type mismatches between your JavaScript interface and your native implementation become build-time errors instead of runtime crashes. For teams maintaining large apps with custom native modules, this eliminates an entire class of production bugs.
React Native Version Timeline: 2025–2026
Understanding when things changed helps you assess where your app sits.
Version-by-Version New Architecture Milestones
| Version | Date | New Architecture Status | Key Change |
|---|---|---|---|
| 0.68 | 2022 | Opt-in (experimental) | First opt-in available |
| 0.76 | Oct 2024 | Default (enabled by default) | New Architecture on by default; legacy still disableable |
| 0.78 | Feb 2025 | Default | React 19 officially lands in React Native |
| 0.82 | Oct 2025 | Mandatory — legacy disabled | Old architecture permanently removed; Hermes V1 experimental |
| 0.83 | Feb 2026 | Mandatory | Expo SDK 55; Hermes V1 production |
Expo SDK Timeline
| Expo SDK | React Native | New Architecture | Legacy Support |
|---|---|---|---|
| SDK 53 | 0.79 | Enabled by default | Optional opt-out |
| SDK 54 | 0.81 | Enabled by default | Last SDK with opt-out |
| SDK 55 | 0.83 | Always on — no option to disable | Removed |
The legacy architecture was frozen in June 2025 — no new features, no bug fixes, no security patches. As of January 2026, approximately 83% of Expo SDK 54 projects built with EAS Build already run on the New Architecture (Expo, 2026).
Know More- Top React Native App Development Companies in Australia
React 19 + Hermes V1: What Else Changed?
React 19 in React Native (0.78+)
React Native 0.78 shipped in February 2025 with full React 19 support. The most important additions:
| React 19 Feature | What It Does | React Native Impact |
|---|---|---|
| React Compiler | Auto-optimizes components for performance — reduces unnecessary re-renders | Enabled by default in new Expo projects; less manual useMemo/useCallback needed |
| Actions | Async state transitions with built-in pending/error/optimistic states | Cleaner form handling and data mutation patterns |
use() hook | Read promises and context in render | Works with Suspense for data fetching |
| Document metadata | <title> and meta tags from components | Relevant for React Native Web targets |
| Improved error reporting | Better hydration error messages | Faster debugging |
Hermes V1 (React Native 0.82+)
Hermes is React Native's JavaScript engine, replacing JavaScriptCore. V1 (shipped experimentally in 0.82, production in 0.83+) brings:
| Improvement | Detail |
|---|---|
| Static compilation (AOT) | Ahead-of-time bytecode compilation — app starts without JIT warmup |
| Modern JS features | Native support for ES6 classes, const/let, async/await — no Babel transforms needed |
| Startup time | 30–40% faster cold start in benchmarks vs React Native 0.76 builds |
| Real-world TTI | 7–9% improvement in Time to Interactive for production apps (Expensify benchmark) |
| Synthetic benchmarks | Up to 60% performance improvement on synthetic workloads (React Conf 2025) |
| Memory efficiency | Smaller bundle sizes, reduced runtime memory pressure |
Real Performance Numbers From Production
These aren't synthetic benchmarks run on pristine hardware. These are real production migrations.
Shopify Production Migration Results
| Metric | Improvement |
|---|---|
| Cold startup time | 43% faster |
| Rendering performance | 39% improvement |
| Memory usage across app lifecycle | 25% reduction |
| JS-to-native communication overhead | 10× faster (JSI vs Bridge serialization) |
Source: Agile Soft Labs, Shopify production migration data, 2026
Developer Benchmarks: RN 0.76 vs 0.79 (Same Codebase, Real Apps)
Real apps tested on production codebases — navigation stacks, API calls, state management — showed consistent improvements from Hermes optimizations, Fabric's rendering pipeline, and elimination of bridge overhead (Andy.G, Medium, March 2026).
Startup Time: Cold Start Under 800ms
On mid-range Android devices, cold start for a medium-complexity app is now under 800ms with the New Architecture. Static Hermes (ahead-of-time compilation) is in production. That's a result that wasn't achievable with the old bridge on comparable hardware.
Migration: What You Need to Do?
If you're on the New Architecture already (React Native 0.82+, Expo SDK 55+), you don't need to do anything — it's mandatory. If you're on an earlier version, here's the practical path.
Migration Readiness Checklist
| Step | Action | Tool |
|---|---|---|
| Audit dependencies | Check which third-party libraries support the New Architecture | npx react-native-new-arch-check or npx expo-doctor |
| Check React Native version | Target 0.80+ for smooth migration | React Native Upgrade Helper |
| Review custom native modules | Ensure they comply with TurboModule specs | TurboModules spec conversion guide |
| Run Codegen | Auto-generate type-safe bindings for your native modules | Built into React Native build process |
| Enable Hermes | Required — New Architecture is built on JSI, which requires Hermes | Set in android/app/build.gradle |
| Test thoroughly | Run your full test suite; check animations, gestures, and layout-dependent components | Your existing test setup |
Migration Timeline by Project Complexity
| Project Type | Estimated Timeline | Primary Challenge |
|---|---|---|
| Standard app, no custom native code | 1–2 weeks | Dependency audit and updates |
| App with some custom native modules | 2–4 weeks | TurboModule spec conversion |
| App with heavy custom native code | 4–8 weeks | Full native module rewrite to TurboModule spec |
| Large enterprise app (Shopify-scale) | 8–16 weeks | Systematic dependency audit, staged rollout |
Key Dependencies to Audit First
| Library Category | Status in 2026 |
|---|---|
| react-native-reanimated | v4 — New Architecture only (legacy dropped) |
| @shopify/react-native-flashlist | v2 — New Architecture only |
| react-navigation | v7 — Full New Architecture support |
| react-native-screens | v4 — Full support |
| react-native-gesture-handler | Full support (required for Fabric) |
| expo-* packages | All support New Architecture since SDK 53 |
Any library that hasn't been updated since early 2024 is a migration risk. If it's still using the old
NativeModulesAPI without a TurboModule spec, you'll need to find an alternative or write the migration yourself.
How DianApps Builds With the New Architecture?
At DianApps, we don't wait for the ecosystem to stabilize before adopting what's production-ready. Our React Native development practice has been building with the New Architecture since it became the default in 0.76 and our teams have completed full migrations for clients across fintech, healthtech, and e-commerce verticals.
What This Means for Your Project?
When you work with DianApps on a React Native project, you get:
| Capability | What We Deliver |
|---|---|
| New Architecture by default | All new React Native projects start on 0.82+ with the New Architecture fully enabled — no technical debt from day one |
| TurboModule development | Custom native modules written to full TurboModule spec — type-safe, lazy-loaded, JSI-backed |
| Fabric-compatible UI | Components built for concurrent rendering — useTransition, Suspense, and automatic batching work correctly |
| React 19 integration | React Compiler enabled, Actions used for data mutations, modern patterns throughout |
| Hermes-optimized builds | Hermes configured correctly for production — ahead-of-time bytecode, optimized startup |
| Legacy architecture migration | Structured migration plans for existing apps on legacy architecture, including dependency audits and staged rollouts |
| Cross-platform delivery | iOS, Android, and Expo — all targets covered from a single, well-structured codebase |
| Post-launch support | Ongoing maintenance, security patches, and performance optimization after launch |
Our React Native Tech Stack
| Layer | Technology |
|---|---|
| Framework | React Native 0.82+ with New Architecture |
| JS Engine | Hermes (V1 where production-ready) |
| Navigation | React Navigation v7 (Fabric-compatible) |
| State management | Zustand / Redux Toolkit / React Query |
| Animations | Reanimated v4 (New Architecture native) |
| Testing | Jest + React Native Testing Library + Detox |
| CI/CD | Expo EAS Build + GitHub Actions |
| Platform targets | iOS (Swift), Android (Kotlin), Expo Managed/Bare |
DianApps: By the Numbers
🏆 Clutch #1 Premier Verified | Clutch Champion — Fall 2024 (Mobile App Development)
⭐ 4.9/5 Clutch rating across 79+ verified reviews
👥 200+ engineers across USA, Australia, UAE, and India
📱 Apps built on React Native serving millions of users across fintech, healthtech, and e-commerce
Our clients include Khatabook (50M+ users), Airblack (50% increase in active users, 30% rise in subscriptions), and Uber Eats (45% reduced service cost, 35% boosted retention) — outcomes that require a solid technical foundation, not just feature delivery.
Whether you need a greenfield React Native App development services engagement or a migration from legacy architecture to the New Architecture, DianApps brings the technical depth and delivery track record to get it done without disrupting your production app.
Frequently Asked Questions
What is React Native's New Architecture?
React Native's New Architecture replaces the old async bridge with four components: JSI (JavaScript Interface — direct C++ calls), Fabric (concurrent renderer), TurboModules (lazy-loaded native modules), and Codegen (auto-generated type-safe bindings). Together, they eliminate the serialization bottlenecks and architectural limitations of the legacy bridge system that React Native relied on for its first decade.
When did the React Native New Architecture become mandatory?
React Native 0.76 (October 2024) made the New Architecture the default. React Native 0.82 (October 2025) permanently disabled the legacy architecture — the option to turn it off was removed. The legacy architecture was frozen in June 2025 with no further updates or bug fixes. As of Expo SDK 55 (React Native 0.83), the New Architecture is always enabled and cannot be disabled.
What performance improvements does the New Architecture provide?
Production migrations show 43% faster cold starts, 39% faster rendering, and 25% reduction in memory usage across the app lifecycle (Shopify production data, 2026). JSI eliminates the 10× communication overhead of bridge serialization. Hermes V1 delivers 7–9% TTI improvements in real-world apps and up to 60% gains in synthetic benchmarks.
What is JSI in React Native?
JSI (JavaScript Interface) is the foundational component of the New Architecture. It replaces the async bridge with direct C++ references from JavaScript, enabling synchronous native calls without JSON serialization. JSI makes synchronous getDeviceModel() calls possible — previously impossible with the old bridge — and eliminates the bridge congestion that caused UI stutters under heavy native call loads.
How long does migrating to the New Architecture take?
Timeline depends on project complexity. Standard apps with no custom native code typically migrate in 1–2 weeks (primarily dependency updates). Apps with custom native modules take 2–8 weeks. Large enterprise apps can take 8–16 weeks. The main work is auditing third-party dependencies with npx react-native-new-arch-check, converting custom native modules to TurboModule specs, and verifying that UI components work correctly with Fabric's concurrent rendering.
Does the New Architecture affect third-party libraries?
Yes, significantly. Libraries that haven't been updated since early 2024 likely don't support the New Architecture. Key libraries like react-native-reanimated (v4) and @shopify/react-native-flashlist (v2) have already dropped legacy architecture support. Before migrating, audit all dependencies using npx expo-doctor or the React Native Directory compatibility tracker.
What is Fabric in React Native?
Fabric is React Native's new rendering engine. It replaces the legacy UIManager, is written in C++ for a shared implementation across iOS and Android, and aligns with React 18/19's concurrent rendering model. Fabric enables useTransition, Suspense for data fetching, automatic batching, and correct useLayoutEffect behavior — features that were broken or unavailable with the legacy renderer.
The Bottom Line
React Native spent years being criticized for the performance ceiling the bridge imposed. Animations stuttered at frame boundaries. Concurrent rendering was a web-only concept. Synchronous native calls required elaborate workarounds. The New Architecture removes all of that, at the cost of a migration that teams can no longer defer.
The legacy architecture is frozen, deprecated, and gone. The New Architecture is the only architecture. The frameworks, the community packages, the feature roadmap they all point one direction now.
If your app isn't on the New Architecture yet, this is the moment to plan the migration. The tooling is mature, the major libraries have updated, and the performance gains from JSI, Fabric, TurboModules, and Hermes V1 are measurable in production.
For teams that want to move fast and do it right, DianApps brings the technical depth to handle every layer — from dependency audits through TurboModule rewrites through production deployment. Our React Native app development practice is built for exactly this moment in the framework's evolution.






Leave a Comment
Your email address will not be published. Required fields are marked *