Development builds: Introduction

Development builds of your app are Debug builds of your project. It includes the expo-dev-client library, which allows you to develop and debug projects using Expo CLI.

Building your project with Expo allows you to make most changes in JavaScript. This helps iterate quickly and safely and allows your team to achieve web-like iteration speeds by dividing your application into:

  • A native runtime: A native binary that is built with Android Studio or Xcode. Expo Go is an example of a native runtime for iterating on React Native projects.
  • An update: A bundle of your application's JavaScript code and assets (images, video, fonts, and so on). An update can be served from your local computer with Expo CLI, embedded in the binary by EAS Build, or hosted on a publicly available server.

When your project requires custom native code, a config plugin, a custom runtime version, or a reduced bundle size of the app, you can transition from using Expo Go to developing a development build.

What is a development build

A development build of your app is a Debug build that contains the expo-dev-client package. As a production build is for the general public, and a preview build lets your team test your next release, a development build lets developers iterate as quickly as possible. It comes with extensible development tools to develop and test your project.

You can think of a development build as your fully customizable version of Expo Go.

What is expo-dev-client

The expo-dev-client package replaces the default in-app development tools UI that React Native provides (the Dev Menu) with a more powerful and extensible UI and adds a launcher UI, so you can launch updates (such as from PR previews) and switch between development servers without needing to rebuild the app binary.


Local app development

If you are looking to learn how to compile and build your app locally when using Expo.