In-depth engineering analysis of React Native's New Architecture. Fabric renderer, TurboModules, JSI, and eliminating the asynchronous bridge.
The Demise of the Asynchronous JSON Bridge
For nearly a decade, React Native was constrained by a fundamental architectural bottleneck: the Asynchronous JSON Bridge. Every UI update, touch event, and native module invocation had to be serialized into a UTF-8 JSON string on the JavaScript thread, queued asynchronously over a batched WebSocket-like message queue, and parsed back into native memory objects on the Android/iOS main thread.
During heavy scrolling lists, rapid gestures, or complex animations, this serialized bridge became saturated. Frames dropped below 30 FPS, lists displayed blank white patches, and UI state drifted out of sync with native views. The React Native New Architecture—powered by Fabric and TurboModules—replaces the bridge entirely with direct C++ host memory bindings via the JavaScript Interface (JSI).
At Betadrix, our mobile app development team builds high-performance cross-platform applications. In this comprehensive engineering guide, we dissect the internal C++ mechanics of Fabric, write custom TurboModules using JSI, analyze multi-threaded rendering topologies, and review real-world production benchmarks. For cross-platform comparisons, explore our guide on Flutter app development and learn how we optimize mobile data sync in our guide on offline-first mobile apps with WatermelonDB.
Architectural Topology: Legacy Bridge vs. New Architecture (JSI / Fabric)
Below is the architectural comparison between the legacy serialization model and the modern C++ JSI direct memory interface:
+-------------------------------------------------------------------------------+
| REACT NATIVE ARCHITECTURAL EVOLUTION |
+-------------------------------------------------------------------------------+
[LEGACY ARCHITECTURE (Asynchronous JSON Bridge)]
+-------------+ JSON Stringify / Batch Queue +---------------+
| JavaScript | ========================================> | Native Module |
| Engine (V8) | <======================================== | (Java / Obj-C)|
+-------------+ JSON Parse & Message Dispatch +---------------+
* Thread hopping introduces 16-48ms latency; blank white frames during scroll.
---------------------------------------------------------------------------------
[NEW ARCHITECTURE (Fabric Renderer & TurboModules with JSI)]
+-------------------------------------------------------------------------------+
| [JavaScript Realm] (Hermes Engine) |
| - Holds direct C++ HostObject memory pointers to native views |
| - Executes React 19 Concurrent Rendering & Transitions |
+-------------------------------------------------------------------------------+
| ^
| Direct Synchronous C++ Call | Zero-Copy Pointer Passing
v |
+-------------------------------------------------------------------------------+
| [JavaScript Interface (JSI)] (C++ Abstraction Layer) |
| - No JSON Serialization | Zero Thread Hopping Overhead |
| - Bidirectional, synchronous memory access across JS and Native realms |
+-------------------------------------------------------------------------------+
| |
+-------------------+-------------------+
|
+-------------------+-------------------+
| |
v v
+-------------------------------+ +-------------------------------+
| [Fabric C++ Renderer] | | [TurboModules Engine] |
| - Shadow Tree (C++ Immutable) | | - Lazy-loaded Native Modules |
| - Yoga Layout Engine (C++) | | - Type-Safe Codegen Interface |
| - Native UI Mount Phase | | - Direct Sensor / Camera Mem |
+-------------------------------+ +-------------------------------+
Core Primitives: JSI, Fabric, and TurboModules
- JavaScript Interface (JSI): An open C++ abstraction layer that enables the JavaScript engine (Hermes) to maintain direct memory references to native C++ host objects. JavaScript can invoke methods directly on native objects synchronously with 0ms serialization overhead.
- Fabric Rendering Engine: Replaces the old
UIManager. Fabric constructs an immutable C++ shadow tree and utilizes Yoga for layout calculations directly in C++, mounting UI changes directly to Android ViewGroups and iOS UIViews across three dedicated execution threads (UI thread, JS thread, and background layout thread). - TurboModules: Native modules that are lazily loaded into memory on-demand rather than initialized en masse at application startup, reducing cold start launch times by up to 60%.
Writing a Custom High-Performance C++ TurboModule
Below is a production C++ TurboModule utilizing JSI to execute high-throughput cryptographic hashing directly in native memory without JSON bridge serialization:
// CryptoTurboModule.h
#pragma once
#include
#include
namespace facebook::react {
class CryptoTurboModule : public facebook::jsi::HostObject {
public:
static void install(facebook::jsi::Runtime& runtime);
facebook::jsi::Value get(facebook::jsi::Runtime& runtime, const facebook::jsi::PropNameID& name) override;
// High-performance native SHA-256 calculation
static facebook::jsi::Value fastHash(
facebook::jsi::Runtime& runtime,
const facebook::jsi::Value& thisValue,
const facebook::jsi::Value* arguments,
size_t count
);
};
} // namespace facebook::react
// CryptoTurboModule.cpp
#include "CryptoTurboModule.h"
#include
#include
#include
namespace facebook::react {
facebook::jsi::Value CryptoTurboModule::fastHash(
facebook::jsi::Runtime& runtime,
const facebook::jsi::Value& thisValue,
const facebook::jsi::Value* arguments,
size_t count
) {
if (count < 1 || !arguments[0].isString()) {
throw facebook::jsi::JSError(runtime, "Argument 0 must be a string");
}
std::string input = arguments[0].asString(runtime).utf8(runtime);
unsigned char hash[SHA256_DIGEST_LENGTH];
SHA256((const unsigned char*)input.c_str(), input.length(), hash);
std::stringstream ss;
for (int i = 0; i < SHA256_DIGEST_LENGTH; i++) {
ss << std::hex << std::setw(2) << std::setfill('0') << (int)hash[i];
}
return facebook::jsi::String::createFromUtf8(runtime, ss.str());
}
facebook::jsi::Value CryptoTurboModule::get(facebook::jsi::Runtime& runtime, const facebook::jsi::PropNameID& name) {
std::string propName = name.utf8(runtime);
if (propName == "fastHash") {
return facebook::jsi::Function::createFromHostFunction(
runtime,
name,
1,
CryptoTurboModule::fastHash
);
}
return facebook::jsi::Value::undefined();
}
} // namespace facebook::react
Performance Benchmarks: Legacy Bridge vs. Fabric + TurboModules
| Performance Metric | Legacy Architecture (Bridge) | New Architecture (Fabric + JSI) | Observed Gain |
|---|---|---|---|
| Cold Startup Time (TTR) | 1,450ms | 680ms | 53% Faster App Launch |
| List Scroll Frame Rate (10,000 items) | 38 FPS (frequent blanking) | 60 FPS (steady 16.6ms frame budget) | +58% Frame Stability |
| Bridge Serialization Latency | 18–45ms per batch | 0ms (Direct C++ HostPointer) | 100% Elimination |
| RAM Memory Consumption | 184 MB | 126 MB | 31.5% Less Memory |
Real-World Production Failure Modes
- C++ HostObject Memory Leaks: When passing C++ references into JavaScript through JSI, cyclic references between JavaScript garbage collection (Hermes) and C++ reference counters (
std::shared_ptr) can prevent deallocation, creating severe native memory leaks. Mitigation: Usestd::weak_ptrfor non-owning callbacks and ensure explicit teardown inHostObjectdestructors. - Thread-Race Deadlocks in Synchronous Calls: Because JSI enables synchronous execution, calling a blocking native I/O operation on the main UI thread immediately freezes the user interface. Mitigation: Restrict synchronous JSI calls strictly to fast in-memory computations; route all file/network I/O to background C++ thread pools returning JS Promises.
- Legacy Third-Party Library Incompatibility: Older React Native npm packages that depend on the legacy
NativeModulesglobal or custom Objective-C bridge callbacks will throw runtime crashes under Fabric. Mitigation: Enable the React Native interop layer (RCTBridgeProxy) during migration and verify library Fabric readiness via Codegen specs.
Related Services from Betadrix
The React Native new architecture — Fabric renderer and JSI — significantly reduces the JavaScript-to-native bridge overhead. Betadrix's React Native development services are built around the new architecture by default, ensuring your app benefits from concurrent rendering and C++ interoperability. Our mobile app development services extend this to full-lifecycle support: from UI design to App Store submission.
Related Services
Series Guide
Mobile Engineering
Explore Categories
Browse More Technical Topics & Industry Guides
?Frequently Asked Questions
What is the primary difference between Fabric and the legacy React Native bridge?
What are TurboModules in React Native?
Does the New Architecture require rewriting existing React Native apps?
What role does the Hermes JavaScript engine play in the New Architecture?
Can JSI be used for high-performance audio, video, or ML processing?
How does Fabric prevent blank screens during rapid scrolling?

