Dans une vraie app
Un module Nitro se reconnaît à ses fichiers *.nitro.ts (les specs), à un nitro.json à la racine et à la commande npx nitrogen qui génère le code natif. Le projet consommateur installe react-native-nitro-modules comme dépendance, et chaque librairie Nitro en dépend aussi. Côté JavaScript, un Hybrid Object s’instancie avec NitroModules.createHybridObject<Type>("Nom"), et son cycle de vie est lié au ramasse-miettes de l’app.
Le choix se fait sur le profil d’appel. Pour une API appelée quelques fois par écran, l’Expo Modules API ou un Turbo Module font le même travail avec un outillage plus répandu. Nitro prend l’avantage quand les appels sont synchrones et fréquents (stockage clé-valeur lu à chaque rendu, traitement d’images, audio), ou quand le natif doit tenir des objets avec état et les renvoyer à JavaScript sans sérialisation. Le prix : une chaîne d’outils plus exigeante (versions d’Xcode et du NDK), du Swift et du Kotlin modernes obligatoires, et une base de contributeurs plus petite que celle d’Expo.
En audit, je regarde si les versions minimales sont respectées dans expo-build-properties ou dans le Podfile et build.gradle, si nitrogen est bien exécuté dans les scripts de build (ou si les fichiers générés sont committés, ce qui est acceptable), et si une librairie Nitro et une librairie Turbo ne se disputent pas la même ressource native.
Termes liés
Turbo Modules
Les modules natifs de la New Architecture : une spec TypeScript, du code généré par Codegen, et un chargement à la demande via JSI.
Expo Modules API
L’API d’Expo pour écrire des modules et vues natifs en Swift et Kotlin avec un DSL commun, sans Objective-C ni boilerplate de bridge.
JSI (JavaScript Interface)
L’API C++ qui laisse JavaScript tenir des références directes sur des objets natifs, sans sérialisation : la fondation de la New Architecture.
Codegen
L’outil de build de React Native qui génère le code natif de liaison (C++, Java, Objective-C++) à partir de specs TypeScript ou Flow.
New Architecture
La réécriture du cœur de React Native (Fabric, Turbo Modules, JSI), activée par défaut depuis la 0.76 et seule architecture depuis la 0.82.