Saltar al contenido principal
Mobile Guías

Su Guía para el Cliente de Desarrollo de Expo

Crear, construir y utilizar el cliente de desarrollo de Expo con esta guía completa. Aprenda sobre EAS builds, depuración, integración de CI/CD y soluciones para problemas comunes.

Martin Donadieu

Martin Donadieu

Marketing de Contenido

Su Guía para el Cliente de Desarrollo de Expo

Normalmente, estás listo para el cliente de desarrollo de Expo en el momento exacto en que Expo Go comienza a mentirte.

La aplicación funciona en el sandbox. El refresco rápido se siente genial. Luego agregas una dependencia nativa, configuras las notificaciones push, pruebas un flujo de OAuth o intentas reflejar la forma en que tu aplicación de producción se lanza. De repente, la brecha se vuelve obvia. Ya no estás depurando tu aplicación. Estás depurando un entorno simplificado.

Es ahí donde el cliente de desarrollo de Expo cambia el flujo de trabajo. Mantiene el bucle de JavaScript rápido que la gente gusta de Expo, pero mueve la prueba a un binario nativo personalizado que se comporta mucho más como la aplicación que eventualmente enviarás. Para desarrolladores solitarios, eso significa menos sorpresas en el ciclo final. Para equipos, eso significa un proceso de desarrollo que puede apoyar ediciones compartidas, QA, entornos de previsualización y validación de actualizaciones sin que Expo Go pueda cubrir todo.

Contenido del Cuadro

Los recompilados parecen aleatorios

Build failures and team drift

Fallas de compilación y desviación del equipo Why You Need to Move Beyond Expo Go ¿Por qué necesita ir más allá de Expo Go expo-dev-client Expo Go is useful at the beginning. It removes setup friction, gets a React Native project running quickly, and gives you a fast feedback loop. That’s exactly why many teams start there. Expo Go es útil al principio. Elimina la fricción de configuración, inicia rápidamente un proyecto de React Native y te da un bucle de feedback rápido. Eso es exactamente por qué muchos equipos comienzan allí. The problem starts when the app stops being a prototype. Expo documents Expo Go as a El problema comienza cuando la aplicación deja de ser un prototipo. Expo documenta Expo Go como un ‘entorno de pruebas’ (sandbox) y menciona que no puede simular con precisión algunas capacidades nativas como las notificaciones o la autenticación de OAuth, mientras que el modelo de compilación de desarrollo está construido alrededor de un ‘entorno de pruebas’ (sandbox) y se posiciona como un ‘entorno de depuración’ (debug) para aplicaciones de grado de producción en el ‘introducción a los compilados de desarrollo de Expo’ (Expo development builds introduction)..

A comparativa de características que muestra las principales diferencias y limitaciones entre las herramientas Expo Go y Expo Development Client.

¿Qué se rompe primero?

En la práctica, la primera falla suele ser una de estas:

  • Dependencias nativas: Un paquete necesita una code nativa que no incluye Expo Go.
  • Autenticación: Un flujo de OAuth se comporta de manera diferente una vez que la aplicación utiliza una configuración nativa real.
  • Notificaciones y características del dispositivo: El entorno de pruebas no refleja cómo la aplicación de producción solicitará permisos o recibirá eventos.
  • QA del equipo: Un tester necesita una binaria estable que represente la configuración nativa real de la aplicación.

Estas no son casos de borde. Son etapas normales en un proyecto móvil real.

Expo Go es excelente para probar una interfaz. Es un lugar débil para validar el comportamiento de producción.

¿Por qué el cliente de desarrollo es el siguiente paso correcto?

El cliente de desarrollo de Expo te da una aplicación binaria personalizada con las herramientas de desarrollo de Expo integradas. Eso significa que mantienes una experiencia de desarrollador fuerte, pero la capa nativa es ahora de tu propiedad. El cliente instalado se convierte en la cosa contra la que tu equipo prueba, en lugar de confiar en un contenedor genérico.

