Installation & Setup
Before you write a single line of React Native code, you need a working development environment. React Native gives you two main ways to start a project, and picking the right one for where you are today will save you a lot of frustration. This lesson walks through both paths, installs the tools you need for Android and iOS, and gets a real app running on your phone or an emulator so you can confirm everything works before moving on.
Two Ways To Start a React Native Project
There isn't just one "React Native install" — there are two workflows, and the site's own reference table below is the fastest way to understand the difference.
| Workflow | Command | What you get |
|---|---|---|
| Expo (managed) | npx create-expo-app my-app |
A managed workflow — Expo handles a lot of native configuration for you, ships a huge library of ready-made APIs (camera, location, notifications, etc.), and lets you preview instantly on a real device with the Expo Go app. No Android Studio/Xcode required just to get started. |
| React Native CLI (bare) | npx react-native init my-app |
The "bare" workflow — you own the native Android and iOS project folders directly. More manual setup, but full control over native code, third-party native modules, and build configuration. |
Which One Should You Choose?
- Choose Expo if you're just starting out, building most kinds of apps, or want the fastest possible path from zero to a running app on your phone. This is the recommended starting point for most developers, and everything in this tutorial track assumes Expo unless stated otherwise.
- Choose the bare React Native CLI if you already know you need a specific native module that Expo's managed workflow doesn't support, or if your project requires deep, custom native code that Expo can't accommodate.
Prerequisites: Node.js and a Package Manager
Both workflows run on top of Node.js, so install that first. Then confirm your tools are on your
PATH.
node -v
npm -v
npm ships with Node.js and is enough to follow this entire track. If you prefer
yarn, it works the same way — just swap the equivalent commands.
Setting Up Android Development
To run React Native apps on Android — whether through Expo or the bare CLI — you'll eventually want Android Studio installed, even if only for its SDK and emulator tooling.
- Install Android Studio from the official Android developer site.
- During setup, make sure the Android SDK, Android SDK Platform, and Android Virtual Device (AVD) components are installed.
- Open Android Studio → Device Manager and create a virtual device (an emulator) — pick any recent Pixel profile with a current Android system image.
- Boot the emulator once to confirm it starts correctly before running your app.
Setting Up iOS Development (Mac only)
Building and running for iOS requires a Mac with Xcode installed from the Mac App Store. Xcode ships the iOS Simulator, which behaves like a real iPhone for development purposes.
Running on a Physical Device With Expo Go
The fastest way to see your app on a real phone — no native build, no cables, no emulator — is the Expo Go app.
- Install the Expo Go app from the Play Store (Android) or App Store (iOS).
- Start your project's dev server (shown below).
- Scan the QR code shown in your terminal or browser using Expo Go (Android: in-app scanner; iOS: your phone's Camera app).
- Your app opens on your phone within a few seconds, running your actual JavaScript/JSX code.
Running on an Emulator or Simulator
If you'd rather not use a physical device, both workflows can target a locally running Android emulator or iOS Simulator directly from the terminal.
// with the dev server already running, press:
// a -> open on a connected Android emulator/device
// i -> open on the iOS Simulator (Mac only)
// w -> open in a web browser (Expo only)
Starting the Dev Server
Once your project is created, everything else flows from a single command that starts the JavaScript bundler and dev server.
// Expo projects
npx expo start
// bare React Native CLI projects (run in a separate terminal from the native build)
npx react-native start
For a brand-new Expo project, the full sequence usually looks like this:
npx create-expo-app my-app
cd my-app
npx expo start
Verifying Everything Works
- The terminal shows a QR code and a menu of options (
a,i,w,rto reload,mfor the dev menu). - Scanning the QR code with Expo Go — or pressing
a/i— opens a default starter screen ("Open up App.js to start working on your app!" or similar). - If the app loads and shows that screen, your environment is fully set up and ready for real development.