Dans cet article, je vous explique toutes les nouveautés majeures d’Expo SDK 54 et comment elles transforment le développement React Native, notamment avec la nouvelle architecture, Reanimated, et les optimisations de build.

Dans cet article :

1. React Native 0.74 → 0.81 : Le Cadre Principal (XCFramework)

Expo SDK 54 introduit React Native 0.81 sous forme de XCFramework précompilé, accélérant considérablement les builds iOS.

Avant (SDK 53 et précédents)

Chaque build compilait React Native depuis la source, ce qui était long, surtout sur EAS Build.

Maintenant (SDK 54)

Le code natif de React Native est fourni sous forme précompilée (XCFramework). C’est comme recevoir un moteur déjà assemblé plutôt que de le construire à chaque fois.

Impact et Solution

  • Avantage : Builds iOS beaucoup plus rapides.
  • Problème : Certaines bibliothèques natives accédant aux sources échouent.
  • Solution : Forcer l’ancienne compilation si nécessaire :
  • // app.json / app.config.js
    {
      "expo": {
        "plugins": [
          [
            "expo-build-properties",
            {
              "ios": {
                "buildReactNativeFromSource": true
              }
            }
          ]
        ]
      }
    }

2. React Native Reanimated v3 → v4 : La Magie des Animations

Reanimated v4 simplifie l’API et améliore les performances par rapport à la v3.

Syntaxe simplifiée des styles animés

Avant :

import Animated, { useSharedValue, useAnimatedStyle } from 'react-native-reanimated';

function MyComponent() {
  const width = useSharedValue(100);

  const animatedStyle = useAnimatedStyle(() => {
    return { width: width.value };
  });

  return <Animated.View style={[animatedStyle, { height: 100, backgroundColor: 'blue' }]} />;
}

Maintenant :

import Animated, { useSharedValue } from 'react-native-reanimated';

function MyComponent() {
  const width = useSharedValue(100);

  return <Animated.View style={() => ({ width: width.value, height: 100, backgroundColor: 'blue' })} />;
}

Gestion automatique des dépendances

V4 analyse automatiquement les dépendances des styles animés, comme React useMemo.

Attention : Si vous utilisez Nativewind, restez sur Reanimated v3 car la v4 n’est pas encore compatible.

3. Android Edge-to-Edge par Défaut

Les applications s’étendent automatiquement sous la barre de navigation et la barre de statut Android.

// app.json
{
  "expo": {
    "android": {
      "navigationBar": {
        "backgroundColor": "#ffffff",
        "barStyle": "dark-content"
      }
    }
  }
}

Votre UI s’intègre parfaitement avec l’OS moderne, sans bibliothèque externe.

4. Gestion des Promesses Non Attrapées

Les erreurs dans les promesses non gérées sont maintenant loggées clairement.

// Avant, silencieux
async function fetchUserData() {
  const response = await fetch('https://api.example.com/user');
  const data = await response.json();
  return data;
}

fetchUserData(); // Erreur silencieuse possible

// Maintenant
// Unhandled Promise Rejection apparait clairement dans les logs

5. Expo File-System : La Réécriture

Le module expo-file-system a été réécrit pour être plus performant.

Nouvelle API (par défaut)

import * as FileSystem from 'expo-file-system';

Ancienne API (Legacy)

import * as FileSystem from 'expo-file-system/legacy';

6. Transition vers la Nouvelle Architecture

SDK 54 est la dernière version à supporter l’ancienne architecture (Fabric et TurboModules désactivés).

Stratégie recommandée

  1. Mettre à jour vers SDK 54 sur l’ancienne architecture et tester (expo install expo@~54.0.0).
  2. Activer la Nouvelle Architecture dans app.json :
// app.json
{
  "expo": {
    "newArchEnabled": true
  }
}
  1. Mettre à jour Reanimated si nécessaire.

Résumé pratique pour l’upgrade

  • Lire le CHANGELOG d’Expo.
  • Créer un Development Build SDK 54.
  • Tester Edge-to-Edge sur Android.
  • Vérifier les promesses non attrapées.
  • Suivre le guide de migration Reanimated si utilisé.

Conclusion

Expo SDK 54 prépare le terrain pour la nouvelle architecture React Native tout en optimisant les builds et les performances. Une mise à jour stratégique qui nécessite tests et méthodologie, mais qui apporte un gain considérable sur le long terme.

Vous avez des questions ou souhaitez mettre à jour votre projet Expo ?

Contactez-moi