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”.
Related terms
New Architecture
The rewrite of React Native internals (Fabric, Turbo Modules, JSI), on by default since 0.76 and the only architecture since 0.82.
JSI (JavaScript Interface)
The C++ API that lets JavaScript hold direct references to native objects with no serialization: the foundation of the New Architecture.
Turbo Modules
Native modules in the New Architecture: a TypeScript spec, code generated by Codegen, and lazy loading through JSI.
Fabric
The New Architecture renderer: a C++ core shared by iOS and Android that computes layout synchronously.