Discourse não carrega em navegadores legados

Sou um usuário do community(dot)jenkins(dot)io (desculpe, só consigo postar 2 links) que, de acordo com um dos administradores, usa uma instância do Discourse patrocinada pelo grupo oficial do Discourse. A meta tag no cabeçalho/fonte diz Discourse 2.9.0.beta2

Em algum momento entre segunda e quarta-feira desta semana (14/03/2022 a 16/03/2022), o site não carrega mais em navegadores Firefox legados do Android. Especificamente, o Firefox Android 68.11.0. Este também é evidentemente o núcleo para outros navegadores como Waterfox, Silk browser no FireStick. Nunca estive aqui antes, mas também não carrega. A página parece buscar dados por alguns segundos, depois fica em branco. “Solicitar site para desktop” também fica em branco. “Ver fonte” leva a um abismo de nada.

Eu relatei isso no site Jenkins e o administrador indicou que isso é provável, “porque replaceAll não está disponível no Firefox 68.” e forneceu evidências do Saucelabs por volta da marca de 00:17 segundos a mensagem de erro.

No início deste mês, uma mudança em JavaScript quebrou a funcionalidade do StackOverflow (link abaixo) pela segunda vez nos sites StackOverflow/Exchange. Eles quebraram e consertaram uma vez antes em dezembro e esperamos sinceramente que eles possam reverter essa mudança e restaurar essa funcionalidade.

Interessantemente, liguei um PC WINXP rodando FF 52.9.0 ESR e, apesar do banner “seu navegador está muito desatualizado para funcionar neste site”, o site pareceu carregar bem, então parece bastante específico/esotérico.

Gostaria de pedir à equipe do Discourse que revise quais mudanças foram feitas e se há uma maneira de mitigar essa mudança que quebra a funcionalidade. Reconheço que nada pode ser suportado para sempre, especialmente quando não está no escopo de testes, mas quando é relatado e se é uma correção óbvia que não impacta significativamente a operabilidade, considere isso. Não procuro toda a funcionalidade, apenas alguma funcionalidade principal (pelo menos ler conteúdo).

Link do StackExchange: meta(dot)stackexchange(dot)com/q/376694

10 curtidas

Nós certamente sempre queremos exibir pelo menos uma visualização somente leitura em navegadores antigos sem suporte. Quebrar a renderização e mostrar apenas uma página em branco é um bug.

Analisaremos essa regressão na próxima semana.

8 curtidas

replaceAll é não suportado no iOS <= 13.3

Este PR adicionará a detecção para este recurso e voltará para a visualização HTML básica, se necessário:

12 curtidas

3 posts foram mesclados em um tópico existente: Frontend no Site de Produção Fora do Ar – Erro Ember/Test

Obrigado @Ian_W pelo relatório :+1:

Corrigimos o problema. Este tópico será fechado em um dia.

4 curtidas

Só consigo relatar sucesso parcial no Firefox legado no Android.

Tanto em meta.discourse.org quanto em community.jenkins.io, agora vejo o banner “o navegador está muito antigo”, o mesmo que no PC com WINXP rodando FF 52.9.0 ESR.

Mas não há tópicos, apenas o logotipo e o rodapé [Home .. Política de Privacidade].

No site do Jenkins, vejo as Categorias, a descrição das categorias e a contagem de “Tópicos”, mas ao clicar em qualquer categoria, novamente não consigo ver nenhum tópico.

4 curtidas

1 curtida

Consegui fazer o meta.discourse.org renderizar a versão antiga do HTML no Firefox 40:

Isso deve acontecer em todos os Firefox < 77.

3 curtidas

Conforme observado, minha captura de tela vem da variante Android. O site parece funcionar bem em uma variante Desktop.

Não tenho ideia de como posso extrair informações adicionais do navegador FF Android para auxiliar na depuração.

3 curtidas

Acabei de instalar o fennec Firefox 68.9, que está obsoleto, no meu celular, e parece que está funcionando agora:

Alguma ideia do que estou perdendo ao tentar reproduzir o bug?

3 curtidas

Bem, não tenho certeza do que dizer. Acabei de pegar um telefone Android redefinido de fábrica (rodando 7.0 porque é um telefone antigo), baixei o APK do Firefox Android 68.11, instalei e naveguei até meta(.)discourse(.)org ** e obtenho a captura de tela anterior.

Então fica estranho. Vá para meta(.)discourse(.)org/t/ ** e eu recebo:

“Oops! Essa página não existe ou é privada.”

Mas então recebo uma lista de tópicos “Populares” e “Recentes” e posso ver este tópico.
Clicando no tópico, vejo o título do tópico, mais “bug”, “pri-high”, mas nenhum conteúdo.

**: post com limite de 2 links
(também não consigo fazer upload de capturas de tela pela interface do usuário, então tive que fazer o upload por resposta, um de cada vez)

1 curtida

1 curtida

Assistindo caso alguém encontre uma solução para usar o Discourse em um iPhone 6 antes que eu acabe comprando um telefone novo.

1 curtida

Estou tendo o mesmo problema, como explicado abaixo:

1 curtida

Para iOS < 13 ou Firefox Fennec obsoleto no Android, deveríamos estar mostrando a visualização HTML.

No entanto, não estamos fazendo isso porque não há visualização HTML devido a

que está em nossa base de código há muito tempo.

Incluir o conteúdo do crawler para que possamos usar a visualização HTML como fallback é caro, então talvez queiramos adicionar o Safari antigo a

para que seja feito apenas quando necessário?

A outra alternativa é dizer ao Babel para transpilar replaceAll / encontrar um polyfill bom o suficiente.

cc @sam @david @gerhard

5 curtidas

Outras alternativas que consigo pensar:

  1. Eliminar browser_update_user_agents completamente, usar uma requisição XHR compatível com IE6 para obter o conteúdo para renderização nesses navegadores em dispositivos móveis. (desabilitar javascript já não funciona em dispositivos móveis de qualquer forma)

  2. Polyfill replaceAll

  3. Incluir conteúdo do crawler incondicionalmente (também em dispositivos móveis)

  4. Igual a (1), mas deixar a configuração como uma micro otimização, com fallback para XHR.

Estou pendendo entre (1) e (3), (4)

7 curtidas

3 é algo que receio que teremos que fazer eventualmente, pois o número de dispositivos móveis abandonados por seus fabricantes só aumentará com o tempo. Isso aumentará um pouco a carga do servidor ao preencher o template e ampliará nosso tamanho de HTML no mobile, mas, na minha opinião, deveríamos fazê-lo.

Portanto, eu diria que fazemos 3 e investigamos se fazer 1 e 2 é viável.

5 curtidas

Poderíamos inverter a situação, habilitar a otimização móvel apenas em navegadores específicos, o que nos permitiria ainda ter essa otimização em 95% do tráfego móvel que nos atinge e ainda ser muito seguro?

3 curtidas