Esta mudanza importa más de lo que parece. Una vez que te mueves a un cliente personalizado, la pregunta cambia de “¿se ejecuta esto en Expo Go?” a “¿funciona esto en la aplicación que estamos construyendo?” Esa es la pregunta correcta.

Si también estás comparando modelos de entrega de aplicaciones más amplios, el artículo de Capgo sobre una alternativa a Expo es un contexto útil porque destaca dónde los equipos comienzan a buscar más allá de los flujos de trabajo de sandbox.

El cambio de mentalidad

El mayor error que veo es tratar al cliente de desarrollo de Expo como una tarea de configuración de una sola vez. No lo es. Es una elección de flujo de trabajo.

Estás aceptando un trueque para ganar control:

Flujo de trabajo ¿Qué sigue rápido ¿Qué requiere más ceremonia
Expo Go Iteración de JavaScript básica Cualquier cosa que dependa de la realidad nativa
Cliente de desarrollo de Expo Cambios de JavaScript dentro de una aplicación personalizada Cambios de dependencia nativa y cambios de configuración nativa

Eso es un buen trato en el desarrollo de aplicaciones profesionales. Dejas de optimizar para la demostración más fácil y comienzas a optimizar para la entrega confiable.

Requisitos previos y configuración del proyecto

Antes de construir cualquier cosa, asegúrate de que el proyecto esté en un estado que pueda sobrevivir a las compilaciones repetibles. La mayoría de los intentos fallidos de primera venida provienen de saltarse la configuración básica, no de Expo en sí mismo.

La documentación y la guía del ecosistema de Expo describen las compilaciones de desarrollo como un ‘entorno de desarrollo completo con todas las características’ Eso es representativo de un entorno de producción real una vez que las aplicaciones dependen de componentes nativos personalizados code o de pruebas de QA de grado de producción, como se cubre en el resumen de Draftbit sobre Herramientas de Expo y compilaciones de desarrollo.

Comienza con la cuenta y la capa de CLI

Necesitas dos cosas funcionando antes de que importe la capa de la aplicación:

  1. Acceso a Expo CLI
  2. Acceso a EAS CLI

También deseas estar conectado a tu cuenta de Expo desde la terminal. Los equipos a menudo pasan por alto esto porque las comandos locales pueden parecer funcionar bien hasta que aparece el primer build remoto o la solicitud de credenciales.

Un conjunto de configuración limpio suele incluir:

  • Sesión de tu cuenta de Expo: Esto vincula el trabajo local a los servicios de compilación remotos y la propiedad del proyecto.
  • EAS CLI instalado: EAS es lo que convierte tu proyecto en un binario compartible de iOS o Android.
  • A un proyecto que ya funciona localmente: No introduzcas complejidad de compilación antes de que el arranque básico de la aplicación funcione.

Instala el paquete que hace posible el flujo de trabajo

El centro de esta configuración es expo-dev-client. Sin él, no tienes el lanzador personalizado y la caja de comandos nativa orientada a la depuración que define el flujo de trabajo del cliente de desarrollo de Expo.

Instálalo en el proyecto de la aplicación, luego verifica que tu configuración de Expo sea coherente. Los comandos exactos pueden variar con tu administrador de paquetes, pero el punto arquitectónico no cambia: este paquete es lo que transforma la aplicación de 'funciona en un entorno compartido de sandbox' a 'funciona dentro de nuestro propio binario de desarrollo'.

Regla práctica: Construye el cliente de desarrollo una vez que la lista de dependencias nativas esté establecida lo suficiente para que los compañeros de equipo puedan instalar y usar el mismo binario.

Verifica tu configuración de la aplicación temprano

Mucha confusión proviene de tratar app.json o app.config.js como metadatos solo. No es así. Estos archivos definen la identidad.

Asegúrese de que el proyecto tenga:

  • Un nombre de aplicación único: Útil cuando los desarrolladores instalan varias variantes en un dispositivo.
  • Un identificador de paquete o conjunto único: Crítico para compilaciones nativas y firmas posteriores.
  • Un propósito de entorno claro: Si el equipo utiliza identidades de staging y producción separadas, refleje eso deliberadamente.

