Skip to Content

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 X sert 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 version semver. 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]