Communitygithub.com

expo/skills

Construye y envía aplicaciones iOS y Android con EAS a TestFlight, App Store o Google Play. Compatible con Expo y otros proyectos React Native, además de aplicaciones nativas existentes.

¿Qué es skills?

Este skill está diseñado para guiar a desarrolladores y agentes de IA en la construcción y distribución de aplicaciones móviles iOS y Android utilizando EAS (Expo Application Services). Cubre tanto proyectos Expo/React Native como aplicaciones nativas existentes (SwiftUI/UIKit en iOS, nativo en Android) sin necesidad de agregar Expo o React Native a su runtime. Proporciona comandos rápidos para construir y enviar a TestFlight, App Store y Google Play, además de referencias detalladas para configurar pipelines de CI/CD, gestionar versiones, firmar aplicaciones y manejar metadatos de las tiendas. Este skill es útil para desarrolladores que buscan automatizar sus lanzamientos y asegurar una integración continua con EAS, y está optimizado para ser utilizado por agentes de IA como Claude Code, Cursor o Codex, proporcionando instrucciones claras y ejemplos de configuración en `eas.json`, así como referencias a archivos markdown especializados para cada plataforma.

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

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Implementación en la App Store

El servicio EAS tiene costos. Las compilaciones en la nube utilizan recursos del plan EAS, y los servicios EAS tienen límites en el nivel gratuito y en los planes de pago. Las membresías de Apple Developer y Google Play son independientes. Consulta https://expo.dev/pricing para el servicio solicitado.

Este skill cubre la compilación y publicación de aplicaciones iOS y Android con EAS: proyectos Expo y otros React Native, además de aplicaciones nativas existentes. EAS es un servicio de distribución; las aplicaciones nativas pueden usarlo sin agregar Expo o React Native a su runtime. El tutorial de configuración nativa actualmente cubre SwiftUI/UIKit en iOS.

Elige la ruta del proyecto

  • Aplicación SwiftUI/UIKit sin runtime React Native: lee references/native-ios.md antes de modificar su configuración de compilación. Mantén el proyecto Xcode y el código Swift como fuente de verdad de la aplicación. Los ejemplos de inicio rápido de Expo/React Native y cliente de desarrollo a continuación no aplican para esta ruta.
  • Aplicación Android nativa sin runtime React Native: conserva su configuración de compilación nativa existente. Consulta references/play-store.md para el envío; las instrucciones de configuración de Swift/iOS no aplican. Aún no se incluye un tutorial dedicado de configuración nativa de Android.
  • Aplicación Expo/React Native: usa el inicio rápido a continuación, luego la referencia de la tienda correspondiente.
  • Agregar pantallas React Native a una aplicación nativa existente: usa expo-brownfield para esa integración; vuelve aquí para la distribución.

Usa las verificaciones de archivo e ícono en references/native-ios.md durante la configuración inicial nativa de iOS, después de cambiar versiones, IDs de paquete o íconos, o al diagnosticar una carga rechazada. Los lanzamientos rutinarios siguen el flujo de compilación/envío de EAS y las verificaciones de procesamiento y disponibilidad en references/testflight.md. Una compilación exitosa de EAS o un envío en cola no garantizan la aceptación de Apple, el acceso de testers ni el lanzamiento en la App Store.

Referencias

Consulta estos recursos según sea necesario:

  • ./references/workflows.md -- Flujos de trabajo CI/CD para lanzamientos automatizados en tiendas y previsualizaciones de PR
  • ./references/testflight.md -- Envío de compilaciones iOS a TestFlight para pruebas beta
  • ./references/app-store-metadata.md -- Gestión de metadatos de la App Store y optimización ASO
  • ./references/play-store.md -- Envío de compilaciones Android a Google Play Store
  • ./references/ios-app-store.md -- Proceso de envío y revisión de la App Store de iOS
  • ./references/native-ios.md -- Configuración nativa Swift/SwiftUI/UIKit, versionado y verificación de archivos sin runtime de Expo

Inicio Rápido Expo / React Native

Instalar EAS CLI

npm install -g eas-cli
eas login

