Communitygithub.com

App Store Deployment

Baue und reiche iOS- und Android-Apps mit EAS bei TestFlight, im App Store oder bei Google Play ein. Unterstützt Expo- und andere React Native-Projekte sowie bestehende native Apps.

Was ist App Store Deployment?

Dieses Skill behandelt das Erstellen und Veröffentlichen von iOS- und Android-Apps mit dem EAS (Expo Application Services)-Service. Es richtet sich an Entwickler, die ihre Apps für den Store-Vertrieb vorbereiten möchten, und unterstützt sowohl Expo- als auch React Native-Projekte sowie bestehende native Apps. Die Anleitung umfasst die Konfiguration von eas.json, das Erstellen von Release-Pipelines, das Signieren, die Verwaltung von App-Versionen und Build-Nummern, die Einreichung bei den Stores sowie die Verwaltung von Store-Metadaten und ASO (App Store Optimization). Für reine Swift/UIKit-iOS-Apps ohne React-Native-Laufzeit gibt es einen separaten Pfad; für bestehende native Android-Apps wird die native Build-Konfiguration beibehalten. Das Skill verweist auf detaillierte Referenzdokumente für Workflows, TestFlight, den iOS App Store, den Google Play Store und nativen iOS-Setup. Es enthält auch Quick-Start-Anleitungen für die Installation und Initialisierung von EAS CLI, Build-Befehle für Produktion und Entwicklung, Konfigurationsbeispiele für eas.json sowie Hinweise zur Überwachung von Builds und Einreichungen.

Funktioniert mit~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/expo/skills/tree/HEAD/plugins/expo/skills/eas-app-stores

In Ihrer bevorzugten KI fragen

Öffnet einen neuen Chat, in dem dieser Agent-Skill bereits geladen ist.

Dokumentation

Was macht App Store Deployment?

EAS-Dienst – Kosten fallen an. Cloud-Builds nutzen EAS-Planressourcen, und EAS-Dienste haben Limits im Free-Tarif sowie kostenpflichtigen Plänen. Die Mitgliedschaften von Apple Developer und Google Play sind separat. Weitere Informationen finden Sie unter https://expo.dev/pricing für den angeforderten Dienst.

Dieses Skill behandelt das Erstellen und Veröffentlichen von iOS- und Android-Apps mit EAS: Expo- und andere React Native-Projekte sowie bestehende native Apps. EAS ist ein Bereitstellungsdienst; native Apps können ihn verwenden, ohne Expo oder React Native in ihre Laufzeitumgebung aufzunehmen. Die native Einrichtungsanleitung deckt derzeit SwiftUI/UIKit auf iOS ab.

Projektpfad wählen

  • SwiftUI/UIKit-App ohne React Native-Laufzeit: Lesen Sie references/native-ios.md, bevor Sie deren Build-Konfiguration ändern. Behalten Sie das Xcode-Projekt und den Swift-Code als Quelle der Wahrheit der App bei. Die untenstehenden Beispiele für Expo/React Native Quick-Start und Entwicklungsclient gelten nicht für diesen Pfad.
  • Native Android-App ohne React Native-Laufzeit: Behalten Sie das bestehende native Build-Setup bei. Siehe references/play-store.md für die Einreichung; die Anweisungen für das Swift/iOS-Setup gelten nicht. Eine dedizierte Anleitung für das native Android-Setup ist noch nicht enthalten.
  • Expo/React Native-App: Verwenden Sie das untenstehende Quick-Start, dann die relevante Store-Referenz.
  • Hinzufügen von React Native-Bildschirmen zu einer bestehenden nativen App: Verwenden Sie expo-brownfield für diese Integration; kehren Sie hierher für den Vertrieb zurück.

