One app, three layers
Prerequisites: Start here / basic technical literacy
One app, three layers — mechanism
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]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.