Evita la recompilación de más de 70 paquetes de iOS en cada build
Los desarrolladores de React Native se enfrentan a un problema común. Cada build limpio de iOS recompila todo el árbol de dependencias. Tienes que esperar a que el núcleo de React Native, los módulos de Expo y las librerías de terceros se vuelvan a compilar cada vez.
Expo SDK 56 soluciona esto. Distribuye los módulos de Expo como XCFrameworks precompilados. Tu aplicación enlaza estos binarios directamente. Ya no necesitas volver a compilarlos desde el código fuente.
Este cambio hace que los builds limpios sean más rápidos. También traslada el ecosistema de CocoaPods a Swift Package Manager. Este es el sistema moderno de Apple para la gestión de dependencias.
Los beneficios para ti:
- Menos pasos de compilación
- Desarrollo local más rápido
- Builds de EAS más rápidos
- Entornos de build más predecibles
No necesitas migrar. Esto funciona automáticamente en tus aplicaciones existentes.
¿Qué son los XCFrameworks? Son el formato de Apple para librerías nativas precompiladas. En lugar de compilar el código fuente en tu máquina, utilizas archivos binarios ya construidos para dispositivos e simuladores de iOS.
Ganancias de rendimiento en un Apple M4 Max: • Núcleo de React Native precompilado: ~44% de reducción en el tiempo de build. • Módulos de Expo precompilados: ~50% de reducción en comparación con el código fuente. • Librerías de terceros precompiladas: ~65% de reducción en comparación con el código fuente.
Los proyectos grandes son los que más se benefician. A medida que tu aplicación crece, los tiempos de build nativo suelen aumentar. Esto perjudica la velocidad de tu CI y de EAS Build. Los XCFrameworks precompilados adelantan el trabajo en el pipeline. Compilamos los frameworks una sola vez y los reutilizamos.
Esta transición es un cambio de infraestructura importante. Tuvimos que resolver varios obstáculos técnicos:
- Refactorización de interfaces públicas para aislar dependencias.
- Corrección de dependencias cíclicas entre Objective-C y Swift.
- Creación de estructuras de código fuente temporales para cumplir con las reglas de Swift Package Manager.
- Uso de overlays de Clang Virtual File System para admitir diseños de cabeceras heredados.
El SDK 56 se centra en la coexistencia. Aún puedes usar CocoaPods. Si necesitas desactivar los módulos precompilados, utiliza esta configuración: EXPO_USE_PRECOMPILED_MODULES=0
Este movimiento acerca a Expo al ecosistema de desarrollo moderno de Apple. Significa builds más rápidos y una arquitectura más limpia para el futuro.
Fuente: https://dev.to/expo/skip-recompiling-70-ios-packages-on-every-build-27a6