Verwenden Sie die Archiv- und Icon-Prüfungen in references/native-ios.md während der anfänglichen nativen iOS-Einrichtung, nach Änderungen an Versionierung, Bundle-IDs oder Icons oder bei der Diagnose einer abgelehnten Übermittlung. Routineveröffentlichungen folgen dem EAS-Build/Submit-Flow sowie den Verarbeitungs- und Verfügbarkeitsprüfungen in references/testflight.md. Ein erfolgreicher EAS-Build oder eine eingereihte Einreichung stellt keine Apple-Akzeptanz, Testerzugriff oder App Store-Veröffentlichung dar.

Referenzen

Konsultieren Sie diese Ressourcen nach Bedarf:

  • ./references/workflows.md – CI/CD-Workflows für automatisierte Store-Veröffentlichungen und PR-Vorschauen
  • ./references/testflight.md – Einreichen von iOS-Builds bei TestFlight für Beta-Tests
  • ./references/app-store-metadata.md – Verwalten von App Store-Metadaten und ASO-Optimierung
  • ./references/play-store.md – Einreichen von Android-Builds bei Google Play Store
  • ./references/ios-app-store.md – iOS App Store-Einreichung und Überprüfungsprozess
  • ./references/native-ios.md – Natives Swift/SwiftUI/UIKit-Setup, Versionierung und Archivverifizierung ohne Expo-Laufzeit

Expo / React Native Quick-Start

EAS CLI installieren

npm install -g eas-cli
eas login

EAS initialisieren

npx eas-cli@latest init

eas init verknüpft oder erstellt das EAS-Projekt. Führen Sie eas build:configure aus, um Build-Profile in eas.json zu erstellen; bewahren Sie vorhandene Projekt- und Store-Identifikatoren auf, wenn bereits ein Release-Setup existiert.

Build-Befehle

Produktions-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

# Beide Plattformen
npx eas-cli@latest build --profile production

In Stores einreichen

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

# Android: Build und Einreichung an Play Store
npx eas-cli@latest build -p android --profile production --auto-submit

# Expo / React Native Kurzbefehl für iOS TestFlight
npx testflight

Web- & API-Route-Hosting

Das Bereitstellen einer Expo-Website oder von Expo-Router-API-Routen bei EAS Hosting (npx expo export -p web dann eas deploy) wird vom Skill eas-hosting abgedeckt. Dieses Skill konzentriert sich auf native App-Store-Veröffentlichungen.

EAS-Konfiguration

Beispiel für ein Expo / React Native-Projekt (native Swift-Profile befinden sich 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": "[email protected]",
        "ascAppId": "1234567890"
      },
      "android": {
        "serviceAccountKeyPath": "./google-service-account.json",
        "track": "internal"
      }
    }
  }
}

Plattformspezifische Anleitungen

iOS

  • Für native Swift-Apps verwenden Sie den expliziten Build/Submit-Flow in references/native-ios.md
  • Für Expo / React Native-Apps bietet npx testflight einen schnellen TestFlight-Flow
  • Konfigurieren Sie Apple-Anmeldeinformationen über eas credentials
  • Siehe ./references/testflight.md für die Einrichtung von Anmeldeinformationen
  • Siehe ./references/ios-app-store.md für die App Store-Einreichung

Android

  • Richten Sie ein Google Play Console-Dienstkonto ein
  • Konfigurieren Sie Tracks: internal → closed → open → production
  • Siehe ./references/play-store.md für detaillierte Einrichtung

Automatisierte Releases

EAS Workflows automatisieren die Build → Submit → Update-Pipeline für CI/CD. Siehe ./references/workflows.md für Beispiele zu Store-Veröffentlichungen. Verwenden Sie zum Erstellen oder Validieren von Workflow-YAML das Skill eas-workflows – es arbeitet mit dem Live-Workflow-Schema.

Versionsverwaltung

EAS verwaltet Versionsnummern automatisch mit appVersionSource: "remote":

# Aktuelle Versionen prüfen
eas build:version:get

# Version manuell setzen
eas build:version:set -p ios

