O commit 08883cbdd1c39a0c15b97af44ddaefe14acdc21a quebrou a renderização do Discourse em versões mais antigas do Gecko. O Gecko não suporta o operador de encadeamento opcional antes da versão 74.
Posso estar errado, mas a suposição inicial é que não definimos a lista de navegadores e ele está usando algum padrão (provavelmente @babel/preset-env · Babel), não considerando essa versão como algo que suportamos e, como resultado, não há transpilação.
É estranho, porém, que o Firefox 74 tenha apenas um ano de idade, mas, ao verificar o browserslist atualmente:
Agora, a pergunta é: @sam, queremos dar suporte a isso? Embora tenha apenas um ano, a versão atual do Firefox é a 89, então essa versão está 15 lançamentos atrás. Não tenho certeza sobre isso; sua decisão. É importante considerar que, para dar suporte a essa versão, será necessário aumentar o peso do payload de todos, pois a transpilação funciona mais ou menos como um polyfill (adicionando algumas funções para dar suporte a essa versão e substituindo a sintaxe por chamadas de função).
Há muitas razões, mas principalmente isso torna tudo mais fácil para o desenvolvedor: não precisamos pensar demais em tudo o que podemos ou não usar, e temos uma base bastante moderna.
Estou aberto a retirar o suporte, desde que nossa alternativa em HTML esteja implementada.
O que certamente não podemos fazer é mostrar uma página estática funcional para o IE9 e uma página quebrada para um Firefox de 1 ano de idade.
Prefiro apenas transpilar para um Firefox/Chrome de 2 a 3 anos, mas estou feliz em deixar essa decisão para @eviltrout e para você. Podemos ser mais agressivos, imagino, mas não podemos exibir páginas quebradas.
Edição: veja o backlink, isso pode ser um problema bastante sério no Android, que tende a ter um ritmo terrível de atualização de navegadores.
Não consigo reproduzir o OP no meta. Tentei pelo Browserstack usando o Firefox 73 no macOS e o Firefox 68 no Windows. @vige, você consegue reproduzir o problema no meta?
Ok, corrija-me se eu estiver errado, @pmusaraj, mas acho que, como não configuramos o preset-env e, consequentemente, não definimos os alvos, todos os plugins que incluímos são utilizados. Como resultado, o proposal-optional-chaining certamente está sendo aplicado.
Acho que estou de acordo com isso; talvez apenas precisemos verificar todos os anos cada plugin e reavaliar se ainda é necessário?
Isso já foi corrigido na versão estável (v2.7.4). O plugin proposal-optional-chaining do Babel agora está habilitado nessa versão e resolve o problema.
Muito obrigado a todos os desenvolvedores envolvidos por corrigirem isso tão rapidamente!
Para constar, de acordo com meus testes, esse bug também afetava, em alguns casos, a versão mais recente do Microsoft Edge para Android (que, pelo que sei, não executa o Gecko).
Você poderia ser tão gentil a ponto de adicionar a tag v2.7.4 real a esse lançamento?
Acabei de gastar meia hora tentando git checkout v2.7.4, o que acabou não existindo