Bridging in React Native Explained
Bridging in React Native
~8 Min. Lesezeit Zuletzt aktualisiert am August 8, 2026
The "bridge" is the mechanism through which your JavaScript code communicates with native iOS/Android code – a central concept for understanding why React Native handles some things differently from a regular website.
1. Description
JavaScript and native code run in separate environments and can't call each other directly like regular function calls. The bridge instead transfers SERIALIZED messages (as JSON) ASYNCHRONOUSLY between both sides – a click event on the native side becomes a JSON message sent to the JS thread; a setState() call meant to change the UI becomes, in reverse, a JSON message to the native side.
2. Short example: what "goes over the bridge"
function App() {
return (
<TouchableOpacity onPress={() => console.log('Tapped!')}>
<Text>Press</Text>
</TouchableOpacity>
);
}
// 1. The touch is recognized natively (native thread)
// 2. A "touch event occurred" message crosses the bridge to the JS thread
// 3. The JS thread runs onPress, console.log runs in the JS thread
The new architecture: JSI instead of the bridge
Since React Native 0.68+, there's the "New Architecture" with JSI ("JavaScript Interface") – instead of asynchronous JSON messages, JavaScript and the native side can now partly call each other DIRECTLY and SYNCHRONOUSLY, similar to a direct function call. This reduces latency for very performance-critical interactions (e.g. gesture animations). For the vast majority of everyday apps (including every example in this reference), the conceptual difference stays invisible to you as a developer – you write the same React code.
Achtung: Using the bridge/JSI directly yourself only matters if you write your own NATIVE modules in Swift/Kotlin (e.g. access to a special hardware feature not covered by an existing package) – every topic in this reference is covered by existing JavaScript code.