What Is the New Architecture?
React Native has undergone its most significant internal redesign since 2018. The New Architecture fundamentally changes how JavaScript communicates with native code, replacing the asynchronous bridge with direct, synchronous interfaces. This isn't optional anymore--it's the future of React Native, enabled by default since version 0.76.
This guide covers the core pillars of the New Architecture, their practical benefits, and what they mean for your mobile development projects. Whether you're building consumer apps or enterprise solutions, understanding these architectural changes helps you make informed decisions about your web development stack.
What You'll Learn
- Why the old bridge architecture limited React Native's potential
- How JavaScript Interface (JSI) eliminates serialization overhead
- Why Fabric's synchronous renderer enables smoother UI patterns
- How TurboModules provide type-safe native code integration
- Migration considerations and best practices
New Architecture Performance Improvements
2025
Year the legacy bridge will be removed
0.76
React Native version with New Architecture enabled by default
30MB
Frame buffer size JSI can handle per frame
90%+
Code sharing between iOS/Android with React Native
Understanding the Old Architecture and Its Limitations
The original React Native architecture introduced in 2015 relied on an asynchronous bridge to communicate between JavaScript and native modules. This bridge worked like a message queue--JavaScript would serialize data into JSON, send it across the bridge, and native code would deserialize it, process it, and send results back.
The Three Fundamental Constraints
Asynchronous Communication All bridge communication was asynchronous, meaning JavaScript couldn't synchronously query native views for measurements or properties. This made UI patterns like tooltips requiring target view measurements require workarounds and could result in visible jumps.
Serialization Overhead Passing large data structures--camera frames, complex objects--carried significant performance costs. A camera frame of ~30 MB processing at 60fps would generate ~2 GB of data per second, which would crush the bridge architecture.
No Concurrent Features The bridge couldn't support modern React features like concurrent rendering and Transitions, which require tighter integration between React's scheduling and native rendering pipeline.
| Aspect | Legacy Bridge | New Architecture (JSI) |
|---|---|---|
| Communication | Asynchronous, serialized | Synchronous, direct |
| Data Transfer | JSON serialization | Direct object references |
| Layout Updates | Async, may cause visual jumps | Synchronous, single commit |
| React 18 Features | Not supported | Fully supported |
| Type Safety | Runtime checks only | Build-time code generation |
These constraints weren't minor inconveniences--they were architectural ceilings that prevented React Native from achieving true parity with native development. The New Architecture was designed to remove these limitations entirely.
The JavaScript Interface (JSI) Foundation
JSI represents the most fundamental change in the New Architecture. Instead of communicating through a serialized message queue, JSI allows JavaScript to hold direct references to C++ objects and invoke methods synchronously.
How JSI Works
// With JSI, JavaScript holds direct references to native objects
const nativeObject = hostObject; // Direct pointer, no serialization
const result = nativeObject.someMethod(args); // Synchronous call
Practical Implications
- No serialization overhead for any native-JavaScript communication
- Support for alternative JavaScript engines beyond JavaScriptCore (Hermes recommended)
- Real-time data processing for camera, audio, and other high-throughput scenarios
The practical implication for developers is that native-JavaScript interop is no longer a performance concern to factor into architectural decisions. Libraries like VisionCamera use JSI to process frame buffers in real-time, handling roughly 30 MB per frame buffer at 60fps--data volumes that would have crushed the old bridge architecture.
According to React Native's official documentation on JavaScript/Native interfacing, this direct communication model opens doors that were previously closed, enabling performance-critical features that were impossible under the bridge architecture.
Fabric: The New Synchronous Renderer
Fabric is the New Architecture's renderer, redesigned to support synchronous communication between JavaScript and native UI layers.
Synchronous Layout: A Practical Example
The Problem with Legacy Architecture:
// Legacy approach - can cause visual jumps
const onLayout = (event) => {
targetRef.current?.measureInWindow((x, y, width, height) => {
// State update may apply after initial paint
setTargetRect({x, y, width, height});
});
};
The Fabric Solution:
// Fabric approach - synchronous updates in single commit
useLayoutEffect(() => {
targetRef.current?.measureInWindow((x, y, width, height) => {
// Measurement and state update happen in same commit
setTargetRect({x, y, width, height});
});
}, [setTargetRect]);
With Fabric, layout measurements and subsequent updates happen within the same render commit, ensuring users see only the final, correctly-positioned UI without intermediate states or jumps.
As noted in React Native's documentation on synchronous layout, this consistency with web React patterns is transformative for developers building complex, interactive UIs.
Concurrent Features and React 18 Integration
The New Architecture brings full support for concurrent React features from React 18 and beyond.
Automatic Batching
In the legacy architecture, only updates triggered from JavaScript events were batched. With Fabric, state updates from native event handlers (sliders, scroll events) are also batched:
// With Fabric, all these updates are batched automatically
const handleSliderChange = (value) => {
setTileCount(value); // Native event - now batched
setFilterOptions(value); // Native event - now batched
setPreviewIndex(value); // Native event - now batched
};
Transitions for Priority Management
function SearchResults() {
const [isPending, startTransition] = useTransition();
const [query, setQuery] = useState('');
const handleSearch = (newQuery) => {
startTransition(() => {
setQuery(newQuery); // Lower priority - can be interrupted
});
setInputValue(newQuery); // Higher priority - immediate
};
return (
<View>
<TextInput value={inputValue} onChangeText={handleSearch} />
{isPending ? <ActivityIndicator /> : <Results query={query} />}
</View>
);
}
Transitions allow the UI to remain responsive to typing while background rendering continues. This is particularly valuable for search experiences or large list rendering, where React Native's concurrent features ensure smoother user interactions.
Benefits for Cross-Platform Development
For teams building cross-platform applications, the ability to use identical React patterns on web and mobile means faster development cycles and more consistent user experiences. The GlobalDev architecture analysis notes that this alignment is a significant step forward for the React Native ecosystem in 2025.
TurboModules: Type-Safe Native Modules
TurboModules replace the legacy Native Module system with a modern, type-safe approach to exposing native functionality to JavaScript.
The Codegen Pipeline
- Create spec files in TypeScript:
// NativeModule.spec.ts
type TurboModulePayload = {
getConstants: () => {
API_URL: string;
TIMEOUT: number;
};
fetchData: (endpoint: string, options?: object) => Promise<string>;
};
- Codegen produces:
- C++ bridging code (native side)
- JavaScript/TypeScript wrappers (JavaScript side)
- Both share the same type definitions
Benefits of TurboModules
- Type safety enforced at build time, not runtime
- Lazy loading - modules initialize on first import
- Better debugging with clear type contracts
- Fewer runtime errors from type mismatches
The Swmansion performance guide highlights that TurboModules eliminate an entire category of bugs related to mismatched types across the JavaScript/native boundary.
Synchronous Communication
Direct method calls between JavaScript and native, eliminating bridge serialization overhead
Type-Safe Modules
Code generation ensures type safety across the JavaScript/native boundary
Concurrent React Support
Transitions, automatic batching, and Suspense work natively in React Native
Future-Ready
Web alignment features and new capabilities will require the New Architecture
Enabling the New Architecture
As of React Native 0.76, the New Architecture is enabled by default for all new projects. For existing projects, migration involves configuration changes.
Android Configuration
In android/gradle.properties:
# Enable the New Architecture
newArchEnabled=true
iOS Configuration
In ios/Podfile:
# Enable the New Architecture
ENV['RCT_NEW_ARCH_ENABLED'] = '1'
# Then run:
bundle exec pod install
Migration Checklist
- Audit dependencies for New Architecture compatibility
- Update third-party libraries to compatible versions
- Review custom native modules for TurboModules conversion
- Test layout-dependent components thoroughly
- Monitor for subtle behavioral differences
The Expo documentation on the New Architecture provides comprehensive migration guidance. Most major libraries have compatible versions available, but niche libraries may require alternatives or updates.
Why Migrate Now?
According to React Native's official guidance, the legacy bridge will be removed in a late 2025 release. Planning your migration now ensures a smooth transition when deprecation becomes final. New features will be designed with the New Architecture as the baseline, and some capabilities will only be available with it enabled. Our web development team can help assess your current architecture and plan a smooth migration to the New Architecture.
The Path Forward: Web Alignment and Future Capabilities
The New Architecture enables capabilities that were previously impossible. Meta continues to develop features leveraging tighter JavaScript/native integration.
Active Development Areas
| Feature | Description | Status |
|---|---|---|
| Event Loop Model | Well-defined behavior matching web JavaScript | In Progress |
| DOM-like APIs | Node and layout APIs for easier code sharing | Planned |
| Yoga 2.0 | Improved styling and layout conformance | In Development |
| Concurrent Rendering | Full React 18+ feature parity | Available |
Why Adopt Today?
- Current performance improvements for high-throughput scenarios
- React 18 features like Transitions and automatic batching
- Type safety through TurboModules code generation
- Future capabilities as web alignment features are released
The New Architecture is the foundation for React Native's future. As noted in Meta's development roadmap, new features will be designed with the New Architecture as the baseline. The Medium architecture guide emphasizes that adopting the New Architecture today positions applications to benefit from ongoing development that will continue to close the gap between React Native and native development.
For teams building cross-platform mobile applications, the New Architecture represents a significant step forward in achieving true platform parity while maintaining the development efficiency that makes React Native attractive. As AI automation capabilities increasingly integrate with mobile experiences, the performance and type safety benefits of the New Architecture become even more valuable.