Présentation
React Native est un framework open source permettant de créer des applications Android et iOS avec React.
Le développeur décrit l’interface avec des composants React et du JavaScript ou TypeScript, mais le résultat n’est pas une page HTML exécutée dans une WebView. Des composants comme View, Text, Image ou TextInput s’appuient sur les capacités natives des plateformes.
Une grande partie du code applicatif peut ainsi être partagée entre Android et iOS, tout en conservant la possibilité d’écrire du code spécifique à chaque système lorsque leurs comportements ou API diffèrent.
Depuis React Native 0.82, le framework fonctionne exclusivement avec sa New Architecture, fondée notamment sur Fabric pour le rendu et TurboModules pour les intégrations natives.
Le moteur JavaScript Hermes V1 est utilisé par défaut depuis React Native 0.84.
Au 3 octobre 2026, React Native 0.87.1 constitue la dernière version stable. La future branche 0.88 est encore en release candidate.
Fonctionnalités
Composants natifs
React Native fournit différents Core Components servant de base aux interfaces mobiles.
View structure l’interface, Text affiche du texte, Image gère les images et TextInput les saisies utilisateur.
ScrollView, FlatList, SectionList, Pressable et d’autres composants couvrent également plusieurs besoins courants.
Ces composants sont reliés aux vues natives des plateformes plutôt qu’au DOM d’un navigateur.
React, composants et Hooks
React Native utilise le modèle de programmation de React.
Les applications sont composées de composants réutilisables utilisant props, state, context et Hooks.
Les développeurs connaissant React pour le Web retrouvent donc une grande partie des mêmes concepts.
Les éléments visuels diffèrent cependant : il faut utiliser les composants React Native plutôt que les balises HTML.
Layout et styles
React Native possède son propre système de styles inspiré du Web.
Les styles peuvent être définis avec des objets JavaScript ou StyleSheet.create().
La mise en page repose principalement sur Flexbox, avec le moteur Yoga pour calculer la disposition des éléments.
Certaines propriétés ressemblent au CSS, mais React Native ne constitue pas une implémentation complète du langage CSS.
New Architecture
La New Architecture est désormais l’unique architecture de React Native.
Elle remplace l’ancien système historique et repose notamment sur Fabric, TurboModules, JSI et Codegen.
Fabric constitue le système moderne de rendu et améliore l’interopérabilité entre React et les vues des plateformes.
TurboModules modernise de son côté les échanges avec les fonctionnalités natives.
Modules et composants natifs
Une application peut accéder à des fonctionnalités absentes du cœur de React Native en utilisant des bibliothèques communautaires ou son propre code natif.
Les Turbo Native Modules exposent à JavaScript des fonctionnalités écrites notamment en Kotlin, Java, Swift, Objective-C ou C++.
Les Fabric Native Components permettent d’intégrer des vues natives personnalisées dans l’arborescence React.
Codegen génère une partie des interfaces nécessaires entre les deux environnements.
Hermes
Hermes est le moteur JavaScript optimisé pour React Native.
React Native distribue une version de Hermes testée avec chaque version du framework afin de limiter les problèmes de compatibilité.
Depuis la version 0.84, Hermes V1 est utilisé par défaut.
Le moteur exécute le JavaScript de l’application sur Android et iOS sans dépendre du moteur d’un navigateur Web.
Metro
Metro est le bundler utilisé par React Native.
Il analyse les modules JavaScript et TypeScript, transforme le code et produit le bundle destiné à l’application.
React Native 0.87 utilise Metro 0.87, avec notamment des améliorations sur la génération des source maps et la consommation mémoire.
Le développement bénéficie également de Fast Refresh pour afficher rapidement les changements de code.
TypeScript
React Native prend directement en charge TypeScript.
Depuis React Native 0.87, la Strict TypeScript API constitue l’API JavaScript publique par défaut.
Les définitions de types sont générées directement depuis le code source du framework afin de mieux rester synchronisées avec son API réelle.
Les anciens imports profonds vers des fichiers internes de React Native ne font plus partie de l’API publique moderne.
Code spécifique aux plateformes
Le partage de code n’empêche pas d’adapter certains comportements à Android ou iOS.
L’API Platform permet de détecter la plateforme et d’utiliser une implémentation spécifique.
Il est également possible de créer des fichiers comme Component.android.tsx et Component.ios.tsx.
Une application peut ainsi mutualiser sa logique générale tout en conservant des interfaces ou intégrations natives propres à chaque système.
React Native DevTools
React Native DevTools fournit un environnement de débogage dédié.
Il permet notamment d’inspecter composants React, props, state, performances et activité JavaScript.
Le framework propose aussi LogBox pour afficher les erreurs et avertissements pendant le développement.
Ces outils remplacent progressivement plusieurs workflows historiques reposant sur des outils externes ou le débogage via Chrome.
Expo
React Native ne définit pas lui-même une solution complète pour navigation, builds, distribution ou accès à toutes les API des appareils.
Pour une nouvelle application, l’équipe React Native recommande désormais d’utiliser un framework React Native, en particulier Expo.
Expo ajoute notamment routing, bibliothèques natives, outils de développement et gestion simplifiée des builds.
React Native peut néanmoins toujours être utilisé directement avec la Community CLI lorsque le projet possède des contraintes particulières ou doit s’intégrer profondément à une application native existante.
Intégration dans une application existante
React Native ne nécessite pas de reconstruire intégralement une application mobile existante.
Il peut être intégré progressivement à un projet Android ou iOS déjà développé en natif.
Certaines vues ou fonctionnalités peuvent ainsi être réalisées avec React Native tandis que le reste de l’application continue d’utiliser Kotlin, Java, Swift ou Objective-C.
Cette approche est utile pour les projets qui souhaitent adopter le framework progressivement.
Cas d’usage
Créer une application Android et iOS
React Native permet de partager une grande partie de l’interface et de la logique métier entre les deux plateformes.
Les différences peuvent être isolées dans des fichiers ou composants spécifiques lorsque cela est nécessaire.
Développer avec une équipe React
Une équipe possédant déjà une expérience de React et TypeScript peut réutiliser une grande partie de ses connaissances pour le développement mobile.
Les composants, Hooks et modèles de données restent proches de ceux utilisés sur le Web.
Construire une application avec Expo
React Native associé à Expo convient aux projets souhaitant disposer rapidement de routing, modules natifs, environnement de développement et outils de build.
Le code natif personnalisé reste possible lorsque les besoins dépassent les modules fournis.
Accéder aux API natives
React Native peut communiquer avec les fonctions propres aux appareils, directement ou via des bibliothèques.
Caméra, stockage, notifications, capteurs ou autres fonctions peuvent ainsi être intégrés dans l’application.
Moderniser progressivement une application native
Une entreprise peut intégrer React Native à certaines parties d’une application existante sans devoir remplacer immédiatement tout le projet.
Cette approche permet une migration ou une adoption par étapes.
Conclusion
React Native transpose le modèle de programmation de React au développement d’applications natives Android et iOS.
Il permet de partager une grande partie du code tout en conservant un accès aux API et composants spécifiques aux plateformes.
La New Architecture, Fabric, TurboModules et Hermes ont profondément modernisé son fonctionnement interne, tandis que TypeScript et Metro structurent le workflow de développement.
React Native n’efface toutefois pas complètement les différences entre Android et iOS. Les builds, certaines API, les permissions et plusieurs comportements restent liés aux plateformes natives.
L’écosystème recommande désormais Expo pour démarrer la majorité des nouvelles applications, tandis que l’utilisation directe de React Native reste adaptée aux projets nécessitant davantage de contrôle natif.
Pour créer des applications mobiles multiplateformes avec React tout en conservant l’accès aux capacités natives, React Native constitue l’une des principales solutions de l’écosystème JavaScript.
Points d’attention
-
React Native 0.87.1 est la dernière version stable au 3 octobre 2026.
-
React Native 0.88 est encore en release candidate. Sa version stable n’est donc pas utilisée comme référence dans cette fiche.
-
React Native est gratuit et open source sous licence MIT, y compris pour un usage commercial.
-
Le projet est désormais placé sous la responsabilité de la React Foundation. Meta reste un contributeur important de l’écosystème.
-
Depuis React Native 0.82, la New Architecture est obligatoire. L’ancienne Legacy Architecture n’est plus disponible comme mode d’exécution.
-
Hermes V1 est le moteur JavaScript par défaut depuis React Native 0.84.
-
React Native 0.87 utilise la Strict TypeScript API par défaut. Certains anciens imports internes ou types historiques nécessitent une migration.
-
React Native 0.87 nécessite Node.js 22.13 ou supérieur. La chaîne Android utilise également Android Gradle Plugin 9 et Kotlin 2.0 ou supérieur.
-
Swift Package Manager est encore expérimental dans React Native 0.87. CocoaPods reste la voie prise en charge par défaut pour les dépendances iOS.
-
Construire une application iOS localement nécessite macOS et Xcode. Le développement Android peut être réalisé depuis Windows, macOS ou Linux.
-
React Native ne signifie pas que 100 % du code sera nécessairement identique entre Android et iOS. Interfaces, permissions ou API spécifiques peuvent nécessiter des adaptations.
-
L’équipe React Native recommande aujourd’hui un framework comme Expo pour les nouvelles applications. L’utilisation directe avec la Community CLI reste supportée lorsque le projet nécessite davantage de contrôle.
-
Les bibliothèques communautaires doivent être compatibles avec la New Architecture. Les anciennes bibliothèques reposant sur les API natives historiques peuvent nécessiter une mise à jour ou un remplacement.