-
Abre .xcworkspace, no .xcodeproj: Los proyectos de CocoaPods fallan misteriosamente cuando se omite el espacio de trabajo - open ios/*.xcworkspace es la única entrada correcta de Xcode cuando existe Pods/.
-
Compilaciones diarias primero desde CLI: Prefiere npx expo run:ios en lugar de vivir en Xcode - el IDE nativo es para misterios de firma, Instruments y errores de compilación de pod, no para iteración de JS.
-
Simulador para velocidad, dispositivo para la verdad: Push, enlaces universales, Live Activities, BGTaskScheduler, cámara y biometría requieren hardware físico - los simuladores dan falsa confianza.
-
Gitignore ios/ bajo CNG: Confirma app.config.ts y complementos; regenera nativo en EAS o npx expo prebuild - pbxproj editado manualmente se desvía en cada actualización de SDK.
-
Confirma Podfile.lock cuando ios/ está en git: Los equipos básicos necesitan pods determinísticos en CI - pod install no pod update en ramas de lanzamiento.
-
Usa npx pod-install desde la raíz del repositorio: Evita Pods/ en directorio incorrecto y coincide con la invocación esperada de CocoaPods de Expo en Macs M-series e Intel.
-
Prefiere simuladores arm64 en Apple Silicon: Los simuladores x86_64 de Rosetta son más lentos y causan errores de vinculación de falta de coincidencia de arquitectura con pods RN 0.86 modernos.
-
Los derechos se envían en el IPA, no OTA: Push, dominios asociados, grupos de aplicaciones y modos de fondo necesitan eas build después de cambios en app.config.ts - EAS Update no puede agregar capacidades.
-
Declara associatedDomains con prefijo applinks:: Los enlaces universales fallan silenciosamente en Safari cuando el prefijo es incorrecto - empareja con AASA alojado y reconstruye; consulta Enlaces universales de iOS.
-
Coincide con el portal de desarrolladores de Apple y la configuración: Las capacidades del App ID, el identificador del paquete, appID de AASA y las credenciales de EAS deben ser cadenas idénticas - los errores tipográficos abren Safari en lugar de tu aplicación.
-
Push de producción usa APNs de producción: Las compilaciones de TestFlight y App Store usan aps-environment: production - los tokens de sandbox nunca se entregan a usuarios de TestFlight.
-
Solo declara UIBackgroundModes que implementes: Las entradas especulativas audio, location o fetch activan la Directriz 2.5.4 - elimina los modos copiados y pegados de infoPlist.
-
Ejecuta npx expo-doctor antes de cada lanzamiento de iOS: Detecta desajustes de versión, configuración inválida y errores de dependencias antes de que quemen un ciclo de TestFlight.
-
Agrega manifiestos de privacidad antes de cargar: Combina NSPrivacyAccessedAPITypes del SDK de Expo y archivos PrivacyInfo.xcprivacy de terceros - ITMS-91053 bloquea el procesamiento en minutos.
-
Alinea las etiquetas de nutrición de privacidad con los SDK en tiempo de ejecución: Los informes de fallos, análisis y SDKs de autenticación recopilan datos - las etiquetas deben coincidir con los manifiestos y la Directriz 5.1.1 o la revisión humana rechaza.
-
Ofrece Iniciar sesión con Apple cuando se ofrece creación de cuenta de Google/Facebook: La Directriz 4.8 se aplica - expo-apple-authentication es más económica que los bucles de reenvío.
-
Envía eliminación de cuenta en la aplicación: Si los usuarios pueden registrarse en la aplicación, Configuración - Eliminar cuenta debe llamar a tu servidor - los enlaces de eliminación solo web fallan en la revisión en 2026.
-
Prueba compilaciones de lanzamiento antes de eas submit: Metro Debug oculta módulos nativos faltantes, incrustación de env incorrecta y fallos de solo producción de Hermes - prueba perfiles production o preview.
-
Usa TestFlight interno para ingeniería, externo para UAT: Interno omite la revisión de aplicaciones beta (100 usuarios de Connect); externo se escala a 10,000 con una puerta de Apple más ligera - ambos vencen en 90 días.
-
Planifica la cadencia de reconstrucción de TestFlight: Las betas largas necesitan eas build programado antes del vencimiento - automatiza recordatorios de API de Connect a 14 días restantes.
-
Completa la información de revisión de aplicaciones con credenciales de demostración funcionales: Los revisores no pueden iniciar sesión es un rechazo instantáneo 2.1 - rota contraseñas y documenta rutas de invitados en notas.
-
Los widgets y Live Activities son objetivos separados: expo-widgets utiliza SwiftUI - no vistas de RN; requiere grupos de aplicaciones, cliente de desarrollo y utilidad significativa para pasar 4.2 - no Expo Go.
-
No copies patrones de Android en iOS: La carga lateral de APKs, servicios de fondo arbitrarios y enlaces profundos basados en intención no tienen equivalente en iOS - invierte en derechos, AASA y TestFlight en su lugar.
-
Verifica los derechos en el IPA compilado antes de culpar a JS: codesign -d --entitlements :- en el .app archivado resuelve disputas de dominio asociado más rápido que adivinar la configuración de Router.
-
Documenta el alcance solo de iOS en ADRs de paridad: Cuando Android envía widgets o fondos flexibles primero, registra la línea de tiempo de iOS, revisa el riesgo e impacto del usuario - los interesados no deben asumir simetría de características sin costo nativo.
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).