Welcome to Day 7 of the React Native Advent Calendar!
Today we’re exploring every way to build your React Native app with Expo - from the simplest development workflow with Expo Go to production builds with EAS. Whether you’re just starting out or deploying to production, this guide covers all your options!
The 5 Build Methods Explained
When building with Expo, you have 5 distinct approaches, each suited for different stages of development:
- Expo Go - Instant testing without builds
- Expo Prebuild - Generate native projects locally
- Native Tools - Use Xcode/Android Studio directly
- EAS Build - Cloud-based builds for production
- Expo Orbit - Simplified build installation
Let’s dive into each method and when to use them.
1. Expo Go: The Fastest Development Experience
What it is: Expo Go is a pre-built native app that runs your JavaScript code instantly - no native build required.
Perfect for:
- Starting new projects
- Rapid prototyping
- Learning React Native
- Testing UI and logic quickly
Pro Tips for Expo Go
Access the Developer Menu:
- iOS: Shake device or press
Cmd + Din simulator - Android: Shake device or press
Cmd + M(Mac) /Ctrl + M(Windows) - Secret shortcut: Press
Cmd + Shift + Zto open the overlay menu
Limitations to know:
- Can’t use custom native modules outside Expo SDK
- Limited to packages compatible with Expo Go
- Not for production apps
When to move on: Once you need custom native code or third-party libraries with native dependencies not in the Expo SDK.
2. Expo Prebuild: Generate Native Projects On-Demand
What it is: Generates ios/ and android/ folders from your app.json config, giving you a full native project while keeping Expo’s workflow.
Perfect for:
- Adding custom native modules
- Using libraries that require native configuration
- Running on physical devices without Expo Go
- Creating development builds
How to Use Prebuild
# Generate native folders
npx expo prebuild
# Run on iOS (Mac only!)
npx expo run:ios
# Run on Android
npx expo run:androidAdding the Dev Client
The Expo Dev Client is like a custom version of Expo Go for your app:
# Install dev client
npx expo install expo-dev-client
# Rebuild your app
npx expo prebuild --clean
npx expo run:ios # or run:androidWhy use it?
- Keep the Expo Go experience with custom native code
- Access debugging tools and performance profilers
- Hot reload for native changes
- Your own personalized development environment
Important Notes
When to clean rebuild:
If you change app.json (app name, bundle ID, permissions, etc.):
npx expo prebuild --cleanPlatform limitations:
- iOS prebuild requires a Mac (Xcode dependency)
- Android can be built on any platform
3. Native Tools: Xcode & Android Studio
What it is: Work directly in native IDEs for full control over the build process and configuration.
Perfect for:
- Debugging native issues
- Configuring signing certificates
- Building release variants
- Advanced native development
Building with Xcode (iOS)
Development build:
# Open Xcode project
npx expo prebuild
xed ios
# In Xcode: Select target device and hit Run
# Start Metro bundler separately
npx expo startRelease build:
Option 1 - Via Xcode:
- Select your scheme
- Change build configuration to Release
- Build and run
Option 2 - Via command line:
# Build release version
npx expo run:ios --configuration Release
# Build for specific device
npx expo run:ios --deviceBuilding with Android Studio
Development build:
# Open Android project
npx expo prebuild
# Open android/ folder in Android Studio
# Run on emulator/device from Android Studio
# Start Metro bundler separately
npx expo startRelease build:
Option 1 - Via Android Studio:
- Open Build Variants panel
- Change to release
- Build and run
Option 2 - Via command line:
# Build release APK
npx expo run:android --variant release
# Or use Gradle directly
cd android
./gradlew assembleReleaseFinding your APK:
After building, find it at: android/app/build/outputs/apk/release/app-release.apk
Important: For production APKs, you need to set up proper signing. See the Android signing guide for keystore setup.
4. EAS Build: Cloud Builds Made Easy
What it is: EAS (Expo Application Services) builds your app in the cloud - no Xcode or Android Studio required!
Perfect for:
- Production builds
- Building iOS apps without a Mac
- Team collaboration
- Automated CI/CD workflows
Getting Started with EAS
# Install EAS CLI globally
npm install -g eas-cli
# Login to your Expo account
eas login
# Configure EAS for your project
eas build:configureThis creates an eas.json file with build profiles.
Building for iOS Devices
Step 1: Register your device
# Start device registration
eas device:createThis shows a QR code. Scan it with your iPhone to register the device automatically.
Step 2: Create development build
# Build for registered devices
eas build --profile development --platform iosStep 3: Install
- Open the Expo dashboard
- Download the
.ipafile - Install via Expo Orbit or Apple Configurator
Building for Android
Android is simpler - no device registration needed:
# Create development APK
eas build --profile development --platform android
# Download APK from dashboard and share it
# Users can install directly on their devicesLocal Builds with EAS
Want to test EAS builds locally or need faster iteration?
# Local iOS build (Mac only!)
eas build --platform ios --local
# Local Android build (any platform)
eas build --platform android --localWhy use local builds?
- Test your EAS configuration before cloud builds
- Faster iteration during setup
- Debug build issues locally
- Free (no EAS build credits used)
5. Expo Orbit: The Installation Helper
What it is: A macOS/Windows app that simplifies installing builds on simulators and devices.
Perfect for:
- Quick build installation
- Managing multiple builds
- Testing QA builds
- Non-technical team members
Key features:
- Drag-and-drop
.apkand.ipafiles - Install directly from EAS dashboard
- Launch simulators/emulators quickly
- View build logs and details
Get Orbit: Download from Expo
Choosing the Right Build Method
Here’s a quick decision tree:
Starting a new project? → Use Expo Go
Need custom native modules? → Use Expo Prebuild + Dev Client
Debugging native issues? → Use Native Tools (Xcode/Android Studio)
Building for production or testing on real devices? → Use EAS Build
Need to install builds easily? → Use Expo Orbit
Wrapping Up
Expo gives you flexibility at every stage of development. Start fast with Expo Go, grow into custom native code with Prebuild, and deploy anywhere with EAS Build.
Quick recap:
- Expo Go - Zero-setup instant testing
- Expo Prebuild - Generate native projects on-demand
- Native Tools - Full IDE control with Xcode/Android Studio
- EAS Build - Cloud builds for any platform
- Expo Orbit - Simplified build installation
Ready to dive deeper?
- Watch the full tutorial: Every Way to Build Your Expo App
- Expo Build Documentation
- EAS Build Guide
- Expo Dev Client
Questions about Expo builds? Drop them in the YouTube comments!
Tomorrow we’ll explore Day 8’s topic - see you then! 🎄