-
Execute eas build:configure cedo: Vincule projectId em app.config.ts antes da primeira compilação na nuvem - builds sem ele falham com erros de configuração opacos.
-
Faça commit de lockfiles com toda alteração que afeta o nativo: package-lock.json / yarn.lock / pnpm-lock.yaml devem corresponder ao que o EAS instala - intervalos flutuantes causam binários não reproduzíveis.
-
Ignore ios/ e android/ sob CNG: Envie JS + config - o EAS executa expo prebuild quando as pastas nativas estão ausentes. Veja Noções Básicas de Prebuild.
-
Use três perfis base: development, preview, production em eas.json - evite perfis de uso único nomeados por engenheiros que se tornam obsoletos sem documentação.
-
Vincule cada perfil a um ambiente EAS: environment: "production" puxa variáveis do painel Expo - .env.local local é ignorado nos runners de build.
-
Alinhe channel com eas update: Binários de produção em channel: "production" devem receber atualizações publicadas no mesmo canal - Regras de Lançamento e OTA.
-
Defina uma política explícita de runtimeVersion: Use appVersion, sdkVersion, ou fingerprint consistentemente - a incompatibilidade deixa os usuários com JS desatualizado silenciosamente.
-
Adote gates de CI de fingerprint: A diferença do @expo/fingerprint antes do merge informa se o OTA é seguro ou se um novo eas build é obrigatório.
-
Reconstrua clientes de desenvolvimento após alterações nativas: Atualizações de SDK, novos módulos nativos e edições de plugins de configuração exigem novos builds do perfil development - OTA não pode atualizar código nativo embarcado.
-
Deixe o EAS gerenciar credenciais iOS: Certificados de distribuição e perfis de provisionamento armazenados criptografados - colegas de equipe usam --non-interactive sem exportações de assinatura do Xcode.
-
Deixe o EAS gerar keystores Android para aplicativos novos (greenfield): Envie keystores existentes apenas ao migrar um app Play ativo - o fingerprint deve corresponder ao certificado de upload do Play Console.
-
Habilite o Play App Signing: O Google detém a chave de assinatura do aplicativo - a perda da chave de upload é recuperável; a perda da chave de assinatura do aplicativo é catastrófica.
-
Use buildType: "app-bundle" para produção Play: APK é para pré-visualização de sideload interno - AAB é necessário para uploads de produção na loja.
-
Habilite autoIncrement em perfis de loja: buildNumber / versionCode remotos evitam rejeições de "binário redundante" e "código de versão já em uso".
-
Registre dispositivos iOS antes de builds ad hoc: eas device:create → inscrição do testador → reconstruir - perfis incorporam UDIDs no momento da compilação.
-
Prefira TestFlight interno em vez de ad hoc para QA iOS: Assinatura de produção, instalações mais fáceis, sem necessidade de reconstruir perfis por dispositivo para membros da equipe ASC - Distribuição TestFlight.
-
Envie para a trilha interna do Play antes da produção: Capture problemas de assinatura e política com até 100 testadores - promova através de lançamento fechado → aberto → gradual.
-
Armazene segredos de envio em cofres de CI: .p8 da App Store Connect e JSON da conta de serviço Play - nunca no git; referencie caminhos em perfis de envio do eas.json.
-
Use EXPO_TOKEN para builds e envios de CI: Tokens de máquina do expo.dev - tokens de sessão pessoal expiram e quebram pipelines.
-
Execute npx expo-doctor antes de eas build: Detecte configurações inválidas e descompasso de versão do SDK antes de gastar minutos do EAS em uma compilação fadada ao fracasso.
-
Expresse alterações nativas em plugins de configuração: Editar manualmente Info.plist ou build.gradle gerados é perdido no prebuild --clean - hooks não são um substituto.
-
Documente hooks eas-build-pre-install / post-install: Etapas de pipeline não óbvias pertencem ao README - engenheiros futuros não lerão os scripts do package.json primeiro.
-
Mantenha hooks rápidos: Autenticação de registro privado e codegen são aceitáveis - suítes de E2E de 20 minutos pertencem aos gates de CI antes de acionar o EAS, não no worker.
-
Fixe cli.version em eas.json: Garante que o local e a CI usem semânticas do EAS CLI compatíveis - atualize deliberadamente ao adotar novas flags.
-
Teste de fumaça em dispositivo físico após alterações de credenciais ou plugins: Simuladores perdem entitlements de push, App Links e casos extremos de assinatura que só aparecem em IPAs assinados e APKs de lançamento.
Versões da Stack: Esta página foi escrita para React 19.2.3, React Native 0.86.0, e Expo SDK 57 (expo ~57.0.4).