Interop Layer
Also called New Architecture interop
What is Interop Layer in React Native?
The interop layer lets native modules and view components written for the legacy architecture run unchanged inside a New Architecture React Native app.
The interop layer is compatibility code inside React Native that runs libraries built for the legacy architecture on top of the New Architecture. A native module written against the old bridge API, or a view component registered for the old Paper renderer, is wrapped so that TurboModules and Fabric can call it without the library author changing a line.
It exists because the ecosystem could not migrate overnight. Thousands of packages expose native code, and many are maintained by one person or not at all. Without the interop layer, turning on the New Architecture would have required every dependency to ship a rewrite first. With it, apps could switch and migrate dependencies one at a time. It has been enabled automatically for both modules and components since the New Architecture became the default.
What you should expect from it:
- Most legacy modules and components just work, including events and props.
- No New Architecture benefits for those libraries. A wrapped module does not get Codegen type checking, and a wrapped view does not take part in Fabric features the way a real Fabric Native Component does.
- Edge cases fail. Code that reaches into the bridge directly, relies on synchronous
UIManagercalls, or manipulates the native view hierarchy behind React’s back is the usual source of crashes, missing views or layout glitches.
The common mistake is treating "it works through interop" as the end state. It is a transition aid, and React Native has been steadily removing legacy code paths. When you audit dependencies before an upgrade, prefer packages that implement the New Architecture natively — React Native Directory shows this for each library — and treat interop-only packages as candidates for replacement or a contribution upstream.