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.

WorkflowCommandWhat 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.
Good to know: Expo projects can be "ejected" (or migrated using Expo's prebuild step) into a bare workflow later if your needs grow, so starting with Expo rarely paints you into a corner.

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.

Note: If you're on Windows or Linux, you can still build the JavaScript side of an iOS app and preview it live on a real iPhone using the Expo Go app — you just can't run the iOS Simulator, which needs macOS.

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.

  1. Install the Expo Go app from the Play Store (Android) or App Store (iOS).
  2. Start your project's dev server (shown below).
  3. Scan the QR code shown in your terminal or browser using Expo Go (Android: in-app scanner; iOS: your phone's Camera app).
  4. Your app opens on your phone within a few seconds, running your actual JavaScript/JSX code.
Why this matters: Expo Go is a genuinely fast way to preview real, working React Native UI on real hardware without touching Android Studio or Xcode at all.

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, r to reload, m for 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.
Next up: Before diving into React Native components, the next lesson refreshes the modern JavaScript and JSX syntax you'll see in every single example from here on — head to Modern JS & JSX Essentials.