Cordova : pourquoi ne faut-il plus l’utiliser pour une solution mobile hybride ?

Pour nombre d’entreprises, le besoin de développer des solutions mobiles est toujours aussi présent. Le mobile fait partie intégrante de leur stratégie marketing afin d’atteindre leurs cibles et de s’adapter à leur comportement.

La plupart des entreprises optent pour les applications cross-plateformes, en ayant recours en l’occurrence à Cordova. Cette technologie est considérée comme l’une des solutions les plus accessibles et bon marché pour le développement de ces applications. Pourquoi cela ? Et pourquoi je vous suggère de ne plus l’utiliser ? Voici le sujet que je vous propose de découvrir.  

Cordova, kesako ?

Cordova est une technologie permettant d’adresser plusieurs plateformes en ayant l’avantage de produire une seule base de code. Elle est principalement utilisée pour développer des applications mobiles sur iOS et Android. La majorité du code applicatif est basée sur des technologies JavaScript (~95%). Il est donc possible de choisir n’importe quel framework JavaScript pour se lancer dans le développement. Cordova expose une importante API en JavaScript permettant de communiquer avec les fonctionnalités matérielles des appareils mobiles tels que l’appareil photo, la géolocalisation, les notifications, etc… avec la possibilité de rajouter un tas de plugins selon les besoins pour accéder à d’autres API. 

Architecture d’une application Cordova (source : https://cordova.apache.org/docs/en/latest/guide/overview/index.html)

La face émergée de l’iceberg

Comme il s’agit d’une des premières technologies cross-plateformes du marché, on y voyait auparavant plusieurs avantages à utiliser Cordova en comparaison aux technologies natives :

  • Il n’était plus nécessaire d’écrire deux codes différents en Objective-C pour iOS et Java pour Android, ce qui laissait penser que les coûts pouvaient être divisés par deux ;
  • Le besoin sur le mobile grandissant, il était très rare de trouver des profils de développeurs avec des compétences sur une, voire deux technologies natives. Avec Cordova, il suffit de trouver des profils avec une appétence sur le front, ce qui est plus fréquent ;
  • Les technologies natives imposent des règles strictes en termes de style et d’expérience utilisateur. Cordova permet de s’en affranchir et de laisser libre cours à l’imagination des designers.

 

Cordova, des avantages mais pas seulement…

C’est bien beau tout ça, mais il se cache derrière une face plus sombre que j’ai pu expérimenter lors d’un projet mobile dans le domaine bancaire :

  • Des coûts divisés par deux ? Pas forcément !
    • Il est souvent demandé de reproduire des comportements natifs en termes de style et d’animation, pour lesquels ils sont déjà implémentés sur les technologies natives. Mais pour Cordova, cela nécessite de réécrire des feuilles de style adaptés ;
    • Il est toujours nécessaire de tester sur toutes les plateformes car en réalité, j’ai souvent pu constater que pour un même cas de tests, il apparaissait des comportements différents entre iOS et Android. Des corrections spécifiques doivent donc être développées.
  • Des profils front, oui mais…
    • Comme il est possible de choisir parmi un large choix de framework JS (Angular, ReactJS, framework propriétaire, etc…), il faudra tout de même prévoir la plupart du temps des formations ;
    • Le développeur front n’a pas forcément une culture du mobile et ne prend pas en considération un certain nombre de paramètres lors de ses développements. Par exemple, les particularités de navigation, le réseau, la status bar, et j’en passe ;
    • Il est tout de même nécessaire d’avoir au moins un développeur expérimenté sur iOS et Android.
  • Réinventer les concepts de style et d’interaction sur mobile n’est pas forcément une bonne chose pour l’expérience utilisateur. En effet, celui-ci pourra se voir proposer une expérience différente à celle offerte par le natif habituellement, et ainsi abandonner l’utilisation de votre application mobile.

 

Quelles sont les alternatives à Cordova ?

 

Si vous souhaitez tout de même rester sur une solution mobile hybride, je vous conseille de vous diriger vers la solution Ionic qui présente les avantages suivants en comparaison avec Cordova :

  • Ionic est une surcouche de Cordova mais elle contient déjà une riche librairie de composants déjà pensés pour le mobile permettant de préserver l’expérience utilisateur ;
  • Ces composants assurent normalement déjà une compatibilité avec les différentes plateformes. Il est donc plus rare d’avoir des surprises sur une plateforme spécifiquement. On y gagne en termes de coûts ;
  • Le choix parmi 3 frameworks dont Angular2+. Les profils front les plus courants sur le marché sont sur cette technologies. Ionic a rendu également compatible sa librairie de composants avec React et Vue.

Celui qui se proclame successeur « spirituel » de Cordova s’appelle Capacitor. Ce dernier a d’ailleurs été produit par les équipes d’Ionic. Même s’il est aussi possible grâce à cet outil de construire une application mobile à partir de n’importe quelle application web, il peut se coupler au framework Ionic, ce que je recommande afin d’éviter de repartir dans les travers de Cordova vus précédemment. Ce qui diffère avec Capacitor est sa manière de gérer la partie native qui est plus moderne et performante. Capacitor propose une stratégie de migration depuis Cordova ainsi que la marche à suivre au niveau technique. Il est possible de migrer la plupart des plugins Cordova vers des plugins Capacitor, ceux pour lesquels ce ne serait pas possible, pas d’inquiétude, Capacitor les supporte. La version 2 de Capacitor est sortie début avril 2020.

Mais si vous pouvez investir un peu plus tout en restant sur une solution cross-plateformes, il sera préférable de ne pas choisir de technologie se basant sur une webview. On y gagne ainsi en performance, comparable au natif, et en stabilité en ce qui concerne les développements. Les solutions que je propose sont React Native et Flutter avec une préférence particulière pour le second. L’apprentissage sur ce type de frameworks sera peut-être un peu compliqué au départ mais vous assura un bon rendement sur le développement ensuite

Tendance des recherches Google sur Cordova, Ionic et Flutter sur les 10 dernières années en France

Conclusion

En conclusion, avec de l’expérience sur Cordova, nous nous sommes aperçus qu’un tas d’inconvénients émergeait lors des développements. Si cette solution reste encore d’actualité, je conseille toutefois de la laisser de côté au profit d’autres technologies cross-plateformes accompagnées d’un kit adapté aux contraintes du mobile. Les solutions en vogue en ce moment sont React Native et Flutter qui nécessitent un peu plus d’investissement qu’Ionic, qui elle représente un bon compromis couplé à Capacitor.

Ressources :

  Article initialement publié dans le numéro 244 de Programmez!