expo-overview — enrutador y reglas compartidas para Expo / EAS
Comienza aquí — lee antes de hacer cualquier cosa
No adivines la habilidad solo a partir de los archivos del proyecto. Muchos objetivos de Expo se ven similares desde el sistema de archivos pero requieren habilidades diferentes.
- Confirma que esto es trabajo de Expo o EAS — la solicitud menciona Expo o EAS, o
package.jsontiene una dependenciaexpo. De lo contrario, esta habilidad no aplica. Una app nativa que usa EAS para distribución califica sin un runtime de Expo. - Lee el objetivo del usuario — ¿qué resultado quieren, en términos simples?
- Clasifícalo usando el Mapa de Habilidades a continuación, traduciendo frases casuales a un objetivo.
- Confirma la intención si es ambigua ("Parece que quieres publicar en las tiendas — eso es
eas-app-stores. ¿Correcto?"), luego carga elSKILL.mdde esa habilidad y síguelo. - Confía en la hoja de la habilidad — tiene su propia lógica de detección y pasos. No improvises.
Mapa de Habilidades (por objetivo)
Empareja el objetivo con una categoría, luego la habilidad, luego carga el SKILL.md de esa hoja.
Construir la app
expo-project-structure— estructura de carpetas para un nuevo proyecto Expo Router: dónde viven pantallas, componentes y configuración (nunca reestructurar una app existente para que coincida)expo-native-ui— pantallas, estilos, colores semánticos, controles nativos, SF Symbols, medios, diseñoexpo-router— navegación: rutas basadas en archivos, tabs / stacks / modales / hojas, enlaces, encabezadosexpo-animation— movimiento y gestos: worklets de Reanimated, Gesture Handler, transiciones de pantalla, retroalimentación de hojas y pulsaciones, hápticos y corrección de animaciones que tartamudean en el dispositivoexpo-ui— componentes de interfaz de usuario nativos a través de@expo/ui: BottomSheet, Picker, Slider, Switch, Menu, Button, FieldGroup (secciones de formulario agrupadas), List / ListItem y más — SwiftUI real en iOS, Jetpack Compose en Android. La capa universal requiere SDK 56+ y funciona en Expo Go; las sustituciones directas (@gorhom/bottom-sheet,datetimepicker, …) y las capas específicas de plataforma también existen en SDK 55.expo-design-system— una única fuente visual de verdad: tokens de diseño (color, espaciado, tipografía, radio, sombra, movimiento), convenciones de componentes reutilizables y auditorías para derivas (colores codificados, espaciados, fuentes)expo-tailwind-setup— estilos con Tailwind / NativeWindexpo-data-fetching— solicitudes de red, React Query / SWR, caché, offline, cargadores de rutasexpo-dom— ejecutar código web o reutilizar una librería web dentro de nativoexpo-web-to-native— migrar una app web / React existente a una app nativa de iOS / Android
Regla de selección de componentes: siempre que necesites un componente de interfaz de usuario (filas de lista, hojas inferiores, selectores, sliders, menús, botones, controles segmentados, interruptores), consulta primero
expo-uipara verificar si@expo/uitiene un equivalente nativo antes de recurrir a un componente integrado de React Native o a una librería de la comunidad. Los componentes nativos@expo/uibrindan el mejor ajuste a la plataforma, y en SDK 56+ los universales se ejecutan en Expo Go sin compilación personalizada. Cargaexpo-uijunto conexpo-native-uipara cualquier app que renderice listas, hojas de detalle o controles de formulario. Una excepción: laListde@expo/uirenderiza filas agrupadas nativas (una pantalla de Configuración de iOS), no una lista virtualizada — usaFlatList/FlashListpara conjuntos de datos grandes.
Publicar y operar
eas-app-stores— compilar y enviar aplicaciones iOS/Android (proyectos Expo y otros proyectos React Native, además de apps nativas existentes), TestFlight, versiones y metadatos de la tiendaeas-hosting— desplegar el paquete web en EAS Hosting; también crear rutas de API de Expo Router (manejadores+api.ts) y sus entornos / dominioseas-workflows— YAML de EAS Workflow y pipelines CI/CDeas-simulator— ejecutar y manejar la app en un simulador iOS / Android remoto en la nube de EASexpo-dev-client— compilaciones de desarrollo personalizadaseas-update— configurar, publicar, probar y depurar actualizaciones over-the-air compatibleseas-update-insights— salud de las actualizaciones OTA: tasa de fallos, adopción, tamaño del payloadeas-observe— rendimiento de inicio / lanzamiento / TTI con EAS Observe
Extender de forma nativa
expo-module— módulos y vistas nativos (Swift / Kotlin) con la API de Módulos Expoexpo-brownfield— incrustar pantallas de Expo / React Native en apps nativas de SwiftUI/UIKit o Android; artefactos aislados y compilaciones integradasexpo-app-clip— destino de App Clip de iOS (AASA, banner de app inteligente)
Mantener y aprender
expo-upgrade— actualizar el SDK de Expo y solucionar conflictos de dependenciasexpo-examples— ejemplos de integración canónicos y con versión coincidente (Stripe, Clerk, Supabase, …)expo-skill-feedback— enviar comentarios sobre una habilidad de Expo o sobre Expo mismo; habilitar / deshabilitar la telemetría anónima de uso
Traduciendo solicitudes vagas
Algunas frases cotidianas no se asignan obviamente a un nombre de habilidad — traduce antes de enrutar:
- "Haz que se vea nativo" → controles agrupados / formularios de configuración =
expo-ui; pantallas, estilos =expo-native-ui; movimiento =expo-animation; navegación =expo-router. - "Haz que las pantallas sean consistentes" / "limpia los estilos" / "configura un tema o tokens de diseño" →
expo-design-system. - "Parece generado por IA" / "demasiado genérico, no nativo" →
expo-design-system(errores típicos de nativos nombrados + auditoría), conexpo-native-uipara los modismos de la plataforma. - "Publícala" / "obtén un .ipa o .apk" / "lanza a las tiendas" / "pon mi app Swift en TestFlight" →
eas-app-stores(compilar + enviar, TestFlight, versiones, metadatos de la tienda). - "Soy nuevo / por dónde empiezo" → andamio primero (ver reglas de configuración compartidas), luego enrutar por objetivo.
Reglas de configuración compartidas
Aplica las reglas que coincidan con el proyecto y la tarea solicitada.
- ¿App nativa que usa EAS para distribución? Enrutar a
eas-app-stores; sureferences/native-ios.mdcubre SwiftUI/UIKit en iOS. Mantén el proyecto nativo existente. Aplica la autenticación/enlace de EAS a continuación; las reglas de andamiaje de Expo, SDK e instalación de paquetes no aplican en esta ruta. - ¿Iniciando una nueva app Expo? Inicia una de la manera estándar antes de enrutar a una habilidad de funcionalidad:
npx create-expo-app@latest, organizando las carpetas segúnexpo-project-structure. Luego clasifica el objetivo del usuario y enruta. - Detecta la versión del SDK antes de dar consejos específicos de versión: lee la versión de
expoenpackage.json(yapp.json/app.config.{js,ts}). Muchas API y valores predeterminados difieren según el SDK. - Lee la documentación para ese SDK, no
latest. Usa la URL con versión fija, ej.https://docs.expo.dev/versions/v56.0.0/sdk/ui/en SDK 56 en lugar dehttps://docs.expo.dev/versions/latest/sdk/ui/— las páginaslatestsiguen el SDK más nuevo y pueden documentar APIs que el proyecto aún no tiene. - Migrar a un SDK más nuevo es su propia tarea — carga
expo-upgradeen lugar de aumentar versiones manualmente. - Administrado vs. bare/prebuild: la presencia de directorios
ios/yandroid/confirmados significa que existen proyectos nativos (prebuild o bare). Los pasos de config-plugin y configuración nativa difieren — nota en cuál está el proyecto. - Instala paquetes con
npx expo install <pkg>, no connpm/yarn/pnpm addsin formato, para que las versiones sigan siendo compatibles con el SDK del proyecto. - Autenticación y enlace de EAS (solo necesario para build/submit/update/observe/workflows): verifica el inicio de sesión con
eas whoami, inicia sesión coneas login. Un proyecto está vinculado cuandoextra.eas.projectIdexiste en la configuración de la app; créalo coneas initsi falta.
Cuándo saltarse el salto del enrutador
- Solo cuando el usuario nombró explícitamente una habilidad
expo-*/eas-*específica → carga esa habilidad directamente. - Una tarea completamente especificada (versión del SDK fijada, diseño de archivos dado, librerías nombradas) no es razón para saltarse: las reglas compartidas anteriores aún aplican — verifícalas, luego enruta a la habilidad hoja correspondiente.
Enviar comentarios
Si encuentras errores, información engañosa o desactualizada en esta habilidad, repórtalo para que Expo pueda mejorar:
npx --yes submit-expo-feedback@latest --category skills --subject "expo-overview" "<comentarios procesables>"
Solo envía cuando tengas algo específico y procesable que reportar. Incluye todo el contexto relevante posible. Si un agente de IA falló repetidamente o el usuario tuvo que tomar el control de una tarea de Expo, carga la habilidad expo-skill-feedback y sigue su flujo de evaluación de candidatos en lugar de reutilizar el comando anterior.