React Native · Mobile UI at native speed
Walk through the React Native architecture.
Short answer
React code runs on a JS thread, layout runs in Yoga, and native views live on the UI thread. The new architecture connects these with JSI, Fabric and TurboModules instead of the old asynchronous bridge.
A React Native app has several cooperating parts. The JS thread runs your React tree and business logic. The UI or main thread owns native views and must respond to touches and drawing. Yoga computes Flexbox layout. Native modules provide platform capabilities, and the renderer coordinates all of it.
Old architecture
- The bridge serialises calls between JavaScript and native as batched JSON messages
- Bridge calls are asynchronous, so they cannot return a value synchronously
- High-frequency work such as gestures and animations can saturate the bridge and cause dropped frames
- Modules are registered eagerly, which adds startup cost
New architecture
- JSI is a C++ interface that lets JavaScript hold direct references to native host objects
- Fabric is the new renderer and builds an immutable shadow tree with synchronous layout and measurement
- TurboModules load lazily and expose typed interfaces with generated glue code
- React 18 concurrent features can run on the JS side while the UI thread keeps rendering
JS thread -> React reconciliation -> Fabric shadow tree -> Yoga layout -> UI thread mount
|
JSI / TurboModules
|
Native platform APIsThe architectural takeaway is that cross-thread work is the main source of jank. Keep animation and gesture work on the UI thread, keep the JS thread free of heavy synchronous work, and avoid chatty native calls in hot paths.
Follow-ups you should expect
Interviewers use these to check whether the first answer was understanding or memorisation.
- 1What problem did the bridge create?
- 2How does JSI differ from the bridge?
- 3What is the Fabric shadow tree?
- 4Why does the new architecture matter for startup time?
Say it in the interview
React Native separates JavaScript execution from the native UI thread, with Yoga handling layout. The old bridge passed batched JSON messages asynchronously, which made high-frequency native calls expensive. The new architecture replaces that with JSI for direct native references, Fabric for rendering and TurboModules for lazy typed modules. I design around that by keeping heavy work off the JS thread and putting gestures and animations on the UI thread where possible.
Use this as a model, not a script. Saying it in your own words is what makes it survive follow-up pressure.
Related questions
Reading is step one
Now say it out loud.
Understanding an answer and delivering it under pressure are different skills. Rehearse this topic in a live React Native mock interview and get scored feedback on depth, clarity and confidence.