| name | rn-release-eas |
| description | Build, sign, and ship Expo React Native apps to the App Store and Google Play via EAS (Expo Application Services). Covers EAS Build profiles, EAS Submit, EAS Update (OTA), iOS and Android code signing, and store metadata. Apply when configuring build pipelines, releasing to production, setting up OTA updates, or troubleshooting signing. |
| metadata | {"owner":"rn-builder","status":"stable"} |
rn-release-eas
Purpose
Owns the full ship path from "code is ready" to "users have the new version" — build profiles, code signing, store submission, and over-the-air JS updates.
When to Apply
Use this skill when the task is:
- Setting up
eas.json for a new project
- Producing a development, preview, or production build
- Configuring iOS code signing / provisioning profiles
- Configuring Android signing keys
- Submitting to App Store Connect or Google Play
- Setting up EAS Update for OTA JS deployments
- Diagnosing a failed build, submit, or update
Do not use this skill for:
- Bare RN apps with Fastlane → that's a separate workflow (out of scope for this agent; route to a DevOps specialist).
- CI test runs → read
../rn-testing/SKILL.md.
Problem → Reference
Default Choices
| Concern | Default | Notes |
|---|
| Build service | EAS Build | Manages prebuild, native builds, caching |
| Submit service | EAS Submit | Wraps altool / Play API |
| OTA updates | EAS Update | JS-bundle hot-swap on app launch |
| Build distribution | expo-dev-client for dev, internal/preview for QA, store for prod | |
| Versioning | Auto-increment ios.buildNumber and android.versionCode via EAS | Manual version (SemVer) for marketing version |
| Channels | production, preview, staging | Mapped to git branches: main → preview, tags → production |
Build Profile Map
| Profile | When | What it produces |
|---|
development | Local dev | Dev client .app/.apk with Hermes + dev menu |
preview | PR labels, QA, internal testing | Release-mode build, internal distribution (TestFlight internal, Play Internal Testing) |
production | Tagged release | Store-distribution build, code-signed for App Store / Play Store |
Critical Rules
- Never commit signing credentials to git. Use EAS-managed credentials (
eas credentials) or env vars.
- Production builds must include Sentry source maps. See
../rn-scaffold-expo/references/stack-observability.md.
- Never publish OTA updates that touch native code. EAS Update is JS-only. Native changes require a new store build.
- Always bump
version in app.json before producing a production build. The store rejects same-version uploads.
- EAS Update runtime version must match the binary's runtime version. A
runtimeVersion: appVersion mismatch ships nothing.
Verification
After any release step:
eas build:list --limit 5
eas submit:list --limit 5
eas update:list --limit 5
Then test the install:
- TestFlight invite arrived (iOS preview/production)
- Play Internal Testing track visible (Android preview)
- OTA: app cold-launched, network call to update server visible in logs, version string updated