Expo - Expo (Framework Universel pour React Native)

Par Charlie Cheever & James Ide · 2015 · Sources officielles vérifiées

Mobile & Cross-PlatformDonnée vérifiée & sourcéeMobileReact NativeiOSAndroidEASTypeScript

En résumé

Framework open-source et suite d'outils cloud pour concevoir, compiler et déployer des applications natives iOS, Android et Web avec React Native et TypeScript.

1. Définition détaillée & Contexte d'émergence

Expo est devenu le framework officiel recommandé par l'équipe Meta pour développer avec React Native. Grâce à la Continuous Native Generation (CNG via `npx expo prebuild`), Expo permet de maintenir un code 100% JavaScript/TypeScript sans jamais commiter de dossiers natifs `ios/` ou `android/` fragiles. La suite EAS (Expo Application Services) fournit le cloud build (EAS Build), la soumission automatique sur les stores (EAS Submit) et le déploiement de correctifs over-the-air sans repasser par la validation des stores (EAS Update).

Pourquoi ce concept a été créé : Créé pour simplifier le développement mobile en éliminant la complexité de configuration native d'Xcode et Android Studio pour la majorité des projets React Native.

2. Piliers de l’Écosystème Expo Moderne

L'époque de l'ancien 'Managed Workflow fermé' est révolue : Expo moderne supporte n'importe quelle bibliothèque native grâce aux Config Plugins.

1. Config Plugins & Prebuild (CNG)

Les modifications de code natif (permissions, Podfiles, manifests Android) sont appliquées sous forme de scripts automatisés lors de la commande `expo prebuild`, garantissant des montées de version fiables.

2. Expo Router

Système de routage universel par fichiers (similaire à Next.js) gérant nativement les piles de navigation (Stack), les onglets (Tabs), et les liens profonds (Deep Linking) sur iOS, Android et Web.

3. EAS (Expo Application Services)

Infrastructure cloud conçue pour compiler des binaires de production (.ipa, .aab) sans posséder de Mac local, gérer les certificats Apple/Google et envoyer des mises à jour OTA.

3. Caractéristiques fondamentales

  • Expo Go : test instantané sur smartphone physique via QR code sans compilation native.
  • Expo Router : navigation native file-based avec typage strict des routes.
  • EAS Update : déploiement immédiat de mises à jour de code JS sans repasser par la revue des stores.
  • Modules natifs de pointe : caméra, localisation, capteurs, notifications push, audio, haptics.
  • Support complet de l’architecture moderne de React Native (Hermes, Fabric, TurboModules).

4. Exemple concret d'implémentation

Page Expo Router avec composants natifs React Native typés

app/(tabs)/index.tsxtypescript
import { View, Text, StyleSheet, Pressable } from 'react-native';
import * as Haptics from 'expo-haptics';
import { useRouter } from 'expo-router';

export default function HomeScreen() {
  const router = useRouter();

  const handlePress = async () => {
    // Retour haptique natif sur iPhone et Android
    await Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Medium);
    router.push('/details');
  };

  return (
    <View style={styles.container}>
      <Text style={styles.title}>Bienvenue sur Coderoe Mobile</Text>
      <Pressable style={styles.button} onPress={handlePress}>
        <Text style={styles.buttonText}>Voir les détails</Text>
      </Pressable>
    </View>
  );
}

const styles = StyleSheet.create({
  container: { flex: 1, alignItems: 'center', justifyContent: 'center', backgroundColor: '#fff' },
  title: { fontSize: 22, fontWeight: '700', marginBottom: 20 },
  button: { backgroundColor: '#000', paddingHorizontal: 24, paddingVertical: 12, borderRadius: 12 },
  buttonText: { color: '#fff', fontSize: 16, fontWeight: '600' },
});

5. Avantages et limites techniques

Points forts

  • ✓Vitesse de développement inégalée pour expédier des applications mobiles.
  • ✓Plus besoin de Mac pour compiler des fichiers .ipa iOS grâce à EAS Build.
  • ✓Mises à jour over-the-air (OTA) pour corriger des bugs en production en quelques minutes.
  • ✓Recommandé officiellement par la documentation Meta React Native.

Points de vigilance

  • ⚠Taille initiale du binaire légèrement supérieure à une application Swift/Kotlin pure.
  • ⚠Nécessite la configuration d’un Config Plugin pour certaines bibliothèques natives très exotiques.

6. Recommandations : Quand l'utiliser ?

Idéal pour :

  • Tout nouveau projet mobile React Native en 2025/2026.
  • Équipes souhaitant maximiser le partage de code entre iOS, Android et le Web.

À éviter pour :

  • Applications requérant des moteurs de rendu graphiques 3D très lourds (ex: jeux AAA développés avec Unity/Unreal).
  • Projets natifs existants avec 95% de code Swift/Kotlin où l’intégration d’un runtime JS n’est pas souhaitée.

7. Comparatif : Expo vs React Native CLI ("Bare Workflow" classique)

Expo moderne encapsule React Native avec un outillage supérieur sans bloquer l’accès au code natif.

CritèreExpoReact Native CLI ("Bare Workflow" classique)
Gestion du natifCode natif généré automatiquement à la demande (Continuous Native Generation).Dossiers `ios/` et `android/` gérés manuellement dans Git avec risques de corruption.
CompilationLocalement ou dans le cloud via EAS Build (aucun Mac requis pour iOS).Mac et Xcode obligatoires en local pour compiler pour iPhone.
Mises à jour OTAEAS Update intégré nativement avec gestion des canaux et rollbacks.Nécessite la mise en place d’outils tiers comme CodePush.

8. Sources officielles vérifiées

Données techniques vérifiées auprès des documentations officielles, des RFCs et des spécifications standards.

Articles & Tutoriels associés sur Coderoe

Tous les articles →