Bridgeless Mode

Bridgeless Mode and What the Old Bridge Did

In the old architecture, every native module call and UI update was serialized to JSON, batched and sent across the bridge asynchronously, so a native call could never simply return a value, and every native module was initialized at startup. Frequent traffic such as scroll events clogged the queue.

Bridgeless mode, the default for New Architecture apps since React Native 0.74 36,878 , removes the bridge object itself. Startup no longer spends time creating it, and what went through it (timers, events, error handling, module lookup) now runs over JSI. Since 0.82 there is no way back: newArchEnabled=false is ignored. Libraries written against the old bridge APIs still work through an interop layer that the team plans to keep "for the foreseeable future", but new native code should be a Turbo Native Module or an Expo 6,418 Module (Storage and Native Modules).

The BookNestIntro app from What React Native Is logs what its runtime reports, reading global.RN$Bridgeless, global.nativeFabricUIManager and global.HermesInternal. Its log on the emulator confirms both features:

Output of 1
 LOG  {
  "engine": "Hermes",
  "hermesRelease": "250829098.0.17",
  "bytecode": 98,
  "reactNative": "0.86.3",
  "fabric": true,
  "bridgeless": true,
  "platform": "android API 36"
}

bridgeless and fabric are both true on Expo SDK 57's React Native 0.86.3, with Hermes 11,328 as the engine (Hermes).