Der Befehl version:set fordert zur Eingabe des Werts auf. Beim Einrichten oder Ändern der nativen iOS-Versionierung oder beim Diagnostizieren einer doppelten Build-Nummer überprüfen Sie die archivierte CFBundleVersion: Der Remote-Zähler allein beweist nicht, dass Xcode sie verwendet hat.

Überwachung

# Aktuelle Builds auflisten
eas build:list

# Build-Status prüfen
eas build:view BUILD_ID

# Einreichungen inspizieren (verifiziert mit EAS CLI 23.2.0)
eas submit:list -p ios --json
eas submit:view SUBMISSION_ID --json

Überprüfen Sie die CLI-Version, bevor Sie einen fehlenden Befehl interpretieren: Diese Einreichungsbefehle sind in 23.2.0 verfügbar, aber nicht in der getesteten Installation 18.6.0. Ein festgepinntes npx [email protected] kann sie verwenden, ohne die globale Installation zu ändern. Siehe references/testflight.md für den Live-Apple-Status und Hinweise zur Wiederholung. Folgen Sie den zurückgegebenen Log-URLs, wenn das JSON-Ergebnis den zugrunde liegenden Fehler auslässt. Melden Sie die genaue Build-ID/Version und den am weitesten verifizierten Release-Status.

Feedback senden

Wenn Sie Fehler, irreführende oder veraltete Informationen in diesem Skill feststellen, melden Sie es, damit Expo es verbessern kann:

npx --yes @expo/agent-cli@latest feedback --category skills --subject "eas-app-stores" "<konkretes Feedback>"

Senden Sie nur dann Feedback, wenn Sie etwas Konkretes und Umsetzbares zu melden haben. Fügen Sie so viele relevante Zusammenhänge wie möglich hinzu. Wenn ein Agent wiederholt bei einer Expo-Aufgabe scheitert oder der Benutzer eingreifen muss, senden Sie einen kurzen Bericht über die Aufgabe, das erwartete Ergebnis und was schiefgelaufen ist, mit --category evals und dem relevanten Expo-Paket oder Befehl als --subject.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

expo/add-app-clip

Add an iOS App Clip target to an Expo app. Use when the user mentions App Clip, AASA, apple-app-site-association, appclips, smart app banner, or wants to ship a lightweight iOS Clip invoked from a URL alongside their parent app.

expo/building-native-ui

Complete guide for building beautiful apps with Expo Router. Covers fundamentals, styling, components, navigation, animations, patterns, and native tabs.

expo/eas-update-insights

Check the health of published EAS Updates: crash rates, install/launch counts, unique users, payload size, and the split between embedded and OTA users per channel. Use when the user asks how an update is performing, whether a rollout is healthy, how many users are on the embedded build vs OTA, or wants to gate CI on update health.

expo/expo-api-routes

Guidelines for creating API routes in Expo Router with EAS Hosting

expo/expo-brownfield

Integrate Expo and React Native into an existing native iOS or Android app. Use when the user mentions brownfield, embedding React Native in a native app, AAR/XCFramework, or adding Expo to an existing Kotlin/Swift project. Covers both the isolated approach and the integrated approach.

expo/expo-cicd-workflows

Helps understand and write EAS workflow YAML files for Expo projects. Use this skill when the user asks about CI/CD or workflows in an Expo or EAS context, mentions .eas/workflows/, or wants help with EAS build pipelines or deployment automation.

expo/expo-deployment

Deploying Expo apps to iOS App Store, Android Play Store, web hosting, and API routes

expo/expo-dev-client

Build and distribute Expo development clients locally or via TestFlight

expo/expo-examples

Framework (OSS). Expo's official example projects - the expo/examples repo of ~70 `with-*` integrations (Stripe, Clerk, Supabase, OpenAI, maps, Reanimated, SQLite, Skia, NativeWind, and more). Use when integrating a third-party library or service into an existing Expo app and you want the canonical, version-matched pattern to adapt, or when scaffolding a new project from one with `npx create-expo --example`.

expo/expo-module