Si su entorno local es desordenado, vale la pena aclararlo antes de la primera compilación. La guía de Capgo sobre la configuración de un entorno local Capgo setting up a Capacitor local environment ¿Qué parece una buena configuración inicial?

Utilice este checklist antes de iniciar EAS:

__CAPGO_KEEP_0__

Verificar ¿Por qué importa?
expo-dev-client está instalado Habilita el comportamiento del cliente de desarrollo personalizado
Se ha vinculado una cuenta de Expo Se requiere para un uso suave de EAS
Los identificadores de la aplicación son únicos Evita conflictos de compilación y instalación nativa
El proyecto comienza localmente Evita mezclar problemas de tiempo de ejecución con problemas de compilación
El equipo sabe cuándo volver a compilar Reduce la confusión después de cambios nativos

El objetivo no es la perfección. El objetivo es hacer que la primera compilación sea aburrida. Eso es un éxito.

Crear su cliente personalizado con EAS

Este es el punto en el que el flujo de trabajo se vuelve real. Deja de hablar sobre un cliente personalizado y genera uno.

Expo recomienda un flujo de trabajo de compilación de desarrollo para aplicaciones con un cliente nativo personalizado code: instalar expo-dev-clientgenerar una aplicación nativa con EAS Build o localmente, luego ejecutar npx expo start --dev-client. Expo también señala en el resumen del flujo de trabajo que los cambios solo en JavaScript se mantienen rápidos, mientras que los cambios code nativos requieren una nueva compilación de desarrollo.

Infografía de cuatro pasos que ilustra el proceso de creación de un cliente de desarrollo de Expo utilizando herramientas de EAS CLI

El flujo básico de EAS

La secuencia es sencilla aunque el primer ejecución puede sentirse extraño:

  1. Instalar y autenticar con EAS CLI
  2. Inicia o confirma la configuración de compilación
  3. Crea un perfil de compilación de desarrollo
  4. Desencadena una compilación para iOS o Android
  5. Instala el binario resultante en un dispositivo o simulador

Lo que EAS te da es coherencia. En lugar de que cada desarrollador improvise el estado de compilación nativa local, el equipo puede producir binarios a partir de una definición de compilación compartida.

¿Qué hace realmente tu perfil de compilación?

Un perfil no es solo un etiqueta. Le dice al sistema de compilación que este binario está destinado al desarrollo activo, no a la distribución en la tienda. development Eso suele significar que la aplicación instalada debería:

incluir el comportamiento del cliente de desarrollo

  • ser fácil de lanzar para los desarrolladores y los probadores
  • conectar a un servidor Metro durante el trabajo diario
  • A
  • permanezcan reutilizables hasta que cambien las dependencias nativas

Este es también donde comienza a ser práctico la CI. Una vez que existe un perfil de compilación y se comporta de manera predictible, puedes automatizarlo.

Si su equipo está pensando más ampliamente sobre cómo React Native se ajusta a un trabajo de modernización más grande, Wonderment Apps tiene una perspectiva útil sobre React Native para la modernización de inteligencia artificial. Es relevante porque el cliente de desarrollo a menudo se convierte en la capa base de operación cuando los equipos están enviando cambios de producto más frecuentes a través de superficies móviles.

Un breve recorrido puede ayudar si deseas ver el flujo en acción:

Instalando el resultado

Una vez que la compilación termina, trata el resultado como un binario de aplicación real, porque eso es lo que es.

  • En Android: Instalará típicamente un .apk en un dispositivo físico o emulador.
  • En iOS: Trabajarás con un .ipa o una salida compatible con el simulador dependiendo del objetivo.
  • Para compañeros de equipo: Comparta la compilación a través de los mecanismos normales de EAS en lugar de pedirle a cada uno que cree su propia desde cero a menos que sea necesario.

Una compilación de desarrollo es más fácil de manejar cuando el equipo está de acuerdo en una regla: reconstruir para cambios nativos, no para cada cambio de code.

