Thuta Learning
IntermediateMobile Developmentintermediate

Expo and React Native

What you'll walk away with

  • Explain the core ideas behind Expo and React Native
  • Read the diagram/checklist and trace how the mobile architecture or decision connects
  • Explain how this applies to a real mobile app project

Build the mental model

React Native is the core framework that builds mobile apps with JavaScript and TypeScript, rendering real native UI components on Android and iOS.

Common misconception

People often say "Expo" and "React Native" as if they were interchangeable, but every Expo app is still a React Native app underneath — Expo is not a competing framework, only a tooling ecosystem built around it.

  • Development tooling — a fast dev server, hot reloading, and the Expo Go preview app
  • Device API access — ready-made packages for camera, location, notifications
  • Build services — EAS Build compiles without a local Android Studio/Xcode setup
  • Over-the-air (OTA) updates — push JS-level fixes without app-store review

None of this replaces learning React Native itself — Expo sits on top of it as a productivity layer, and teams can move toward a more custom bare workflow when needed.

Expo
A tooling and platform ecosystem built around React Native that simplifies development tooling, device API access, build services, and over-the-air updates.
text
EXPO BUILT ON REACT NATIVE
--------------------------
EXPO BUILT ON REACT NATIVE
-----
+------------------------------------------------------+
|                   EXPO ECOSYSTEM                      |
|  dev tooling | device APIs | EAS build | OTA updates  |
+------------------------------------------------------+
|             REACT NATIVE (CORE FRAMEWORK)             |
|      JavaScript / TypeScript -> native UI compo-      |
|      nents rendered on the platform                   |
+------------------------------------------------------+
|                 ANDROID   /   IOS  (NATIVE)           |
+------------------------------------------------------+

Connect it to a real scenario

Most new React Native projects today start with Expo's managed workflow, because it removes a huge amount of setup friction — no need to touch native project files just to get started.

A project's app.json or app.config.js file holds all its configuration in one readable place instead of scattered native config files.

Not all-or-nothing

Expo's "config plugins" let a managed project include specific native customizations without fully ejecting — teams typically move to a bare workflow only when a native module has no Expo equivalent.

For a small team building a fairly standard app — forms, lists, camera, notifications, maps — Expo's managed workflow covers the vast majority of real needs.

Try the working example

javascript
function suggestReactNativeWorkflow(project) {
  const { wantsSimplifiedSetup, needsCustomNativeModule, teamIsNewToMobile } = project;
  if (needsCustomNativeModule) {
    return "bare/custom React Native workflow (or Expo with a custom dev client)";
  }
  if (wantsSimplifiedSetup || teamIsNewToMobile) {
    return "Expo managed workflow";
  }
  return "Expo managed workflow (default recommendation)";
}

const firstTimeTeam = {
  wantsSimplifiedSetup: true,
  needsCustomNativeModule: false,
  teamIsNewToMobile: true
};

const customHardwareProject = {
  wantsSimplifiedSetup: false,
  needsCustomNativeModule: true,
  teamIsNewToMobile: false
};

const experiencedStandardProject = {
  wantsSimplifiedSetup: false,
  needsCustomNativeModule: false,
  teamIsNewToMobile: false
};

console.log("First-time mobile team:", suggestReactNativeWorkflow(firstTimeTeam));
console.log("Custom hardware project:", suggestReactNativeWorkflow(customHardwareProject));
console.log("Experienced team, standard app:", suggestReactNativeWorkflow(experiencedStandardProject));
You should see
First-time mobile team: Expo managed workflow
Custom hardware project: bare/custom React Native workflow (or Expo with a custom dev client)
Experienced team, standard app: Expo managed workflow (default recommendation)

A team wanting simplified setup or new to mobile gets pointed toward Expo managed; a project needing a custom native module gets pointed toward the bare workflow instead.

5-minute try-it

Add a fourth example project with both `needsCustomNativeModule: true` and `teamIsNewToMobile: true` at the same time — predict which condition the function checks first before running it, then verify.

One important caution

Assuming Expo and React Native are the same thing, or that the React Native course already covers Expo

Treating the managed-to-bare workflow decision as all-or-nothing and forgetting that config plugins offer a middle ground

Expo DocumentationHow Mobile Apps Work

Easy traps

  • Assuming Expo and React Native are the same thing, or that the React Native course already covers Expo
  • Treating the managed-to-bare workflow decision as all-or-nothing and forgetting that config plugins offer a middle ground
  • This course does not re-teach the Android Development, Flutter, iOS Development, or React Native tutorials -- continue to those for hands-on framework depth. This course teaches the framework-neutral mobile architecture, decision-making, and build/deployment/security concepts that sit above all four.

Exercise

Add a fourth example project with both `needsCustomNativeModule: true` and `teamIsNewToMobile: true` at the same time — predict which condition the function checks first before running it, then verify.

You'll know it worked when: First-time mobile team: Expo managed workflow Custom hardware project: bare/custom React Native workflow (or Expo with a custom dev client) Experienced team, standard app: Expo managed workflow (default recommendation) A team wanting simplified setup or new to mobile gets pointed toward Expo managed; a project needing a custom native module gets pointed toward the bare workflow instead.

Expo and React Native | Thuta Learning