Annexe C — Glossaire
Chaque terme en deux lignes, avec le chapitre qui l’explique vraiment.
Le moteur
- Hermes — Le moteur JavaScript embarqué dans l’app (créé par Meta) : votre TS est compilé en bytecode au build → démarrage rapide. [1.2]
- JSI (JavaScript Interface) — La couche C++ qui permet au JS d’appeler le natif par références directes, sans sérialisation. A remplacé « le bridge ». [1.2]
- Fabric — Le renderer de la New Architecture : projette l’arbre React en widgets natifs. [1.2]
- TurboModules — Les modules d’APIs natives chargés à la demande via JSI. [1.2]
- Yoga — L’implémentation C++ de flexbox qui calcule tous les layouts RN. [1.2, 4.2]
- New Architecture — L’ensemble JSI+Fabric+TurboModules, par défaut depuis RN 0.76 ; l’ancienne architecture (« bridge ») est éteinte. [1.2]
- Bridge (historique) — L’ancien mécanisme JS↔natif (JSON, asynchrone, goulot). Si un contenu en parle : il est daté. [1.2]
- Bundle JS — Le fichier unique (bytecode Hermes) produit par Metro, embarqué dans l’app — et remplaçable par OTA. [1.2, 12.5]
- Metro — Le bundler de React Native (≈ webpack/Turbopack). Son cache est le suspect
n°1 des comportements étranges (
expo start -c). [2.1]
Expo
- Expo (le framework) — SDK de ~80 modules natifs + Router + CLI + prebuild. Open source, gratuit, recommandé officiellement par l’équipe RN. [1.3]
- Expo Go — L’app « bac à sable » du Store contenant le SDK : apprendre sans compiler. Limitée aux modules du SDK. [1.3, 11.1]
- Development build — VOTRE app compilée avec expo-dev-client : l’outillage d’Expo Go, vos modules natifs en plus. Le mode de croisière. [11.1]
- expo-dev-client — Le paquet qui apporte le menu dev, la connexion Metro et les erreurs lisibles à un build custom. [11.1]
- Prebuild / CNG (Continuous Native Generation) — La génération des dossiers natifs
(
android/) depuis app.config.ts + plugins. Le généré est jetable, jamais édité. [11.4] - Config plugin — Une fonction exécutée au prebuild qui modifie les fichiers natifs (manifest, gradle) — le « codemod de plateforme ». [11.3]
- app.config.ts — La carte d’identité de l’app (nom, package, icône, plugins, extra) en TypeScript. [11.3]
- EAS (Expo Application Services) — Les services cloud : Build (compiler), Update (OTA), Submit (envoyer aux stores). Plan gratuit avec quotas. [1.3, P12]
- EAS Update / OTA — La mise à jour du bundle JS sans réinstallation : publiée sur un channel, appliquée au lancement suivant. [12.5]
- Channel — L’étiquette de distribution cuite dans un binaire (preview, production) :
eas update --channel Xsert les binaires branchés sur X. [12.5] - runtimeVersion — Le contrat de compatibilité bundle↔natif : une OTA n’atteint que les binaires de même runtime. Bump de version à chaque changement natif. [12.5]
- SDK Expo — La version-cadre de l’app (SDK 57 → RN 0.86) : toutes les dépendances
natives s’alignent dessus (
expo install). [1.4]
Android & distribution
- APK — Le binaire Android installable directement (sideload, adb). Le format de la voie perso. [12.2]
- AAB (Android App Bundle) — Le « colis » exigé par le Play Store, qui en dérive des APK optimisés par appareil. Ne s’installe pas. [12.2]
- Keystore — La clé de signature : identique = mise à jour possible ; perdue = drame (sauf Play App Signing). À sauvegarder. [12.2]
- Play App Signing — Le modèle du Store : Google détient la clé finale, la vôtre devient « upload key » (remplaçable). [13.2]
- versionCode — L’entier monotone d’Android (ordre des versions) ; distinct du
versionsemver. autoIncrement EAS. [12.4] - Sideload — Installer un APK sans store (adb, fichier). « Sources inconnues » = autorisation par app installatrice. [12.4]
- Test fermé — L’exigence Google pour les nouveaux comptes perso : ≥ 12 testeurs pendant 14 jours avant la production. [13.4]
- Staged rollout — Déployer une mise à jour à 10 % → 50 % → 100 %, interruptible. [13.6]
- Android vitals — Les métriques de santé mesurées par Google (crash < 1,09 %, ANR < 0,47 %) qui conditionnent la visibilité. [13.6]
- ANR (Application Not Responding) — Thread principal natif bloqué > 5 s → dialogue système « l’app ne répond pas ». [13.6]
- adb (Android Debug Bridge) — Le couteau suisse : installer, logs (logcat), reverse (Metro par USB), pm clear. [2.3]
- gradle — Le système de build du monde Android (le « webpack+npm » JVM) : compile les projets générés par prebuild. [2.3, 12.3]
Patterns du cours
- dp (density-independent pixel) — L’unité RN : même taille physique sur tous les écrans. [4.1]
- Safe area — Les zones hors encoche/barres système, via react-native-safe-area-context. [3.6]
- Worklet — Une fonction JS compilée pour s’exécuter sur le thread UI (Reanimated) : animations et gestes sans toucher au thread JS. [10.2]
- Shared value — La valeur (useSharedValue) lisible par les worklets à chaque frame ; la modifier ne re-rend rien. [10.2]
- Union discriminée — Le type TS où chaque variante porte ses données
(
{ name: 'playing'; endsAt }) : les états impossibles deviennent irreprésentables. [6.3] - Machine d’état — La modélisation des phases d’un processus (partie de quiz) avec transitions gardées. [6.3]
- Offline-first — Hors ligne = un mode de fonctionnement, pas une erreur : cache persisté + fallback bundlé + états d’UI dédiés. [7.4]
- « Parse, don’t validate » — Transformer l’inconnu en type sûr UNE fois à la frontière (zod) ; plus aucun doute à l’intérieur. [7.3, 14.1]
- lib/ pur — La règle : la logique métier n’importe jamais react-native → testable, partageable (drill-core). [2.5, 15.2]