| name | submitting-app-release |
| description | Runs pre-flight validation gates and submits the app to App Store Connect and Google Play Console via EAS CLI. Use when the user says "release", "submit to store", "publish", "deploy app", or "submit for review". Always runs release-checklist.js first — never submits past a failing gate without explicit user confirmation.
|
Submitting App Release
Credential check — always run first
Before any submission step, load and run the credential check from:
skills/submitting-app-release/references/credentials-guide.md
Check all required vars, validate their format, and run eas whoami. If anything fails, stop and guide the user to fix it before running any build or submit command.
When to use
| Request | Action |
|---|
| "submit app" / "release" | Run checklist → submit both platforms |
| "submit iOS only" | Run checklist --platform ios → eas submit --platform ios |
| "submit Android only" | Run checklist --platform android → eas submit --platform android |
| "pre-flight check" | Run release-checklist.js only, no submission |
Release sequence
-
Run all 7 pre-flight gates:
node skills/submitting-app-release/scripts/release-checklist.js {appId}
-
If all gates pass:
eas submit --platform ios --profile production
eas submit --platform android --profile production
-
Report submitted version and review status to user.
The 7 pre-flight gates
.msd/config/{appId}.config.json exists
.msd/versions/{appId}/version.json is valid (semver + versionCode ≥ 1)
- Metadata passes all character limit validation
- All translation keys present across all locales
- Designed screenshots exist for required device sizes
- EAS credentials configured (
eas whoami passes, secrets set)
- CHANGELOG.md includes the current version number
Rules
- Never auto-proceed past a failing gate. Stop and report to user.
- iOS staged release: enable phased release in App Store Connect after submission
- Android staged rollout: set rollout to 10% in Google Play Console, expand after 48h monitoring
EAS environment variables
| Variable | Purpose |
|---|
EXPO_TOKEN | EAS authentication token (CI/CD) |
APP_STORE_CONNECT_API_KEY_ID | App Store Connect API key ID |
APP_STORE_CONNECT_ISSUER_ID | App Store Connect issuer ID |
APP_STORE_CONNECT_API_KEY_CONTENT | App Store Connect API private key (base64) |
GOOGLE_SERVICES_JSON | Google Play service account key (JSON string) |
EAS Build profiles
Before running release-checklist.js, ensure you are building with the correct EAS profile.
See docs/eas-build-guide.md for a full guide to development, preview, and production builds.
Reference: https://docs.expo.dev/build/introduction/
Reference
skills/submitting-app-release/references/submission-checklist.md — EAS commands and eas.json profiles
skills/submitting-app-release/references/credentials-guide.md — all required credentials, format examples, validation commands, and EAS secret setup