Références
- ./references/react-19.md -- SDK +54: Changements React 19 (useContext → use, Context.Provider → Context, suppression de forwardRef)
- ./references/new-architecture.md -- SDK +53: Guide de migration de la nouvelle architecture
- ./references/react-compiler.md -- SDK +54: Guide de configuration et migration du compilateur React
- ./references/native-tabs.md -- SDK +55: Changements des onglets natifs (Icon/Label/Badge maintenant accessibles via NativeTabs.Trigger.*)
- ./references/expo-av-to-audio.md -- SDK +55: Migrer la lecture et l'enregistrement audio de expo-av vers expo-audio
- ./references/expo-av-to-video.md -- SDK +55: Migrer la lecture vidéo de expo-av vers expo-video
- ./references/react-navigation-to-expo-router.md -- SDK +56: Migrer les imports
@react-navigation/*vers les points d'entréeexpo-router(codemod + mappage manuel)
Versions bêta/aperçu
Les versions bêta utilisent le suffixe .preview (par exemple, 55.0.0-preview.2), publiées sous le tag @next.
Vérifiez si la dernière version est bêta : https://exp.host/--/api/v2/versions (cherchez -preview dans expoVersion)
npx expo install expo@next --fix # installer la bêta
Processus de mise à jour étape par étape
- Mettre à jour Expo et les dépendances
npx expo install expo@latest
npx expo install --fix
-
Exécuter les diagnostiques :
npx expo-doctor -
Effacer les caches et réinstaller
npx expo export -p ios --clear
rm -rf node_modules .expo
watchman watch-del-all
Liste de contrôle des changements de rupture
- Vérifier les API supprimées dans les notes de version
- Mettre à jour les chemins d'importation des modules déplacés
- Examiner les changements de modules natifs nécessitant une précompilation
- Tester tous les services de caméra, audio et vidéo
- Vérifier que la navigation fonctionne toujours correctement
Précompilation pour les changements natifs
Vérifiez d'abord si les répertoires ios/ et android/ existent dans le projet. Si aucun de ces répertoires n'existe, le projet utilise la génération native continue (CNG) et les projets natifs sont régénérés au moment de la compilation — ignorez cette section et « Effacer les caches pour le workflow bare » entièrement.
Si la mise à niveau nécessite des changements natifs :
npx expo prebuild --clean
Cela régénère les répertoires ios et android. Assurez-vous que le projet n'est pas une application bare workflow avant d'exécuter cette commande.
Effacer les caches pour le workflow bare
Ces étapes s'appliquent uniquement lorsque les répertoires ios/ et/ou android/ existent dans le projet :
- Effacez le cache cocoapods pour iOS :
cd ios && pod install --repo-update - Effacez les données dérivées pour Xcode :
npx expo run:ios --no-build-cache - Effacez le cache Gradle pour Android :
cd android && ./gradlew clean
Maintenance
- Examinez les notes de version pour la version SDK cible sur https://expo.dev/changelog
- Si vous utilisez Expo SDK 54 ou version ultérieure, assurez-vous que react-native-worklets est installé — c'est une exigence pour que react-native-reanimated fonctionne.
- Activez le compilateur React dans SDK 54+ en ajoutant
"experiments": { "reactCompiler": true }à app.json — c'est stable et recommandé - Supprimez sdkVersion de
app.jsonpour laisser Expo le gérer automatiquement - Supprimez les packages implicites de
package.json:@babel/core,babel-preset-expo,expo-constants. - Si babel.config.js ne contient que 'babel-preset-expo', supprimez le fichier
- Si metro.config.js ne contient que les valeurs par défaut expo, supprimez le fichier
Packages obsolètes
| Ancien package | Remplacement |
|---|---|
expo-av |
expo-audio et expo-video |
expo-permissions |
API de permissions de packages individuels |
@expo/vector-icons |
expo-symbols (pour SF Symbols) |
AsyncStorage |
expo-sqlite/localStorage/install |
expo-app-loading |
expo-splash-screen |
| expo-linear-gradient | experimental_backgroundImage + gradients CSS dans View |
Lors de la migration de packages obsolètes, mettez à jour tous les usages de code avant de supprimer l'ancien package. Pour expo-av, consultez les références de migration pour convertir Audio.Sound en useAudioPlayer, Audio.Recording en useAudioRecorder, et les composants Video en VideoView avec useVideoPlayer.
expo.install.exclude
Vérifiez si package.json contient des packages exclus :
{
"expo": { "install": { "exclude": ["react-native-reanimated"] } }
}
Les exclusions sont souvent des contournements qui peuvent ne plus être nécessaires après la mise à niveau. Examinez chacun d'eux.
Suppression des patches
Vérifiez s'il y a des patches obsolètes dans le répertoire patches/. Supprimez-les s'ils ne sont plus nécessaires.
Postcss
autoprefixern'est pas nécessaire dans SDK +53. Supprimez-le des dépendances et vérifiezpostcss.config.jsoupostcss.config.mjspour le supprimer de la liste des plugins.- Utilisez
postcss.config.mjsdans SDK +53.
Metro
Supprimez les options de configuration metro redondantes :
- resolver.unstable_enablePackageExports est activé par défaut dans SDK +53.
experimentalImportSupportest activé par défaut dans SDK +54.EXPO_USE_FAST_RESOLVER=1est supprimé dans SDK +54.- Les extensions cjs et mjs sont prises en charge par défaut dans SDK +50.
- Expo webpack est obsolète, migrez vers Expo Router et Metro web.
Moteur Hermes v1
Depuis SDK 55, les utilisateurs peuvent opter pour l'utilisation du moteur Hermes v1 pour améliorer les performances d'exécution. Cela nécessite de définir useHermesV1: true dans la configuration du plugin expo-build-properties, et peut nécessiter une version spécifique du package npm hermes-compiler. Hermes v1 deviendra la valeur par défaut dans une future version du SDK.
Nouvelle architecture
La nouvelle architecture est activée par défaut, le champ "newArchEnabled": true dans app.json n'est plus nécessaire car c'est la valeur par défaut. Expo Go ne prend en charge que la nouvelle architecture à partir de SDK +53.