Restrepo describes the bridge as the part of React Native that sends messages between JavaScript and native code. In the older architecture, those messages are asynchronous JSON payloads sent in batches, letting JavaScript use platform APIs and native modules.
The great Divide: Bridging Native Modules And React Native
Speaker
Monica Restrepo, a software engineer at Major League Soccer, computer science student, and Great Helper open source contributor, explains native modules and React Native at React Native EU 2020 for Callstack.
Restrepo outlines TurboModules and JSI as parts of React Native's planned new architecture. TurboModules are intended to load modules lazily, improve type safety, reduce call overhead, and start faster. JSI provides an interface for C++ and JavaScript to interact, addressing limits she associates with the bridge, such as batching and bottlenecks.
On the native side, events such as timers, network activity, touch gestures, and Bluetooth are collected and serialized before reaching JavaScript; calls back to native code also pass through the bridge. Restrepo traces module registration, method configuration, JavaScript execution, and callbacks, describing how exported modules and methods become available to the app.
At Major League Soccer, the login flow used a web view connected to a web login page and Gigya, which handles registration, social login, profiles, and preferences. The team replaced that flow with a native module using Gigya's SDK, implementing the login screen in Kotlin and Swift and exposing native methods and events to React Native.
Takeaways
- Map the native APIs your app needs before deciding whether to build a module or rely on a web view.
- Expect older React Native apps and libraries to keep using the bridge during migrations.
- Lazy module initialization can avoid setting up native modules and view managers the app does not use.
- For a native module, register the package and explicitly expose the methods and events JavaScript needs.
- Replacing an embedded web login with a provider's native SDK can provide access to its native capabilities.
Mentioned in this talk
Search inside this talk
What was claimed 9
- builtMonica Restrepo built Great Helper
“an educational open source contributor for Great Helper, a React Native community project.”
YouTube Unverified1 source· Talk
- role atMonica Restrepo is software engineer at Major League Soccer
“I'm part of a vertical group of software engineers at Major League Soccer.”
YouTube Unverified1 source· Talk
- uses
“Most of our products at MLS are built or being built using React Native or React JS”
YouTube Verified3 sources· Talk
- featureTurboModules: Lazy module loading and reduced overhead when calling JavaScript methods from native code
“TurboModules will include improved type safety between native code and JavaScript, allow for less overhead”
YouTube Unverified1 source· Talk
- featureJSI: Allows interaction with the JavaScript engine from C++ apps
“it's an API that allows us to interact with the JavaScript engine from C++ apps.”
YouTube Unverified1 source· Talk
- featureGigya: Handles registration, social login, user profiles, and preferences
“Gigya handles registration, social login, user profiles, and preferences.”
YouTube Unverified1 source· Talk
- usesMajor League Soccer uses Gigya
“Our web and mobile apps at MLS use Gigya as their identity manager.”
YouTube Unverified1 source· Talk
- integrates withReact Native native modules integrates with Gigyanative SDK
“we were missing some of the capabilities Gigya had to offer with its native SDK.”
YouTube Unverified1 source· Talk
- builtlogin experience implemented in Kotlin and Swift
“we decided to rewrite the whole login experience as a native module”
YouTube Unverified1 source· Talk





