Chapitre 1.4 — La carte de l’écosystème
Où on en est : dernier chapitre de découverte. Vous savez ce qu’est RN, comment il marche, et pourquoi Expo. Il reste à cartographier le terrain : versions, outils, bibliothèques et sources fiables — votre GPS pour les 19 parties suivantes.
⏱️ TL;DR — Notre référence : Expo SDK 57 (React Native 0.86, React 19.2). Le noyau de votre stack : Expo Router (navigation), NativeWind (Tailwind), Zustand (état), TanStack Query (données distantes), expo-sqlite (données locales), Reanimated (animations), et les services EAS pour builds et mises à jour. Deux sources font foi : docs.expo.dev et reactnative.dev — tout le reste se vérifie.
🎯 Objectifs
- Mémoriser les versions de référence du cours et leur logique de compatibilité.
- Avoir la vision d’ensemble de la stack Drill (chaque brique = une partie du cours).
- Savoir choisir une lib tierce sans se planter (les critères de 2026).
- Constituer sa liste de sources fiables (et reconnaître les contenus périmés).
Les versions de référence
| Brique | Version | Rôle |
|---|---|---|
| Expo SDK | 57 (juil. 2026) | Le framework — définit tout le reste |
| React Native | 0.86 | Le moteur (apporté par le SDK) |
| React | 19.2 | Vos hooks habituels |
| Expo Router | v6 | Navigation file-based |
| TypeScript | 5.x (strict) | Partout dans le cours |
| Node | LTS ≥ 20 | Outillage |
La règle de compatibilité à graver : le SDK Expo est le chef. On n’installe jamais une
version de lib au hasard : npx expo install <lib> choisit LA version compatible avec votre SDK.
Un pnpm add naïf sur une lib native est la cause n°1 des builds cassés de débutant.
⚠️ Piège — Sur le web, vous mettez à jour vos deps librement. En RN, les versions de
react-native, des modulesexpo-*et de dizaines de libs natives sont couplées entre elles via le SDK. Montée de version = montée de SDK entier (il y a un guide à chaque release +npx expo install --fix). Réflexe à prendre dès la Partie 2.
La stack de Drill, brique par brique
Voici l’architecture complète de ce qu’on va construire — revenez à ce schéma quand vous vous demanderez « pourquoi cette lib » :
| Brique | Pourquoi elle et pas une autre | Partie |
|---|---|---|
| Expo Router | File-based (réflexes App Router), officiel Expo, typed routes | 5 |
| NativeWind | Vous êtes Tailwind ; compile vers StyleSheet (zéro coût runtime notable) | 4 |
| Zustand | L’état global simple de 2026 ; Redux est surdimensionné ici | 6 |
| TanStack Query | Cache/retry/invalidation éprouvés ; vos réflexes Next.js | 7 |
| expo-sqlite | Vraie base SQL locale, requêtes d’agrégats pour les stats | 8 |
| Reanimated | Animations sur le thread UI (fluides même si le JS est occupé) | 10 |
| expo-notifications | Notifications locales du SDK, planification | 9 |
Ce que Drill n’utilise pas, par décision (voir l’ADR 0001 du repo) : Firebase, Supabase ou tout backend — les questions sont des fichiers JSON statiques sur GitHub, les scores restent sur le téléphone. Zéro hébergement, zéro compte, zéro coût.
L’outillage au quotidien
Quatre outils que vous manipulerez sans arrêt (installation en Partie 2) :
npx expo start— lance Metro (le bundler, ≈ lenext devdu mobile) et le QR code pour Expo Go.npx expo install— l’installeur qui respecte le SDK (voir piège ci-dessus).eas(CLI) — pilote les services cloud :eas build,eas update,eas submit.adb(Android Debug Bridge) — le couteau suisse Android : installer un APK, lire les logs (adb logcat), gérer les appareils connectés.
Choisir une lib tierce sans se planter
npm regorge de libs RN — dont beaucoup de zombies. Checklist 2026 avant d’adopter :
- Compatible New Architecture ? (README ou reactnative.directory — le site de référence qui indexe les libs avec leurs badges de compatibilité).
- Compatible Expo ? Un config plugin existe-t-il si elle touche au natif ?
- Maintenue ? Dernier commit < 6 mois, issues traitées.
- A-t-elle un équivalent
expo-*? Toujours préférer le module du SDK s’il couvre le besoin. - Est-elle nécessaire ? Beaucoup de « libs » RN font 40 lignes — un composant maison suffit souvent (philosophie du cours : Drill construit ses composants).
Où s’informer (et quoi fuir)
Sources canoniques — à mettre en favoris maintenant :
- docs.expo.dev — LA référence quotidienne (modules, guides, EAS).
- reactnative.dev — composants core, APIs RN.
- expo.dev/changelog — les annonces de SDK.
- Le blog Expo et les release notes RN — la veille suffisante.
- reactnative.directory — l’annuaire des libs.
Signaux de contenu périmé (l’écosystème a énormément bougé — un tuto RN vieillit plus vite qu’un tuto React) :
- Parle d’eject, du bridge, de
NativeModules→ pré-New Architecture. - Utilise React Navigation configuré à la main sans mentionner Expo Router → souvent pré-2023 (React Navigation reste vivant — Expo Router est bâti dessus — mais on ne le câble plus soi-même).
- Classes components,
componentDidMount→ préhistoire. expo eject,expo publish→ commandes disparues.
💡 Pour un dev Next.js — Votre carte de correspondance mentale, à compléter au fil du cours : Metro ≈ Turbopack · Expo Router ≈ App Router ·
app.json≈next.config· EAS ≈ Vercel · Expo Go ≈ unnext devqui tournerait sur le téléphone · EAS Update ≈ un déploiement Vercel (mais pour du JS embarqué). La cheatsheet complète vit en Partie 16.
📚 Aller plus loin — L’épisode « State of React Native » (sondage annuel) donne chaque année la photographie de l’écosystème : adoption d’Expo, libs dominantes, tendances.
✏️ Exercices
1. Sans regarder : citez la brique de la stack Drill pour (a) la navigation entre écrans, (b) le cache des questions téléchargées, (c) les records par thème, (d) le timer animé.
✅ Solution
(a) Expo Router (v6). (b) TanStack Query (avec persistance du cache, Partie 7). (c) expo-sqlite (agrégats SQL, Partie 8). (d) Reanimated (animation sur le thread UI, Partie 10).
2. Vous voulez ajouter une lib de graphiques trouvée sur npm, dernière release il y a 2 ans, README mentionnant « works with RN 0.68 ». Verdict, et alternative de méthode ?
✅ Solution
Fuir : RN 0.68 = 2022, pré-New Architecture par défaut — risque élevé d’incompatibilité Fabric. Méthode : chercher sur reactnative.directory avec le filtre New Architecture, vérifier la compat Expo, et regarder si un module du SDK ou une lib activement maintenue (ex. victory-native pour les graphiques, utilisée en P19) couvre le besoin.
3. Pourquoi npx expo install plutôt que pnpm add pour une lib native ? Que se passe-t-il
sinon ?
✅ Solution
expo install résout la version compatible avec votre SDK (les versions natives sont
couplées). Un pnpm add naïf peut tirer une version dont le code natif ne correspond pas à
celui attendu par votre SDK → erreurs de build gradle ou crashs au lancement, souvent
incompréhensibles. (pnpm add reste correct pour les libs JS pures comme Zustand.)
🧠 Quiz
1. Quelle commande installe une dépendance en respectant la compatibilité SDK ?
Réponse
npx expo install <paquet> — elle choisit la version alignée sur le SDK Expo du projet.
(npx expo install --fix répare les versions désalignées.)
2. Quel outil joue le rôle de bundler en React Native ?
Réponse
Metro — il assemble votre TS + node_modules en bundle JS (ensuite compilé en bytecode
Hermes). Lancé par npx expo start.
3. Quels sont les deux sites de documentation canoniques du quotidien ?
Réponse
docs.expo.dev (framework, modules, EAS) et reactnative.dev (composants core, APIs RN).
4. Citez trois indices qu’un tutoriel React Native est périmé.
Réponse
Il parle d’eject, du bridge/NativeModules, de expo publish, configure React Navigation à la
main sans Expo Router, ou utilise des class components. Tout ça date d’avant la New Architecture
et Expo Router.
5. Pourquoi Drill n’a-t-il ni Firebase ni Supabase ?
Réponse
Décision d’architecture (ADR 0001) : les questions = JSON statique versionné sur GitHub (mise à jour par simple push, cache offline dans l’app), les scores = locaux (SQLite). Aucun besoin de sync multi-appareils ni d’auth → un backend serait du coût (hébergement, complexité) sans bénéfice.
👉 Partie suivante : Partie 2 — Installation & premier projet — assez de théorie : on installe tout, on branche votre téléphone, et Drill affiche son premier écran.