~/swaraj.dev
Back to all posts
April 16, 20261 min read

TurboModules vs Native Modules: Picking the Right Bridge for Performance

Learn when to use React Native's TurboModules instead of classic Native Modules and how the new JSI bridge can shave milliseconds off your native calls.

react nativeperformancenative modules

Insight

TurboModules are the next‑generation bridge introduced in React Native 0.71. They lazily load native code, execute on a separate JSI thread, and bypass the costly JSON serialization that classic Native Modules rely on. This results in lower latency for high‑frequency calls such as sensor polling or animation updates. Classic Native Modules still shine when you need synchronous APIs, complex lifecycle hooks, or support for RN versions prior to 0.71. Choosing the right bridge can mean the difference between a buttery UI and a jittery experience.

Example

// Example TurboModule (iOS) – MyTurboModule.ts
import { TurboModule, TurboModuleRegistry } from 'react-native';

export interface Spec extends TurboModule {
  getBatteryLevel(): Promise<number>;
}

export default TurboModuleRegistry.getEnforcing<Spec>('MyTurboModule');

Takeaway

If the native call is infrequent or requires synchronous behavior, stick with a classic Native Module. For hot paths—sensor streams, UI‑driven calculations, or frequent data fetches—invest in a TurboModule to reap the performance gains of the JSI bridge.