Catalog
expo/eas-app-stores

expo

eas-app-stores

Build and submit iOS and Android apps with EAS to TestFlight, the App Store, or Google Play. Supports Expo and other React Native projects, plus existing native apps. Use for eas.json setup, release pipelines, signing, app versions and build numbers, store submissions, and listing metadata. For Expo websites and API routes, use eas-hosting; for adding React Native screens to a native app, use expo-brownfield.

NewUpdated Oct 3, 2026

App Store Deployment

EAS service - costs apply. Cloud builds use EAS plan resources, and EAS services have free-tier and paid-plan limits. Apple Developer and Google Play memberships are separate. Check https://expo.dev/pricing for the requested service.

This skill covers building and releasing iOS and Android apps with EAS: Expo and other React Native projects, plus existing native apps. EAS is a delivery service; native apps can use it without adding Expo or React Native to their runtime. The native setup walkthrough currently covers SwiftUI/UIKit on iOS.

Choose the project path

  • SwiftUI/UIKit app with no React Native runtime: read references/native-ios.md before changing its build configuration. Keep the Xcode project and Swift code as the app's source of truth. The Expo/React Native quick-start and development-client examples below do not apply to this path.
  • Native Android app with no React Native runtime: preserve its existing native build setup. See references/play-store.md for submission; the Swift/iOS setup instructions do not apply. A dedicated native Android setup walkthrough is not yet included.
  • Expo/React Native app: use the quick-start below, then the relevant store reference.
  • Adding React Native screens to an existing native app: use expo-brownfield for that integration; return here for distribution.

Use the archive and icon checks in references/native-ios.md during initial native iOS setup, after changing versioning, bundle IDs, or icons, or when diagnosing a rejected upload. Routine releases follow the EAS build/submit flow and the processing and availability checks in references/testflight.md. A successful EAS build or a queued submission does not establish Apple acceptance, tester access, or an App Store release.

References

Consult these resources as needed:

  • ./references/workflows.md -- CI/CD workflows for automated store releases 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
  • ./references/native-ios.md -- Native Swift/SwiftUI/UIKit setup, versioning, and archive verification without an Expo runtime

Expo / React Native Quick Start

Install EAS CLI

npm install -g eas-cli
eas login

Initialize EAS

npx eas-cli@latest init

eas init links or creates the EAS project. Run eas build:configure to create build profiles in eas.json; preserve existing project and store identifiers when a release setup already exists.

Build Commands

Production Builds

# 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

# iOS: Build and submit to App Store Connect
npx eas-cli@latest build -p ios --profile production --auto-submit

# Android: Build and submit to Play Store
npx eas-cli@latest build -p android --profile production --auto-submit

# Expo / React Native shortcut for iOS TestFlight
npx testflight

Web & API Route Hosting

Deploying an Expo website or Expo Router API routes to EAS Hosting (npx expo export -p web then eas deploy) is covered by the eas-hosting skill. This skill focuses on native app store releases.

EAS Configuration

Example for an Expo / React Native project (native Swift profiles are in references/native-ios.md):