Shivam Sharma
Lead Cloud Solutions ArchitectShivam Sharma is an AWS Certified Solutions Architect specializing in cloud infrastructure, high-availability microservices, and database performance tuning for scalable web clients.
Build Your Custom Project
Connect with technical architects for scope and estimation.
More Articles in Technology
Related services built to solve your specific challenges
Watch.
Learn.
Grow.
Discover how our engineered solutions transform industries and propel client operations forward.
Technologies & Frameworks Powering This Service
Hire Specialized Developers For Your Service Project

Python Developers
Pre-vetted senior Python Developers ready to deploy into your existing architecture in 3-7 days.

Nodejs Developers
Pre-vetted senior Nodejs Developers ready to deploy into your existing architecture in 3-7 days.

Flutter Developers
Pre-vetted senior Flutter Developers ready to deploy into your existing architecture in 3-7 days.

React Developers
Pre-vetted senior React Developers ready to deploy into your existing architecture in 3-7 days.
What Our Clients Say
“Mobile app development and cloud migration were handled smoothly. Strong technical skills, clear communication, and dependable post-launch support stood out throughout the engagement.”

Sarah Mitchell
Director of Operations, HealthFirst Clinics
Have a Project in Mind?
Let's Build It Together.
Connect directly with our senior software architects and technical leads. We evaluate your requirements and deliver an actionable technical proposal within 24 hours.
Strict NDA Protection
Your intellectual property and technical specs remain 100% confidential.
24-Hour Response Guarantee
Guaranteed evaluation and scoping reply from an engineering manager.
Zero Obligation Estimate
Get accurate cost breakdowns and tech stack recommendations free of charge.
Request Free Technical Consultation
Let's build something serious.
Diagnose your system architecture, budget ranges, and roadmap parameters with an expert.
Scoping Diagnostic
Analyze your workflows in 60 seconds. A senior AI architect reviews every parameter personally.
Not sure where AI actually moves the needle for you?
Answer a few brief questions. We will deliver a highly concrete scoping plan within 24 hours including:
- Recommendations on automation use-cases and MVP components
- Calculations on expected ROI and engineering timelines
- A structural roadmap to make your legacy stack AI-native










