Problema
Build que passa no emulador e falha na loja por permissões não declaradas, versionCode esquecido ou política de privacidade genérica. Time sem runbook perde dias em “rejected”.
Solução
Padronizar pipelines de release (EAS ou nativo), variáveis por ambiente (APP_ENV), versionamento automático de build e checklist legal (LGPD/GDPR quando aplicável). Separar internal testing de production track.
Arquitetura
main → CI (lint/test) → preview build (PR)
tag v* → EAS Build (profile production) → submit automático ou manual
- Android: keystore/play signing;
versionCodemonotônico. - iOS: certificates/profiles via ASC API;
buildNumberincrementado.
Código
// eas.json (conceito)
{
"build": {
"production": {
"channel": "production",
"env": { "APP_ENV": "production" }
}
},
"submit": {
"production": {}
}
}Documente app.config.ts com campos obrigatórios de privacy manifest (iOS) e usesCleartextTraffic apenas se inevitável.
Performance
Builds com cache de dependências; imagens e assets grandes fora do bundle principal quando possível; Hermes em produção.
Melhorias futuras
Staged rollout; feature flags remotas; crash reporting com símbolos (dSYM/source maps).
Conclusão
Publicar app é produto + compliance + pipeline. Poucos devs documentam isso bem — daí o valor no portfólio.