Communitygithub.com

expo/skills

Crie e envie aplicativos iOS e Android com EAS para o TestFlight, App Store ou Google Play. Suporta Expo e outros projetos React Native, além de aplicativos nativos existentes.

O que é skills?

Este skill detalha o processo de construção e distribuição de aplicativos iOS e Android utilizando o EAS (Expo Application Services). Ele abrange desde projetos Expo e React Native até aplicativos nativos existentes (Swift/UIKit no iOS e Android nativo), oferecendo uma abordagem híbrida e flexível. O skill fornece guias de início rápido, comandos de build e submissão, configuração de `eas.json`, gerenciamento de versões e referências detalhadas para TestFlight, App Store Connect e Google Play Console. Também cobre pipelines de CI/CD com EAS Workflows e monitoramento de builds e submissões. É indicado para desenvolvedores que precisam publicar aplicativos nas lojas oficiais, mantendo compatibilidade com diferentes stacks tecnológicas. Para deploy de websites Expo ou rotas de API, recomenda-se o skill `eas-hosting`; para integrar telas React Native em um aplicativo nativo existente, utilize `expo-brownfield`.

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

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Implantação na App Store

Serviço EAS - custos se aplicam. Builds em nuvem usam recursos do plano EAS, e os serviços EAS possuem limites de camada gratuita e planos pagos. As assinaturas do Apple Developer e do Google Play Console são separadas. Verifique https://expo.dev/pricing para o serviço solicitado.

Este skill cobre a construção e o lançamento de aplicativos iOS e Android com o EAS: projetos Expo e outros React Native, além de aplicativos nativos existentes. O EAS é um serviço de entrega; aplicativos nativos podem usá-lo sem adicionar Expo ou React Native ao seu runtime. O passo a passo de configuração nativa atualmente cobre SwiftUI/UIKit no iOS.

Escolha o caminho do projeto

  • Aplicativo SwiftUI/UIKit sem runtime React Native: leia references/native-ios.md antes de alterar sua configuração de build. Mantenha o projeto Xcode e o código Swift como fonte da verdade do aplicativo. Os exemplos de início rápido do Expo/React Native e de clientes de desenvolvimento abaixo não se aplicam a este caminho.
  • Aplicativo Android nativo sem runtime React Native: preserve sua configuração de build nativa existente. Consulte references/play-store.md para submissão; as instruções de configuração do Swift/iOS não se aplicam. Um passo a passo dedicado de configuração nativa Android ainda não está incluído.
  • Aplicativo Expo/React Native: use o início rápido abaixo e, em seguida, a referência da loja relevante.
  • Adicionando telas React Native a um aplicativo nativo existente: use expo-brownfield para essa integração; retorne aqui para distribuição.

Utilize as verificações de archive e ícone em references/native-ios.md durante a configuração inicial do iOS nativo, após alterar versionamento, IDs de bundle ou ícones, ou ao diagnosticar um upload rejeitado. Lançamentos rotineiros seguem o fluxo de build/submissão do EAS e as verificações de processamento e disponibilidade em references/testflight.md. Um build EAS bem-sucedido ou uma submissão na fila não estabelece aceitação da Apple, acesso para testadores ou lançamento na App Store.

Referências

Consulte estes recursos conforme necessário:

  • ./references/workflows.md -- Fluxos de trabalho CI/CD para lançamentos automatizados na loja e prévias de PR
  • ./references/testflight.md -- Envio de builds iOS para o TestFlight para testes beta
  • ./references/app-store-metadata.md -- Gerenciamento de metadados da App Store e otimização ASO
  • ./references/play-store.md -- Envio de builds Android para o Google Play Store
  • ./references/ios-app-store.md -- Processo de submissão e revisão da App Store iOS
  • ./references/native-ios.md -- Configuração nativa Swift/SwiftUI/UIKit, versionamento e verificação de archive sem runtime Expo

Início 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 ou cria o projeto EAS. Execute eas build:configure para criar perfis de build em eas.json; preserve os identificadores existentes do projeto e da loja quando uma configuração de lançamento já existir.

Comandos de Build

Builds de Produção

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

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

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

Submeter às Lojas

# iOS: Build e submissão ao App Store Connect
npx eas-cli@latest build -p ios --profile production --auto-submit

# Android: Build e submissão ao Play Store
npx eas-cli@latest build -p android --profile production --auto-submit

# Atalho Expo / React Native para iOS TestFlight
npx testflight

Hospedagem Web e de Rotas de API

A implantação de um site Expo ou rotas de API do Expo Router no EAS Hosting (npx expo export -p web seguido de eas deploy) é coberta pelo skill eas-hosting. Este skill foca em lançamentos nativos nas lojas de aplicativos.

Configuração EAS

Exemplo para um projeto Expo / React Native (perfis nativos Swift estão em 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"
      }
    }
  }
}

Guias Específicos por Plataforma

iOS

  • Para aplicativos Swift nativos, use o fluxo explícito de build/submissão em references/native-ios.md
  • Para aplicativos Expo / React Native, npx testflight fornece um fluxo rápido para o TestFlight
  • Configure credenciais da Apple via eas credentials
  • Consulte ./references/testflight.md para configuração de credenciais
  • Consulte ./references/ios-app-store.md para submissão à App Store

Android

  • Configure a conta de serviço do Google Play Console
  • Configure as faixas: internal → closed → open → production
  • Consulte ./references/play-store.md para configuração detalhada

Lançamentos Automatizados

Os EAS Workflows automatizam o pipeline de build → submissão → atualização para CI/CD. Consulte ./references/workflows.md para exemplos de lançamentos na loja. Para criar ou validar YAML de workflow, use o skill eas-workflows - ele funciona a partir do esquema de workflow ativo.

Gerenciamento de Versões

O EAS gerencia números de versão automaticamente com appVersionSource: "remote":

# Verificar versões atuais
eas build:version:get

# Definir versão manualmente
eas build:version:set -p ios

O comando version-set solicita o valor. Ao configurar ou alterar o versionamento do iOS nativo, ou ao diagnosticar um número de build duplicado, inspecione o CFBundleVersion arquivado: o contador remoto por si só não prova que o Xcode o utilizou.

Monitoramento

# Listar builds recentes
eas build:list

# Verificar status do build
eas build:view BUILD_ID

# Inspecionar submissões (verificado com EAS CLI 23.2.0)
eas submit:list -p ios --json
eas submit:view SUBMISSION_ID --json

Verifique a versão da CLI antes de interpretar um comando ausente: estes comandos de submissão estão disponíveis na versão 23.2.0, mas não na instalação testada 18.6.0. Uma invocação com npx [email protected] fixada pode usá-los sem alterar a instalação global. Consulte references/testflight.md para status ao vivo da Apple e orientações de nova tentativa. Siga as URLs de log retornadas quando o resultado JSON omitir a falha subjacente. Relate o ID/versão exata do build e o estado de lançamento verificado mais avançado.

Enviar Feedback

Se você encontrar erros, informações enganosas ou desatualizadas neste skill, reporte para que a Expo possa melhorar:

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

Envie apenas quando tiver algo específico e acionável para relatar. Inclua o máximo de contexto relevante possível. Se um agente falhar repetidamente em uma tarefa Expo ou o usuário precisar intervir, envie um breve relatório da tarefa, resultado esperado e o que deu errado usando --category evals e o pacote ou comando 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`).

Habilidades Relacionadas