In a real app
In a project, the architecture setting lives in two places: newArchEnabled in android/gradle.properties and the RCT_NEW_ARCH_ENABLED variable read by the Podfile. On an Expo project managed with prebuild, the newArchEnabled key in app.json used to drive both files. Since 0.82 these settings no longer disable anything, but you still find them in projects that have been through several upgrades, and they mislead people about what is actually running.
The real migration work is in dependencies. A library written against the bridge goes through the interop layer, which the React Native team keeps around “for the foreseeable future” with no removal date. It runs, but it hides bugs: dropped events, measure returning zeros, untyped props arriving in the wrong shape. The useful tool is still reactnative.directory (opens in a new window) with its New Architecture filter, then the changelog of every native dependency. React Native 0.81 and Expo SDK 54 are the last versions that still accept the Legacy Architecture; that is the recommended stop to migrate on before going higher.
What I check in an audit: the React Native version, whether the project is on react-native-reanimated 4 (which requires the New Architecture) or 3, and the Legacy Architecture warnings in the Metro logs on first launch. From 0.84, Legacy Architecture code is no longer compiled into iOS builds, which cuts binary size and build time. An app still blocked by an unsupported library has to replace it, contact the maintainer, or stay on 0.81 knowingly.
Related terms
Fabric
The New Architecture renderer: a C++ core shared by iOS and Android that computes layout synchronously.
Turbo Modules
Native modules in the New Architecture: a TypeScript spec, code generated by Codegen, and lazy loading through JSI.
JSI (JavaScript Interface)
The C++ API that lets JavaScript hold direct references to native objects with no serialization: the foundation of the New Architecture.
Bridgeless
The New Architecture runtime mode where the bridge is never instantiated: everything goes through JSI, Turbo Modules, and Fabric.
Codegen
React Native’s build-time tool that generates the native glue (C++, Java, Objective-C++) from TypeScript or Flow spec files.