This documentation is available as Markdown for AI agents and LLMs. See the full Markdown index or append .md to any documentation URL.

Introduction to development builds

Edit page

Learn how to create a development build in your Expo project and why use a development build instead of Expo Go.


When you create a new Expo app with create-expo-app, you start with a project where you update TypeScript/JavaScript code on your local machine and view the changes in the Expo Go app. A development build is essentially your own version of Expo Go where you are free to use any native libraries and change any native configuration.

A development build is recommended when you want to create your own app and release to app stores. It includes the expo-dev-client library, which augments the built-in React Native development tooling. The tooling also includes support for inspecting network requests and a "launcher" UI that lets you switch between different development servers (such as between a server running on your machine or a teammate's machine) and deployments of your app (such as published updates with EAS Update).

Expo Go & Development Builds: which should you use?
Expo Go & Development Builds: which should you use?

In this tutorial video, Beto explains what each of them is and when to choose a development build.

How would you like to build your development build?

All three methods produce the same development build. They differ in where the app compiles and what you need to have installed on your machine.


Build locally

Compile the app yourself with Expo CLI and your native toolchain. No Expo account is required and this is the only way to install a development build on an iPhone without a paid Apple Developer account.

Host platform support

AndroidiOS SimulatoriPhone device
macOS
Windows
Linux

Prerequisites

1 requirement

Native build tools

Set up your development environment for the platforms you build for: Android Studio and Emulator for Android, Xcode and iOS Simulator for iOS.

1

Install expo-dev-client

Run the following command in your project's root directory:

Terminal
npx expo install expo-dev-client
Are you using this library in an existing React Native project?

Apps that don't use Continuous Native Generation or are created with npx react-native, require further configuration after installing this library. See steps 1 and 2 from Install expo-dev-client in an existing React Native project.

What does a development build look like?
When you run a development build it will look like this, only with your app name and icon included rather than "RHT". The launcher UI is pictured in iOS on the left and Android on the right. In between, you can see an app running inside of the development build, with the customizable developer menu open.

It is possible to use development builds without the expo-dev-client library. In that case, start the development server with npx expo start --dev-client to target your development build instead of Expo Go.

2

Build and run the app

Terminal
npx expo run:android

By default the app installs on a running Android Emulator. For a physical device, plug it in via USB, allow USB debugging when prompted, and add the --device flag.

This command runs prebuild to generate the native android and ios directories if they don't exist, then compiles the app, installs it, and starts the development server.

3

Rebuild when native code changes

The expo run:android|ios command reuses the native android and ios directories on later runs. When you only change your app's TypeScript/JavaScript code, there is no need to rebuild the native app. Instead, start the development server with:

Terminal
npx expo start

You only need to regenerate the native directories (android and ios) when:

In these cases, regenerate the native directories with:

Terminal
npx expo prebuild --clean

Then, rebuild your app with the updated native code, with:

Terminal
npx expo run:android

All Expo build tools (npx expo run:android|ios and eas build) run prebuild automatically if no native directories exist, so you don't need to run it manually the first time. Learn more about Continuous Native Generation (CNG).


After you install the development build

Launch the development build from your device's Home screen and connect to a development server from the launcher screen to start working on your app. To learn how to use your new build, including the launcher screen, rebuilding, and debugging, see Use a development build. For common questions about development builds and Expo Go, including what you can't do in Expo Go and why, see the FAQ.

If you use an AI agent, install Expo Skills to teach it the workflows on this page. The following skills are related to development builds:

expo-dev-client

Build and distribute Expo development clients locally or via TestFlight for internal testing.

eas-simulator

Run and control a user's app on a remote iOS/Android simulator hosted on EAS cloud.