No esperes que la primera compilación elimine la complejidad nativa. Coloca esa complejidad en el lugar correcto.

Si agregas un nuevo módulo nativo, cambias los permisos, actualizas las dependencias nativas de nivel __CAPGO_KEEP_0__ o modificas la configuración nativa impulsada por plugins, necesitarás una compilación de desarrollo fresca. Eso es normal. El premio es que tu trabajo diario en JavaScript sigue avanzando rápidamente dentro de un cliente que refleja tu aplicación.

If you add a new native module, change permissions, update SDK-level native dependencies, or modify plugin-driven native config, you’ll need a fresh development build. That’s normal. The reward is that your day-to-day JavaScript work still moves quickly inside a client that reflects your app.

La primera vez que abras tu cliente instalado y lo conectas a Metro, la diferencia es obvia. Siente como si fuera Expo, pero ya no en el sentido de juguete.

Inicia el servidor con

Entonces abre el cliente de desarrollo en tu simulador, emulador o dispositivo físico y conecta a través de la interfaz de usuario del lanzador. Ese lanzador es una de las importantes cambios introducidos por npx expo start --dev-clientPara compañeros de equipo: Comparta la compilación a través de los mecanismos normales de EAS en lugar de pedirle a cada uno que cree su propia desde cero a menos que sea necesario. expo-dev-clientjunto a la ayuda de depuración como la inspección de solicitudes de red, como se documenta en la página de Expo SDK para el cliente de desarrollo.

Un desarrollador de software masculino escribiendo code en una computadora portátil en un entorno de espacio de trabajo profesional.

Una sesión de desarrollo normal

Una sesión típica se ve así:

Tú extraes la rama más reciente. El cliente de desarrollo instalado ya está en tu dispositivo. Inicias Metro, lanzas la aplicación y te conectas al servidor actual. Luego trabajas principalmente como lo hacías antes, cambiando JavaScript y viendo actualizaciones rápidamente.

La gran diferencia aparece cuando necesitas inspeccionar un comportamiento que depende de un entorno nativo real. El cliente personalizado te permite probar esas flujo sin salir de tu bucle regular.

Herramientas de depuración importantes

La herramienta adicional no es decorativa. Resuelve problemas diarios.

  • Interfaz de lanzador: Útil cuando se cambian entre entornos o servidores hospedados por compañeros de trabajo.
  • Menú del desarrollador: Te da las acciones que esperas durante la iteración activa.
  • Inspección de red: Ayuda cuando la interfaz de usuario parece rota pero el problema real es el fallo de solicitud, el estado de autenticación o la configuración de entorno incorrecta.

Cuando los llamados de API fallan en un cliente de desarrollo, inspecciona el camino de solicitud y las suposiciones de entorno antes de tocar la interfaz de usuario code. El bug a menudo está fuera del componente en el que estás mirando.

La ventaja práctica es la siguiente. Un solo binario instalado puede validar múltiples entornos sin recompilar cada vez. Eso es especialmente útil cuando un revisor quiere probar una vista previa de PR, un ingeniero de pruebas quiere staging y un desarrollador quiere una rama local.

If your team also ships web-based mobile shells, Capgo’s ultimate guide to debugging Capacitor apps aplicaciones __CAPGO_KEEP_0__

Lo que funciona bien y lo que no

Lo que funciona bien:

Situación Por qué el cliente de desarrollo ayuda
Pruebas de redirección de autenticación El comportamiento de la aplicación nativa está más cerca de la producción
Verificando la integración de API La inspección de la red reduce el ciclo de retroalimentación
Cambiar entornos La interfaz de usuario del lanzador evita reconstruir innecesariamente
La QA del equipo en una sola binaria Todos prueban la misma configuración nativa

¿Qué no funciona bien:

  • No tratar al cliente como un elemento desechable: Si el equipo no lo mantiene, la confusión se apodera rápidamente.
  • No ignorar los límites de reconstrucción nativa: Una vez que cambian las dependencias nativas, los clientes obsoletos desperdician tiempo.
  • Suponiendo que todas las fallas de conexión son errores de la aplicación: Muchas son solo problemas de entorno local.

