-
Ejecuta eas build:configure temprano: Vincula projectId en app.config.ts antes de la primera compilación en la nube - las compilaciones sin esto fallan con errores de config opacos.
-
Confirma los lockfiles con cada cambio que afecte lo nativo: package-lock.json / yarn.lock / pnpm-lock.yaml deben coincidir con lo que EAS instala - los rangos flotantes causan binarios no reproducibles.
-
Gitignore ios/ y android/ bajo CNG: Carga JS + config - EAS ejecuta expo prebuild cuando faltan las carpetas nativas. Ver Prebuild Basics.
-
Usa tres perfiles de línea base: development, preview, production en eas.json - evita perfiles únicos nombrados por ingeniero que se vuelven obsoletos sin documentar.
-
Vincula cada perfil a un entorno de EAS: environment: "production" extrae variables del dashboard de Expo - .env.local local se ignora en los ejecutores de compilación.
-
Alinea channel con eas update: Los binarios de producción en channel: "production" deben recibir actualizaciones publicadas al mismo canal - Release & OTA Rules.
-
Establece una política runtimeVersion explícita: Usa appVersion, sdkVersion o fingerprint consistentemente - la falta de coincidencia deja a los usuarios con JS obsoleto silenciosamente.
-
Adopta gates de fingerprint en CI: @expo/fingerprint diff antes de merge te dice si OTA es seguro o si un nuevo eas build es obligatorio.
-
Reconstruye dev clients después de cambios nativos: Actualizar SDK, nuevos módulos nativos y ediciones de plugins de config requieren nuevas compilaciones de perfil development - OTA no puede actualizar código nativo integrado.
-
Deja que EAS gestione las credenciales de iOS: Las certificaciones de distribución y perfiles de aprovisionamiento se almacenan cifrados - los compañeros de equipo usan --non-interactive sin exportaciones de firma de Xcode.
-
Deja que EAS genere keystores de Android para aplicaciones greenfield: Carga keystores existentes solo cuando migras una aplicación Play en vivo - el fingerprint debe coincidir con el certificado de carga de Play Console.
-
Habilita Play App Signing: Google tiene la clave de firma de la aplicación - la pérdida de la clave de carga es recuperable; la pérdida de la clave de firma de la aplicación es catastrófica.
-
Usa buildType: "app-bundle" para producción Play: APK es para vista previa de carga lateral interna - AAB es obligatorio para cargas de tienda de producción.
-
Habilita autoIncrement en perfiles de tienda: buildNumber / versionCode remoto previene rechazos de "binario redundante" y "código de versión ya utilizado".
-
Registra dispositivos iOS antes de compilaciones ad hoc: eas device:create → inscripción de tester → reconstruir - los perfiles integran UDIDs en tiempo de compilación.
-
Prefiere TestFlight interno sobre ad hoc para QA de iOS: Firma de producción, instalaciones más fáciles, sin reconstrucción de perfil por dispositivo para miembros del equipo de ASC - TestFlight Distribution.
-
Envía a la pista interna de Play antes de producción: Detecta problemas de firma y política en hasta 100 testers - promueve a través de cerrada - abierta - lanzamiento por fases.
-
Almacena secretos de envío en bóvedas de CI: App Store Connect .p8 y JSON de cuenta de servicio Play - nunca en git; referencia rutas en perfiles de envío eas.json.
-
Usa EXPO_TOKEN para compilaciones y envíos de CI: Tokens de máquina de expo.dev - los tokens de sesión personal caducan y rompen pipelines.
-
Ejecuta npx expo-doctor antes de eas build: Detecta config inválido y sesgo de versión de SDK antes de gastar minutos de EAS en una compilación condenada.
-
Expresa cambios nativos en plugins de config: La edición manual generada Info.plist o build.gradle se pierde en prebuild --clean - los hooks no son un sustituto.
-
Documenta los hooks eas-build-pre-install / post-install: Los pasos de pipeline no obvios pertenecen a README - los futuros ingenieros no leerán scripts package.json primero.
-
Mantén los hooks rápidos: La autenticación de registro privado y codegen están bien - las suites E2E de 20 minutos pertenecen a gates de CI antes de activar EAS, no en el worker.
-
Fija cli.version en eas.json: Asegura que local y CI usen semántica de EAS CLI compatible - actualiza deliberadamente cuando adoptes nuevos flags.
-
Prueba de humo en dispositivo físico después de cambios de credencial o plugin: Los simuladores pierden entitlements de push, App Links y casos edge de firma que solo aparecen en IPAs firmadas y APKs de lanzamiento.
Versiones de stack: Esta página fue escrita para React 19.2.3, React Native 0.86.0 y Expo SDK 57 (expo ~57.0.4).