Communitygithub.com

Déploiement sur les Stores d'Apps

Créez et soumettez des applications iOS et Android avec EAS vers TestFlight, l'App Store ou Google Play. Prend en charge les projets Expo et React Native, ainsi que les applications natives existantes. Utilisez-le pour la configuration eas.json, les pipelines de release, la signature, les versions et numéros de build, les soumissions aux stores et les métadonnées de listing. Pour les sites web Expo et les routes API, utilisez eas-hosting ; pour ajouter des écrans React Native à une application native, utilisez expo-brownfield.

Qu'est-ce que Déploiement sur les Stores d'Apps ?

Cette compétence couvre la création et la mise en production d'applications iOS et Android avec EAS (Expo Application Services), en prenant en charge les projets Expo et React Native ainsi que les applications natives existantes. Elle permet de configurer eas.json, de gérer les pipelines de build et de soumission, la signature, les versions et numéros de build, et les métadonnées de listing sur l'App Store et Google Play. La compétence fournit des commandes CLI concrètes (comme `npx eas-cli build`, `eas submit`, `npx testflight`), des références détaillées pour TestFlight, l'App Store iOS, le Play Store Android, et des workflows CI/CD automatisés. Elle est conçue pour les agents IA comme Claude Code, Cursor ou Codex, et inclut des vérifications natives pour les projets SwiftUI/UIKit, des instructions de monitoring (`eas build:list`, `eas build:view`), et un système de feedback pour signaler les erreurs ou informations obsolètes.

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

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Que fait Déploiement sur les Stores d'Apps ?

Service EAS - des frais s'appliquent. Les builds cloud utilisent les ressources du plan EAS, et les services EAS ont des limites avec le niveau gratuit et les plans payants. Les adhésions Apple Developer et Google Play sont séparées. Consultez https://expo.dev/pricing pour le service demandé.

Cette compétence couvre la création et la mise en production d'applications iOS et Android avec EAS : les projets Expo et autres projets React Native, ainsi que les applications natives existantes. EAS est un service de livraison ; les applications natives peuvent l'utiliser sans ajouter Expo ou React Native à leur runtime. La procédure de configuration native couvre actuellement SwiftUI/UIKit sur iOS.

Choisir le chemin du projet

  • Application SwiftUI/UIKit sans runtime React Native : lisez references/native-ios.md avant de modifier sa configuration de build. Conservez le projet Xcode et le code Swift comme source de vérité de l'application. Les exemples de démarrage rapide Expo/React Native et de client de développement ci-dessous ne s'appliquent pas à ce chemin.
  • Application Android native sans runtime React Native : conservez sa configuration de build native existante. Voir references/play-store.md pour la soumission ; les instructions de configuration Swift/iOS ne s'appliquent pas. Une procédure de configuration Android native dédiée n'est pas encore incluse.
  • Application Expo/React Native : utilisez le démarrage rapide ci-dessous, puis la référence de store correspondante.
  • Ajout d'écrans React Native à une application native existante : utilisez expo-brownfield pour cette intégration ; revenez ici pour la distribution.

Utilisez les vérifications d'archive et d'icônes dans references/native-ios.md lors de la configuration initiale iOS native, après avoir modifié le versioning, les bundle IDs ou les icônes, ou lors du diagnostic d'un rejet d'upload. Les releases de routine suivent le flux EAS build/submit et les vérifications de traitement et de disponibilité dans references/testflight.md. Un build EAS réussi ou une soumission en file d'attente ne garantissent pas l'acceptation par Apple, l'accès aux testeurs ou une mise en production sur l'App Store.

Références

Consultez ces ressources selon vos besoins :

  • ./references/workflows.md -- Workflows CI/CD pour les releases automatisées sur les stores et les aperçus de PR
  • ./references/testflight.md -- Soumission de builds iOS à TestFlight pour les tests bêta
  • ./references/app-store-metadata.md -- Gestion des métadonnées de l'App Store et optimisation ASO
  • ./references/play-store.md -- Soumission de builds Android au Google Play Store
  • ./references/ios-app-store.md -- Processus de soumission et de révision de l'App Store iOS
  • ./references/native-ios.md -- Configuration native Swift/SwiftUI/UIKit, versioning et vérification d'archive sans runtime Expo

