Skip to main content
React Native & Expo 12 min read•Published 2026-05-20

React Native's New Architecture in Production: Fabric, JSI, and TurboModules Explained

The legacy asynchronous JSON bridge is history. Discover how React Native's JavaScript Interface (JSI), Fabric renderer, and Codegen-backed TurboModules unlock synchronous native performance.

Raja Kaleemullah
Raja KaleemullahHead of Product & Engineering • Codiest Studio
React Native IoT companion app running real-time Bluetooth telemetry
Direct Architectural Summary

React Native's New Architecture eliminates the legacy asynchronous JSON serialization bridge by introducing the C++ JavaScript Interface (JSI), allowing the Hermes JS engine to hold direct memory references to C++/native Host Objects, execute synchronous layout reads via the Fabric renderer, and lazily load type-safe native APIs through Codegen-backed TurboModules.

For nearly a decade, critics of React Native pointed to a single architectural Achilles' heel: the asynchronous JSON bridge. Every time JavaScript needed to read a native sensor, measure a layout frame, or update a native view during a fast scroll gesture, messages had to be serialized into JSON strings, queued across an asynchronous thread boundary, and deserialized on the other side. With the New Architecture now standard in modern React Native and Expo releases, that bottleneck has been completely re-engineered from the ground up in C++.

1. The Bottleneck of the Legacy Asynchronous Bridge

Under the old architecture, the JavaScript thread and the Native UI thread were completely blind to each other's memory spaces. If a user scrolled a complex 60fps list that required synchronous header pinning or layout measurement, the async round-trip across the bridge caused a 1-to-2 frame delay—manifesting as visual 'jumpiness' where blank white cells briefly flashed before rendering.

Furthermore, every native module registered in the app had to be initialized eagerly on app startup, inflating cold-start Time-to-Interactive (TTI).

2. JSI (JavaScript Interface): Direct C++ Host Object Access

The cornerstone of the New Architecture is **JSI (JavaScript Interface)**—a lightweight, general-purpose C++ API layer embedded directly into the JavaScript engine (Hermes). With JSI, JavaScript can hold direct pointers to C++ `HostObject` instances and invoke methods on them synchronously without serializing a single byte of JSON.

When we engineered high-frequency Bluetooth Low Energy (BLE) telemetry gauges for CyberBike and real-time audio waveform visualizers for SoundWave, JSI enabled shared `ArrayBuffer` memory access between native hardware callbacks and React components at 120Hz.

Architectural LayerLegacy Bridge ArchitectureNew Architecture (JSI + Fabric)Measured Production Improvement
JS-to-Native CommunicationAsync JSON string serializationDirect C++ JSI HostObject pointersZero serialization overhead; sync calls supported
Native Module StartupEager initialization of all modulesLazy on-demand TurboModule loading30–45% faster cold-start Time-to-Interactive
UI Tree RenderingAsync Shadow Tree over BridgeC++ Immutable Shadow Tree (Fabric)Synchronous `useLayoutEffect` without frame jumps
Type Safety BoundaryUnchecked runtime dictionariesCompile-time Codegen from TypeScriptEliminates native-to-JS type mismatch crashes

3. Fabric: Synchronous Layout & React 18 Concurrent Priority

Fabric is React Native's new rendering system. By moving the Shadow Tree into shared C++ memory managed by Yoga, both the JavaScript thread and the Native UI thread can read layout metrics synchronously.

This unlocks React's `useLayoutEffect` hook—allowing you to measure a tooltip or chat bubble in `LingoChat` and adjust its position within the exact same commit phase before a single pixel is painted to the screen. It also enables React 18 Concurrent features like `startTransition` and `Suspense`, letting urgent touch gestures interrupt low-priority background renders.

4. TurboModules & Codegen: Lazy Loading and Static Type Safety

TurboModules replace legacy Native Modules. Instead of initializing Bluetooth, Camera, Biometrics, and FileSystem modules at app launch, TurboModules load lazily the exact moment your JavaScript code first invokes them.

Better yet, **Codegen** reads your strongly typed TypeScript specification (`Spec extends TurboModule`) at build time and automatically generates the corresponding C++, Objective-C++, and Kotlin/Java interfaces—turning runtime boundary crashes into compile-time guarantees.

Engineering Best PracticeUse synchronous TurboModule methods sparingly—only for sub-millisecond memory reads or layout metrics. Keep network I/O, disk encryption, and hardware handshakes asynchronous so you never block the JS thread.

5. Migrating Existing Apps to the New Architecture

Before enabling the New Architecture flag in production, audit your third-party native dependencies for Fabric/TurboModule compatibility, migrate custom animations to `react-native-reanimated` v3+ (which runs worklets directly on the UI thread via JSI), and verify Hermes bytecode compilation across both iOS and Android release builds.

Codegen Type-Safe TurboModule Specification (NativeBleTelemetry.ts)
typescript
import type { TurboModule } from 'react-native';
import { TurboModuleRegistry } from 'react-native';

export interface Spec extends TurboModule {
  // Synchronous JSI read — zero JSON serialization or Promise latency
  getInstantMotorRpmSync(deviceId: string): number;
  // Asynchronous native BLE command
  setRegenerativeBrakingMode(deviceId: string, level: number): Promise<boolean>;
}

export default TurboModuleRegistry.getEnforcing<Spec>('NativeBleTelemetry');

Conclusion

React Native's New Architecture erases the historical performance gap between cross-platform JavaScript and native Swift/Kotlin development, giving product teams shared TypeScript velocity with true native responsiveness.

Next Step

Building a React Native or Expo application?

Partner with Codiest's senior React Native architects to build or modernize your iOS and Android mobile apps.

More Strategic Guides from Codiest Insights