create-expo-app incluye cinco plantillas de primera parte - cada una fija Expo SDK 57 cuando pasas @sdk-57. Elegir el inicio incorrecto cuesta días de migración; esta página mapea cada plantilla a la forma de producto que se ajusta.
Tarjeta de referencia rápida - lista para copiar y pegar.
# Estándar del equipo - aplicación multi-pantalla con Expo Router + TypeScriptnpx create-expo-app@latest ShopApp --template default@sdk-57 --yes# Iniciador de navegación basada en pestañas (alcance similar a default)npx create-expo-app@latest ShopApp --template tabs@sdk-57 --yes# Prototipo mínimo - sin router, TypeScript habilitadonpx create-expo-app@latest Spike --template blank-typescript@sdk-57 --yes# Directorios nativos desde el primer día - ejecuta prebuild durante el andamionpx create-expo-app@latest NativeDay1 --template bare-minimum@sdk-57 --yescd ShopApp && npx expo-doctor
Cuándo usar esto:
Elegir un inicio antes del primer commit de producción - los cambios de plantilla son dolorosos una vez que la navegación y los directorios nativos echen raíces.
Estandarizar la elección de plantilla en todos los equipos para que cada nuevo repositorio inicie los mismos scripts y estructura de carpetas.
Decidir si necesitas bare-minimum ahora o puedes mantenerte administrado y ejecutar npx expo prebuild después.
Auditar un andamio accidental de SDK 54 - compara package.json contra la plantilla que tenías la intención.
Un único script codifica la política de la organización - los ingenieros pasan default, tabs, blank-typescript, o bare-minimum; el sufijo @sdk-57 nunca es opcional.
Las aserciones de versión post-andamio detectan la desviación del SDK antes de que comience el trabajo de características.
expo-doctor y tsc --noEmit como puertas obligatorias después de cada elección de plantilla.
default@sdk-57 incluye enrutamiento basado en archivos bajo app/ - el diseño que extiendes para la navegación de producción.
create-expo-app copia una plantilla versionada del monorepo de Expo, escribe package.json, instala dependencias, y genera el código fuente del iniciador.
El sufijo @sdk-57 fija el gráfico de dependencias de la plantilla - expo se resuelve a ~57.0.4 con react-native0.86.0 y react19.2.3 coincidentes.
default y tabs ambos habilitan Expo Router y TypeScript; se diferencian en la estructura de navegación del iniciador, no en las capacidades del SDK.
blank / blank-typescript incluyen una única entrada App.tsx - sin directorio app/, sin router - añades navegación manualmente.
bare-minimum ejecuta npx expo prebuild durante la configuración, generando android/ e ios/ inmediatamente.
// default@sdk-57 - los archivos de ruta viven bajo app/, no App.tsx// app/(tabs)/index.tsximport { StyleSheet, Text, View } from "react-native";export default function HomeScreen() { return ( <View style={styles.container}> <Text>Home tab - Expo Router file route.</Text> </View> );}const styles = StyleSheet.create({ container: { flex: 1, alignItems: "center", justifyContent: "center" },});
Prefiere default@sdk-57 cuando la aplicación tendrá más de una pantalla - retroceder Expo Router a blank-typescript es factible pero desperdicia el primer sprint.
Andamiaje sin @sdk-57 - Durante la transición de SDK 57, create-expo-app@latest bare puede crear SDK 54 para Expo Go en dispositivos físicos. Solución: Pasa --template default@sdk-57 (o tu plantilla elegida con el sufijo) para nuevo trabajo de producción.
Tratar tabs y default como fundamentalmente diferentes - Ambos incluyen Expo Router y TypeScript con recuentos de archivos similares. Los equipos desperdician tiempo debatiéndolos. Solución: Elige uno a nivel de organización; la diferencia es diseño del iniciador, no capacidad.
Elegir bare-minimum por "por si acaso" - Prebuild compromete android/ e ios/, aumentando la superficie de conflicto de fusión y ralentizando las actualizaciones administradas. Solución: Comienza con default@sdk-57; ejecuta npx expo prebuild cuando los directorios nativos sean realmente necesarios.
Permanecer en blank cuando la aplicación crece más allá de una pantalla - Los ingenieros cosen React Navigation en App.tsx y terminan con un árbol no estándar. Solución: Migra a Expo Router temprano o comienza con default@sdk-57.
Asumir que las plantillas incluyen gestión de estado o capas API - Ninguna plantilla incluye Redux, TanStack Query, o carpetas de características. Solución: Añade arquitectura después del andamio; ver Estructura de carpetas para características.
Mezclar estilos de entrada de plantilla - default usa app/_layout.tsx; blank-typescript usa App.tsx. Copiar código de ruta entre ellos sin reestructurar falla. Solución: Coincide con las importaciones y puntos de entrada con la plantilla que elegiste.
Omitir expo-doctor después de la selección de plantilla - Los metadatos de plantilla pueden resolver pares de módulos nativos incompatibles. Solución: Ejecuta npx expo-doctor antes del primer PR de características.
Cinco plantillas de primera parte: default, tabs, blank, blank-typescript, y bare-minimum. Añade @sdk-57 para fijar Expo SDK 57 en el tiempo del andamio.
¿Qué plantilla deberían elegir la mayoría de equipos?
default@sdk-57. Incluye Expo Router, TypeScript, y los scripts de CLI de Expo recomendados. Usa blank-typescript@sdk-57 para prototipos mínimos y bare-minimum@sdk-57 solo cuando necesites directorios nativos inmediatamente.
¿Cuál es la diferencia entre default y tabs?
Ambos apuntan a aplicaciones multi-pantalla con Expo Router y TypeScript. default es el iniciador de propósito general; tabs enfatiza la estructura de navegación de pestañas en el árbol app/ generado. Para la mayoría de equipos son intercambiables - estandariza en uno.
¿Cuándo debo elegir blank-typescript?
Cuando necesites una aplicación mínima tipada sin navegación conectada - prototipos de biblioteca, ejercicios de aprendizaje de RN, o experimentos de campo marrón. Añade Expo Router o React Navigation cuando las pantallas se multipliquen.
¿Cuándo debo elegir bare-minimum?
Cuando necesites directorios android/ e ios/ desde el primer día - módulos nativos personalizados, CI nativo existente, o integración de campo marrón que no puede esperar un prebuild posterior. De otra manera comienza administrado con default@sdk-57.
¿Por qué debo usar @sdk-57 en el nombre de la plantilla?
Durante la transición de SDK 57, create-expo-app@latest sin --template puede andamiar SDK 54 para compatibilidad con Expo Go en dispositivos físicos. El trabajo de producción dirigido a RN 0.86 debe pasar @sdk-57 explícitamente.
Sí. default@sdk-57 y tabs@sdk-57 incluyen TypeScript, tsconfig.json, y archivos de ruta tipados bajo app/. Usa blank@sdk-57 solo cuando explícitamente quieras JavaScript sin tipos.
¿Puedo cambiar plantillas después del andamiaje?
No hay migración automática. Pasar de blank-typescript a Expo Router significa añadir app/, dependencias, y config. Pasar de administrado a bare-minimum significa ejecutar prebuild y comprometer directorios nativos. Elige la plantilla correcta temprano.
¿Qué archivos añade bare-minimum?
Directorios android/ e ios/ generados por npx expo prebuild durante la configuración, más la misma entrada App.tsx mínima que blank-typescript. Mantienes proyectos nativos desde el primer commit.
¿Debo usar --example en lugar de --template?
--example extrae demostraciones de expo/examples - excelente para aprender integraciones. Para aplicaciones de producción, usa default@sdk-57 o tu bifurcación de organización para que las actualizaciones rastreen la plantilla mantenida.
Error común: ¿por qué mi plantilla tabs se parece a default?
Comparten el mismo SDK, Router, y stack de TypeScript. Los nombres de archivos app/ generados y el diseño de pestaña difieren ligeramente. Funcionalmente resuelven el mismo problema - no re-andamies para cambiar entre ellos.
¿Incluyen las plantillas pruebas o configuración de CI?
No. Las plantillas incluyen código de aplicación, app.json, y scripts de Expo. Añade Jest, Maestro, EAS, y configuraciones de lint después del andamio - o usa un repositorio de plantilla interna que extienda default@sdk-57.
Las plantillas SDK 57 apuntan a RN 0.86. Los dispositivos iOS físicos solo pueden instalar el Expo Go más reciente desde el App Store, que puede retrasarse en SDK 57. Usa un simulador, una compilación de Expo Go coincidente de expo.dev/go, o una compilación de desarrollo - no una plantilla SDK más antigua - para pruebas en dispositivo.