El commit 08883cbdd1c39a0c15b97af44ddaefe14acdc21a rompió la renderización de Discourse en versiones antiguas de Gecko. Gecko no admite el operador de encadenamiento opcional antes de la versión 74.
Puede que me equivoque, pero mi primera impresión es que no definimos la lista de navegadores y se está usando una predeterminada (probablemente @babel/preset-env · Babel), por lo que no considera esta versión como algo que soportamos y, en consecuencia, no se transpila.
Es extraño, sin embargo, que Firefox 74 tenga solo un año de antigüedad, pero sí, al observar actualmente browserlist:
Ahora, la pregunta es, @sam, ¿queremos soportarlo? Aunque tenga solo un año de antigüedad, la versión actual de Firefox es la 89, por lo que esta versión está 15 versiones atrás. No estoy seguro de esto, es tu decisión. Es importante considerar que para soportarlo se añadirá peso a la carga útil de todos, ya que la transpilación funciona más o menos como un polyfill (agregando algunas funciones para dar soporte a esto y reemplazando la sintaxis por llamadas a funciones).
Hay muchas razones, pero principalmente hace que todo sea más fácil para el desarrollador: no tenemos que pensar demasiado en todo lo que podemos o no usar, y partimos de una base bastante moderna.
Estoy dispuesto a eliminar el soporte siempre que tengamos nuestra solución de respaldo en HTML.
Lo que definitivamente no podemos hacer es mostrar una página estática funcional en IE9 y una página rota en Firefox de hace un año.
Prefiero simplemente transpilar hasta Firefox/Chrome de hace 2-3 años, pero estoy encantado de dejar esa decisión en manos de @eviltrout y de ti. Supongo que podemos ser más agresivos, pero no podemos mostrar páginas rotas.
Edición: véase el enlace de retroceso; esto puede ser un problema bastante grave en Android, que tiende a tener una cadencia terrible para actualizar los navegadores.
No puedo reproducir el OP en meta. Lo intenté mediante Browserstack usando Firefox 73 en macOS y Firefox 68 en Windows. @vige, ¿puedes reproducir el problema en meta?
Corrígeme si me equivoco, @pmusaraj, pero creo que, como no configuramos preset-env y, por lo tanto, no definimos objetivos, se utilizan todos los plugins que incluimos. En consecuencia, proposal-optional-chaining se aplica sin duda.
Estoy de acuerdo con esto; quizás solo necesitemos revisar cada plugin anualmente y reconsiderar si sigue siendo necesario.
Esto ya está solucionado en la versión estable (v2.7.4); el plugin proposal-optional-chaining de Babel está ahora habilitado allí y corrige el problema.
¡Muchísimas gracias a todos los desarrolladores involucrados por solucionarlo tan rápido!
Para que conste, según mis pruebas, este error también afectaba, en algunos casos, a la última versión de Microsoft Edge para Android (que, que yo sepa, no ejecuta Gecko).
¿Podrías tener la amabilidad de agregar la etiqueta v2.7.4 real a esa versión?
Acabo de pasar media hora intentando hacer git checkout v2.7.4, lo que resultó no existir