{
  "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

  • For native Swift apps, use the explicit build/submit flow in references/native-ios.md
  • For Expo / React Native apps, npx testflight provides a quick TestFlight flow
  • Configure Apple credentials via eas credentials
  • See ./references/testflight.md for credential setup
  • See ./references/ios-app-store.md for App Store submission

Android

  • Set up Google Play Console service account
  • Configure tracks: internal → closed → open → production
  • See ./references/play-store.md for detailed setup

Automated Releases

EAS Workflows automate the build → submit → update pipeline for CI/CD. See ./references/workflows.md for store-release examples. To author or validate workflow YAML, use the eas-workflows skill - it works from the live workflow schema.

Version Management

EAS manages version numbers automatically with appVersionSource: "remote":

# Check current versions
eas build:version:get

# Manually set version
eas build:version:set -p ios

The version-set command prompts for the value. When setting up or changing native iOS versioning, or diagnosing a duplicate build number, inspect the archived CFBundleVersion: the remote counter alone does not prove that Xcode used it.

Monitoring

# List recent builds
eas build:list

# Check build status
eas build:view BUILD_ID

# Inspect submissions (verified with EAS CLI 23.2.0)
eas submit:list -p ios --json
eas submit:view SUBMISSION_ID --json

Check the CLI version before interpreting a missing command: these submission commands are available in 23.2.0 but not in the tested 18.6.0 installation. A pinned npx eas-cli@23.2.0 invocation can use them without changing the global installation. See references/testflight.md for live Apple status and retry guidance. Follow the returned log URLs when the JSON result omits the underlying failure. Report the exact build ID/version and the furthest verified release state.

Submitting Feedback

If you encounter errors, misleading or outdated information in this skill, report it so Expo can improve:

npx --yes submit-expo-feedback@latest --category skills --subject "eas-app-stores" "<actionable feedback>"

Only submit when you have something specific and actionable to report. Include as much relevant context as possible. If an AI agent repeatedly failed or the user had to take over an Expo task, load the expo-skill-feedback skill and follow its eval-candidate flow instead of reusing the command above.

Files8
8 files · 49.8 KB

Select a file to preview

Overall Score

82/100

Grade

B

Good

Grades are signals, not a certification. Always review a skill yourself before use.

Safety

80

Quality

85

Clarity

82

Completeness

78

Summary

This skill guides developers through building and releasing iOS and Android apps using Expo's EAS service. It covers EAS CLI setup, build configuration, TestFlight and App Store submission workflows, version management, and metadata optimization. The skill comprehensively addresses both Expo/React Native projects and native Swift/UIKit apps, with references covering platform-specific signing, review processes, and CI/CD automation.

Static Analysis Findings

1 finding

Patterns detected by deterministic static analysis before AI scoring. Hover over any finding code for detailed information and remediation guidance.

Credential Exposure
SEC-020Direct .env File Access

Direct .env file access

references/app-store-metadata.md.env

Detected Capabilities

file readgit operationsEAS CLI executioncredential management (Apple ID, service accounts)environment variable accessbuild configurationstore submissionbinary artifact uploadmetadata push/pull

Trigger Keywords

Phrases that agents use to match this skill to user intent.

submit to app storesubmit to play storebuild ios appbuild android apptestflight betaeas buildapp store metadatagoogle play release

Risk Signals

INFO

Direct .env file access referenced in documentation

references/app-store-metadata.md
WARNING

Service account JSON key file handling for Google Play

references/play-store.md
INFO

API key configuration (.p8 files) documented

references/ios-app-store.md
WARNING

Environment variable usage for credentials (EXPO_APPLE_ID, EXPO_APPLE_APP_SPECIFIC_PASSWORD)

references/ios-app-store.md
INFO

Credential management via eas credentials command

SKILL.md

Referenced Domains

External domains referenced in skill content, detected by static analysis.

api.example.comdeveloper.apple.comdocs.expo.devexample.comexpo.devgithub.commarketplace.visualstudio.complay.google.com

Use Cases

  • Submit iOS apps to TestFlight and the App Store
  • Submit Android apps to Google Play Store
  • Configure EAS build profiles for iOS and Android
  • Manage app versioning and build numbers across platforms
  • Set up store metadata and optimize for app store discovery
  • Automate app releases with CI/CD workflows
  • Build native Swift apps without React Native runtime

Quality Notes

  • Comprehensive coverage of both Expo and native app paths with clear branching instructions
  • Well-structured references with platform-specific guides (iOS, Android, TestFlight, App Store, Play Store)
  • Practical versioning and troubleshooting sections based on real-world issues
  • Clear distinction between EAS build/submit responsibilities and App Store Connect/Play Console manual steps
  • Good documentation of metadata configuration with ASO best practices
  • Workflow examples provided for CI/CD automation
  • Explicit caveats about EAS service costs and Apple/Google membership requirements
  • Security guidance on credential storage (.gitignore for keys, environment variables for CI/CD)
  • Limitation noted: native Android setup walkthrough not yet included
  • Testing verification details (EAS CLI 23.2.0, Xcode 26.2) provided for reproducibility
Model: claude-haiku-4-5-20251001Analyzed: Oct 3, 2026

Reviews

Add this skill to your library to leave a review.

No reviews yet

Be the first to share your experience.

Version History

  1. v3.0

    Contract changed: description

    ✦ AIRemoves paid service designation from skill description.

    triggering2026-10-03

    LATEST
  2. v2.0

    Contract changed: description

    ✦ AIExpanded scope to native iOS and Android apps; added native-ios.md setup path; clarified Expo vs. native workflows and store submission commands.

    triggering2026-09-10

    View This Version
  3. v1.1

    Content updated

    ✦ AIAdds feedback submission guidance and npx command for reporting skill errors.

    2026-09-09

    View This Version
  4. v1.0

    2026-07-11

    View This VersionInitial version

Use expo/eas-app-stores in your dev environment

Command Palette

Search for a command to run...