Expo Go, Development Builds & prebuild
Why Expo Over Bare React Native
Expo CLI is the command-line tool for creating, running, and building React Native apps via the Expo toolchain (expo start, expo prebuild, EAS build/submit). It abstracts away much of the native build configuration and bundles a curated set of pre-integrated native APIs (camera, location, notifications), letting teams iterate faster without managing Xcode/Android Studio projects directly.
Expo Go — Instant Iteration
Expo Go is a pre-built client app that loads a project's JS bundle over the network via QR code, skipping a full native build/install cycle per change. Its limitation: it only supports the fixed set of native modules bundled into it ahead of time — a project needing a custom native dependency outside that set can't run inside plain Expo Go.
Development Builds
A development build is a custom Expo Go-like client built specifically for your project, including whatever native modules it actually needs. It still connects to Metro for the same JS hot-reload iteration loop as Expo Go — just packaged with your project's specific native dependencies. Some capabilities (push notification credentials, in-app purchase product IDs tied to a bundle identifier) are inherently app-specific and can only be properly tested in a build configured for that exact app, not a generic shared client.
expo prebuild & app.json
npx expo prebuild
# generates ios/ and android/ from app.json / app.config.jsapp.json/app.config.js is the central config for metadata, permissions, icons, and build settings. expo prebuild generates the actual ios/ and android/ native project directories from that config — the bridge that lets developers drop into native tooling directly when needed.
Keep your own version of these notes — editable, searchable, and organised by your stack.
Start free