React Native DevTools é o depurador integrado para Expo SDK 57 / React Native 0.86 - um aplicativo desktop baseado no Chrome DevTools conectado ao Hermes no seu aplicativo em execução. Use-o para o inspetor de elementos, breakpoints, rastreamentos de rede, gravações de desempenho e (novo em 0.86) emulação de aparência claro/escuro sem alterar as configurações do dispositivo.
O Metro serve seu bundle JS; o aplicativo abre um socket Chrome DevTools Protocol (CDP) para o packager.
Pressionar j (ou Open DevTools no menu de desenvolvimento) lança o aplicativo desktop React Native DevTools, que se conecta via CDP ao runtime Hermes no dispositivo/simulador selecionado.
DevTools é apenas para Hermes - substituiu o depurador JS do Flipper, o depurador experimental e a depuração remota do Chrome (removido no RN 0.79).
Desde o RN 0.85, múltiplos clientes CDP podem se conectar simultaneamente (DevTools + extensões VS Code + outras ferramentas) sem se desconectarem.
DevTools é desabilitado em builds de produção - o mesmo que LogBox e o menu de desenvolvimento.
Network captura automaticamente enquanto o DevTools está aberto. Pré-visualizações de resposta armazenam em buffer até 100 MB no dispositivo (o mais antigo é removido primeiro).
Performance mescla execução JavaScript, rastreamentos de Performance React, eventos de rede e User Timings personalizados (performance.mark).
Ainda não no painel Network principal do RN: eventos WebSocket, limitação, simulação de resposta.
Observação do Expo: Projetos SDK 57 ainda podem exibir um painel Expo Network para requisições fora de fetch / XHR / <Image> (por exemplo, alguns caminhos do Expo Fetch). Falta integração com initiator e ligação com o painel Performance - prefira o painel Network principal quando suas chamadas forem cobertas.
RN 0.86 adiciona emulação de aparência sem alterar o tema do sistema operacional do dispositivo:
Abra a Command Palette do DevTools - ⌘+Shift+P (macOS) ou Ctrl+Shift+P (Windows/Linux).
Execute o comando de emulação claro/escuro (Emulation.setEmulatedMedia).
Observe useColorScheme() e os estilos temáticos atualizarem no dispositivo.
A substituição é temporária - ela é redefinida quando o DevTools se desconecta. Para testes de tema persistentes no aplicativo, use Appearance.setColorScheme() em builds de desenvolvimento (veja Modo Escuro e Esquemas de Cores).
// debugger; é válido em fontes .tsx - DevTools pausa no bundle Hermes ao 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 - A depuração remota do Chrome foi removida; a sessão não reflete o bytecode Hermes. Correção: Pressione j ou use o menu de desenvolvimento Open DevTools.
Esperando DevTools em produção - Ferramentas de depuração são compiladas para fora de builds de produção. Correção: Reproduza em um build de desenvolvimento ou binário simulador __DEV__.
Breakpoints nunca atingidos após uma recompilação nativa - A sessão CDP morre quando você reinstala o aplicativo. Correção: Use a caixa de diálogo de reconexão ou pressione j novamente.
Inspetor mostra props desatualizadas - Você editou o estado no DevTools, mas o Fast Refresh remontou a árvore. Correção: Re-selecione o elemento; prefira edições de props para sondagens rápidas, edições de código para mudanças duradouras.
Painel Network vazio para clientes personalizados - Apenas fetch, XMLHttpRequest e <Image> são instrumentados hoje. Correção: Verifique o Expo Network para pilhas não cobertas, ou registre na camada de rede até que o suporte da biblioteca chegue.
Emulação claro/escuro "não faz nada" - A tela ignora useColorScheme e codifica cores fixas. Correção: Ramifique estilos de tokens de esquema; a emulação aciona a mesma API que o alternador do sistema operacional.
Aplicativo desktop DevTools bloqueado por firewall - Redes corporativas podem bloquear o download do binário assinado. Correção: Permita o download ou use o fluxo de lançamento no navegador que o RN fornece.
Como abro o React Native DevTools com Expo SDK 57?
Execute npx expo start, inicie seu aplicativo em um simulador ou dispositivo, depois pressione j no terminal Metro. Alternativamente, abra o menu de desenvolvimento no aplicativo e escolha Open DevTools.
O React Native DevTools funciona com Hermes?
Sim - Hermes é necessário. DevTools fala o protocolo do depurador Hermes sobre CDP. É o substituto suportado para o depurador JS do Flipper e a depuração remota do Chrome.
Onde está o inspetor de elementos?
Ele fica no painel Components (React DevTools integrado). Use Select element, toque em uma view no dispositivo e inspecione props, hooks e proprietários na gaveta direita.
Como testo o modo escuro sem alterar as configurações do dispositivo?
No RN 0.86+, abra a Command Palette do DevTools (⌘/Ctrl+Shift+P) e execute o comando de emulação claro/escuro. Componentes que usam useColorScheme() re-renderizam de acordo até que o DevTools se desconecte.
Por que ainda vejo um painel Expo Network?
O Expo pode registrar pilhas de rede adicionais (além do fetch / XHR / <Image> principal) em seu próprio painel. Use-o quando as requisições estiverem faltando na aba Network principal; prefira o painel principal quando a cobertura se sobrepor para integração de iniciador e Performance.
Posso usar `debugger;` em vez de clicar em breakpoints?
Sim. Insira debugger; em um branch __DEV__, salve o arquivo e o Fast Refresh entrega a instrução ao dispositivo enquanto o DevTools está aberto - a execução pausa imediatamente.
Qual atalho de teclado abre o menu de desenvolvimento em simuladores?
Simulador iOS: Ctrl+Cmd+Z (ou Device → Shake)
Emulador Android: Cmd+M (macOS) ou Ctrl+M (Windows/Linux)
O DevTools funciona com expo-dev-client?
Sim - builds de desenvolvimento expõem o mesmo menu de desenvolvimento e endpoint CDP que o Expo Go. Comece com npx expo start --dev-client e pressione j assim que o cliente se conectar ao Metro.
Por que o DevTools desconectou?
Causas comuns: aplicativo fechado, recompilação nativa instalada, Metro parado, dispositivo físico desconectado, ou uma falha de JS. Use Reconnect DevTools na caixa de diálogo em vez de deixar uma sessão desatualizada aberta.
Como faço para perfilar lentidão de navegação?
Abra o painel Performance, comece a gravar, navegue entre as telas, pare de gravar. Inspecione rastreamentos de Performance React, tarefas longas e fluxos de rede em uma única linha do tempo.
Mensagens WebSocket são visíveis em Network?
Ainda não - a captura de WebSocket está na lista de itens não implementados para o React Native DevTools principal. Registre na camada do socket ou use proxies nativos até que o suporte chegue.
Várias ferramentas podem se conectar ao mesmo tempo?
Desde o RN 0.85, múltiplas conexões CDP são suportadas. DevTools, algumas extensões VS Code e outros clientes podem coexistir - versões anteriores desconectavam a sessão anterior.
Armadilha: LogBox desapareceu quando o DevTools abriu - isso é um bug?
Quando o DevTools está conectado, os toasts não fatais do LogBox são suprimidos para que o painel Console permaneça como autoridade. Erros de sintaxe fatais ainda bloqueiam o aplicativo até serem corrigidos.
O aplicativo desktop requer Chrome instalado?
RN 0.83+ envia um binário desktop empacotado (assinado no macOS). Se o download falhar (firewall), o RN volta a usar o fluxo de lançamento no navegador Chrome/Edge instalado.