Inicializar EAS

npx eas-cli@latest init

eas init vincula o crea el proyecto EAS. Ejecuta eas build:configure para crear perfiles de compilación en eas.json; conserva los identificadores de proyecto y tienda existentes cuando ya exista una configuración de lanzamiento.

Comandos de Compilación

Compilaciones de Producción

# Compilación para iOS App Store
npx eas-cli@latest build -p ios --profile production

# Compilación para Android Play Store
npx eas-cli@latest build -p android --profile production

# Ambas plataformas
npx eas-cli@latest build --profile production

Enviar a Tiendas

# iOS: Compilar y enviar a App Store Connect
npx eas-cli@latest build -p ios --profile production --auto-submit

# Android: Compilar y enviar a Play Store
npx eas-cli@latest build -p android --profile production --auto-submit

# Atajo Expo / React Native para iOS TestFlight
npx testflight

Alojamiento Web y de Rutas API

El despliegue de un sitio web Expo o rutas API de Expo Router en EAS Hosting (npx expo export -p web luego eas deploy) está cubierto por el skill eas-hosting. Este skill se enfoca en los lanzamientos de aplicaciones nativas en tiendas.

Configuración de EAS

Ejemplo para un proyecto Expo / React Native (los perfiles nativos Swift están en 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"
      }
    }
  }
}

Guías Específicas de Plataforma

iOS

  • Para aplicaciones nativas Swift, usa el flujo explícito de compilación/envío en references/native-ios.md
  • Para aplicaciones Expo / React Native, npx testflight proporciona un flujo rápido a TestFlight
  • Configura las credenciales de Apple mediante eas credentials
  • Consulta ./references/testflight.md para la configuración de credenciales
  • Consulta ./references/ios-app-store.md para el envío a la App Store

Android

  • Configura la cuenta de servicio de Google Play Console
  • Configura los tracks: interno → cerrado → abierto → producción
  • Consulta ./references/play-store.md para la configuración detallada

Lanzamientos Automatizados

Los flujos de trabajo de EAS automatizan el pipeline de compilación → envío → actualización para CI/CD. Consulta ./references/workflows.md para ejemplos de lanzamientos en tiendas. Para crear o validar YAML de flujos de trabajo, usa el skill eas-workflows - funciona desde el esquema de flujo de trabajo en vivo.

Gestión de Versiones

EAS gestiona los números de versión automáticamente con appVersionSource: "remote":

# Ver versiones actuales
eas build:version:get

# Establecer versión manualmente
eas build:version:set -p ios

El comando version-set solicita el valor. Al configurar o cambiar el versionado nativo de iOS, o al diagnosticar un número de compilación duplicado, inspecciona el CFBundleVersion archivado: el contador remoto por sí solo no demuestra que Xcode lo haya usado.

Monitoreo

# Listar compilaciones recientes
eas build:list

# Ver estado de compilación
eas build:view BUILD_ID

# Inspeccionar envíos (verificado con EAS CLI 23.2.0)
eas submit:list -p ios --json
eas submit:view SUBMISSION_ID --json

Verifica la versión de la CLI antes de interpretar un comando faltante: estos comandos de envío están disponibles en 23.2.0 pero no en la instalación probada 18.6.0. Una invocación fija con npx [email protected] puede usarlos sin cambiar la instalación global. Consulta references/testflight.md para conocer el estado en vivo de Apple y las instrucciones de reintento. Sigue las URL de registro devueltas cuando el resultado JSON omita la falla subyacente. Reporta el ID/versión exacta de la compilación y el estado de lanzamiento verificado más avanzado.

Enviar Comentarios

Si encuentras errores, información engañosa o desactualizada en este skill, repórtalo para que Expo pueda mejorar:

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

Envía solo cuando tengas algo específico y procesable que reportar. Incluye todo el contexto relevante posible. Si un agente falla repetidamente en una tarea de Expo o el usuario tiene que intervenir, envía un breve informe de la tarea, el resultado esperado y lo que salió mal usando --category evals y el paquete o comando de Expo relevante como --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 relacionados