------------------------- | React Native Arch | |-----------------------| | Old Bridge: | | - JS thread | | - Native thread | | - Bridge for comm. | | | | New Arch: | | - TurboModules | | - Fabric Renderer | | - Direct comm. | | | | [Learn More] Button | -------------------------
React Native architecture (bridge, new architecture) - Mini App: Build & Ship
import React from 'react'; import { View, Text, Button, Alert, StyleSheet } from 'react-native'; export default function ArchitectureOverview() { return ( <View style={styles.container}> {/* TODO: Add Old Bridge section */} {/* TODO: Add New Architecture section */} {/* TODO: Add Learn More button with alert on press */} </View> ); } const styles = StyleSheet.create({ container: { flex: 1, padding: 20, justifyContent: 'space-between', }, });
import React from 'react'; import { View, Text, Button, Alert, StyleSheet, ScrollView } from 'react-native'; export default function ArchitectureOverview() { const showAlert = () => { Alert.alert('React Native New Architecture', 'The new architecture improves performance by using TurboModules and Fabric for direct communication between JS and native code.'); }; return ( <View style={styles.container}> <ScrollView> <Text style={styles.heading}>Old Bridge:</Text> <Text style={styles.bullet}>• JS thread</Text> <Text style={styles.bullet}>• Native thread</Text> <Text style={styles.bullet}>• Bridge for communication</Text> <Text style={styles.heading}>New Architecture:</Text> <Text style={styles.bullet}>• TurboModules</Text> <Text style={styles.bullet}>• Fabric Renderer</Text> <Text style={styles.bullet}>• Direct communication</Text> </ScrollView> <Button title="Learn More" onPress={showAlert} accessibilityLabel="Learn more about React Native architecture" /> </View> ); } const styles = StyleSheet.create({ container: { flex: 1, padding: 20, justifyContent: 'space-between', }, heading: { fontSize: 20, fontWeight: 'bold', marginTop: 10, marginBottom: 5, }, bullet: { fontSize: 16, marginLeft: 10, marginBottom: 3, }, });
This screen uses simple Text components to show two sections describing the old and new React Native architectures. The old bridge architecture uses a bridge to communicate between the JavaScript thread and native thread. The new architecture improves performance by using TurboModules and Fabric for direct communication.
A Button labeled "Learn More" is placed at the bottom. When pressed, it shows an alert with a short explanation about the new architecture. The layout uses flex and padding for spacing, and a ScrollView to allow scrolling if the content is too tall on small screens.
Accessibility is considered by adding an accessibilityLabel to the button for screen readers.
------------------------- | React Native Arch | |-----------------------| | Old Bridge: | | • JS thread | | • Native thread | | • Bridge for comm. | | | | New Arch: | | • TurboModules | | • Fabric Renderer | | • Direct comm. | | | | [Learn More] Button | -------------------------
Practice
bridge in React Native architecture?Solution
Step 1: Understand the bridge concept
The bridge acts as a communication layer between JavaScript and native code in React Native.Step 2: Identify the bridge's role
It allows JavaScript to send commands and receive data from native modules, enabling cross-platform functionality.Final Answer:
It connects JavaScript code with native platform code. -> Option CQuick Check:
Bridge = Connect JS and native [OK]
- Thinking bridge compiles JavaScript
- Confusing bridge with navigation or styling
- Assuming bridge handles UI rendering directly
Solution
Step 1: Recall the new architecture goal
The new React Native architecture aims to make apps faster by optimizing communication.Step 2: Understand how it improves performance
It reduces the overhead caused by the bridge, making interactions between JS and native code more efficient.Final Answer:
It improves performance by reducing bridge overhead. -> Option DQuick Check:
New architecture = less bridge overhead [OK]
- Believing it removes native code completely
- Thinking it replaces JavaScript language
- Confusing it with webview-based rendering
NativeModules.ExampleModule.getData() in React Native's old architecture?Solution
Step 1: Understand NativeModules call behavior
In old React Native, calls to native modules go through the bridge asynchronously.Step 2: Identify the effect of the bridge
The bridge queues and sends messages between JS and native code, causing asynchronous behavior.Final Answer:
The call is sent over the bridge asynchronously. -> Option AQuick Check:
Old architecture calls = async bridge [OK]
- Assuming direct synchronous native calls
- Thinking it causes syntax errors
- Confusing with webview handling
Solution
Step 1: Identify cause of slowness
Many bridge calls cause overhead and slow down the app.Step 2: Choose the right fix
The new architecture uses TurboModules and Fabric to reduce bridge overhead and improve speed.Final Answer:
Switch to the new architecture with TurboModules and Fabric. -> Option BQuick Check:
New architecture reduces bridge calls [OK]
- Thinking TypeScript improves bridge performance
- Removing native modules breaks functionality
- Using webview slows app further
Solution
Step 1: Understand Fabric's role
Fabric is the new rendering system that manages UI components natively.Step 2: Compare with old bridge system
Old system sent UI updates over the bridge causing delays; Fabric reduces this by direct native management.Final Answer:
By using Fabric to directly manage UI components on the native side. -> Option AQuick Check:
Fabric improves UI by native management [OK]
- Thinking JavaScript is compiled to native code
- Believing native code is removed
- Confusing Fabric with webview rendering
Ready to prove it?
Pass the test and this pattern moves unknown
