Installation et Configuration
Créons votre premier projet React Native avec Expo. Si vous avez déjà installé Node.js pour R4A10, vous êtes presque prêt.
Prérequis
Node.js et npm
Vous avez déjà installé Node.js et npm pour le cours R4A10. Vérifiez que tout fonctionne :
node --version # v18 ou supérieur
npm --version # v9 ou supérieur
Node.js requis
Si Node.js n'est pas installé, suivez les instructions de la Séance 2 R4A10. Sur les postes de l'IUT, Node.js est déjà disponible.
Application Expo Go sur votre téléphone
Installez Expo Go sur votre smartphone :
- Android : Expo Go sur Google Play
- iOS : Expo Go sur l'App Store
Même réseau Wi-Fi
Votre ordinateur et votre téléphone doivent être connectés au même réseau Wi-Fi pour que Expo Go puisse charger votre application. À l'IUT, utilisez le réseau Wi-Fi étudiant sur les deux appareils.
Créer un projet
La commande
npx create-expo-app@latest mon-app-mobile
Cette commande crée un nouveau projet Expo avec la configuration par défaut. Elle installe automatiquement les dépendances nécessaires.
Comparaison avec Vite
En R4A10, vous utilisiez npm create vite@latest. Ici, c'est npx create-expo-app@latest. Le principe est le même : un outil qui génère la structure du projet et installe les dépendances.
Lancer le projet
cd mon-app-mobile
npx expo start
Le terminal affiche un QR code. Scannez-le avec votre téléphone :
- Android : ouvrez Expo Go et scannez le QR code
- iOS : ouvrez l'application Appareil photo et scannez le QR code (Expo Go s'ouvre automatiquement)
Si le QR code ne fonctionne pas
Plusieurs causes possibles :
- Réseau différent : vérifiez que le PC et le téléphone sont sur le même Wi-Fi
- Pare-feu : le port 8081 peut être bloqué. Essayez
npx expo start --tunnel - Expo Go obsolète : mettez à jour l'application sur votre téléphone
La commande --tunnel utilise un tunnel internet (plus lent mais fonctionne sur des réseaux différents) :
npx expo start --tunnel
Alternatives sans téléphone
Si vous n'avez pas de téléphone disponible :
# Lancer dans un émulateur Android (nécessite Android Studio)
npx expo start --android
# Lancer dans le simulateur iOS (macOS uniquement, nécessite Xcode)
npx expo start --ios
# Lancer dans le navigateur web (limité mais utile pour un aperçu rapide)
npx expo start --web
Structure du projet
Après la création, votre projet contient :
mon-app-mobile/
├── app/ # Écrans de l'application (Expo Router)
│ ├── (tabs)/ # Groupe de navigation par onglets
│ │ ├── index.tsx # Écran d'accueil (onglet 1)
│ │ ├── explore.tsx # Écran Explorer (onglet 2)
│ │ └── _layout.tsx # Configuration des onglets
│ ├── _layout.tsx # Layout racine de l'application
│ └── +not-found.tsx # Page 404
├── assets/ # Images, polices, fichiers statiques
│ ├── images/
│ └── fonts/
├── components/ # Composants réutilisables
├── constants/ # Constantes (couleurs, etc.)
├── hooks/ # Hooks personnalisés
├── app.json # Configuration de l'application
├── package.json # Dépendances et scripts
└── tsconfig.json # Configuration TypeScript
Les dossiers importants
app/ : contient les écrans de votre application. Chaque fichier correspond à une route (comme le routing par fichiers de Next.js). C'est ici que vous passerez le plus de temps.
components/ : contient les composants réutilisables (boutons, cartes, etc.). Même logique qu'en React web.
assets/ : contient les fichiers statiques (images, polices). Les images sont importées différemment qu'en web.
Dans un projet Expo, où se trouvent les écrans de l'application ?
Le fichier app.json
Le fichier app.json contient la configuration de votre application :
{
"expo": {
"name": "mon-app-mobile",
"slug": "mon-app-mobile",
"version": "1.0.0",
"orientation": "portrait",
"icon": "./assets/images/icon.png",
"scheme": "myapp",
"userInterfaceStyle": "automatic",
"newArchEnabled": true,
"ios": {
"supportsTablet": true
},
"android": {
"adaptiveIcon": {
"foregroundImage": "./assets/images/adaptive-icon.png",
"backgroundColor": "#ffffff"
}
},
"plugins": [
"expo-router"
]
}
}
Propriétés principales
- name : nom affiché de l'application
- slug : identifiant URL pour Expo (pas d'espaces, pas de majuscules)
- version : numéro de version de l'application
- orientation :
"portrait","landscape"ou"default"(les deux) - icon : icône de l'application sur l'écran d'accueil
- ios / android : configuration spécifique à chaque plateforme
- plugins : extensions Expo (router, caméra, etc.)
Différence avec Vite
En React web avec Vite, la configuration se fait dans vite.config.ts. En Expo, c'est app.json (ou app.config.js pour une configuration dynamique). Le fichier app.json configure aussi des éléments spécifiques au mobile : icône, orientation, permissions, splash screen.
Votre premier écran
Ouvrez le fichier app/(tabs)/index.tsx et remplacez son contenu :
import { View, Text, StyleSheet } from 'react-native';
export default function HomeScreen() {
return (
<View style={styles.container}>
<Text style={styles.title}>Bienvenue dans R4A11 !</Text>
<Text style={styles.subtitle}>Mon premier écran React Native</Text>
</View>
);
}
const styles = StyleSheet.create({
container: {
flex: 1,
justifyContent: 'center',
alignItems: 'center',
backgroundColor: '#f5f5f5',
},
title: {
fontSize: 24,
fontWeight: 'bold',
marginBottom: 8,
},
subtitle: {
fontSize: 16,
color: '#666',
},
});
Sauvegardez le fichier. Expo Go recharge automatiquement l'application sur votre téléphone (Fast Refresh), comme le HMR de Vite dans le navigateur.
Quel est l'équivalent du HMR de Vite dans Expo ?
Commandes utiles
# Démarrer le serveur de développement
npx expo start
# Démarrer avec un tunnel (si le Wi-Fi pose problème)
npx expo start --tunnel
# Effacer le cache (si l'app ne se met pas à jour)
npx expo start --clear
# Installer une dépendance compatible Expo
npx expo install nom-du-package
# Vérifier les dépendances
npx expo doctor
npx expo install vs npm install
Utilisez npx expo install au lieu de npm install pour les packages React Native. Expo sélectionne automatiquement la version compatible avec votre version du SDK Expo. Avec npm install, vous risquez d'installer une version incompatible.
# Correct : Expo choisit la bonne version
npx expo install react-native-maps
# Risqué : peut installer une version incompatible
npm install react-native-maps
Pourquoi utiliser npx expo install au lieu de npm install pour les packages React Native ?
À retenir
Comprendre, pas mémoriser
Configuration :
npx create-expo-app@latestcrée un projet (équivalent denpm create vite@latest)npx expo startlance le serveur de développement- Scannez le QR code avec Expo Go pour voir l'application sur votre téléphone
Structure :
app/contient les écrans (routing par fichiers)components/contient les composants réutilisablesapp.jsonconfigure l'application (nom, icône, orientation)
Outils :
- Fast Refresh = rechargement automatique (comme le HMR de Vite)
npx expo install= installation de dépendances compatibles