Flutter, React Native ou natif : choisir selon des critères
Flutter, React Native et le développement natif comparés sur la performance, l'équipe, la maintenance, les fonctions de l'appareil et le budget.
Équipe rabbitclipPublié: 7 min de lecture
En bref
Le choix entre Flutter, React Native et le natif consiste à décider si l'application est construite pour les deux stores à partir d'une seule base de code ou à partir d'un code distinct pour chaque plateforme et, s'il s'agit d'une seule base de code, avec quel outil. Le natif signifie écrire un code distinct pour iOS et pour Android et utiliser les outils propres à chaque plateforme. Flutter et React Native visent tous deux les deux plateformes avec un code largement partagé ; chacun est une approche mûre et très répandue, conçue dans ce but. Le bon choix ne vient pas d'un classement. Il vient des besoins du produit, des compétences de l'équipe et du plan de maintenance.
Cet article ne fait l'éloge d'aucun camp. Il place les trois approches côte à côte selon les mêmes critères et explique dans quelle situation chacune comporte le moins de risques. Nos articles sur la création d'une application mobile avec Flutter et sur l'application mobile face à la PWA abordent aussi le sujet ; ici, l'accent est mis sur la position respective des trois approches de développement.
En quoi les trois approches diffèrent-elles ?
Dans le développement natif, l'application iOS est écrite dans le langage et avec les outils propres à la plateforme, et l'application Android dans les siens. Vous obtenez deux bases de code. Vous avez un accès prioritaire aux nouvelles fonctions de chaque plateforme et le lien le plus direct avec les capacités de l'appareil, mais le travail est fait deux fois.
Flutter est un outil qui dessine lui-même l'interface avec son propre moteur de rendu et utilise le langage Dart. React Native s'écrit en JavaScript ou en TypeScript et affiche l'interface grâce aux composants propres à la plateforme. Les deux visent à publier sur deux stores avec une seule équipe ; ils diffèrent par la façon de produire l'interface et par le langage que l'équipe connaît.
Sur quels critères faut-il les comparer ?
Pour que le choix ne tourne pas au débat technologique, écrivez d'abord les critères et notez chacun pour votre propre produit. Si un critère est critique pour vous, il tranche, quelle que soit la qualité des autres.
La même question est posée à chaque critère : quel risque cette approche comporte-t-elle, au minimum, pour répondre aux besoins de ce produit ? Les réponses ne sortent généralement pas sous forme de chiffres, mais d'une distinction comme « confortable », « demande de l'attention » et « difficile ».
- Équipe : le langage et l'expérience des développeurs que vous avez ou pouvez trouver
- Fonctions de l'appareil : besoins proches de la plateforme, comme l'appareil photo, les capteurs, le Bluetooth et le travail en arrière-plan
- Interface et animation : propre à la marque et très travaillée visuellement, ou l'apparence standard de la plateforme
- Maintenance : qui suivra les mises à jour de version et les changements de bibliothèques des deux plateformes, et comment
- Temps et budget : une équipe ou deux, et l'urgence de la première publication
Dans quelle situation chaque approche se distingue-t-elle ?
Si le produit est très proche de la plateforme, par exemple avec un usage intensif de l'appareil photo et des capteurs, un travail qui tourne en continu en arrière-plan, des extensions pour la montre et la voiture, ou un besoin des toutes dernières fonctions de la plateforme dès le premier jour, le natif réserve généralement le moins de surprises. Le coût est l'entretien de deux bases de code et, le plus souvent, de deux équipes.
Si vous voulez que l'interface soit identique et propre à la marque sur les deux plateformes et que l'équipe est prête à apprendre un nouveau langage, Flutter est un candidat naturel. Si votre équipe compte des développeurs web qui connaissent déjà JavaScript ou TypeScript, React Native est le chemin le plus court pour utiliser les compétences existantes, et le partage de code et de connaissances entre le web et le mobile peut aussi devenir plus facile.
Ces phrases décrivent des tendances générales, pas des règles. Des applications réussies, rapides et attrayantes sont écrites avec les trois approches ; les problèmes viennent généralement d'une inadéquation entre le produit et l'outil, pas de l'outil. Avant de décider, un petit essai qui teste l'écran ou la fonction la plus risquée du produit avec chaque candidat raccourcit donc le débat.
Comment l'équipe et la maintenance influencent-elles le choix ?
Le travail ne s'arrête pas à la publication de l'application. Chaque année, les deux plateformes sortent de nouvelles versions, les bibliothèques changent et les règles des stores sont mises à jour. Avec les outils multiplateformes, ces changements doivent être absorbés à la fois par la plateforme et par l'outil lui-même. En natif, le même changement est fait deux fois dans deux bases de code distinctes.
Le côté humain compte aussi. Demandez-vous qui remplacerait la personne qui connaît l'outil choisi si elle partait, et dans quelle mesure la communauté et la documentation de l'outil sont vivantes. Pesez cela non pas au jugé, mais d'après la situation réelle de votre propre marché pour trouver des développeurs dans ce langage.
- Qui suivra les mises à jour annuelles de version des deux plateformes
- Qui résoudra une incompatibilité de bibliothèque dans l'outil choisi
- Avec quelle facilité on peut remplacer un membre de l'équipe qui part
- À quel point la documentation et la communauté de l'outil sont à jour
Quelles erreurs fréquentes dans le choix d'une technologie ?
L'erreur la plus courante est de laisser le choix à la popularité ou aux arguments lus en ligne. Un outil qui a fonctionné dans une autre entreprise ne donnera peut-être pas le même résultat avec votre équipe et votre produit. La deuxième est de croire que le multiplateforme est toujours moins cher ; une seule base de code réduit le travail de développement, mais les parties propres à chaque plateforme et la maintenance demandent encore des efforts.
La troisième est de ne penser qu'à la première publication au moment de décider. Qui entretiendra l'application dans trois ans compte souvent plus que la rapidité de sortie de la première version.
- Laisser le choix à la popularité ou au débat en ligne
- Croire que le multiplateforme est moins cher dans tous les cas
- Ne penser qu'à la première publication, sans compter la maintenance
- Décider sans avoir essayé la fonction la plus risquée
Quand cette comparaison est-elle la mauvaise question ?
Si votre produit affiche surtout du contenu, remplit des formulaires et a peu besoin de fonctions comme la présence dans les stores ou les notifications, la vraie question est de savoir s'il doit être une application mobile ou une PWA ; l'une des trois approches de développement découle de cette question. Vérifiez d'abord que le produit a réellement besoin d'une application.
Si vous en êtes encore au stade de l'idée, choisir une technologie est également prématuré. Testez d'abord l'idée avec un prototype ; le choix sera plus sain une fois clair ce qui sera réellement construit. D'autres options existent, mais comprendre le raisonnement derrière ces trois-là vous donne aussi une bonne base pour les juger.
Il n'existe pas de réponse unique pour Flutter, React Native et le natif. La bonne réponse vient des besoins du produit, des compétences de votre équipe et de votre plan de maintenance. Écrivez d'abord vos critères, testez la fonction la plus risquée dans un petit essai et comptez la maintenance au-delà de la première publication. Si vous souhaitez peser les trois approches pour votre propre produit, vous pouvez convenir d'un entretien de découverte avec rabbitclip.
Questions fréquentes
Flutter ou React Native, lequel est meilleur ?
En général, aucun n'est meilleur que l'autre ; l'un comporte moins de risques selon le langage de l'équipe, les besoins de l'interface et le plan de maintenance. Les équipes qui connaissent ou veulent apprendre Dart et souhaitent une interface propre à la marque penchent vers Flutter, celles qui connaissent JavaScript vers React Native.
Le développement natif est-il encore nécessaire ?
Pour les produits très proches de la plateforme, comme les applications qui demandent un travail intensif avec l'appareil photo, les capteurs ou l'arrière-plan, et quand vous avez besoin des toutes dernières fonctions de la plateforme dès le premier jour, le natif réserve le moins de surprises. Pour de nombreuses applications métier, il n'est pas indispensable.
Une application multiplateforme est-elle toujours moins chère ?
Non. Une seule base de code réduit généralement l'effort de développement, mais les parties propres à chaque plateforme, les tests et la maintenance demandent encore des efforts. Le coût dépend du périmètre, du nombre d'intégrations et du plan de maintenance, pas du nom de l'outil.
Peut-on passer plus tard d'une approche à une autre ?
On le peut, mais cela suppose de réécrire l'essentiel de l'application. C'est pourquoi il coûte moins cher de choisir avec soin au départ, en testant la fonction la plus risquée dans un petit essai et en comptant la maintenance.
