Le développement mobile continue de prendre de plus en plus d’importance, devant l’enjeu stratégique que proposer une application représente. Mais choisir la bonne technologie pour créer cette application n’est pas toujours simple ; elles sont en effet nombreuses. Parmi les plus utilisées : React Native et Flutter, deux technos dites hybrides, permettant de développer à la fois sur Android et iOS.
Vous hésitez entre ces deux technologies de développement mobile ? Nous allons les comparer dans cet article !
Les 3 types d’applications mobile
Pour comparer les deux technologies que sont Flutter et React Native, il faut comprendre comment elles fonctionnent ; car elles appartiennent à la même catégorie d’applications mobile – techniquement parlant. Faisons le point sur ces différentes catégories, qui sont au nombre de trois :
- le développement natif, qui sépare le développement iOS et Android, en utilisant des technologies spécifiques à chaque plateforme (habituellement Swift pour iOS et Java/Kotlin pour Android) ;
- les technologies hybrides, ou cross-platforms, qui permettent de développer une appllication avec une seule base de code pour les deux systèmes d’exploitation mobiles ;
- la Progressive Web App (ou PWA), sorte de site web adapté au mobile, techno à laquelle nous avons d’ailleurs dédié un article complet.
Flutter et React Native font donc partie de la deuxième catégorie, celle des applications hybrides. Grâce à cela, un seul développeur freelance peut à la fois développer une application iOS et Android. Au final, cela réduit – en général – grandement les coûts de développement et de maintenance.
Flutter et React Native, le point sur ces technos
Avant de comparer les avantages et inconvénients qu’offrent ces deux technologies, il est important d’en savoir plus sur comment elles fonctionnent, et leurs origines.
React Native
React Native est un framework open source développé par Facebook, dont la première version remonte à 2015.
Il utilise le langage JavaScript, historiquement utilisé lors du développement front-end d’un site web. Ce langage s’est peu à peu étendu au développement back-end, mobile et logiciel.
React Native, comme son nom l’indique, reprend les concepts de la librairie React, elle-même créée et maintenue par Facebook. Bien que ces deux technologies comportent certaines différences, leur proximité est un avantage pour les développeurs utilisant la techno web : le passage au développement mobile sera plus facile.
Techniquement parlant, React Native utilise ce qu’on appelle des bridges pour communiquer avec des librairies natives et avoir accès aux fonctionnalités des smartphones. Ces librairies sont, elles, écrites avec les langages propres à chaque OS.
De par son créateur et mainteneur (Facebook) et son fonctionnement similaire à React, React Native a connu un rapide succès et est aujourd’hui une des technos mobiles les plus utilisées.
Flutter
Flutter, technologie à laquelle nous avons dédié un article complet, est un framework créée par Google, dont la première version a été lancée fin 2018. Ce qui en fait une techno bien plus récente que React Native.
Ce framework utilise le langage Dart, lui aussi développé par Google, relativement peu utilisé par ailleurs.
Basé sur une approche de développement centré sur l’interface utilisateur (ou « widgets only »), le framework permet un contrôle précis de l’UI.
Flutter est également apprécié pour sa capacité de hot reload, permettant un rechargement instantané de l’application lors de la phase de développement, lorsque des modifications sont effectuées dans le code. Cette feature permet un gain de temps certain lors du développement du produit.
Flutter, techno encore peu utilisée à l’heure actuelle, connaît toutefois un gain de popularité croissant. Elle mérite donc sa place de concurrent direct à React Native.
React Native et Flutter, le comparatif
Si React Native et Flutter partagent plusieurs avantages, comme le fait de n’utiliser qu’une seule base de code pour les plateformes iOS et Android, chaque techno possède ses propres avantages et inconvénients. Faisons-en le tour.
Flutter : ses avantages et inconvénients
Les avantages
Flutter possède de nombreux avantages, qui expliquent sa croissance régulière, malgré son arrivée tardive sur le marché.
Parmi ceux-ci, nous l’avons déjà cité, se trouvent son développement centré sur l’interface, qui permet une personnalisation poussée de l’UI. Nous l’avons également cité, un des avantages principaux de Flutter est sa fonctionnalité de hot-reload, qui fait gagner un temps précieux lors du développement.
Mais Flutter est également réputé pour créer des applications mobile très performantes, souvent plus que la concurrence. Cela grâce à l’utilisation de Dart et à la forte intégration du natif à Flutter.
Les inconvénients
Parmi les inconvénients de la techno made in Google, citons son principal : l’utilisation de Dart. Ce langage de programmation, assez peu utilisé, nécessite un apprentissage de la part des développeurs. Ceux qui viennent de langages plus simples, tels que le JavaScript ou Python, feront en effet face à une courbe d’apprentissage assez rude.
Cette utilisation de Dart, ainsi que la jeunesse de la technologie, en font son deuxième inconvénient : sa communauté sera plus petite que celle de React Native. Il sera donc potentiellement plus difficile de trouver de l’aide en cas de problème.
Enfin, dernier défaut que nous allons citer ici : la taille des applications. Flutter génère en effet des fichiers d’installation plus volumineux que ses concurrents. Ce qui, d’un point de vue mobilité, n’est pas idéal.
React Native : ses avantages et inconvénients
Les avantages
L’avantage principal de React Native est dans son nom : c’est un framework basé sur React, et donc sur JavaScript. JavaScript étant un des langages les plus populaires, et React la librairie la plus utilisée pour le développement front-end, sa courbe d’apprentissage est plutôt faible. De cette manière, il est relativement simple pour tout développeur web de se mettre au développement mobile.
Cet avantage en apporte un autre : un large écosystème. En effet, la popularité de la technologie crée automatiquement une grosse communauté, et avec elle un nombre importants de bibliothèques et composants prêts à l’emploi. De cette façon, le développement avec React Native est simplifié, et il sera aisé de trouver de l’aide en ligne.
Les inconvénients
React Native a pour principal inconvénient son manque de performances, du moins comparé à Flutter. Contrairement à ce dernier, React Native se base en effet sur un moteur JavaScript et des bridges. JavaScript n’étant pas un langage réputé pour être rapide, une application React Native souffrira de performances légèrement plus faibles. Cependant, les smartphones devenant de plus en plus puissants, cette éventuelle lenteur est à relativiser. Pour des applications n’ayant pas de gros besoins en performances, la différence entre React Native et Flutter sera imperceptible aux yeux de l’utilisateur final.
Second défaut de React Native que nous allons citer ici : sa dépendance aux modules tiers. Bien que Facebook ait développé un ensemble de bibliothèques, sorte de plugins pour React Native, il est souvent obligatoire d’utiliser des librairies externes. Or, ces librairies ne sont pas toujours maintenues, et ont parfois des failles de sécurité.
Conclusion : quelle techno choisir ?
Si nous avons comparé les deux technologies mobiles que sont React Native et Flutter, nous n’avons pas répondu à la question : laquelle choisir ?
Le choix d’une stack techno dépend de plusieurs critères, certains objectifs, d’autres plus subjectifs.
Si vous avez un fort besoin en performances ou avez besoin d’une interface la plus user-friendly possible, Flutter sera probablement le meilleur choix.
Cependant, si vous recherchez plutôt à développer rapidement une application, React Native peut être une meilleure solution. La techno sera plus facile à maîtriser, d’autant plus si vous avez déjà des compétences en JavaScript et en React.
Enfin, il est également intéressant de se pencher sur d’autres technologies de développement mobile hybrides, telles que .Net Maui (anciennement Xamarin), Cordova ou Capacitor. Elles peuvent éventuellement répondre plus finement à vos besoins.