Skip to content
useffect.sh
Book 30 min with a senior
Tooling

Development build

A debug build of your own app that includes expo-dev-client: your native modules, plus a launcher to connect to Metro.

Definition

A development build is a debug build of your own application that includes the expo-dev-client package. It plays the role Expo Go plays for beginners, but with exactly your native code: your libraries, your config plugins, your bundle identifier, your permissions. The app opens on a launcher screen listing the available Metro servers and published updates, then loads JavaScript from your machine with Fast Refresh and React Native DevTools. You compile it once (locally with npx expo run:ios, or on EAS Build with a profile where developmentClient is true), install it on the simulator or device, and only rebuild when native code changes. It is the development mode Expo recommends for any project headed to the stores, and the only option as soon as a native library missing from Expo Go enters the project. The first native module missing from Expo Go forces you to make one.

In a real app

In eas.json, the development profile is recognizable by "developmentClient": true and usually "distribution": "internal", which produces an APK or an ad hoc build installable without a store. Locally, npx expo run:ios or run:android compile the same build if expo-dev-client is in the dependencies. The question to ask on every git pull: did native code change? A new package with native code, a modified config plugin, an SDK bump, and the installed build is stale. The “native module not found” message after a pull is almost always that.

A good team practice is to compute the project fingerprint (@expo/fingerprint, the same mechanism as the EAS Update runtime version policy) and show it in the app or check it in CI, so you know which development build matches which commit. Teams that keep one build per developer on a simulator for weeks end up debugging differences that do not exist.

A development build is not a test build: it ships the dev menu, the launcher, and the debugging hooks, and its performance means nothing. For testers and QA you produce a preview build (release, internal distribution) without developmentClient.

Our services on this

Sources

All 35 glossary terms

One of these is blocking your app?

30 minutes with a senior to look at the problem in your code. Free.