Dans une vraie app
Concrètement, en 0.87 et 0.88 l’activation se fait depuis ios/ avec npx react-native spm --deintegrate, qui retire CocoaPods et ajoute les paquets ; npx react-native spm deinit revient en arrière. Après un clone frais ou en CI, npx react-native spm joue le rôle de pod install, mais il ne se relance pas à chaque changement de dépendance : le projet détecte le changement et refait l’autolinking. Une librairie doit fournir un Package.swift ; npx react-native spm scaffold en génère un depuis le podspec pour celles qui n’en ont pas. La doc est explicite : ne pas l’utiliser en production pour l’instant, commandes et layout générés peuvent encore changer.
Le changement visible pour les mainteneurs de librairies est l’arrivée de deux XCFrameworks d’en-têtes, ReactNativeHeaders et ReactNativeDependenciesHeaders, et la règle d’import #import <React/RCTAppDelegate.h> au lieu de la forme nue. Un podspec qui s’appuyait sur des chemins d’en-têtes internes doit être revu. Côté Expo, le SDK 58 a découpé ses sources iOS en cibles SwiftPM et propose un plugin d’autolinking en preview, mais CocoaPods reste le chemin par défaut et supporté.
Pour un projet d’app, ma recommandation en octobre 2026 : rester sur CocoaPods en production, tester SwiftPM sur une branche pour lister les librairies sans Package.swift, et remonter les blocages sur la RFC #0994. L’équipe vise la 0.89 pour en faire le défaut ; pas de bascule en production avant.
Termes liés
CocoaPods
Le gestionnaire de dépendances iOS historique de React Native (Podfile, pod install, .xcworkspace), en maintenance et en cours de remplacement par SwiftPM.
XCFramework
Le format d’Apple pour livrer un framework binaire multi-plateformes (device, simulateur, macOS) en un bundle ; React Native y livre son cœur précompilé.
Prebuilt (React Native précompilé)
Le cœur de React Native livré en binaires précompilés (XCFrameworks iOS, AAR Android) téléchargés au build, au lieu d’être recompilé depuis les sources.
Autolinking
Le mécanisme qui découvre les librairies natives dans node_modules et les ajoute au Podfile et à Gradle sans édition manuelle.