Le commit 08883cbdd1c39a0c15b97af44ddaefe14acdc21a a rompu le rendu de Discourse sur les anciennes versions de Gecko. Gecko ne prend pas en charge l’opérateur de chaînage optionnel avant la version 74.
Je peux me tromper, mais mon hypothèse initiale est que nous ne définissons pas la liste des navigateurs et qu’il utilise une valeur par défaut (probablement @babel/preset-env · Babel), ne considérant pas cette version comme prise en charge, ce qui explique pourquoi elle n’est pas transpilée.
C’est étrange tout de même : Firefox 74 n’a qu’un an, mais en regardant la liste des navigateurs actuellement :
La question est donc : @sam, voulons-nous le prendre en charge ? Bien qu’il n’ait qu’un an, la version actuelle de Firefox est la 89, soit 15 versions en arrière. Je ne suis pas sûr, c’est à vous de décider. Il est important de noter que le support de cette version alourdira la charge de chacun, car la transpilation fonctionne plus ou moins comme un polyfill (ajout de fonctions pour le supporter et remplacement de la syntaxe par des appels de fonctions).
Il y a beaucoup de raisons, mais surtout cela facilite tout pour les développeurs : nous n’avons pas à trop réfléchir à tout ce que nous pouvons utiliser ou non, et nous bénéficions d’une base plutôt moderne.
Je suis ouvert à abandonner la prise en charge à condition que notre solution de repli HTML soit en place.
Ce que nous ne pouvons absolument pas faire, c’est afficher une page statique fonctionnelle sur IE9 et une page cassée sur Firefox d’il y a un an.
Je préférerais simplement transpiler jusqu’à Firefox/Chrome d’il y a 2 à 3 ans, mais je suis heureux de laisser cette décision à @eviltrout et à vous. Nous pouvons être plus agressifs, je suppose, mais nous ne pouvons pas afficher de pages cassées.
Édition : voir le lien retour, cela peut être un problème assez grave sur Android, qui a tendance à avoir une fréquence de mise à jour des navigateurs terrible.
Oui, d’accord. Au minimum, nous devrions implémenter le support de browserlist afin que les fonctionnalités non prises en charge ne nous surprennent pas.
Je n’arrive pas à reproduire le problème de l’OP sur Meta. J’ai essayé via Browserstack avec Firefox 73 sur macOS et Firefox 68 sur Windows. @vige, peux-tu reproduire le problème sur Meta ?
Ok, corrigez-moi si je me trompe @pmusaraj, mais je pense que comme nous ne définissons pas preset-env et, par conséquent, pas de cibles, tous les plugins que nous incluons sont utilisés. Par conséquent, proposal-optional-chaining est certainement appliqué.
Je pense que cela me convient, nous devons peut-être simplement vérifier chaque année chaque plugin et réévaluer s’il est toujours nécessaire ?
Ceci est désormais corrigé dans la version stable (v2.7.4) : le plugin proposal-optional-chaining pour Babel y est maintenant activé et résout le problème.
Un grand merci à tous les développeurs concernés pour avoir résolu cela si rapidement !
Pour la petite histoire, selon mes tests, ce bug affectait également, dans certains cas, la dernière version de Microsoft Edge pour Android (qui, à ma connaissance, n’utilise pas Gecko).
Pourriez-vous avoir l’amabilité d’ajouter l’étiquette réelle v2.7.4 à cette version ?
Je viens de passer une demi-heure à essayer de faire un git checkout v2.7.4 qui s’est avéré inexistant