Build local:
- iOS: cần macOS + Xcode license.
- Android: cần JDK + Android Studio + SDK.
- Build time: 5–15 phút mỗi lần.
- Code signing: tự manage cert/profile (iOS) và keystore (Android).
- Pros: zero cost, debug build nhanh hơn (cache local), không phụ thuộc internet.
- Cons: Mac-only cho iOS, manual setup, signing rủi ro nếu key mất.
EAS Build (Expo Application Services):
- Cloud build, không cần macOS local cho iOS.
- Profile config (eas.json) cho dev/preview/production.
- Code signing managed: EAS lưu cert/keystore + auto rotate.
- Pros: setup 1 lần dùng forever, share build với team qua EAS Update channel, tích hợp OTA, free tier 30 build/month.
- Cons: build thường 5–10 phút (cloud overhead), priority queue free tier có thể chờ; cost paid tier $99/month/team.
Decision matrix:
- Indie dev, không có Mac → EAS Build.
- Team có infrastructure CI riêng (Jenkins, GitHub Actions self-hosted Mac) → build local hoặc CI custom.
- Startup nhanh launch, ưu tiên dev velocity → EAS Build + EAS Update.
- Enterprise nghiêm ngặt về security (code không leave premises) → build local hoặc EAS Self-hosted.
Hybrid: dùng EAS cho preview/dev, local cho production release — kiểm soát signing key cuối cùng.
Local build:
- iOS needs macOS + Xcode license.
- Android needs JDK + Android Studio + SDK.
- Build time: 5–15 minutes per run.
- Code signing: you manage certs/profiles (iOS) and keystores (Android).
- Pros: zero cost, faster debug builds (local cache), no internet dependency.
- Cons: Mac-only for iOS, manual setup, signing risk if keys are lost.
EAS Build (Expo Application Services):
- Cloud builds — no macOS needed locally for iOS.
- Profile config (eas.json) for dev/preview/production.
- Code signing managed: EAS holds the cert/keystore and rotates automatically.
- Pros: one-time setup, share builds with the team via an EAS Update channel, OTA integration, free tier 30 builds/month.
- Cons: usually 5–10 min builds (cloud overhead), free-tier priority queues may wait; paid tier $99/month/team.
Decision matrix:
- Indie dev without a Mac → EAS Build.
- Team with its own CI (Jenkins, self-hosted Mac GitHub Actions) → local build or custom CI.
- Startup optimising for dev velocity → EAS Build + EAS Update.
- Strict-security enterprise (code cannot leave premises) → local build or EAS self-hosted.
Hybrid: use EAS for preview/dev, local for production release — keep ultimate control over signing keys.