Part 1 · Fundamentals

One app, three layers

Prerequisites: Start here / basic technical literacy

One app, three layers — mechanism

Conceptual layers. The module path is distinct from rendering; all arrows are interface relationships, not guaranteed threads. Nodes: React + TS, Hermes, JSI / RN C++, Android / iOS, Expo Modules.
Conceptual layers. The module path is distinct from rendering; all arrows are interface relationships, not guaranteed threads. [S01] [S03] [S06] [S10]

Mental model verified

Your TS/React logic executes in a JS engine, usually Hermes. React Native hosts it inside an Android or iOS app. C++ infrastructure and platform-specific code connect the JS runtime to native APIs and views. Expo is a toolkit and module layer on this architecture, not an additional rendering engine.

[S01] [S06] [S10]

Worked example synthesis

A camera screen has React state and JSX in JS, a native camera view on Android/iOS, and an Expo or third-party module that exposes camera methods and events to JS. Permission prompts and camera capture live in platform code.

[S06] [S07]

Engineering choice synthesis

First look for a maintained native library. Write a small module only for the unsupported platform capability. Audit where data is copied and what thread owns it.

[S06] [S07]

Pitfall and next step synthesis

Do not call every native interaction “the bridge.” Trace a single button press through JS, module or renderer, and platform API; identify what returns synchronously and what returns later.

[S01] [S07]
Keep this: React Native is a JS application coordinated with a C++ renderer and platform code; Expo supplies a higher-level module and build workflow.
Check yourself: Where does Hermes run, and does Expo add another JS runtime?

Hermes runs the application JavaScript. Expo modules expose native capabilities into that same React Native app; Expo is not a second application JS runtime.

Sources & further reading

  1. [S01] About the New Architecture

    React Native · official documentation · accessed 2026-10-08 · current documentation as accessed

    Supports: JSI replaces the serialized bridge; enabling it alone does not promise speed.

    Read the diagrams and API boundaries for jsi replaces the serialized bridge; enabling it alone does not promise speed.

  2. [S03] Render, Commit, and Mount

    React Native · official documentation · accessed 2026-10-08 · current documentation as accessed

    Supports: Fabric render, commit, layout and host view mount phases.

    Read the diagrams and API boundaries for fabric render, commit, layout and host view mount phases.

  3. [S06] Expo Modules API: Overview

    Expo · official documentation · accessed 2026-10-08 · current documentation as accessed

    Supports: Expo Modules API uses Swift and Kotlin and supports the New Architecture.

    Read the diagrams and API boundaries for expo modules api uses swift and kotlin and supports the new architecture.

  4. [S07] Expo Modules API: Reference

    Expo · official documentation · accessed 2026-10-08 · current documentation as accessed

    Supports: JSI abstraction; Function, AsyncFunction, queues, views, events and lifecycle.

    Read the diagrams and API boundaries for jsi abstraction; function, asyncfunction, queues, views, events and lifecycle.

  5. [S10] Using Hermes

    React Native · official documentation · accessed 2026-10-08 · current documentation as accessed

    Supports: Bundled Hermes is the default JS engine and release builds matter for measurement.

    Read the diagrams and API boundaries for bundled hermes is the default js engine and release builds matter for measurement.