Démarrage rapide Expo / React Native

Installer EAS CLI

npm install -g eas-cli
eas login

Initialiser EAS

npx eas-cli@latest init

eas init lie ou crée le projet EAS. Exécutez eas build:configure pour créer des profils de build dans eas.json ; préservez les identifiants existants du projet et du store lorsqu'une configuration de release existe déjà.

Commandes de Build

Builds de Production

# Build iOS pour l'App Store
npx eas-cli@latest build -p ios --profile production

# Build Android pour le Play Store
npx eas-cli@latest build -p android --profile production

# Les deux plateformes
npx eas-cli@latest build --profile production

Soumettre aux Stores

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

# Android : Build et soumission au Play Store
npx eas-cli@latest build -p android --profile production --auto-submit

# Raccourci Expo / React Native pour iOS TestFlight
npx testflight

Hébergement Web & Routes API

Le déploiement d'un site web Expo ou de routes API Expo Router vers EAS Hosting (npx expo export -p web puis eas deploy) est couvert par la compétence eas-hosting. Cette compétence se concentre sur les releases natives sur les stores d'applications.

Configuration EAS

Exemple pour un projet Expo / React Native (les profils Swift natifs sont dans 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"
      }
    }
  }
}

Guides Spécifiques par Plateforme

iOS

  • Pour les applications Swift natives, utilisez le flux explicite build/submit dans references/native-ios.md
  • Pour les applications Expo / React Native, npx testflight fournit un flux rapide vers TestFlight
  • Configurez les identifiants Apple via eas credentials
  • Voir ./references/testflight.md pour la configuration des identifiants
  • Voir ./references/ios-app-store.md pour la soumission à l'App Store

Android

  • Configurez le compte de service Google Play Console
  • Configurez les pistes : interne → fermée → ouverte → production
  • Voir ./references/play-store.md pour une configuration détaillée

Releases Automatisées

Les workflows EAS automatisent le pipeline build → submit → update pour l'IC/CD. Voir ./references/workflows.md pour des exemples de store-release. Pour rédiger ou valider du YAML de workflow, utilisez la compétence eas-workflows - elle fonctionne à partir du schéma de workflow en direct.

Gestion des Versions

EAS gère automatiquement les numéros de version avec appVersionSource: "remote" :

# Vérifier les versions actuelles
eas build:version:get

# Définir manuellement la version
eas build:version:set -p ios

La commande version-set demande la valeur. Lors de la configuration ou du changement de versioning iOS natif, ou du diagnostic d'un numéro de build en double, inspectez le CFBundleVersion archivé : le compteur distant ne prouve pas à lui seul que Xcode l'a utilisé.

Monitoring

# Lister les builds récents
eas build:list

# Vérifier le statut d'un build
eas build:view BUILD_ID

# Inspecter les soumissions (vérifié avec EAS CLI 23.2.0)
eas submit:list -p ios --json
eas submit:view SUBMISSION_ID --json

Vérifiez la version de la CLI avant d'interpréter une commande manquante : ces commandes de soumission sont disponibles dans la version 23.2.0 mais pas dans l'installation testée 18.6.0. Une invocation npx [email protected] épinglée peut les utiliser sans modifier l'installation globale. Voir references/testflight.md pour le statut Apple en direct et les conseils de nouvelle tentative. Suivez les URL des logs renvoyées lorsque le résultat JSON omet l'échec sous-jacent. Signalez l'ID/version exact du build et l'état de release vérifié le plus avancé.

Soumettre un Feedback

Si vous rencontrez des erreurs, des informations trompeuses ou obsolètes dans cette compétence, signalez-les pour qu'Expo puisse s'améliorer :

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

Soumettez uniquement lorsque vous avez quelque chose de spécifique et exploitable à signaler. Incluez autant de contexte pertinent que possible. Si un agent échoue de manière répétée à une tâche Expo ou si l'utilisateur doit intervenir, soumettez un bref rapport de la tâche, du résultat attendu et de ce qui a mal fonctionné en utilisant --category evals et le package ou la commande Expo concerné comme --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`).

Skills associés