What JSI is and how it replaces the Bridge
understanding JSI fundamentals.
JSI is a lightweight C++ layer letting JS hold references to native host objects and call them directly and synchronously, with no JSON serialization or async batched queue.
WHAT THIS TESTS The interviewer wants to confirm you understand JSI as the foundation of the new architecture and precisely why it removes the legacy bridge's serialization and asynchrony.
A GOOD ANSWER COVERS JSI, the JavaScript Interface, is a lightweight C++ API that sits between JavaScript and native code and abstracts the underlying JS engine. Through JSI, native code can register host objects and host functions, and JavaScript can obtain direct references to them. Calling such a function invokes the native implementation in the same process, synchronously, with arguments passed by reference through C++ rather than serialized to JSON and queued. This contrasts sharply with the old bridge, which serialized every message to a JSON string, placed it on an asynchronous batched queue, and offered no synchronous return path. By removing serialization and the async hop, JSI cuts latency, allows immediate return values, and supports high-frequency interactions that previously congested the bridge. JSI is also engine-agnostic: because it abstracts the engine behind a common interface, React Native can swap JavaScriptCore for Hermes or other engines. TurboModules and Fabric are both built on top of JSI.
COMMON WRONG ANSWERS Saying JSI still serializes to JSON describes the old bridge, not JSI. Claiming JSI is specific to one JS engine is wrong; its engine-agnosticism is a feature that enabled Hermes. Equating JSI with Fabric or TurboModules is imprecise; JSI is the lower-level mechanism those features use. Assuming everything must now be synchronous ignores that you can still expose async APIs and should for heavy work.
LIKELY FOLLOW-UPS How does JSI enable Hermes? By abstracting the engine behind a uniform C++ interface. What are host objects? Native-backed objects JS can call directly. Does synchronous mean you should block? No, long tasks still belong on background threads. How do TurboModules use JSI? They are JSI-backed module bindings.
ONE CONCRETE EXAMPLE A native crypto function exposed as a JSI host function can be called as global.crypto.hash(data) and return the digest immediately in the same JS tick, with no JSON serialization. Under the old bridge the same call would be serialized, queued asynchronously, and could only deliver its result via a later callback.
Get five bites like this every day.
Tezvyn delivers a daily feed of 60-second tech bites with quizzes to lock in what you learn.