Skip to content
useffect.sh
Book 30 min with a senior
Architecture

Bridgeless

The New Architecture runtime mode where the bridge is never instantiated: everything goes through JSI, Turbo Modules, and Fabric.

Definition

Bridgeless is the React Native runtime mode in which the legacy bridge is never instantiated at all. In the early New Architecture releases, Fabric and Turbo Modules still ran alongside a bridge loaded in parallel for modules and components that had not migrated. In bridgeless mode, the runtime starts from a host (ReactHost on Android, RCTHost on iOS) that creates the JavaScript engine, the JSI runtime, and the renderer directly; libraries still on the old API go through an interop layer that emulates the old interfaces. Bridgeless was open-sourced behind a flag in React Native 0.73, became the default whenever the New Architecture was enabled in 0.74, and since 0.82 it is the only mode available. The term mostly shows up in library changelogs and in the app’s native integration code (AppDelegate or SceneDelegate, MainApplication).

In a real app

For an app, going bridgeless mostly shows in the native integration code. On iOS, the modern AppDelegate relies on RCTReactNativeFactory rather than RCTBridge; on Android, MainApplication exposes a ReactHost through DefaultReactHost. A project whose AppDelegate.mm still instantiates RCTBridge by hand has skipped steps in the upgrade helper, and that breaks on the next version.

On the library side, interop symptoms are recognizable: a module calling bridge.eventDispatcher or RCTBridge.currentBridge gets a compatibility object, and some paths (events sent before load, custom UIManager calls) silently do nothing. The “Bridgeless mode is enabled” message followed by a warning naming a specific module in the Metro console is the lead to follow. From React Native 0.84 onward, bridge classes are being removed from core with each release, so an unmaintained library eventually stops compiling.

In an audit I look for imports of com.facebook.react.bridge.ReactContextBaseJavaModule with no Turbo equivalent, RCT_EXPORT_MODULE with no matching spec, and I read every native dependency’s changelog for the words “bridgeless” or “New Architecture”.

Sources

All 35 glossary terms

One of these is blocking your app?

30 minutes with a senior to look at the problem in your code. Free.