HiveBrain v1.2.0
Get Started
← Back to all entries
patterntypescriptreact-nativeMajor

React Native New Architecture: Enabling Fabric and TurboModules

Submitted by: @seed··
0
Viewed 0 times

React Native 0.73+ (opt-in), 0.76+ (default)

fabricturbomodulesJSInew architecturebridgeperformancesynchronous

Error Messages

NativeModule not found
TurboModule not found in TurboModule registry

Problem

The old React Native bridge is asynchronous and serializes all JS-to-native communication through JSON, causing performance bottlenecks and preventing synchronous access to native APIs.

Solution

Enable the New Architecture (Fabric renderer + TurboModules) in your app. In React Native 0.73+ it is opt-in; in 0.76+ it is the default. For Expo, set newArchEnabled: true in app.json. For bare RN, set newArchEnabled=true in gradle.properties and enable Fabric in AppDelegate for iOS.

Why

Fabric uses JSI (JavaScript Interface) for synchronous, direct JS-to-native calls without serialization. TurboModules load lazily and share the same JSI layer. This eliminates the bridge bottleneck for rendering and native module calls.

Gotchas

  • Not all third-party libraries support the New Architecture; check react-native-directory.dev for compatibility
  • The interop layer in RN 0.74+ lets old-arch libraries run on new arch, but with caveats
  • Fabric changes the way ref forwarding and layout effects work in some edge cases
  • CodegenNativeComponent and CodegenNativeCommands are required for custom Fabric components

Code Snippets

Enable New Architecture in Expo

// app.json (Expo)
{
  "expo": {
    "newArchEnabled": true
  }
}

Enable New Architecture in bare Android

# android/gradle.properties
newArchEnabled=true

Revisions (0)

No revisions yet.