Dans une vraie app
Le point d’entrée est metro.config.js (ou metro.config.mts depuis Metro 0.87, embarqué à partir de React Native 0.87), qui étend getDefaultConfig de expo/metro-config ou de @react-native/metro-config. Un projet qui ne part pas de ce défaut, ou qui copie une config d’il y a trois ans, perd les réglages ajoutés depuis : résolution des exports de package, support des monorepos, assets SVG, etc. La règle que j’applique : la config custom doit tenir en quelques lignes et chaque ligne doit avoir une raison écrite en commentaire.
Les problèmes de résolution sont les plus fréquents. Un module introuvable alors qu’il est bien dans node_modules vient souvent du cache (npx expo start --clear), d’une version dupliquée dans un monorepo, ou d’un champ exports de package que Metro interprète différemment de Node. Les fichiers .native.ts et .web.ts sont la bonne façon de séparer du code par plateforme ; un Platform.OS qui conditionne un require pose des problèmes de tree shaking à l’export web.
Metro lui-même a beaucoup bougé : résolution annoncée 15 fois plus rapide avec React Native 0.76, génération des source maps deux fois plus rapide et moitié moins de mémoire avec Metro 0.87. Si le dev server d’un projet est lent, la première chose à vérifier est la version de Metro réellement installée (npm ls metro), pas la config.
Termes liés
Fast Refresh
Le rechargement à chaud de React Native : une modification de composant est appliquée en une à deux secondes en conservant l’état local.
Hermes
Le moteur JavaScript de Meta pour React Native, par défaut depuis la 0.70, qui précompile le bundle en bytecode au build.
Monorepo
Un dépôt avec plusieurs packages liés par les workspaces du gestionnaire de paquets ; à surveiller : Metro, l’autolinking et le hissage des dépendances.
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.
Expo
Le framework open source recommandé par React Native : SDK de modules natifs, CLI, prebuild, Expo Router, et les services cloud EAS.