Qué es Expo: framework de React Native, EAS Build y actualizaciones

Expo es un framework de React Native con SDK, Expo Router y compilaciones y actualizaciones en la nube con EAS. Cómo funciona y cómo probar su backend.

¿Qué es Expo?

Expo es un framework de código abierto para crear aplicaciones React Native para Android e iOS. Aporta la estructura del proyecto, una biblioteca de módulos nativos listos para usar (el SDK de Expo), enrutamiento basado en archivos con Expo Router y, mediante EAS (Expo Application Services), compilaciones alojadas, envío a las tiendas y actualizaciones por aire. Escribes JavaScript o TypeScript y rara vez abres Xcode o Android Studio.

Expo se apoya en React Native como un framework completo se apoya en una biblioteca de interfaz: React Native dibuja las vistas nativas y Expo decide cómo se estructura, se compila y se publica el proyecto.

Cómo funciona Expo

  • Expo CLI y servidor de desarrollo. npx expo start sirve tu bundle de JavaScript con recarga rápida a un simulador, un emulador o un teléfono.
  • Expo Go y development builds. Expo Go es una app ya hecha para probar un proyecto en un dispositivo sin compilar nada. Cuando necesitas código nativo que Expo Go no incluye, creas un development build de tu propia app.
  • Continuous Native Generation (CNG). Las carpetas android e ios se generan cuando hacen falta, con prebuild, a partir de una plantilla y tu configuración, en lugar de mantenerse a mano. Los config plugins son las funciones que modifican esos proyectos nativos durante el prebuild.
  • EAS Build. Un servicio alojado que compila los binarios de tu app. Las compilaciones de iOS se ejecutan en equipos macOS de la nube de Expo, y con eas build --local compilas en tu propio equipo.
  • EAS Update. Envía por aire cambios de JavaScript, estilos e imágenes a las apps que incluyen expo-updates, entre una versión de tienda y la siguiente.

Ejemplo: de cero a una app en marcha

npx create-expo-app@latest my-app
cd my-app
npx expo start

Después describe tus perfiles de compilación en eas.json y compila y actualiza desde la terminal:

{
  "build": {
    "preview": { "distribution": "internal" },
    "production": {}
  }
}
eas build --platform all --profile production
eas update --branch production --message "Fix login copy"

Una actualización solo puede cambiar lo que vive en el bundle de JavaScript. El código nativo, las dependencias nativas, los cambios de permisos y las actualizaciones del SDK de Expo necesitan un binario nuevo de EAS Build, y las actualizaciones solo se entregan a compilaciones con código nativo compatible.

Flujo managed frente a bare: una distinción obsoleta

Las guías antiguas dividen Expo en un flujo managed (solo JavaScript) y un flujo bare (tú gestionas las carpetas nativas). La documentación de Expo ya califica esos conceptos de obsoletos: todos los proyectos usan Continuous Native Generation y el código nativo propio entra mediante config plugins o módulos nativos locales. Si un tutorial te pide hacer «eject», es anterior a este cambio.

Expo frente a React Native CLI

AspectoExpoReact Native CLI
Configuración del proyectoUn comando, carpetas nativas generadasTú creas y mantienes los proyectos nativos
Código nativoConfig plugins, development builds, módulos localesCambios directos en Xcode y Android Studio
CompilaciónEAS Build (alojado) o localXcode y Gradle en local, CI propia
Actualizaciones por aireEAS UpdateServicio aparte que debes integrar

Errores habituales con Expo

  • Poner secretos en variables EXPO_PUBLIC_. Expo las incrusta en el bundle de JavaScript y su documentación advierte de que quedan visibles en texto plano en la app compilada. Todo lo secreto va en tu backend.
  • Esperar que una actualización por aire entregue cambios nativos. Un módulo nativo o un permiso nuevo implica una compilación nueva y una publicación en las tiendas.
  • Probar solo en Expo Go. Oculta problemas que aparecen cuando tus dependencias nativas están en un development build o en una versión de producción.
  • Tratar la app como si fuera todo el producto. Una pantalla rápida sigue esperando a una API lenta. La mayoría de los avisos de «la app va lenta» acaban en el backend.

Expo y las pruebas de carga del backend

Una app Expo es un cliente. Cada inicio de sesión, cada actualización del feed y cada pago llama a tus endpoints de API, y una publicación en las tiendas o una notificación push puede enviar a miles de usuarios a la vez en el mismo minuto. Esa carga nunca pasa por Expo, así que hay que probarla en el backend con pruebas de carga, además de pruebas de API para comprobar que las respuestas son correctas.

LoadFocus ejecuta scripts de JMeter y k6 desde más de 25 regiones en la nube; consulta pruebas de carga y pruebas de carga con JMeter. Para vigilar esos mismos endpoints entre versiones, usa la monitorización de APIs. Para ver ejemplos reales, lee cómo las pruebas de carga en la nube mejoraron los tiempos de carga de una app móvil y por qué los equipos mobile-first deben priorizar las pruebas de rendimiento (ambos artículos en inglés).

Preguntas frecuentes sobre Expo

¿Es Expo gratis?

El framework y el SDK son de código abierto. EAS es un servicio alojado con un plan gratuito y planes de pago; los límites cambian con el tiempo, así que consulta la página de precios de Expo antes de planificar con una cifra.

¿Expo o React Native CLI?

La mayoría de los proyectos nuevos empiezan con Expo porque se encarga de la configuración, las compilaciones y las actualizaciones. React Native CLI tiene sentido si quieres controlar los proyectos nativos desde el primer día.

¿Puede una app Expo usar cualquier módulo nativo?

Sí, si el módulo funciona con config plugins o lo añades a un development build. Expo Go solo contiene los módulos que incluye de serie.

¿Qué diferencia hay entre EAS Build y EAS Update?

EAS Build compila el binario de la app (.ipa o .apk/.aab). EAS Update sustituye el JavaScript, los estilos y las imágenes de una app ya instalada sin un binario nuevo.

¿Las actualizaciones siguen necesitando revisión de las tiendas?

Las actualizaciones por aire deben cumplir las normas de Apple y Google. Los cambios de comportamiento pueden requerir revisión, así que conviene releer las políticas de las tiendas.

¿Cómo hago pruebas de carga del backend de una app Expo?

Identifica las llamadas a la API que hace la app, escríbelas como script de JMeter o k6 y ejecútalas desde varias regiones con tu pico de tráfico esperado. Empieza con una cuenta gratuita de LoadFocus.

¿Qué tan rápido es tu sitio web?

Mejora su velocidad y SEO sin problemas con nuestra Prueba de Velocidad gratuita.

Prueba de velocidad de sitio web gratis

Analice la velocidad de carga de su sitio web y mejore su rendimiento con nuestro comprobador de velocidad de página gratuito.