Qu'est-ce qu'Expo ? Framework React Native, EAS Build et mises à jour
Expo est un framework React Native avec SDK, Expo Router, builds et mises à jour cloud EAS. Fonctionnement et test de charge de son backend.
Qu'est-ce qu'Expo ?
Expo est un framework open source pour créer des applications React Native sur Android et iOS. Il fournit la structure du projet, une bibliothèque de modules natifs prêts à l'emploi (le SDK Expo), un routage basé sur les fichiers avec Expo Router et, via EAS (Expo Application Services), des builds hébergés, la soumission aux stores et des mises à jour à distance. Vous écrivez du JavaScript ou du TypeScript et ouvrez rarement Xcode ou Android Studio.
Expo s'appuie sur React Native comme un framework complet s'appuie sur une bibliothèque d'interface : React Native affiche les vues natives, Expo décide de la structure, de la compilation et de la livraison du projet.
Comment fonctionne Expo
- Expo CLI et serveur de développement.
npx expo startsert votre bundle JavaScript avec rechargement à chaud vers un simulateur, un émulateur ou un téléphone. - Expo Go et development builds. Expo Go est une application toute prête pour essayer un projet sur un appareil sans rien compiler. Dès que vous avez besoin de code natif absent d'Expo Go, vous créez un development build de votre propre application.
- Continuous Native Generation (CNG). Les dossiers
androidetiossont générés à la demande par prebuild à partir d'un modèle et de votre configuration, au lieu d'être maintenus à la main. Les config plugins sont les fonctions qui modifient ces projets natifs pendant le prebuild. - EAS Build. Un service hébergé qui compile les binaires de votre application. Les builds iOS tournent sur des machines macOS du cloud d'Expo, et
eas build --localcompile sur votre propre machine. - EAS Update. Envoie à distance les changements de JavaScript, de styles et d'images aux applications qui embarquent
expo-updates, entre deux versions publiées sur les stores.
Exemple : de zéro à une application qui tourne
npx create-expo-app@latest my-app
cd my-app
npx expo startDécrivez ensuite vos profils de build dans eas.json, puis compilez et mettez à jour depuis le terminal :
{
"build": {
"preview": { "distribution": "internal" },
"production": {}
}
}eas build --platform all --profile production
eas update --branch production --message "Fix login copy"Une mise à jour ne peut modifier que ce qui se trouve dans le bundle JavaScript. Le code natif, les dépendances natives, les changements de permissions et les montées de version du SDK Expo exigent un nouveau binaire issu d'EAS Build, et les mises à jour ne sont distribuées qu'aux builds dont le code natif est compatible.
Workflow managed ou bare : une distinction dépassée
Les anciens guides séparent Expo en workflow managed (JavaScript uniquement) et workflow bare (vous gérez les dossiers natifs). La documentation d'Expo qualifie désormais ces notions d'obsolètes : tout projet Expo utilise la Continuous Native Generation, et le code natif sur mesure passe par des config plugins ou des modules natifs locaux. Si un tutoriel vous demande de faire un « eject », il est antérieur à ce changement.
Expo ou React Native CLI
| Critère | Expo | React Native CLI |
|---|---|---|
| Mise en place | Une commande, dossiers natifs générés | Vous créez et maintenez les projets natifs |
| Code natif | Config plugins, development builds, modules locaux | Modifications directes dans Xcode et Android Studio |
| Builds | EAS Build (hébergé) ou local | Xcode et Gradle en local, CI à monter |
| Mises à jour à distance | EAS Update | Service distinct à intégrer |
Erreurs courantes avec Expo
- Mettre des secrets dans des variables
EXPO_PUBLIC_. Expo les intègre au bundle JavaScript, et sa documentation avertit qu'elles sont lisibles en clair dans l'application compilée. Tout ce qui est secret doit rester côté backend. - Croire qu'une mise à jour à distance peut livrer du code natif. Un nouveau module natif ou une nouvelle permission impose un nouveau build et une publication sur les stores.
- Tester uniquement dans Expo Go. Il masque des problèmes qui n'apparaissent qu'avec vos propres dépendances natives dans un development build ou une version de production.
- Prendre l'application pour tout le produit. Un écran rapide attend quand même une API lente. La plupart des « l'appli est lente » se règlent côté backend.
Expo et tests de charge du backend
Une application Expo est un client. Chaque connexion, chaque rafraîchissement de fil et chaque paiement appelle vos endpoints d'API, et une mise en ligne sur les stores ou une notification push peut y envoyer des milliers d'utilisateurs dans la même minute. Cette charge ne passe jamais par Expo : elle se vérifie sur le backend avec des tests de charge, complétés par des tests d'API pour la justesse des réponses.
LoadFocus exécute des scripts JMeter et k6 depuis plus de 25 régions cloud ; voir tests de charge et tests de charge JMeter. Pour surveiller ces mêmes endpoints entre deux versions, utilisez la surveillance d'API. Pour des exemples concrets, lisez comment les tests de charge cloud ont amélioré les temps de chargement d'une application mobile et pourquoi les équipes mobile-first doivent prioriser les tests de performance (articles en anglais).
Questions fréquentes sur Expo
Expo est-il gratuit ?
Le framework et le SDK sont open source. EAS est un service hébergé avec une offre gratuite et des offres payantes ; les quotas évoluent, consultez donc la page de tarifs d'Expo avant de planifier sur un chiffre.
Faut-il choisir Expo ou React Native CLI ?
La plupart des nouveaux projets démarrent avec Expo, car la configuration, les builds et les mises à jour sont pris en charge. React Native CLI se justifie si vous voulez maîtriser les projets natifs dès le premier jour.
Une application Expo peut-elle utiliser n'importe quel module natif ?
Oui, si le module fonctionne avec les config plugins ou si vous l'ajoutez à un development build. Expo Go ne contient que les modules qu'il embarque.
Quelle différence entre EAS Build et EAS Update ?
EAS Build compile le binaire de l'application (.ipa ou .apk/.aab). EAS Update remplace le JavaScript, les styles et les images d'une application déjà installée, sans nouveau binaire.
Les mises à jour passent-elles encore par la validation des stores ?
Les mises à jour à distance doivent respecter les règles d'Apple et de Google. Un changement de comportement peut encore nécessiter une validation, relisez donc régulièrement les politiques des stores.
Comment faire un test de charge du backend d'une application Expo ?
Repérez les appels d'API de l'application, écrivez-les en script JMeter ou k6 et lancez-les depuis plusieurs régions à votre pic de trafic attendu. Commencez avec un compte LoadFocus gratuit.
Termes associés
Outils LoadFocus connexes
Mettez ce concept en pratique avec LoadFocus, la plateforme même qui propulse tout ce que vous venez de lire.