Workflow Managed (CNG)
El default del equipo es el workflow managed de Expo con Continuous
Native Generation (CNG): las carpetas ios/ y android/ nunca se
commitean. Se generan a demanda — local con npx expo prebuild, o de forma
transparente en EAS Build — a partir de app.config.ts y los paquetes que
instalás.
Nota
¿Por qué no “cualquiera de las dos está bien”? Commitear las carpetas
nativas convierte cada cambio de configuración nativa en un diff ilegible,
crea una segunda fuente de verdad (archivos nativos editados a mano vs.
app.config.ts) que se desalinea en silencio, y hace que el onboarding
dependa de en qué workflow está el clon de cada uno. CNG mantiene una única
fuente de verdad.
El día a día
- Los bundle IDs, permisos, schemes de deep-link y demás identificadores
nativos se cambian en
app.config.ts— ver Entorno y Configuración → Configuración en Tiempo de Compilación — nunca a mano en Xcode o Android Studio. - ¿Necesitás inspeccionar o correr un proyecto nativo local? Corré
npx expo prebuild --cleanpara (re)generarios/yandroid/. Tratá el resultado como output de build descartable: nunca lo commitees, y borralo o regeneralo si alguna vez parece desalineado con tu configuración. - Los builds de tienda e internos nunca requieren que nadie corra
prebuilda mano — EAS Build lo corre en la nube como parte de cada build. Ver Compilación y Distribución → Conceptos.
Cuando un config plugin no cubre lo que necesitás
La mayoría de las capacidades nativas vienen como un config plugin de
Expo, oficial o de la comunidad: lo agregás al array plugins de
app.config.ts y prebuild lo integra al proyecto nativo generado por vos.
Antes de escribir algo propio, buscá uno en npm/GitHub (<nombre del sdk> expo
plugin, expo-config-plugin-*).
Si no existe ninguno — algunos SDKs de proveedores (verificación de
identidad/KYC, pagos, etc.) solo traen instrucciones de instalación nativa,
sin integración de Expo — la respuesta es un config plugin local, no
ejectar a bare ni commitear ios//android/. Ver Arquitectura del Proyecto
→ SDKs Nativos Sin Plugin de Expo.
Nota
¿Te sumaste a un proyecto que ya tiene ios//android/ commiteados? Eso
es un setup bare heredado, no algo para “arreglar” como efecto secundario de
otra tarea. Migrar un proyecto existente a managed es un cambio planeado
aparte — plantealo por separado en vez de hacerlo de paso.