Terrain 12 — Diagnostic éclair
10 drills · ~12 min · Le boss final : symptôme → cause → remède, en < 30 s chacun.
1. RedBox : « Text strings must be rendered within a Text component » — mais votre JSX semble propre.
✅
Le && piégé : un {count && …} avec count = 0 rend « 0 » nu. Chercher les opérandes
gauches non booléens.
2. L’app tourne mais votre nouvelle lib native crashe : « Cannot find native module ».
✅
Le conteneur est périmé : Expo Go ne contient pas la lib, ou le dev build date d’avant l’install. Rebuild du dev build.
3. La liste des thèmes ne s’affiche pas sur UN écran, parfaite ailleurs. Pas d’erreur.
✅
flex: 1 manquant chez un parent de CET écran (hauteur 0). Element inspector, remonter la
chaîne.
4. En release uniquement : spinner infini au premier lancement sans réseau.
✅
L’état « offline + cache vide » n’est pas géré (la ligne 5 de la matrice 7.4) : il faut l’ErrorState + le fallback bundlé. (Et ça aurait été un motif de rejet store.)
5. Le timer rend 20 s… mais 32 s s’écoulent quand l’utilisateur répond à un SMS entre temps.
✅
Compteur par ticks (gelés en arrière-plan) au lieu de l’horloge. Migrer vers endsAt + Date.now() + resync AppState.
6. eas update publié, mais AUCUN téléphone ne reçoit rien.
✅
Checklist : bon channel ? même runtimeVersion (un module natif ajouté sans bump ?) ? test sur build release (Metro désactive les updates) ? app ouverte DEUX fois ?
7. « INSTALL_FAILED_UPDATE_INCOMPATIBLE » en installant votre APK local.
✅
Signature différente de l’installé (debug vs EAS, ou perso vs Store). Keystore unique pour local/cloud ; jamais de mise à jour croisée perso↔Store.
8. Votre fix manuel dans android/ a mystérieusement disparu après la montée de SDK.
✅
prebuild --clean a régénéré (contrat CNG). La vérité va dans app.config.ts ou un config
plugin — jamais dans le généré.
9. Les items de l’historique re-rendent TOUS à chaque frappe dans la barre de recherche.
✅
Props instables sur des items (handler inline, style objet). React.memo + useCallback au parent + styles statiques — et vérifier au profiler.
10. Sentry affiche des crashs en index.android.bundle:1:284737 — illisibles.
✅
Source maps manquantes pour ce bundle : le npx sentry-expo-upload-sourcemaps dist a été
oublié après un eas update. L’uploader, et l’ajouter au rituel.
🏁 Terrains terminés. Le réflexe d’entraînement : refaites le terrain 12 dans une semaine — ce qui re-bloque pointe le chapitre à relire. Et la suite logique de l’entraînement, c’est la construction : Partie 19 — Projets guidés.