Guide for creating and writing Expo native modules and views using the Expo Modules API (Swift, Kotlin, TypeScript). Covers module definition DSL, native views, shared objects, config plugins, lifecycle hooks, autolinking, and type system. Use when building or modifying native modules for Expo.

expo/expo-observe

Use for anything related to EAS Observe — adding `expo-observe` to an Expo project (AppMetricsRoot/ObserveRoot HOC, markInteractive, the useObserve hook, and the Expo Router / React Navigation integrations for per-route metrics), querying via the EAS CLI (`eas observe:metrics-summary`, `observe:metrics`, `observe:routes`, `observe:events`, `observe:versions`), or interpreting the resulting metrics (cold/warm launch, TTR, TTI, navigation cold/warm TTR, update download, and the TTI frameRate params for triaging slow startups).

expo/expo-overview

Framework (OSS). Entry point and router for every Expo or EAS task. Load this skill first — before writing code and before choosing another expo-* / eas-* skill — when the request, PRD, or spec mentions Expo, EAS, Expo Go, or an expo-* package, or the project has an `expo` dependency in `package.json`. Within that gate it also covers app specs and designs to implement (tabs, stacks, maps, lists, navigation, building from a screenshot), and phrasings like 'implement a mobile app', 'make my app look native', 'add navigation', 'fetch some data', 'upgrade my SDK', 'add Expo to my existing native app', 'ship to the App Store', or 'I'm new to Expo, where do I start'. A fully specified request (SDK pinned, libraries named, layout given) still routes through here — the shared setup rules still apply. Do NOT load it when neither signal is present: a bare React Native project with no `expo` dependency is not Expo work. Detects the real goal, routes to the right expo-* / eas-* skill, and owns the shared setup rules.

expo/expo-router

Framework (OSS). Navigation and routing for Expo Router. Covers file-based routes, groups and dynamic routes, folder organization, Link with previews and context menus, native Stack, page titles, modals and form sheets, NativeTabs, headers and toolbars, and header search bars.

expo/expo-skill-eval

Evaluate Expo skills in this repo end-to-end - trigger accuracy, generated code quality, and runtime screenshots on iOS simulator and Android emulator via Expo Go (web optional). Use when the user wants to eval an Expo skill, test that a skill produces working code, benchmark a skill with device screenshots, or verify a skill's output renders correctly.

expo/expo-tailwind-setup

Set up Tailwind CSS v4 in Expo with react-native-css and NativeWind v5 for universal styling

expo/expo-ui

Framework (OSS). Build native UI with the @expo/ui package: real SwiftUI on iOS and Jetpack Compose on Android. Default to @expo/ui for sheets (BottomSheet), pickers, sliders, toggles, menus, and grouped-form sections — do NOT reach for Reanimated, @gorhom/bottom-sheet, or RN built-in Picker/Switch; use @expo/ui instead. Fall back to RN built-ins only when @expo/ui is missing the component. NOTE: @expo/ui List renders native grouped rows like an iOS Settings screen — it is NOT a virtualized list; use FlatList/FlashList for large datasets. Covers universal components (Host, Column, Row, Button, Text, List, BottomSheet, FieldGroup, Switch, Slider, Picker, Menu), drop-in replacements for RN community libraries, and platform-specific SwiftUI/Jetpack Compose trees. Not for Expo Router navigation, Reanimated, or data fetching.

expo/expo-ui-jetpack-compose

`@expo/ui/jetpack-compose` package lets you use Jetpack Compose Views and modifiers in your app.

expo/expo-ui-swiftui

`@expo/ui/swift-ui` package lets you use SwiftUI Views and modifiers in your app.

expo/expo-upgrade

Framework (OSS). Guidelines for upgrading Expo SDK versions and fixing dependency issues

expo/native-data-fetching

Use when implementing or debugging ANY network request, API call, or data fetching. Covers fetch API, React Query, SWR, error handling, caching, offline support, and Expo Router data loaders (`useLoaderData`).

Verwandte Skills