Integración con CI/CD y Actualizaciones en Vivo

El cliente de desarrollo de Expo se vuelve mucho más valioso cuando deja de ser una configuración personal y se convierte en parte de las operaciones del equipo.

Un flujo de trabajo maduro suele separar preocupaciones. Los cambios nativos producen una nueva compilación de desarrollo. Los cambios en JavaScript y activos se mueven por un camino de actualización más rápido. Los revisores y QA no necesitan preguntar si están probando la cosa correcta porque el equipo ha acordado sobre canales, perfiles de compilación y destinos de actualización.

Un equipo profesional colaborando en un flujo de trabajo de automatización de pipeline de CI/CD en una pantalla de diáfana de un gran espacio de oficina.

Dónde encaja CI/CD

El cliente de desarrollo funciona bien con CI porque le da a la automatización un objetivo estable.

Un patrón común se parece a esto:

  • Solicitudes de cambio: CI crea o valida una compilación de desarrollo cuando han cambiado las dependencias nativas.
  • Entornos basados en rama: Diferentes ramas se corresponden con diferentes canales de actualización o objetivos de servidor.
  • Flujo de trabajo compartido de tester: El administrador de QA instala uno o más clientes de desarrollo conocidos y cambia de contexto a través del lanzador y la configuración de actualización.

Esta estructura reduce la ambigüedad. Los desarrolladores saben cuándo necesitan una reconstrucción. Los testers saben si están validando un cambio nativo o una actualización entregada sobre una binaria existente.

El papel de las actualizaciones en vivo

El cliente de desarrollo a menudo permite a los equipos ahorrar la operación de tiempo más grande. El cliente de desarrollo es un lugar fuerte para validar el comportamiento de la actualización antes de la liberación porque puede cambiar entre servidores de desarrollo y actualizaciones publicadas en una caja de aplicación como producción, como se describe anteriormente en la documentación de Expo.

Esto abre una división útil:

Tipo de cambio Ruta de entrega
Cambio de módulo nativo o permiso nuevo Nueva compilación de desarrollo
Arreglo de comportamiento de JavaScript Publicar actualización
Ajuste de copia o activo Publicar actualización
Validación de entorno Cambiar canal o servidor en el cliente instalado

Para equipos fuera de la pila de actualizaciones de Expo, La guía de integración de CI/CD de Capgo para actualizaciones OTA muestra un modelo operativo comparable en el lado de Capgo. Es una de las opciones para equipos que quieren canales de actualización controlados y automatización alrededor de la entrega de actualizaciones. El patrón confiable es simple. Construye cuando cambian los nativos Capacitor. Publica cuando el binario instalado ya contiene todo lo que necesita el cambio.

The reliable pattern is simple. Build when native code changes. Publish when the installed binary already contains everything the change needs.

Las reglas de funcionamiento importan más que la configuración técnica:

Switch channel or server in the installed client

  • Nombre de los canales de manera clara: staging, productionY los nombres de los previews deben ser obvios.
  • Documentar los disparadores de reconstrucción: Un nuevo plugin, un cambio de permiso o una actualización nativa SDK nunca debe ser una decisión subjetiva.
  • Mantener una estrategia de cliente instalable por entorno: Demasiados variantes crean ruido de soporte.
  • Hacer explícita la validación de actualizaciones: Alguien debe verificar que la actualización se aplica y se lanza dentro del mismo binario que el equipo espera.

En este punto, el cliente de desarrollo de Expo deja de ser una comodidad para desarrolladores y se convierte en infraestructura de lanzamiento.

Pitfalls y soluciones comunes de problemas

La mayoría de los problemas del cliente de desarrollo de Expo son ordinarios una vez que sabes dónde buscar. Sienten misteriosos porque las fallas suelen ocurrir en fronteras: laptop a dispositivo, Metro a la aplicación, configuración nativa a tiempo de ejecución de JavaScript.

