L'équipe Vue.js abandonne définitivement le support d'IE11
En septembre 2020, l'équipe de développement du framework a publié Vue.js 3.0 et, en ce qui concerne la migration et le support d'IE11, elle avait déclaré ce que suit : « L’équipe a repoussé la construction de la migration (construction v3 avec comportement compatible avec la v2 + avertissements de migration) et le support d'IE11 en raison de contraintes de temps. Par conséquent, les utilisateurs qui prévoient de migrer une application v2 existante ou qui ont besoin du support d'IE11 doivent être conscients de ces limitations pour le moment ». Elle avait prévu de se concentrer sur eux au quatrième trimestre 2020.
Cependant, après une longue période de concertation et de dialogue avec la communauté, elle a annoncé en avril dernier qu'elle revenait sur sa décision d'ajouter le support d'IE11 à Vue.js 3. « Nous avons été interrogés sur la prise en charge d'IE11 depuis le début du développement de Vue.js 3, en remontant jusqu'à la fin de 2018. De nombreux utilisateurs ont demandé si Vue.js 3 prendrait en charge IE11, et notre plan initial était de publier Vue 3 et de le laisser se stabiliser en premier, et d'ajouter la prise en charge d'IE11 à un stade ultérieur », a déclaré l'équipe dans une note sur la page GitHub du projet.
« Au cours du processus de développement, nous avons également fait des recherches et des expériences pour la compatibilité IE11 sur le côté, mais en raison de la complexité impliquée et de la quantité d'autres travaux à portée de main, il a été délaissé sur la route. Lorsque nous examinons à nouveau le problème aujourd'hui, en 2021, le navigateur et le paysage JavaScript ont bien changé. Davantage de développeurs utilisent désormais les fonctionnalités des langages modernes et, surtout, Microsoft a commencé à éloigner activement les utilisateurs d'IE en investissant dans Edge », a-t-elle ajouté.
L'équipe estime en effet que son choix est aussi motivé par le fait que Microsoft a commencé également à abandonner le support d'IE11 dans ses propres projets majeurs, comme Microsoft 365. Elle a également observé cette dynamique au sein d'autres communautés d'outils pour le Web. Il y a quelques semaines, WordPress a pris la décision d'abandonner le support d'IE11. L'équipe Bootstrap a fait pareil dernièrement avec la sortie de Bootstrap 5. Selon des statistiques avancées par l'équipe, l'utilisation globale d'IE11 est en dessous de 1 %. D'après elle, lorsqu'il s'agit de sites Web et d'applications destinés au public, IE11 est en déclin rapide.
« Nous pensons que c'est l'occasion de repenser le support d'IE11 pour Vue 3 », a-t-elle déclaré. Les raisons évoquées par l'équipe se regroupaient en quatre grands axes, notamment : incompatibilité de comportement, charge de maintenance à long terme, complexité pour les auteurs de bibliothèques et la contribution à la pérennité d'IE11.
Incompatibilité de comportement
Selon l'équipe, le système de réactivité de Vue.js 2 est basé sur des getters/setters ES5. Vue.js 3 quant à lui exploite les proxys ES2015 pour un système de réactivité plus performant et plus complet, qui ne peut pas être polyfillé dans IE11. Selon elle, c'est le principal obstacle, car cela signifie que pour que Vue.js 3 prenne en charge IE11, il faut essentiellement livrer deux versions différentes avec un comportement différent : l'une utilisant le système de réactivité basé sur les proxys, et l'autre utilisant les getters/setters ES5 comme pour Vue.js 2.
Elle explique que le système de réactivité basé sur les proxys de Vue.js 3 offre une couverture quasi complète des fonctionnalités du langage. Il est capable de détecter de nombreuses opérations qu'il est impossible ou peu pratique d'intercepter dans ES5, par exemple l'addition/la suppression de propriétés, les mutations d'indices et de longueurs de tableaux, et dans les vérifications d'opérateurs. Le même code écrit pour la version Proxy de Vue.js 3 ne fonctionnera pas dans la version IE11. Cela créerait non seulement une complexité technique pour l'équipe, mais aussi une charge mentale constante pour les développeurs.
« Notre plan initial était de livrer les implémentations de réactivité Proxy et ES5 dans la version de développement de la version IE11. Lorsqu'elle est exécutée dans un environnement de développement compatible avec Proxy, elle détecte et signale toute utilisation non compatible avec IE11. Cela fonctionnerait en théorie, mais crée une énorme quantité de complexité, car cela nécessite de mélanger les deux implémentations et risque d'entraîner une différence de comportement entre le développement et la production », a-t-elle renchéri.
Charge de maintenance à long terme
D'après l'équipe, la prise en charge d'IE11 signifie également qu'elle devra prendre en compte les fonctionnalités linguistiques utilisées dans l'ensemble de la base de code et définir une stratégie de polyfill/transpilation appropriée pour les fichiers de distribution. Chaque nouvelle fonctionnalité ajoutée qui ne peut pas être polyfillée dans IE11 créerait encore une autre réserve de comportement. « Une fois que Vue.js 3 s'engage à prendre en charge IE11, il ne sera pas en mesure de s'en débarrasser avant la prochaine version majeure », constate l'équipe.
Complexité pour les auteurs de bibliothèques
Par ailleurs, l'équipe ajoute que la complexité serait encore quelque peu acceptable si elle pouvait être entièrement contenue dans Vue.js lui-même. Cependant, après avoir discuté avec les membres de la communauté, elle a réalisé que la coexistence de deux implémentations de la réactivité aurait inévitablement des problèmes pour les auteurs de bibliothèques également. En prenant en charge IE11 dans Vue.js 3, les auteurs de bibliothèques doivent essentiellement faire cet appel également.
Les auteurs de bibliothèques devront tenir compte de la version de Vue.js 3 utilisée par leur bibliothèque (en plus de la prise en charge potentielle de Vue.js 2) et, s'ils décident de prendre en charge IE11, ils devront créer leur bibliothèque en tenant compte de tous les avertissements relatifs à la réactivité ES5.
Contribuer à la pérennité d'IE11
« Personne n'aime supporter IE11. C'est un navigateur moribond, coincé dans le passé. Plus l'écosystème du Web progresse, plus le fossé à combler pour le prendre en charge s'agrandit. Paradoxalement, en prenant en charge IE11 dans Vue.js 3, nous lui donnons plus de raisons de rester. Compte tenu de notre base d'utilisateurs, l'abandon du support d'IE11 contribuera probablement à le rendre obsolète un peu plus rapidement », a déclaré l'équipe.
Pour ceux qui ont absolument besoin du support d'IE11
L'équipe a déclaré qu'elle est bien consciente que la véritable demande pour IE11 provient de ceux qui ne peuvent pas effectuer de mise à niveau : les institutions financières, les secteurs de l'éducation et ceux qui dépendent d'IE11 pour les lecteurs d'écran. Si vous construisez une application destinée à ces secteurs, vous n'avez peut-être pas le choix. De ce fait, elle recommande d'utiliser Vue.js 2 si vous avez besoin de la prise en charge d'IE11.
« Au lieu de contracter une dette technique importante pour Vue.js 3 et les futures versions de Vue.js, nous pensons qu'il serait plus judicieux de rediriger les efforts vers le rétroportage des fonctionnalités compatibles vers Vue.js 2 dans la version 2.7, et de garantir une expérience de développement plus proche entre les deux versions majeures », a déclaré l'équipe. Certaines des fonctionnalités qui peuvent être rétroportées vers la version 2.7 :
- ajout du plugin @vue/composition-api dans Vue.js 2. Cela permettra aux bibliothèques basées sur Composition-API de fonctionner directement à la fois pour Vue.js 2 et Vue.js 3 ;
- ajout de la syntaxe <script setup> dans les composants à fichier unique ;
- ajout de l'option emits ;
- amélioration des typages TypeScript ;
- formaliser le support de Vue.js 2 dans Vite (actuellement via un plugin non officiel) ;
- etc.
Source : Note de l'équipe Vue.js
Et vous ?
Quel est votre avis sur le sujet ?
Voir aussi
La version 3 de Vue.js, le framework JavaScript progressif, est disponible avec de nouvelles API et des améliorations de performance
Bootstrap 5 est officiellement disponible avec un nouveau logo, un nouveau composant offcanvas, des mises à jour pour les composants forms et abandonne jQuery
Microsoft va mettre fin au support de la première mouture de Microsoft Edge, ainsi qu'au support des services Microsoft 365 dans Internet Explorer 11 en 2021
Microsoft Edge trois fois plus rapide que IE 11 grâce à Asm.js, le navigateur offrira plus de sécurité