Aller au contenu
useffect.sh
Planifier 30 min avec un senior
Outillage

React Native DevTools

Le débogueur intégré de React Native depuis la 0.76, basé sur Chrome DevTools : console, points d’arrêt, réseau, profiling, arbre React.

Définition

React Native DevTools est l’expérience de débogage par défaut de React Native depuis la version 0.76. Construite sur le frontend de Chrome DevTools et connectée au moteur Hermes de l’app via le protocole CDP, elle s’ouvre en appuyant sur j dans le terminal Metro ou depuis le dev menu, et gère plusieurs devices à la fois. Elle remplace les options précédentes, dont le débogueur expérimental de la 0.73 et l’ancien remote debugging qui exécutait le JavaScript dans Chrome au lieu du téléphone. Les panneaux disponibles : Console, Sources avec points d’arrêt et pas-à-pas, Memory pour les heap snapshots, React Components et React Profiler intégrés, et depuis la 0.83 un panneau Network (fetch, XMLHttpRequest, images) et un panneau Performance qui aligne exécution JavaScript, pistes React, réseau et User Timings sur une même timeline. Elle cible le code React ; pour la couche native, Xcode et Android Studio restent les outils. Vous la rencontrez au premier bug que console.log ne suffit pas à expliquer.

Dans une vraie app

Le panneau Performance est celui que les équipes sous-utilisent. Combiné aux Web Performance APIs de React Native (stables depuis la 0.83 : performance.mark, performance.measure), il permet d’instrumenter un démarrage ou une navigation avec des marques posées dans le code et de les lire sur la même timeline que les rendus React. C’est la méthode que j’utilise pour objectiver un « l’app est lente » avant de toucher au code. Le panneau Network a ses limites documentées : WebSocket seulement sur le canal Canary depuis la 0.88, pas de mocking ni de throttling, et sur Expo le panneau « Expo Network » reste disponible à côté.

Le piège d’outillage classique est une version de React Native inférieure à 0.76 ou un moteur autre que Hermes : React Native DevTools n’est pas disponible, et les tutoriels pointent vers Flipper, dont l’intégration a été retirée du template. Autre cas fréquent : une boîte de dialogue « Debugging connection was closed » après un rebuild ou un crash ; « Reconnect DevTools » suffit une fois la cause réglée, sans relancer Metro s’il tourne encore.

Pour l’arbre React, le bouton « select element » localise un composant sur le device et le réglage « Highlight updates » montre les re-rendus en direct, ce qui règle la majorité des discussions sur les useMemo inutiles en quelques minutes.

Nos offres sur ce sujet

Sources

Les 35 termes du glossaire

Un de ces sujets bloque votre app ?

30 minutes avec un senior pour regarder le problème dans votre code. Gratuit.