Développement d'applications Mobiles en Cross Platform : Comparaison entre Ionic, Flutter et React Native

Le développement d’une application passe souvent par la question de la plateforme sur laquelle on souhaite la rendre disponible : « desktop » (ordinateur), web, mobile (Android, iOS…)
Créer une application qui pourra être utilisée par tout le monde implique en théorie de devoir la développer plusieurs fois, une pour chacune des plateformes ciblées.
Heureusement, il existe aujourd’hui de nombreuses solutions pour développer une application une seule fois, et la rendre disponible sur toutes les plateformes souhaitées sans efforts supplémentaires.
Cette méthode de développement, dite « cross platform », passe par l’utilisation d’un Framework qui, une fois la base applicative développée, créera automatiquement une application pour chacune des plateformes que l’on souhaitera cibler.
Chacun des frameworks présenté ici donne la possibilité d’utiliser les périphériques des plateformes cibles (caméra, géolocalisation, bluetooth, etc), et d’afficher des notifications push. Ils permettent également tous de développer des modules « natifs » pour utiliser des fonctionnalités qui ne seraient pas actuellement prises en compte.
Faisons un point sur les principales technologies existantes aujourd’hui, et demandons-nous quelle est la meilleure en fonction de nos besoins.

Ionic

Ionic est un framework permettant la création d’applications dites « hybrides » : on développe une application web, cette dernière sera ensuite embarquée dans un conteneur qui se chargera d’afficher cette page sur la plateforme cible.
Ce framework est dit agnostique car, depuis quelques versions, il permet de développer l’application web avec Angular ou ReactJS. VueJS est également disponible, mais reste pour le moment en beta.
L’application web résultante pourra être utilisée pour créer un site web, une PWA, ou une application mobile.
Ionic a été créé en 2013, c’est aujourd’hui un framework bien installé, il permet d’utiliser toutes les librairies web existantes et offre donc un large choix de composants, assurant un développement d’application très rapide.

Flutter

Flutter, développé par Google depuis 2015, est disponible en version finale depuis fin 2018, mais est aujourd’hui largement plébiscité par la communauté.
Ce framework permet de créer des applications mobiles, avec l’objectif d’avoir un rendu et des performances proches du natif.
La possibilité de créer avec la même base applicative des applications web et desktop est aujourd’hui disponible en beta, mais ne devrait être utilisé qu’à des fins de test.
Ces options sont cependant ouvertes et prometteuses, elles doivent donc être suivies avec la plus grande attention.
Si les applications produites montrent des performances impressionnantes en terme de fluidité, elles « pèsent » plus lourd que sur les autres frameworks présentés ici, d’environ 1Mo sur une application « de base ».
Par ailleurs, la relative jeunesse de la plateforme implique des changements potentiellement fréquents dans les librairies disponibles.

React Native

Ce framework développé par Facebook est sorti en version finale en 2015.
Il permet de créer des applications mobiles utilisant les vues natives, avec une logique écrite en JSX, un langage proche de javascript et du HTML.
React Native est largement basé sur ReactJS, son pendant web, mais diffère sur quelques point qui rendent incompatibles des applications écrites pour l’une ou l’autre solution.
Le framework est sorti en 2015, il est aujourd’hui très utilisé dans le monde mobile, de nombreuses librairies sont disponibles pour le développement d’application.
Le gros avantage de React Native est d’avoir un « coeur » applicatif très léger, des librairies devant être ajoutées pour utiliser des fonctionnalités spécifiques.
Une application produite avec React Native est plus légère que si elle était développée en Ionic, et à fortiori en Flutter.

Quel framework choisir ?

De nombreux facteurs entrent en compte pour choisir le bon framework pour un projet donné.
La première question à se poser concerne les plateformes ciblées. Si des versions desktop doivent être produites, Ionic semble à l’heure actuelle le framework le plus indiqué, mais Flutter pourrait dans un futur proche devenir également une solution viable.
Si seules des versions mobiles sont nécessaires, les facteurs de décisions pourront venir des connaissances de l’équipe de développement, ou des contraintes de performances portant sur l’application.
Une équipe avec des connaissances web pourra utiliser Ionic pour développer rapidement des applications mobiles sans avoir besoin d’une formation lourde.
Si l’application doit avoir un rendu natif, on se tournera plutôt vers React Native ou Flutter, le poids de l’application produite étant ici un facteur déterminant pour décider sur quelle solution il convient de partir.
Enfin, Flutter semble être la meilleure solution pour produire des applications nécessitant une grande fluidité et des animations « ludiques ».

Si vous souhaitez en savoir plus, n’hésitez pas à nous contacter.

Simon BERNARDIN – Développeur Senior