Il commit 08883cbdd1c39a0c15b97af44ddaefe14acdc21a ha rotto il rendering di Discourse sulle versioni più vecchie di Gecko. Gecko non supporta l’operatore di concatenazione opzionale prima della versione 74.
Potrei sbagliarmi, ma la mia prima ipotesi è che non definiamo la lista dei browser e il sistema ne sta usando una predefinita (probabilmente @babel/preset-env · Babel), non considerando questa versione come supportata e, di conseguenza, non effettuando la traspilazione.
È strano, però: Firefox 74 ha solo un anno, ma sì, guardando attualmente browserlist:
Ora, la domanda è: @sam, vogliamo supportarlo? Anche se ha solo un anno, la versione attuale di Firefox è la 89, quindi questa è indietro di 15 versioni. Non sono sicuro al riguardo, la decisione è tua. È importante considerare che supportarlo aumenterà il peso del payload per tutti, poiché la traspilazione funziona più o meno come un polyfill (aggiungendo alcune funzioni per supportare questa versione e sostituendo la sintassi con chiamate a funzioni).
Ci sono molti motivi, ma soprattutto rende tutto più semplice per gli sviluppatori: non dobbiamo preoccuparci troppo di cosa possiamo o non possiamo usare, e abbiamo una base piuttosto moderna.
Sono disposto a eliminare il supporto a condizione che sia presente il nostro fallback HTML.
Ciò che assolutamente non possiamo fare è mostrare una pagina statica funzionante a IE9 e una pagina rotta a Firefox di un anno fa.
Preferisco semplicemente transpilare fino a Firefox/Chrome di 2-3 anni fa, ma sono felice di lasciare questa decisione a @eviltrout e a voi. Possiamo essere più aggressivi, suppongo, ma non possiamo mostrare pagine rotte.
Modifica: vedi il backlink, questo può essere un problema piuttosto serio su Android, che tende ad avere una cadenza terribile nell’aggiornamento dei browser.
Non riesco a riprodurre l’OP su meta. Ho provato tramite Browserstack usando Firefox 73 su macOS e Firefox 68 su Windows. @vige, riesci a riprodurre il problema su meta?
Ok, correggimi se sbaglio @pmusaraj, ma penso che, dato che non impostiamo preset-env e di conseguenza non definiamo i target, tutti i plugin che includiamo vengano utilizzati. Di conseguenza, proposal-optional-chaining viene sicuramente applicato.
Penso che vada bene così; forse dobbiamo solo controllare ogni anno ogni plugin e rivalutare se è ancora necessario?
Grazie mille a tutti gli sviluppatori coinvolti per aver risolto il problema così rapidamente!
Per la cronaca, secondo i miei test, questo bug stava influenzando, in alcuni casi, anche l’ultima versione di Microsoft Edge per Android (che, per quanto ne so, non utilizza Gecko).
Potresti essere così gentile da aggiungere l’etichetta effettiva v2.7.4 a quella release?
Ho appena passato mezz’ora a provare a eseguire git checkout v2.7.4, che si è rivelato inesistente