React Native Expo and CLI
Two roads lead to a React Native app. Expo gives a ready-to-drive car with tools, libraries, and services included. The React Native CLI gives a bare chassis where you install and configure each part yourself. Both produce real native apps. The right choice depends on the needs of your project and the experience of your team.
The Two Approaches
Expo React Native CLI ───────────────────────── ───────────────────────── Install Node.js only Install Android Studio and Xcode Scan a QR code to test Build the app on an emulator Libraries preconfigured Configure native files by hand Cloud build service available Build on your own machine Fast start Full native control
What Expo Includes
Expo is a framework built around React Native. It supplies a command line tool, a library collection, and a build service.
- The
expopackage for starting and running projects - Ready libraries for camera, location, sensors, notifications, and secure storage
- Expo Go, a phone app that previews your project instantly
- EAS, a cloud service that builds and submits apps
- Expo Router, a file-based navigation system
Start an Expo Project
npx create-expo-app my-app
cd my-app
npx expo start
The terminal prints a QR code. Scan it with the Expo Go app and your project opens on the phone within seconds. Every file save refreshes the screen automatically.
Start a CLI Project
npx @react-native-community/cli init MyApp
cd MyApp
npx react-native run-android
This command creates the android and ios folders and requires the full native toolchain. Android Studio handles Android builds. Xcode handles iOS builds and runs only on a Mac.
Development Builds: The Middle Path
Expo Go includes a fixed set of native libraries. A project that needs a custom native library can create a development build, a personal version of Expo Go built with the chosen libraries.
Expo Go
(fixed library set)
│ need a custom library
▼
Development Build
(your own library set, Expo tools kept)
│ need full control of native code
▼
Prebuild / CLI project
(native folders you edit directly)
Projects move along this path gradually. Nothing locks you into the first choice.
The Prebuild Command
Expo can generate the native folders on demand.
npx expo prebuild
The command reads app.json and creates matching android and ios folders. Edit them directly when a project needs custom native code.
Compare by Project Type
Project Good Fit ────────────────────────────────────────────── Learning React Native Expo Prototype or small business app Expo Standard app with common features Expo App embedded inside native app CLI Heavy custom native SDKs CLI or prebuild
Common Questions
Does Expo Limit App Quality?
Apps built with Expo run the same React Native engine as CLI apps. Major companies ship Expo-based apps to both stores.
Can Expo Apps Reach the App Stores?
Yes. EAS Build creates the store files, and EAS Submit uploads them.
Can a CLI Project Use Expo Libraries?
Yes. Install the expo package in a CLI project and use its libraries with the Expo modules setup.
Recommendation for Learners
Start with Expo. The quick setup lets you focus on screens, state, and logic instead of toolchain problems. Learn the native side later, when a project demands it.
Summary
Expo bundles tools, libraries, and cloud services for fast, friendly development. The CLI exposes every native file for full control. Development builds and prebuild connect the two worlds, so a project can grow from a quick prototype into a heavily customized app without starting over.
