Como usar o Expo EAS para builds e deploys automatizados
1. Introdução ao Expo EAS e seus benefícios
O Expo EAS (Expo Application Services) é um conjunto de serviços em nuvem que revolucionou o workflow de desenvolvimento mobile com React Native. Diferente do workflow clássico do Expo, que exigia o uso do Expo Go para testes e limitava o acesso a módulos nativos, o EAS oferece um pipeline completo de build, submissão e atualização diretamente na infraestrutura da Expo.
As vantagens da automação com EAS são significativas: redução drástica de erros manuais, consistência entre builds de diferentes desenvolvedores, integração contínua com repositórios Git e rastreabilidade completa de versões. Os três serviços principais são:
- EAS Build: compilação nativa de APK/AAB para Android e IPA para iOS na nuvem
- EAS Submit: submissão automatizada para App Store Connect e Google Play Console
- EAS Update: distribuição over-the-air de atualizações JavaScript sem nova build
2. Configuração inicial do projeto para EAS
Para começar, instale a CLI do EAS globalmente e autentique-se na sua conta Expo:
npm install -g eas-cli
eas login
No diretório raiz do seu projeto Expo, execute:
eas init
Isso criará o arquivo eas.json na raiz. Este arquivo define os perfis de build. Um exemplo completo:
{
"cli": {
"version": ">= 3.0.0"
},
"build": {
"development": {
"developmentClient": true,
"distribution": "internal"
},
"preview": {
"android": {
"buildType": "apk"
},
"ios": {
"simulator": true
}
},
"production": {
"android": {
"buildType": "app-bundle"
},
"ios": {
"autoIncrement": true
},
"env": {
"API_URL": "https://api.producao.com"
}
}
},
"submit": {
"production": {
"android": {
"track": "production"
},
"ios": {
"appleId": "seu@email.com",
"ascAppId": "1234567890"
}
}
}
}
Para variáveis de ambiente sensíveis, use secrets:
eas secret:create --scope project --name API_KEY --value "sua-chave-secreta"
3. EAS Build: automatizando a compilação nativa
Configure os arquivos nativos automaticamente com:
eas build:configure
Isso gera as pastas android/ e ios/ com configurações personalizáveis. Para executar builds remotas:
# Build de desenvolvimento para teste em dispositivo físico
eas build --platform android --profile development
# Build de produção para Google Play
eas build --platform android --profile production
# Build de produção para iOS (requer Apple Developer Program)
eas build --platform ios --profile production
Monitore logs em tempo real com:
eas build:view BUILD_ID
Exemplo de personalização no app.json para versão:
{
"expo": {
"version": "1.2.3",
"android": {
"versionCode": 4
},
"ios": {
"buildNumber": "1.2.3.4"
}
}
}
4. EAS Submit: deploy automatizado para lojas
Configure as credenciais das lojas. Para iOS, crie um App específico no App Store Connect e obtenha o ascAppId. Para Android, configure o service account JSON no Google Play Console.
Adicione perfis de submit no eas.json:
"submit": {
"production": {
"android": {
"track": "production",
"releaseStatus": "completed"
},
"ios": {
"appleId": "developer@email.com",
"ascAppId": "1234567890",
"appleTeamId": "ABCDEF1234"
}
}
}
Execução dos comandos:
# Submeter Android após build
eas submit --platform android --profile production
# Submeter iOS após build
eas submit --platform ios --profile production
# Submeter build específico
eas submit --platform ios --id BUILD_ID
5. EAS Update: atualizações over-the-air (OTA)
Configure os canais de atualização no eas.json:
"update": {
"development": {
"channel": "development"
},
"staging": {
"channel": "staging"
},
"production": {
"channel": "production"
}
}
Envie atualizações sem nova compilação:
# Branch production com mensagem descritiva
eas update --branch production --message "Corrige layout do formulário de login"
# Branch staging para testes internos
eas update --branch staging --message "Testa nova feature de pagamento"
# Rollback para versão anterior
eas update:rollback --branch production --target 3
Controle de versão via dashboard da Expo (https://expo.dev) permite visualizar histórico, reverter atualizações e gerenciar branches.
6. Integração com pipelines de CI/CD
Exemplo de workflow GitHub Actions para build automático:
name: Build e Deploy Automatizado
on:
push:
branches: [main]
jobs:
build-and-submit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- uses: actions/setup-node@v3
with:
node-version: 18
- name: Instalar dependências
run: npm ci
- name: Login Expo
run: eas login --non-interactive --token ${{ secrets.EXPO_TOKEN }}
- name: Build Android
run: eas build --platform android --profile production --non-interactive
- name: Submit Android
run: eas submit --platform android --profile production --non-interactive
Para GitLab CI:
stages:
- build
- submit
build_android:
stage: build
script:
- npm ci
- eas build --platform android --profile production --non-interactive
only:
- main
submit_android:
stage: submit
script:
- eas submit --platform android --profile production --non-interactive
needs: ["build_android"]
7. Boas práticas e resolução de problemas comuns
Gerenciamento de cache: Acelere builds subsequentes com:
eas build --platform android --profile production --clear-cache false
Erros frequentes e soluções:
- Credenciais expiradas: Renove tokens no dashboard da Expo ou execute
eas loginnovamente - Conflitos de versão: Mantenha
expoeeas-cliatualizados:npm update -g eas-cli - Falhas de rede: Configure proxy no
eas.json:
"cli": {
"requireCommit": false,
"promptToConfigurePushNotifications": false
}
Versionamento semântico: Automatize com scripts npm:
"scripts": {
"version:patch": "npm version patch && eas build --platform all --profile production",
"version:minor": "npm version minor && eas build --platform all --profile production"
}
Changelog automatizado: Integre com ferramentas como standard-version ou semantic-release para gerar changelogs automaticamente a cada build.
Referências
- Documentação Oficial do Expo EAS — Guia completo de instalação, configuração e uso de todos os serviços EAS
- EAS Build: Primeiros Passos — Tutorial passo a passo para configurar sua primeira build automatizada
- EAS Submit: Submissão para Lojas — Documentação detalhada sobre configuração de credenciais e perfis de submissão
- EAS Update: Atualizações Over-the-Air — Guia prático para distribuir atualizações rápidas sem nova build
- Integração com GitHub Actions — Exemplos reais de workflows CI/CD para builds e deploys automáticos
- Gerenciamento de Secrets e Variáveis de Ambiente — Como proteger credenciais e configurar ambientes de desenvolvimento, staging e produção
- Solução de Problemas Comuns no EAS — Guia de erros frequentes e suas correções, incluindo cache, credenciais e conflitos