Par Charlie Cheever & James Ide · 2015 · Sources officielles vérifiées
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.
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).
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.
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.
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.
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.
Page Expo Router avec composants natifs React Native typés
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' },
});Expo moderne encapsule React Native avec un outillage supérieur sans bloquer l’accès au code natif.
| Critère | Expo | React Native CLI ("Bare Workflow" classique) |
|---|---|---|
| Gestion du natif | Code natif généré automatiquement à la demande (Continuous Native Generation). | Dossiers `ios/` et `android/` gérés manuellement dans Git avec risques de corruption. |
| Compilation | Localement ou dans le cloud via EAS Build (aucun Mac requis pour iOS). | Mac et Xcode obligatoires en local pour compiler pour iPhone. |
| Mises à jour OTA | EAS Update intégré nativement avec gestion des canaux et rollbacks. | Nécessite la mise en place d’outils tiers comme CodePush. |
Données techniques vérifiées auprès des documentations officielles, des RFCs et des spécifications standards.

Par coderoe · 5 min de lecture

Par coderoe · 5 min de lecture

Par coderoe · 5 min de lecture