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

Enable TurboModules and Fabric for Faster Native Bridges

A quick guide to turning on TurboModules and the Fabric renderer in React Native to cut bridge latency and improve UI responsiveness.

react nativeperformancefabricturbomodules

Insight

React Native's classic bridge serializes every call between JavaScript and native code, which adds noticeable latency in animation‑heavy screens. TurboModules and the new Fabric renderer replace the serialized bridge with a JSI‑based, direct‑call model, allowing JavaScript to invoke native methods instantly and letting the UI thread render without crossing the bridge. Enabling them today gives you a measurable boost in frame rates and reduces the "jank" that often appears during rapid state updates.

Example

// metro.config.js
const { getDefaultConfig } = require('expo/metro-config');
const defaultConfig = getDefaultConfig(__dirname);

module.exports = {
  ...defaultConfig,
  transformer: {
    ...defaultConfig.transformer,
    // Enable the new Fabric and TurboModules flags
    experimentalImportSupport: true,
    inlineRequires: true,
    enableBabelRCLookup: true,
    // Fabric specific
    unstable_allowRequireContext: true,
  },
  resolver: {
    ...defaultConfig.resolver,
    // Ensure native modules are resolved as TurboModules
    sourceExts: [...defaultConfig.resolver.sourceExts, 'cjs'],
  },
};

Takeaway

Flip the experimentalImportSupport and related flags in your Metro config, then rebuild with EAS. Your app will start using JSI‑powered TurboModules and Fabric out‑of‑the‑box, delivering smoother animations and faster native calls without rewriting existing JavaScript.