Lesson 2 / 25
Expo or the React Native CLI
Choosing how to start.
Framework versus bare setup
The React Native documentation recommends starting with a framework, and Expo is the main one. Expo provides a project template, a large set of maintained native modules (expo-camera, expo-location and more), file-based routing with Expo Router, development builds, and cloud services (EAS) for building and updating apps. Continuous Native Generation (prebuild) generates the ios and android folders from app.json and config plugins, so you rarely edit native projects by hand. The bare React Native Community CLI gives you the native folders directly and full manual control, at the cost of more setup and maintenance. You can still write custom native code in an Expo project.
Creating and running a project
Commands from the Expo docs; check the docs for your version.
# create a new Expo project (TypeScript template with Expo Router)
npx create-expo-app@latest my-app
cd my-app
# start the Metro bundler and dev server
npx expo start
# then press i (iOS simulator), a (Android emulator),
# or scan the QR code with Expo Go / a development build
# when you need custom native code: build a development build
npx expo run:ios
npx expo run:androidExpo Go is for learning
Expo Go is a prebuilt sandbox app with a fixed set of native modules. Real projects usually move to a development build, which includes exactly the native libraries your app uses.
Quick check: What does Expo prebuild (Continuous Native Generation) do?
- Generates the native ios and android projects from app config and config plugins
- Compiles JavaScript into Swift
- Uploads the app to the stores
- Removes the need for a JavaScript engine
Answer
Generates the native ios and android projects from app config and config plugins — Native folders become generated output.