In this lesson, you will learn how the Expo ecosystem organizes your development workflow through the Managed Workflow, Expo Go, and Development Builds.
The Expo Architecture Layers
When you scaffold a project with Expo, you aren't just starting a folder of code; you are opting into a curated ecosystem designed to abstract away the complexities of native platform configuration.
1. The Managed Workflow
Think of the Managed Workflow as "Expo-managed infrastructure." In this model, Expo handles the native android/ and ios/ folders for you. You write standard React Native code, and Expo ensures that your project configuration remains compatible with their pre-built native runtimes. It is the path of least resistance, ideal for projects that don't require custom native code.
2. Expo Go
Expo Go is a generic "host" app that you download from the App Store or Google Play. It already contains all the popular native modules (like Camera, Location, and Sensors) pre-compiled. When you run npx expo start, your JavaScript code is bundled and sent to the Expo Go app. It is essentially a universal container that interprets your project instantly.
3. Development Builds
Sometimes, your project needs a native dependency not included in Expo Go (like a specific payment gateway SDK or a custom native UI component). This is where Development Builds come in. Instead of using the generic Expo Go app, you use the expo-dev-client library to create your own custom version of the app.
You "build" your project once, which generates a custom binary containing your specific native code. After that, your development process feels identical to Expo Go, but the app is now a bespoke version of your actual project.
// Example: Switching from Expo Go to a Development Build
// You simply run:
npx expo run:android
// This triggers a local build that merges your
// custom native dependencies into a new APK/IPA.
In short: Expo Go is for rapid prototyping, Managed Workflow is the environment that supports your project structure, and Development Builds are the solution for when your app needs to grow beyond standard native capabilities.
Key Takeaway: The Expo ecosystem allows you to start in a managed, "batteries-included" environment (Expo Go) and seamlessly transition to custom native code (Development Builds) without losing the developer experience of live reloading.