EAS Build compiles your app in the cloud and manages signing; EAS Submit uploads the result to the stores.
Core concepts
- eas.json profiles: Define
development(dev client, internal),preview(internal testers) andproduction(store) profiles. — EAS Build - Credentials: Let EAS manage certificates and keystores unless you have a reason not to, and back up the Android keystore. — EAS Build
- Environment variables and secrets: Use EAS environment variables and secrets for build-time configuration; keep public values in
EXPO_PUBLIC_and private ones out of the app. — Expo env vars - Submit: Run
eas submitwith the latest build, supplying store credentials or API keys configured once. — EAS Submit
Concept videos
YouTube channels and searches for these topics. On a large screen they open in the reading panel next to the roadmap.
- EAS Build tutorial — Expo channel
Explanation
Build profiles for different jobs
Development builds iterate fast; preview builds go to testers; production builds go to stores. Keep their configuration separate so a test setting never reaches production.
Build failures
Read the build log's first error. Common causes: native dependency mismatch, missing credentials and incompatible Node or SDK versions.
What Is It?
EAS Build and Submit are Expo's cloud services for compiling and publishing apps.
Why Should I Care?
They remove the need to maintain local native toolchains and signing by hand.
Real World Analogy
EAS Build is a contract factory that builds your product to spec, and Submit is the courier delivering it to the stores.
Visual Mental Model
eas.json profile -> cloud build (signed) -> .ipa/.aab -> eas submit -> storeSmallest Possible Example
{
"cli": { "version": ">= 12.0.0" },
"build": {
"development": { "developmentClient": true, "distribution": "internal" },
"preview": { "distribution": "internal" },
"production": { "autoIncrement": true }
},
"submit": { "production": {} }
}Common Mistakes
❌ Using the production profile for testing.
You burn store build numbers and risk shipping debug settings.
❌ Losing the Android upload keystore.
You cannot update the app; let EAS manage it or store a backup.
Build This Mini Project
Create all three profiles, produce a preview build for iOS and Android and install both on real devices.
Prompts for Cursor, Claude Code & Codex
Paste these into Cursor, Claude Code, Codex, or any coding agent. Replace the bracketed parts with your app details, and keep the agent in plan mode first so you review the approach before it edits files.
Fix a build failure
This EAS build failed. Here is the log: [paste]. Identify the first real error, its likely cause, and the smallest fix. Do not change unrelated config.Rules, databases & blogs to use
- DevOps rules: build and deploy rules