Uno de los problemas más comunes y menos discutidos es la falta de conexión a Metro en dispositivos físicos debido a la segmentación de redes locales, VPNs o reglas de firewall en entornos de empresa y equipos distribuidos, un punto que se destaca en este Video de depuración del cliente de Expo.

Cuando el cliente no se conecta a Metro

Este es el problema que consume más tiempo porque parece una aplicación rota cuando la aplicación a menudo está bien.

Revisa estos primero:

  • Mismas suposiciones de red: Los dispositivos y laptops pueden aparecer conectados mientras se encuentran en segmentos aislados.
  • Interferencia de VPN: Una VPN corporativa o personal puede redirigir el tráfico de manera que Metro no lo tolere bien.
  • Reglas de firewall: Las herramientas de seguridad pueden bloquear el tráfico de desarrollo local sin hacerlo obvio.
  • Políticas de dispositivo corporativo: Los dispositivos administrados a menudo restringen los patrones de tráfico que las herramientas de desarrollo dependen.

If el proyecto funciona en un simulador pero no en un dispositivo físico, sospecha la red antes de sospechar tu React code.

No debes depurar fallas de conexión desde dentro de la aplicación primero. Confirma que el dispositivo puede llegar realmente al equipo que ejecuta Metro.

Cuando los recompilados parecen aleatorios

Otra frustración común es la sensación de que algunos cambios aparecen instantáneamente y otros se niegan a hacerlo.

Eso suele significar que el equipo no ha internalizado la frontera de recompilación:

Simptomático Probable causa Solución
Las actualizaciones de JavaScript se aplican normalmente Comportamiento esperado Sigue trabajando en el cliente existente
La nueva dependencia nativa no aparece Capa nativa cambiada Crear un nuevo build de desarrollo
El comportamiento relacionado con permisos es inconsistente Capa nativa cambiada Reconstruir e instalar nuevamente
Un compañero de equipo ve un comportamiento diferente Instalado un binario de cliente diferente Alinearse en el mismo build

No es un defecto en el flujo de trabajo. Es el flujo de trabajo haciendo exactamente lo que debe hacer.

Fallas en la compilación y desviación del equipo

Cuando las compilaciones fallan, la causa raíz a menudo es una de estas:

  • Desacuerdo de dependencias: A la versión de un paquete no se alinea con el resto del proyecto.
  • Suposiciones de plugins nativos: Un plugin de configuración espera la configuración del proyecto que no tiene.
  • Confusión de credenciales: La firma o el acceso a la cuenta no es consistente en toda la equipo.
  • Expectativas locales obsoletas: Alguien asume que no se necesita una compilación fresca cuando sí se necesita.

El artículo de Capgo sobre problemas y soluciones de actualizaciones en vivo comunes para desarrolladores es una lectura suplementaria útil para el lado de la liberación de este problema. Diferente pila, misma lección: muchos 'errores de la aplicación' son realmente errores de entrega, entorno o bugs de alineación de versión.

El cliente de desarrollo de Expo funciona mejor cuando el equipo trata la confiabilidad del entorno como parte de la ingeniería. No como un después de pensarlo. Una vez que hagas eso, la configuración se vuelve predecible, y predecible es lo que quieres de herramientas móviles.


Si su equipo también envía aplicaciones Capacitor y necesita una forma controlada de entregar actualizaciones de JavaScript, activos y configuración sin esperar la revisión de la tienda, Capgo es una de las opciones para evaluar. Proporciona actualizaciones en vivo, controles de lanzamiento y integraciones CI/CD para Capacitor y Electron.

Actualizaciones en vivo para aplicaciones Capacitor

Cuando un error de capa web está en vivo, envíe la corrección a través de Capgo en lugar de esperar días por la aprobación de la tienda de aplicaciones. Los usuarios reciben la actualización en segundo plano mientras los cambios nativos siguen en el camino de revisión normal.

asesoramiento humano de Martin

Inicia Ahora

Últimas noticias de nuestro Blog

Capgo te da las mejores herramientas para crear una aplicación móvil profesional