--- name: expo-deployment description: > Deploy Expo (React Native) apps to iOS App Store, Android Play Store, and web via EAS Build + Submit. Mobile-equivalent of `vibe-deploy` (which targets Vercel / Docker / VPS for Next.js). Use this when a vibe-kit project's intent is mobile. User-visible strings match the user's input language (Vietnamese by default for VN users). Trigger phrases (EN + VN): "deploy expo app", "publish to app store", "eas build", "day app len store", "deploy app mobile", "len app store". version: 1.0.0 license: MIT (see LICENSE.txt — © 2025 650 Industries / Expo, vendored into vibe-kit) --- # Deployment **Language rule (vibe-kit override):** Progress messages, prompts, and final URL/store-link announcements default to Vietnamese for VN-built vibe-kit projects. Read `.vibe/intent.json` to detect language. Raw `eas`/`xcrun`/`gradle` command output stays verbatim English. This skill covers deploying Expo applications across all platforms using EAS (Expo Application Services). ## References Consult these resources as needed: - ./references/workflows.md -- CI/CD workflows for automated deployments and PR previews - ./references/testflight.md -- Submitting iOS builds to TestFlight for beta testing - ./references/app-store-metadata.md -- Managing App Store metadata and ASO optimization - ./references/play-store.md -- Submitting Android builds to Google Play Store - ./references/ios-app-store.md -- iOS App Store submission and review process ## Quick Start ### Install EAS CLI ```bash npm install -g eas-cli eas login ``` ### Initialize EAS ```bash npx eas-cli@latest init ``` This creates `eas.json` with build profiles. ## Build Commands ### Production Builds ```bash # iOS App Store build npx eas-cli@latest build -p ios --profile production # Android Play Store build npx eas-cli@latest build -p android --profile production # Both platforms npx eas-cli@latest build --profile production ``` ### Submit to Stores ```bash # iOS: Build and submit to App Store Connect npx eas-cli@latest build -p ios --profile production --submit # Android: Build and submit to Play Store npx eas-cli@latest build -p android --profile production --submit # Shortcut for iOS TestFlight npx testflight ``` ## Web Deployment Deploy web apps using EAS Hosting: ```bash # Deploy to production npx expo export -p web npx eas-cli@latest deploy --prod # Deploy PR preview npx eas-cli@latest deploy ``` ## EAS Configuration Standard `eas.json` for production deployments: ```json { "cli": { "version": ">= 16.0.1", "appVersionSource": "remote" }, "build": { "production": { "autoIncrement": true, "ios": { "resourceClass": "m-medium" } }, "development": { "developmentClient": true, "distribution": "internal" } }, "submit": { "production": { "ios": { "appleId": "your@email.com", "ascAppId": "1234567890" }, "android": { "serviceAccountKeyPath": "./google-service-account.json", "track": "internal" } } } } ``` ## Platform-Specific Guides ### iOS - Use `npx testflight` for quick TestFlight submissions - Configure Apple credentials via `eas credentials` - See ./reference/testflight.md for credential setup - See ./reference/ios-app-store.md for App Store submission ### Android - Set up Google Play Console service account - Configure tracks: internal → closed → open → production - See ./reference/play-store.md for detailed setup ### Web - EAS Hosting provides preview URLs for PRs - Production deploys to your custom domain - See ./reference/workflows.md for CI/CD automation ## Automated Deployments Use EAS Workflows for CI/CD: ```yaml # .eas/workflows/release.yml name: Release on: push: branches: [main] jobs: build-ios: type: build params: platform: ios profile: production submit-ios: type: submit needs: [build-ios] params: platform: ios profile: production ``` See ./reference/workflows.md for more workflow examples. ## Version Management EAS manages version numbers automatically with `appVersionSource: "remote"`: ```bash # Check current versions eas build:version:get # Manually set version eas build:version:set -p ios --build-number 42 ``` ## Monitoring ```bash # List recent builds eas build:list # Check build status eas build:view # View submission status eas submit:list ```