Distribución TestFlight
Gestión de probadores internos/externos y caducidad de compilaciones - el recetario de TestFlight para enviar IPAs de Expo SDK 57 a QA, stakeholders y usuarios beta antes del lanzamiento de App Store.
Busca en todas las páginas de la documentación
Gestión de probadores internos/externos y caducidad de compilaciones - el recetario de TestFlight para enviar IPAs de Expo SDK 57 a QA, stakeholders y usuarios beta antes del lanzamiento de App Store.
Tarjeta de referencia rápida - lista para copiar y pegar.
# Construir IPA formada para producción para TestFlight
eas build --profile production --platform ios
# Cargar a App Store Connect (pestaña TestFlight)
eas submit --platform ios --latest
# O construir + enviar en un flujo de trabajo (eas.json)
eas build --profile production --platform ios --auto-submit// eas.json - perfil de producción para TestFlight
{
"build": {
"production": {
"distribution": "store",
"ios": {
"simulator": false
}
},
"preview": {
"distribution": "internal",
"ios": {
"simulator": false
}
}
},
"submit": {
"production": {
"ios": {
"appleId": "you@example.com",
"ascAppId": "1234567890",
"appleTeamId": "ABCDE12345"
}
}
}
}Cuándo usarlo:
eas submit a App Review.Paso 1 - Configurar credenciales EAS
eas credentials --platform ios
# Certificado de distribución + perfil de provisioning de App Store para bundle IDAsegúrate de que App Store Connect tenga un registro de app que coincida con ios.bundleIdentifier.
Paso 2 - Construir y enviar
eas build --profile production --platform ios
eas submit --platform ios --latestApp Store Connect → pestaña TestFlight → la compilación muestra Procesando (5-30 minutos) luego Listo para probar.
Paso 3 - Prueba interna (camino rápido)
| Propiedad | Probadores internos |
|---|---|
| Quién | Usuarios de App Store Connect con rol Admin/Developer/Marketing/Customer Support |
| Límite | 100 usuarios |
| Revisión de Beta App | No requerida |
| Expiración | 90 días desde la carga |
| Usar para | Ingeniería, PM, diseño - QA diario |
Paso 4 - Prueba externa (beta más amplia)
| Propiedad | Probadores externos |
|---|---|
| Quién | Invitaciones por correo electrónico o enlace público |
| Límite | 10 000 probadores |
| Revisión de Beta App | Requerida por compilación (primero externo) |
| Qué verifica Apple | Fallos, contenido placeholder, violaciones obvias de directrices |
| Usar para | Programa beta, clientes amigables, UAT |
Public Beta).Paso 5 - Manejar expiración de 90 días
La compilación de TestFlight expira: 2026-04-08
Hoy: 2026-04-01
Acción: programar eas build esta semana; notificar probadores antes del lapso# Reconstruir el mismo tag de git o rama de lanzamiento
eas build --profile production --platform ios
eas submit --platform ios --latest
# Grupos externos: la nueva compilación puede necesitar revisión de Beta App si hay cambios materialesAutomatizar recordatorios:
# .github/workflows/testflight-expiry-reminder.yml (conceptual)
# Analizar Connect API para compilación que expira más pronto; Slack cuando < 14 díasLo que esto demuestra:
| Canal | Perfil | Método de instalación | Expira |
|---|---|---|---|
| TestFlight interno | production / store | Aplicación TestFlight | 90 días |
| TestFlight externo | production / store | Aplicación TestFlight | 90 días |
| Ad hoc | preview / internal | IPA directo / QR (EAS) | 1 año cert |
| Desarrollo | development | USB / cliente dev | 7 días cert (dev) |
| App Store | production | Tienda pública | Hasta reemplazo |
Para enlaces universales y push, prefiere TestFlight (producción aps-environment) sobre clientes dev al validar comportamiento de producción.
Carga recibida → Procesando → Listo para probar → (Externa) Esperando revisión → Probando
↓ falla
Binario no válido / Cumplimiento faltanteCumplimiento faltante: Responde preguntas de cifrado en Connect - igual que App Store.
Binario no válido: A menudo manifiesto de privacidad (ITMS-91053) - arreglar antes de que los probadores vean algo.
Los registros de fallos y capturas de pantalla fluyen hacia Connect → TestFlight → compilación → Crashes.
Compilación 1.4.0 (42) - beta de marzo de 2026
Enfoque:
- Enlace universal: https://shop.example.com/orders/demo abre pantalla de pedido
- Push: habilitar notificaciones en el inicio de sesión; toca notificación rutas a bandeja de entrada
- Eliminación de cuenta: Configuración → Eliminar cuenta
Problemas conocidos:
- Recorte menor de diseño iPad en carrito - corrección programada 1.4.1
Credenciales: review@example.com / BetaDemo2026!# Envío CI no interactivo
EXPO_TOKEN=xxx eas build --profile production --platform ios --non-interactive
EXPO_TOKEN=xxx eas submit --platform ios --latest --non-interactiveGate submit en expo-doctor, pruebas, y tiempo de remojo TestFlight interno antes de beta externa.
"ios": { "simulator": true }.app para Simulator - no puede subir a TestFlight.simulator: false).developmentClient: true para TestFlight - tipo binario incorrecto para distribución de almacén. Arreglo: perfil de producción sin flag de cliente dev para pista TestFlight.aps-environment correcto.ascAppId en perfil de envío eas.json.appID no coincide con bundle de producción. Arreglo: iOS Universal Links.| Alternativa | Usar cuando | No usar cuando |
|---|---|---|
| Distribución interna EAS (ad hoc) | Instalación QR rápida, sin TestFlight | Necesita 500+ probadores o análisis de fallos en Connect |
| Carga del organizador Xcode | Manual uno por uno sin EAS | Equipo ya estandarizado en eas submit |
| Firebase App Distribution | QA informal multiplataforma Android+iOS | Quieres gestión de probadores nativa de Apple |
| Lanzamiento por fases de App Store | Despliegue gradual posterior a la aprobación | Validación pre-lanzamiento |
production; App Review es una puerta separada después de la validación de TestFlight.eas submit de CI sobre contraseña de Apple ID + 2FA.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).
Revisado por Chris St. John·Última actualización: 19 jul 2026