React Native DevTools es el depurador integrado para Expo SDK 57 / React Native 0.86 - una aplicación de escritorio basada en Chrome DevTools conectada a Hermes en tu aplicación en ejecución. Úsalo para el inspector de elementos, puntos de interrupción, trazas de red, grabaciones de rendimiento, y (nuevo en 0.86) emulación de apariencia light/dark sin cambiar la configuración del dispositivo.
Metro sirve tu bundle de JS; la app abre un socket de Chrome DevTools Protocol (CDP) al empaquetador.
Presionar j (o Open DevTools en el menú de desarrollo) lanza la aplicación de escritorio React Native DevTools, que se adjunta sobre CDP al runtime de Hermes en el dispositivo/simulador seleccionado.
DevTools es solo para Hermes - reemplazó el depurador de JS de Flipper, el depurador experimental, y la depuración remota de Chrome (eliminada en RN 0.79).
Desde RN 0.85, múltiples clientes de CDP pueden conectarse simultáneamente (DevTools + extensiones de VS Code + otras herramientas) sin expulsarse mutuamente.
DevTools está deshabilitado en compilaciones de lanzamiento - igual que LogBox y el menú de desarrollo.
Network captura automáticamente mientras DevTools está abierto. Los previsualizados de respuesta se almacenan hasta 100 MB en el dispositivo (el más antiguo se evicta primero).
Performance fusiona la ejecución de JavaScript, pistas de React Performance, eventos de red, y User Timings personalizados (performance.mark).
Aún no en el panel de Network de RN: eventos de WebSocket, throttling, mocking de respuestas.
Advertencia de Expo: Los proyectos de SDK 57 pueden mostrar un panel de Expo Network para solicitudes fuera de fetch / XHR / <Image> (por ejemplo algunos caminos de Expo Fetch). Carece de integración de iniciador y vinculación con el panel de Performance - prefiere el panel de Network de núcleo cuando tus llamadas están cubiertas.
RN 0.86 añade emulación de apariencia sin cambiar el tema del SO del dispositivo:
Abre la Paleta de Comandos de DevTools - ⌘+Shift+P (macOS) o Ctrl+Shift+P (Windows/Linux).
Ejecuta el comando de emulación light/dark (Emulation.setEmulatedMedia).
Observa cómo useColorScheme() y los estilos temáticos se actualizan en el dispositivo.
La anulación es temporal - se reinicia cuando se desconecta DevTools. Para pruebas de tema persistentes en la app, usa Appearance.setColorScheme() en compilaciones de desarrollo (mira Dark Mode & Color Schemes).
// debugger; es válido en fuentes .tsx - DevTools rompe en el bundle de Hermes en vivoexport function debugBreakpoint(value: unknown) { if (__DEV__) { // eslint-disable-next-line no-debugger debugger; console.log("debugBreakpoint", value); }}
Usando chrome://inspect para RN 0.86 - La depuración remota de Chrome se eliminó; la sesión no refleja bytecode de Hermes. Arreglo: Presiona j o usa el menú de desarrollo Open DevTools.
Esperando DevTools en producción - Las herramientas de depuración se compilan fuera de las compilaciones de lanzamiento. Arreglo: Reproduce en una compilación de desarrollo o binario de simulador __DEV__.
Los puntos de interrupción nunca se golpean después de una reconstrucción nativa - La sesión de CDP muere cuando reinstala la app. Arreglo: Usa el diálogo de reconexión o presiona j de nuevo.
El inspector muestra props obsoletos - Editaste el estado en DevTools pero Fast Refresh remontó el árbol. Arreglo: Vuelve a seleccionar el elemento; prefiere ediciones de props para sondeos rápidos, ediciones de código para cambios duraderos.
Panel de Network vacío para clientes personalizados - Solo fetch, XMLHttpRequest, e <Image> están instrumentados hoy. Arreglo: Verifica Expo Network para pilas no cubiertas, o registra en la capa de redes hasta que el soporte de la biblioteca aterrice.
La emulación de light/dark "no hace nada" - La pantalla ignora useColorScheme y codifica colores. Arreglo: Rama estilos de tokens de esquema; la emulación impulsa la misma API que el toggle del SO.
La aplicación de escritorio DevTools bloqueada por firewall - Las redes corporativas pueden bloquear la descarga binaria notarizada. Arreglo: Permite la descarga o recurre al flujo de lanzamiento del navegador que proporciona RN.
Ejecuta npx expo start, lanza tu app en un simulador o dispositivo, luego presiona j en la terminal de Metro. Alternativamente, abre el menú de desarrollo integrado y elige Open DevTools.
¿Funciona React Native DevTools con Hermes?
Sí - Hermes es requerido. DevTools habla el protocolo del depurador de Hermes sobre CDP. Es el reemplazo soportado para el depurador de JS de Flipper y la depuración remota de Chrome.
¿Dónde está el inspector de elementos?
Vive en el panel Components (React DevTools integrado). Usa Select element, toca una vista en el dispositivo, e inspecciona props, hooks, y propietarios en el cajón derecho.
¿Cómo pruebo el modo oscuro sin cambiar la configuración del dispositivo?
En RN 0.86+, abre la Paleta de Comandos de DevTools (⌘/Ctrl+Shift+P) y ejecuta el comando de emulación light/dark. Los componentes que usan useColorScheme() se re-renderizarán en consecuencia hasta que se desconecte DevTools.
¿Por qué sigo viendo un panel de Expo Network?
Expo puede registrar pilas de redes adicionales (más allá de fetch / XHR / <Image>) en su propio panel. Úsalo cuando las solicitudes falten en la pestaña de Network de núcleo; prefiere el panel de núcleo cuando la cobertura se superpone para integración de iniciador y Performance.
¿Puedo usar `debugger;` en lugar de hacer clic en puntos de interrupción?
Sí. Inserta debugger; en una rama __DEV__, guarda el archivo, y Fast Refresh entrega la sentencia al dispositivo mientras DevTools está abierto - la ejecución se pausa inmediatamente.
¿Cuál es el atajo de teclado para abrir el menú de desarrollo en simuladores?
iOS Simulator: Ctrl+Cmd+Z (o Device → Shake)
Android emulator: Cmd+M (macOS) o Ctrl+M (Windows/Linux)
¿Funciona DevTools con expo-dev-client?
Sí - las compilaciones de desarrollo exponen el mismo menú de desarrollo y endpoint de CDP que Expo Go. Inicia con npx expo start --dev-client y presiona j una vez que el cliente se conecta a Metro.
¿Por qué se desconectó DevTools?
Causas comunes: app cerrada, reconstrucción nativa instalada, Metro detenido, dispositivo físico desconectado, o un crash de JS. Usa Reconnect DevTools en el diálogo en lugar de dejar una sesión obsoleta abierta.
¿Cómo perfilo el jank de navegación?
Abre el panel Performance, inicia la grabación, navega entre pantallas, detén la grabación. Inspecciona pistas de React Performance, tareas largas, y cascadas de red en una línea de tiempo.
¿Son visibles los mensajes de WebSocket en Network?
Aún no - la captura de WebSocket está en la lista no implementada para React Native DevTools de núcleo. Registra en la capa de socket o usa proxies nativos hasta que el soporte llegue.
¿Pueden múltiples herramientas adjuntarse a la vez?
Desde RN 0.85, múltiples conexiones de CDP son soportadas. DevTools, algunas extensiones de VS Code, y otros clientes pueden coexistir - las versiones anteriores eliminarían la sesión anterior.
Captura: LogBox desapareció cuando se abrió DevTools - ¿es eso un bug?
Cuando DevTools está adjunto, los toasts no fatales de LogBox se suprimen para que el panel Console permanezca autoritario. Los errores de sintaxis fatal aún bloquean la app hasta que se arreglen.
¿La aplicación de escritorio requiere Chrome instalado?
RN 0.83+ envía un binario de escritorio empaquetado (notarizado en macOS). Si la descarga falla (firewall), RN recurre a lanzarse en un navegador Chrome/Edge instalado.