Skip to Content
React Native20. QuizQuiz 5 — Qualité & écosystème

Quiz 5 — Qualité & écosystème (P14-P17)

20 questions · ~15 min — la dernière série !

1. Pourquoi tsc --noEmit est-il indispensable spécifiquement en RN ?

Réponse

Metro ne type-check pas (transpilation seule) : l’app tourne avec des erreurs de types. tsc est le seul contrôle — dans le rituel de release/pre-commit.

2. La doctrine des frontières en une formule ?

Réponse

« Parse, don’t validate » : transformer l’inconnu en type sûr UNE fois à l’entrée (zod au réseau, defaults aux params, migrations au storage) — plus aucun as à l’intérieur.

3. Que rend possible la règle « lib/ n’importe pas react-native » ?

Réponse

Des tests Jest sans mock, le partage app/web (drill-core), la réutilisation en Node — un mock RN nécessaire dans un test de lib/ signale une fuite d’architecture.

4. Comment rendre testable une fonction qui dépend du hasard ou de l’horloge ?

Réponse

Injecter : rng: () => number = Math.random, now en paramètre — les tests passent des valeurs seedées/fixes (déterminisme).

5. Le test le plus précieux d’une machine d’état ?

Réponse

Le test de garde (pas de double réponse, pas d’action hors phase) : il verrouille « les états impossibles sont impossibles » contre les refontes.

6. La philosophie de requête de Testing Library ?

Réponse

Interroger ce que l’utilisateur perçoit (texte, rôles d’accessibilité) — jamais l’implémentation : un refactor interne ne casse pas un bon test d’écran.

7. Où mocke-t-on les données SQLite dans les tests d’écrans, et pourquoi ?

Réponse

Au niveau des hooks de query (la frontière qu’on possède) — expo-sqlite ne tourne pas sous Node, et le test reste lisible et stable.

8. La pyramide de tests de Drill et la cadence de chaque étage ?

Réponse

~30 Jest lib/stores (chaque commit, 2 s) → 5-6 écrans RNTL (chaque feature) → 3 flows Maestro E2E (chaque release native, bloquants).

9. Pourquoi Maestro utilise-t-il des testID pour les réponses du quiz ?

Réponse

Le hasard du tirage rend les TEXTES imprévisibles — answer-0 est stable : on teste le parcours, pas le contenu tiré.

10. Pourquoi Sentry est-il non négociable dès la distribution en release ?

Réponse

Plus de RedBox en release : les crashs sont silencieux chez l’utilisateur — Sentry capte JS

  • natif + ANR avec le contexte (version, updateId).

11. Le geste qui accompagne obligatoirement chaque eas update avec Sentry ?

Réponse

npx sentry-expo-upload-sourcemaps dist — sans les source maps du nouveau bundle, les stacks de prod sont du charabia minifié.

12. Les 5 leviers perf du cours, dans l’ordre ?

Réponse

Listes (FlatList réglée) → animations thread UI → travail hors render (SQL, stores) → démarrage (splash, imports) → réseau perçu (offline-first). Règle zéro : mesurer d’abord.

13. Peut-on builder pour iOS depuis Windows, et que manque-t-il ?

Réponse

Oui (EAS Build cloud, certificats gérés). Ce qui manque : tester — simulateur = Mac ; minimum viable = un iPhone + TestFlight.

14. La doctrine iOS du cours ?

Réponse

Cross-platform dans le code (gratuit, discipliné), mono-plateforme dans l’opération — porter le jour où l’app justifie le loyer (99 $/an, reviews, matériel).

15. Le vrai partage app/web pour un dev Next.js ?

Réponse

La logique pure (drill-core : schémas, scoring, tirage) entre l’app Expo et un site Next.js — le cœur en TS pur, les UI par plateforme (react-native-web reste un outil de démo).

16. L’arbre de décision d’un besoin natif, du premier au dernier recours ?

Réponse

Module expo-* → lib communautaire saine (directory) → config plugin (config pure) → Expo Modules API (module custom local, minuscule, à maintenir).

17. Le bon modèle de monétisation par défaut d’une app OUTIL de niche ?

Réponse

Freemium + IAP one-shot (Pro unlock 3-10 €, conversion 1-5 %) — l’abonnement exige une valeur récurrente réelle, la pub exige du volume (eCPM en centimes).

18. Quand Google Play Billing est-il obligatoire, et la commission indé ?

Réponse

Pour tout bien numérique consommé dans l’app — 15 % jusqu’à 1 M$/an. Stripe interdit pour le numérique in-app (motif de retrait).

19. Les trois bugs IAP qui coûtent la confiance ?

Réponse

La restauration cassée (bouton + check au démarrage), l’achat non livré (le listener customerInfo rattrape), l’annulation traitée en erreur (c’est un « non merci »).

20. L’ordre de diagnostic business immuable ?

Réponse

Rétention (restent-ils ?) → conversion (paient-ils ?) → acquisition (viennent-ils ?) — optimiser l’acquisition d’un produit qui ne retient pas = remplir un seau percé.


🏁 Fin du cours. Si les cinq séries passent le barème : vous savez construire, styler, animer, distribuer et maintenir une app Android en React Native — et la faire vivre. La suite est dans les projets et dans le repo drill-questions. Bon drill. ⚛️