Cordova la fin ?

Cordova est une technologie permettant d'adresser plusieurs plateformes en ayant l'avantage de produire en 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 apparareils mobiles telles que l'appareil photo, la géolocalisation, les notifications, etc. Avec la possibilité de rajouter un tas de plugins selon les besoins à d'autres API.

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 avantage à utiliser Cordova en comparaison aux technologies natives :

  • Il n'était plus nécessaire d'écrire deux codes différents en Objectif-C (ou Swift) pour iOS et Java (ou Kotlin) pour Android. Ce qui laissait penser que les coûts pouvaient être diviser 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, voir 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.

Des avantages, mais pas seulement...

C'est bien beau tout cela, mais il se cache derrière une face plus sombre que j'ai pu expérimenter lors d'un projet mobile dans divers domaines.

  • Des coûts divisés par deux ? et bien pas forcément.
    • Il est souvent demandé de reproduire les comportements natifs en termes de style et d'animation, pour lesquels ils sont déjà implementés sur les technologies natives. Mais pour Cordova, cela nécessite de réécrire les feuilles de styles adaptées.
    • Il est toujours nécessaire de tester sur toutes les plateformes car en réalité j'ai souvent pu constaté que pour un même scénario de tests il y avait des comportements différents entre iOS et Android. Cela nécessite donc des corrections spécifiques.
  • Des profils front, oui mais...
    • Comme il est possible de choisir parmis un large choix de framework JS (Angular, ReactJS, framework propriétaire, ..) 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 comme les particularités de navigation, le réseau, la status bar, etc.
    • 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 ?

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 de Cordova :

  • Ionic est une surcouche de Cordova, mais elle contient déjà une librairie riche de composants adaptés au mobile afin de permettre la préservation de l'expérience utilisateur.
  • Ces composants assurent déjà normalement une comptabilité avec les différentes plateforme. Il est donc plus rare d'avoir des surprises entre les plateformes qui permet de réduire le coût.
  • Le choix parmis trois framework dont Angular 2+. Les profils front les plus courant sur le marché sont sur cette plateforme. Ionic a rendu également compatible sa librairie avec React et Vue.

Capacitor

Celui qui se proclame successeur "spirituel" de Cordova s'appelle Capacitor. Ce dernier a d'ailleurs été produit par les équipes de 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. Mais si vous pouvez investir un peu plus tout en restant sur une solution cross-plateforme, il sera préférable de ne pas choisir une technologie se basant sur une webview. On y gagne ainsi en performance qui devient alors comparable au natif et en stabilité pour ce qui concerne les développements.

Les solutions que je propose sont React native et Flutter. L'apprentissage pour ce type de framework est peut-être un peu compliqué au départ, mais vous assura un bon rendement de développement ensuite.

Conclusion

Avec l'expérience de 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.

De plus, Adobe a annoncé en août 2020 la fin de son soutien à PhoneGap et a Cordova. Apple préconise de migration sur Framework7, NativeScript, Ionic, PWA, etc.

Côté Apache, Cordova continue à être maintenu et développé. Début octobre 2020, Cordova Electron 2.0 était ainsi annoncée. 

  •  


Rejoindre la conversation