React Native vs. Xamarin vs. Ionic vs. Flutter: quel est le meilleur framework pour le développement d’applications mobiles cross-platform ?
Lors du développement d’Application Mobile Native, les apps Android sont écrites en Java, et celles pour iOS en Swift et Objective-C. Il ne fait aucun doute que cette approche apporte des applications sans défaut et très performantes. Mais, le développement que cette approche suit est très chronophage et coûteux car le même code doit être écrit deux fois. Quelle est donc la solution ? Le développement d’application mobile cross platform.
Cette approche permet aux développeurs d’écrire le code une fois et d’en appliquer quelques morceaux sur d’autres plateformes pour réduire le temps de développement. Un problème subsiste : cette approche sort des applications qui manquent quelque peu de performances comparées aux apps entièrement natives développées dans leur langage natif.
C’est pourquoi, les communautés de développement mobile s’efforcent de créer de nouveaux outils et frameworks pour effacer cette frontière entre les apps natives et les apps mobile cross-platform. L’objectif étant de pouvoir rivaliser avec les apps natives tout en ayant le potentiel de les dépasser.
React Native, Xamarin, Ionic et Flutter sont des exemples d’outils les plus populaires.
Ici, nous allons comparer ces outils pour faire ressortir les qualités qui les différencient mais aussi pour vous recommander le meilleur outil. Allons-y.
Pour Rappel nous proposons des formations React Native, Xamarin, Ionic, Flutter avancé et Flutter/dart pour devenir un véritable expert du sujet !
Applications mobiles cross-platform : le top 8 des caractéristiques à prendre en compte
Afin de pouvoir déterminer la meilleure pour le développement d’applications mobile cross-platform, définissons d’abord les caractéristiques
sur lesquelles nous allons comparer ces 4 outils.
Nous avons :
- Le langage de programmation
- La performance
- L’interface graphique utilisateur
- Le marché et la communauté
- Les plateformes supportées
- Le partage du code
- Les apps populaires
- Le prix
Le langage de programmation
React Native : Il utilise JavaScript qui est aujourd’hui une des langages de programmation les plus populaires, dynamiques et de haut niveau. Sponsorisé par Facebook, possède les avantages de Javascript et React.JS.
Le plus gros avantage de React Native et ce qui fait qu’il est meilleur que les 3 autres frameworks niveau PL, c’est qu’il permet l’écriture de certains
composants en Swift, Objective-C ou Java.
Xamarin : Il utilise C# avec un environnement .net pour développer des applications Android, iOS et Mac. Tout ce qui est réalisable dans des langages natifs est aussi réalisable en C#. Par contre, il est impossible d’utiliser des librairies open-source accessible pour iOS et Android avec Xamarin.
IONIC : Utilise HTML5, CSS et JS pour développer et faire tourner les applications. Il nécessite Cordova wrapper pour accéder aux contrôleurs des plateformes natives. Peut aussi utiliser TypeScript pour améliorer la qualité du code.
Flutter: Il utilise Dart pour développer des applications de haute qualité pour Android, iOS et Web. Ce langage est basé sur C/C++ et java. Dart est la principale raison qui pousse le développement d’application avec Flutter a être préféré par de nombreux développeurs d’apps.
Performance
C’est la caractéristique principale.
React Native : Les performances sont très similaires aux applications natives puisqu’il fournit des éléments de code spécifiquement aux APIs natives. React permet aussi aux développeurs d’utiliser des modules natifs écrits en langage natif pour coder des opérations complexes. Cependant ils est impossible de les réutiliser sur une autre plateforme, l’objectif principal est d’amener de meilleures performances.
Xamarin : C’est aussi considéré comme proche du natif. Xamarin a deux façons de créer une application mobile qui sont, Xamarin.Android/Xamarin.iOS et Xamarin.Forms. Les applications de la première catégorie ont les mêmes performances que les natives. Cependant, la façon de faire de Xamarin.Forms a tendance à réduire la performance du code dans de nombreuses opération.
Ionic : En termes de performance, Ionic perd le match. Des performances moins proches du natif que Xamarin, React Native ou flutter puisqu’il utilise des technologies web pour faire une application. Cela réduit considérable la vitesse. La force de Ionic est son processus de quick testing.
Flutter : Le podium de la performance des applications revient à Flutter. Les avantages du Dart et l’absence de pont JavaScript pour lancer les interactions avec les composant natifs des appareils. Une vitesse formidable.
L’interface graphique utilisateur
React Native : Superbe expérience utilisateur très proche des apps natives.
Xamarin : On reprend les deux façons citées plus haut. Ainsi on en a une rapide pour un design moyen pratique pour un outil interne, et une méthode qui prend du temps mais livre un résultat UX proche du natif.
Ionic : Tout en HTML et CSS puis application de Cordova pour donner l’expérience mobile native.
Flutter : Donne la meilleure expérience utilisateur.
Le marché et la communauté
React Native : C’est le roi en termes de marché et dela communauté. Reconnu d’un grand nombre et une communauté toujoursgrandissante.
Xamarin : Un framewok plutôt connu et Microsoftfait beaucoup d’effort pour faire grandir la communauté Xamarin.
Ionic : Le deuxième plus populaire aprèsReact.
Flutter : Nouveau framework pour la communautédonc pas très populaire pour le moment. Il est cependant très souvent mis enavant par Google.
Les plateformes supportées
React Native : Android 4.1+ , iOS 8+
Xamarin : Android 4.0.3+ , iOS 8+ , Window 10
Ionic : Android 4.4+ , iOS 8+ , Windows 10
Le partage du code
React Native : Jusqu’à 90%.
Xamarin : Jusqu’à 96%.
Ionic : 98% mais certain composant UI doivent être changer ce qui va nécessiterdes efforts supplémentaires.
Flutter : Entre 50 et 90 % car il faut ajouter des fichiers dédiés pour lesplateformes Android et iOS selon les différentes règles qui s’appliquent
Les apps populaires
React Native: Facebook, Instagram, Airbnb, UberEats
Xamarin: Olo, the World Bank, Storyo.
Ionic: JustWatch, Pacifica, Nationwide and many more.
Flutter: Hamilton
Le prix
React Native et flutter : Open-source
Xamarin : Nécessitel’installation de IDE qui s’obtient avec abonnement.
Ionic : Open-source mais ilexiste aussi une version pro qui est payante et permettrait d’accélérer leprocessus de développement.
Si cela vous intéresse, nous vous proposons un article qui oppose Flutter à React Native de manière plus précise.
Bonjour, pour le prix de Xamarin, sachez qu’il est tout à fait possible développer, build et livrer avec Visual Studio Community, qui est gratuit.
En réalité je pense qu’il n’existe même pas de version payante de visual studio pour mac, or toutes les applications Xamarin iOS utilise cet éditeur.
Ce serait vraiment une grosse limitation du côté de Xamarin s’il était « impossible » d’utiliser des libraries native iOS et Android tiers.
https://docs.microsoft.com/en-us/xamarin/ios/platform/native-interop
Bonjour moi je pense plutot me mettre à Flutter
Bonjour
Si vous étiez à ma place, quel outil cross-platform utiliseriez-vous pour créer une application semblable à Yelp?
Je souhaite aussi installer un tableau de bord admin où je contrôlerai le contenu des commerces qui s’affichent sur mon app et installer aussi un tableau de bord utilisé par les commerces afin qu’ils gèrent le contenu de ce qu’ils veulent afficher. J’aimerais que les changements apportés dans les tableaux de bord s’exécutent sur chaque plate-forme simultanément (Androïd, Ios).
Si vous souhaitez avoir un point de comparaison, voir mon site web actuel : openovernight.com
Merci à l’avance
Richard
Bonjour Richard,
la plupart des technos mobiles présentées dans cet article devraient pouvoir faire l’affaire.
Mais je vous recommande vivement d’adopter Flutter, qui a une longueur d’avance depuis quelque temps et qui est de plus en plus adopté dans les entreprises Voir notre formation Flutter pour les curieux.
Très productive et performante.
Bonne journée au pays de nos frères québécois !
Aujourd’hui (11/2021) la communauté Flutter a dépassé la communauté React Native (cf les stars sur les github de chaque projet).
Je pense que la tendance va continuer à s’accentuer avec Flutter qui prendra petit à petit les parts de marché de React Native…
Ionic, c’est devenu anecdotique (au delà du fait que techniquement, c’est vraiment bof).
Xamarin, j’avoue que j’en entends très peu parler… Je pense que leur part de marché est toute petite en comparaison à RN ou Flutter…
Je ne comprends pas trop d’où vient le chiffre de 50% et 90% de partage de vide pour flutter. Étant donné que cette technologie dessine lui même même tous les composants graphiques il y a besoin de beaucoup moins de ponts (Channel chez flutter) vers la platform que react par exemple.
J’ai propre ma décision en 2021 de choisir flutter, nous sommes en 2024 et je ne regrette absolument pas mon choix vu l’énergie de la communauté grandissante qui fait vivre cet outil qui m’épate, de jour en jour, surtout avec l’arrivée tant attendue de la compilation des app en WebAssembly.
Bonjour Farid,
Nous te remercions pour ton retour d’expérience.
Bonne journée !