Building Standalone Apps
Standalone apps are self-contained native applications that can be distributed through app stores or other channels. This guide covers both cloud-based builds with EAS Build and local compilation.Understanding Build Types
Expo supports two primary approaches to creating standalone builds:EAS Build (Recommended)
EAS Build is a cloud-based build service that compiles your app on remote servers. Benefits include:- No need to install Android Studio or Xcode locally
- Consistent build environment across team members
- Handles code signing automatically
- Build from any operating system (Windows, Linux, macOS)
- Integrated with EAS Submit for streamlined app store deployment
Local Builds
Local builds compile your app on your own machine. Use this when:- Company policies restrict use of third-party CI/CD services
- You need to debug build failures in detail
- You want complete control over the build environment
Building with EAS Build
Install and Configure EAS CLI
eas.json
Create Production Builds
- Tab Title
- Tab Title
- Tab Title
Local Build Configuration
Running EAS Build Locally
You can run the same EAS Build process locally:Building with Native Tools
For complete control, you can use native build tools directly.- Tab Title
- Tab Title
Step 1: Generate Native ProjectsIf using Continuous Native Generation:Step 2: Build with GradleOutput locations:
- APK:
android/app/build/outputs/apk/release/app-release.apk - AAB:
android/app/build/outputs/bundle/release/app-release.aab
Build Profiles
Customize builds for different scenarios using profiles in eas.json:eas.json
Build Profile Options
Common Options:distribution:"store"|"internal"- Determines build artifactschannel: EAS Update channel name for OTA updatesenv: Environment variables available during buildcredentialsSource:"remote"|"local"- Where to get signing credentials
buildType:"apk"|"app-bundle"- Output formatgradleCommand: Custom Gradle commandimage: Build image version (e.g.,"sdk-54")
simulator: Build for simulator (development only)buildConfiguration:"Debug"|"Release"scheme: Xcode scheme to build
Build Output Types
Android Build Types
AAB (Android App Bundle) - Recommended for Store- Required by Google Play Store (for new apps since August 2021)
- Smaller download size for users
- Cannot be installed directly on devices
- Can be installed directly on devices
- Useful for internal distribution
- Larger file size than AAB
iOS Build Types
App Store Distribution- For App Store submission
- Requires distribution certificate
- Works on physical devices only
- Runs on iOS Simulator
- Faster build times
- No code signing required
- Cannot run on physical devices
Advanced Build Options
Auto-Increment Version
eas.json
Custom Build Scripts
Run custom scripts during the build process using eas-build-pre-install and eas-build-post-install hooks in package.json:package.json
Resource Classes
For larger apps, use more powerful build machines:eas.json
Troubleshooting
Build Failed with Out of Memory
Increase resource class or enable Hermes (Android):app.json
iOS Build Fails with Provisioning Profile Issues
Clear credentials and regenerate:Android Build Fails with Gradle Errors
Clear build cache:Viewing Detailed Build Logs
- Click the build URL from EAS CLI output
- Navigate to the “Logs” tab
- Download full logs for offline analysis
Next Steps
- Configure App Signing - Set up certificates and keystores
- Build Configuration - Deep dive into eas.json
- Submit to App Stores - Deploy your builds to stores