Nous y sommes : c’est la fin de notre série d’articles pour vulgariser les alternatives au natif pour créer une application mobile. No code, responsive, PWA, hybride et cette fois ReactNative/Flutter : suite à ce dernier article, vous aurez toutes les clés pour faire votre choix.
Avant d’aller plus loin, revenons au début des années 2010. Facebook mise alors sur la technologie web pour donner accès à sa plateforme via le mobile. Or, le réseau social se confronte rapidement aux limitations du web de l’époque et commence à regretter le développement natif. Mark Zuckerberg déclare alors en 2012 : “La plus grande erreur que nous ayons commise en tant que société a été de parier trop sur HTML par opposition au natif”.
ReactNative est ainsi développé par Facebook dans les années qui suivent afin d’avoir d’obtenir un savant mélange : la flexibilité du web avec la qualité du natif.
Flutter naît un peu plus tard au sein de Google, et son but est similaire : pouvoir créer des apps de qualité native avec un seul code pour les différentes plateformes (iOS, Android et les autres OS de l’époque).
Qu’est-ce qu’une application mobile développée en ReactNative ou Flutter ?
Précisions d’abord que ReactNative et Flutter sont 2 outils différents, on ne code généralement pas une app avec les 2 : React Native est une technologie légèrement plus ancienne que Flutter, il s'agit du framework de développement mobile le plus populaire en ce moment.
Quant à Flutter, il s’agit de la technologie de développement front-end multi-plateforme de Google, une technologie plus récente, mais qui suscite néanmoins un grand engouement.
À la différence des applications hybrides qui utilisent un navigateur web pour afficher l’app à l’utilisateur, dans le cadre d’une application développée sur ReactNative/Flutter les éléments de l’interface utilisateur sont entièrement réécrits en langage natif sur chaque plateforme.
Par exemple, un bouton pour iOS est écrit avec un code complètement différent que le même bouton pour Android, ce n’est pas un “dessin web” de l’élément.
Le développeur combine ensuite ces éléments via un même langage de programmation pour les 2 plateformes. Pour ReactNative, on utilise JavaScript et pour Flutter, on utilise Dart.
Pour ce qui est du résultat, c'est un même code pour les deux plateformes mais une expérience utilisateur presque native.
Les 5 avantages de ReactNative et de Flutter
Utiliser ReactNative ou Flutter pour créer son app mobile, c’est choisir des avantages certains :
- Une qualité de l’application exceptionnelle et très proche des applications codées en langage natif iOS ou Android
- Un seul code et un seul développement pour les 2 plateformes
- Des développements technologiques financés par des GAFAM (Facebook et Google), très connues et de plus en plus répandues au sein de grandes communautés (ce qui garantit les mises à jour et la disponibilité d’outils et de ressources)
- La possibilité d’effectuer des calculs complexes en même temps que de l’affichage tout aussi complexe sans risque de bloquer l’interface utilisateur
- Une excellente intégration avec les smartphones et la possibilité d’avoir accès à pratiquement toutes les fonctionnalités du mobile comme avec les apps natives
Voilà pour le positif (et il y en a beaucoup), mais quels sont les défauts des apps ReactNative/Flutter ?
Des technologies avantageuses, mais toutefois pas parfaites
On peut relever 2 points particuliers qui sont à connaître : le premier, c’est que cette méthode de développement d’application mobile peut afficher ses limites pour certains cas très spécifiques, comme l’editing vidéo ou les jeux avec beaucoup de 3D.
Le second, c’est un problème de coût : étant des compétences très demandées, le ReactNative et le Flutter, ça revient vite cher. Le coût horaire des développeurs qui maîtrisent ces technologies grimpe donc rapidement, ce qui peut donner un coût important à l’application, parfois même plus qu’en natif.
Il n’y a cependant aucun doute sur le fait qu’une telle app convient à de nombreux projets.
Le ReactNative et le Flutter, c’est pour quel projet d’app ?
Nous vous recommandons d’utiliser ReactNative ou Flutter si :
- Votre projet n’est pas de développer un jeu vidéo en 3D ou un outil de retouche vidéo ou audio, ou d’autres applications très exigeantes
- Vous voulez éviter de devoir investir dans 2 développements séparés pour iOS et Android, mais vous êtes sensible à la qualité de l'expérience utilisateur
Le développement d’application en ReactNative ou Flutter convient à pratiquement tous les cas d’usage, à moins que vous n’ayez déjà une app web existante ou le besoin d’avoir à la fois une présence sur navigateur desktop et mobile. En dehors de cela, n’hésitez pas !