---
title: "Why Nitro Is More Than a Faster Bridge"
description: "Marc Rousavy (Margelo) talks Nitro modules, native state, zero-copy data, Vision Camera, and why speed is only part of the story."
url: https://www.callstack.com/podcasts/why-nitro-is-more-than-a-faster-bridge
updated: 2026-10-24T08:39:44.322Z
---

# Why Nitro Is More Than a Faster Bridge

Marc Rousavy (Margelo) talks Nitro modules, native state, zero-copy data, Vision Camera, and why speed is only part of the story.

_Guest: Marc Rousavy, CEO @ Margelo · Host: Luke Farrell, Senior Software Engineer @ Callstack · Published 2026-07-03 · Duration 08:25 · Category: Performance_

Listen: [YouTube](https://youtu.be/HueOt0ctSGQ)

Nitro gets attention for speed, but Marc Rousavy makes a different case for it in this interview. The bigger shift is that Nitro gives React Native modules a more powerful and more flexible API surface to build on. Native state, first-class array buffers, C++ interop, and stateful native objects are part of that. Some of the workloads he points to simply do not fit the older patterns.

Vision Camera is the clearest example. A camera frame is a stateful native object, and Nitro gives Marc a way to represent that directly. That is also why Vision Camera V5 opens up more room for native extensions, ML Kit, OpenCV, computer vision pipelines, and GPU-heavy workflows that would be harder to model in older module systems.

The web GPU work pushes that even further. Marc talks through importing Vision Camera frames as web GPU textures and running compute shaders on top of them. That means zero-copy GPU buffer reuse and a path toward computer vision workloads that stay close to JavaScript and shader code instead of dropping straight into custom native dependencies for everything.

The same pattern shows up in Nitro Image. Before that, image workflows often meant copying files to disk, passing file paths around, or even moving base64 strings through the system. Here the image stays in memory as a binary type. That cuts out one of the most wasteful parts of older image-picking and image-processing flows.

He also points to a bigger ecosystem question. If more modules move to Nitro, there is room for a more unified API style, shared types, and reusable building blocks across libraries. That is already starting to happen with types like Nitro Image.

Insights

## Learn more about Performance

Here's everything we published recently on this topic.

[View all](https://www.callstack.com/insights)

- [Profile React Components in React Native Release Builds](https://www.callstack.com/blog/profile-react-components-in-react-native-release-builds) (May 25 · Article): Learn how to profile React components in React Native release builds with @callstack/inspector, using an Expo app setup that requires zero native code changes.
- [Memory Ownership Models: When JavaScript Meets Native Code](https://www.callstack.com/blog/memory-ownership-models-when-javascript-meets-native-code) (Nov 21 · Article): A deep dive into how React Native handles memory when JavaScript and native code share ArrayBuffer data. Learn why async processing can break, how GC affects raw pointers, and the safe patterns for building high-performance native integrations.
- [From Files to Buffers: Building Real-Time Audio Pipelines in React Native](https://www.callstack.com/blog/from-files-to-buffers-building-real-time-audio-pipelines-in-react-native) (Oct 14 · Article): Learn how to move beyond file-based audio APIs and work directly with in-memory PCM data in React Native. This guide shows how to construct WAV buffers, use JSI for zero-copy transfers, and enable real-time audio processing.
- [How to Add Custom JSI Bindings in Your TurboModule (and Why You Might Need Them)](https://www.callstack.com/blog/how-to-add-custom-jsi-bindings-in-your-turbomodule-and-why-you-might-need-them) (Sep 8 · Article): TurboModules provide a type-safe way to write native code in React Native. JSI sits underneath as a lower-level API, enabling direct interaction with the JavaScript runtime. Beyond what TurboModules expose, JSI gives you access to powerful features, such as working directly with ArrayBuffers. This article shows how to inject a custom binding step by step.
- [Exploring Fibers: Cooperative Multitasking and Lock-Free Task Execution](https://www.callstack.com/blog/exploring-fibers-cooperative-multitasking-and-lock-free-task-execution) (Jul 24 · Article): Explore how fibers enable lightweight, cooperative multitasking. This guide walks through building a simple scheduler, managing task dependencies without locks, and using Tracy to visualize performance.
- [Multithreading Isn’t Free: Performance Pitfalls Visualized](https://www.callstack.com/blog/multithreading-isnt-free-performance-pitfalls-visualized) (May 21 · Article): Learn how to profile and optimize multithreaded apps. Discover why more threads don’t always mean faster results and how bad thread contention really is.
- [Master JavaScript Performance in React Native (Part 2)](https://www.callstack.com/events/master-javascript-performance-in-react-native-part-2) (Apr 28 · Webinar): Learn to fix JS performance issues in React Native-from debounce bugs to Redux selectors, in this hands-on webinar with real code examples.
- [Tips & Tricks From The Ultimate Guide to React Native Optimization 2025](https://www.callstack.com/events/tips-tricks-from-the-ultimate-guide-to-react-native-optimization-2025) (Apr 24 · Talk): View flattening, React 19 hooks, real DevTools tips-learn what actually helps your React Native app run faster.
- [User-Focused Performance Tracking](https://www.callstack.com/events/user-focused-performance-tracking) (Apr 24 · Talk): Discover how Expensify defines and tracks performance metrics that actually impact user experience.
