Architecture, Expo vs CLI, et création de votre premier projet mobile cross-platform.
React Native fonctionne grâce à deux threads principaux qui communiquent via la couche JSI (JavaScript Interface). Depuis React Native 0.71+, la New Architecture est activée par défaut, apportant des gains de performance significatifs.
| Thread | Rôle | Technologies |
|---|---|---|
| JS Thread | Exécute votre code JavaScript/TypeScript, gère la logique métier | Hermes Engine (défaut depuis RN 0.70) |
| Native Thread | Rendu des composants natifs iOS/Android, accès aux APIs système | Objective-C/Swift (iOS), Kotlin/Java (Android) |
| UI Thread | Animation 60fps via Fabric Renderer | C++ partagé iOS/Android |
Hermes est le moteur JavaScript optimisé pour React Native, développé par Meta. Depuis React Native 0.70, il est activé par défaut. Ses avantages :
La nouvelle architecture, stable depuis 2024, remplace l'ancien bridge asynchrone par trois innovations :
C'est la première question que se pose tout développeur débutant React Native. Voici la comparaison exhaustive :
| Critère | Expo Managed | Expo Bare | React Native CLI |
|---|---|---|---|
| Setup | 5 minutes | 15 minutes | 30-60 minutes |
| Code natif | Interdit | Possible | Total contrôle |
| OTA Updates | Expo Updates | Expo Updates | CodePush/Expo |
| App Store | EAS Build | EAS Build / manuel | Manuel / Fastlane |
| Taille app | ~30 MB (inclut SDK) | ~15-20 MB | ~10-15 MB |
| Recommandé pour | Prototypes, startups | Apps pro avec natif | Apps complexes, librairies |
Selon la documentation officielle Expo : « Pour 95% des cas d'usage, Expo Managed Workflow est suffisant. Utilisez React Native CLI uniquement si vous avez besoin d'intégrer des SDK natifs non disponibles dans Expo. »
Source : https://docs.expo.dev/workflow/overview/ (consultée le 2026-05-27).
Sur macOS/Linux, installez nvm puis Node.js LTS :
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh | bash
nvm install 20 && nvm use 20
Installer Expo CLI et EAS CLI :
npm install -g expo-cli @expo/cli eas-cli
ANDROID_HOME dans votre profil shellxcode-select --installsudo gem install cocoapodsCréez un nouveau projet Expo avec TypeScript :
npx create-expo-app MonPremierApp --template blank-typescript
Lancez en mode développement : npx expo start
L'interface Expo Metro Bundler s'ouvre dans le navigateur. Appuyez sur a pour Android, i pour iOS, ou scannez le QR code avec Expo Go.
Un projet Expo/React Native est organisé comme suit :
app/ — Routes (Expo Router) ou screens de navigationcomponents/ — Composants React réutilisablesconstants/ — Couleurs, thèmes, constantes de configurationhooks/ — Custom hooks React (useAuth, useTheme, etc.)assets/ — Images, fonts, icônes statiquesapp.json — Configuration Expo (nom, icône, splash screen, permissions)tsconfig.json — Configuration TypeScriptUn composant React Native de base avec état et interaction :
import React, { useState } from 'react';
import { View, Text, TouchableOpacity, StyleSheet } from 'react-native';
Les composants primitifs RN remplacent les balises HTML : View pour div, Text pour p/span, TouchableOpacity pour button. Les événements utilisent onPress et non onClick.
npx expo start --port 8082~/.bashrcrm -rf node_modules && npx expo start --clearTextonPress, pas onClickstyle={StyleSheet...}, pas classNameapp/ (routes), components/ (UI), hooks/ (logique)Text, tout layout dans ViewStyleSheet.create(), pas de CSS classiqueInscrivez-vous pour accéder aux 8 autres leçons + le quiz final.
Créer mon compteChoisis quels cookies tu acceptes — modifiable à tout moment.