Discourse no carga en navegadores antiguos

Soy un usuario de community(dot)jenkins(dot)io (lo siento, solo puedo publicar 2 enlaces) que, según uno de los administradores, utiliza una instancia de Discourse patrocinada por el grupo oficial de Discourse. La metaetiqueta en la cabecera/fuente dice Discourse 2.9.0.beta2

En algún momento entre el lunes y el miércoles de esta semana (14/16 de marzo de 2022), el sitio ya no se carga en los navegadores Firefox de Android heredados. Específicamente, Firefox Android 68.11.0. Este es evidentemente el núcleo de otros navegadores como Waterfox, el navegador Silk en FireStick. Nunca he estado aquí antes, pero tampoco se carga. La página parece recuperar datos durante unos segundos, luego queda en blanco. “Solicitar sitio de escritorio” también está en blanco. “Ver código fuente” se desvía hacia un abismo de nada.

Reporté esto en el sitio de Jenkins y el administrador ha indicado que esto es probable, “porque replaceAll no está disponible en Firefox 68”. y proporcionó evidencia de Saucelabs alrededor de la marca de 00:17 segundos el mensaje de error.

A principios de este mes, un cambio en JavaScript rompió la funcionalidad de StackOverflow (enlace a continuación) por segunda vez en los sitios de StackOverflow/Exchange. Lo rompieron y lo arreglaron una vez antes en diciembre y esperamos sinceramente que puedan revertir ese cambio y restaurar esa funcionalidad.

Curiosamente, encendí una PC con WINXP que ejecutaba FF 52.9.0 ESR y, a pesar del banner “tu navegador es demasiado antiguo para funcionar en este sitio”, el sitio parecía cargarse bien, por lo que parece bastante específico/esotérico.

Pediría al equipo de Discourse que revise qué cambios se realizaron y si hay alguna manera de mitigar este cambio que lo rompe. Reconozco que nada puede ser compatible para siempre, especialmente cuando no está dentro del alcance de las pruebas, pero cuando se informa y si es una solución obvia que no afecta significativamente la operabilidad, considérelo. No busco toda la funcionalidad, solo alguna funcionalidad central (al menos leer contenido).

Enlace de StackExchange: meta(dot)stackexchange(dot)com/q/376694

10 Me gusta

Ciertamente siempre queremos mostrar al menos una vista de solo lectura en navegadores antiguos no compatibles. Romper la representación y solo mostrar una página en blanco es un error.

Examinaremos esta regresión durante la próxima semana.

8 Me gusta

replaceAll no es compatible con iOS <= 13.3 ("replaceAll" | Can I use... Support tables for HTML5, CSS3, etc)

Esta PR agregará la detección de esta función y recurrirá a la vista HTML básica si es necesario:

12 Me gusta

3 publicaciones se fusionaron en un tema existente: Frontend en el sitio de producción caído – error de Ember/Test

Gracias @Ian_W por el informe :+1:

Hemos solucionado el problema. Este tema se cerrará en un día.

4 Me gusta

Solo puedo informar de un éxito parcial en Firefox heredado en Android.

Tanto en meta.discourse.org como en community.jenkins.io ahora veo el banner “el navegador es demasiado antiguo”, igual que en el PC con WINXP que ejecuta FF 52.9.0 ESR.

Pero no hay temas, solo el logo y el pie de página [Inicio .. Política de Privacidad].

En el sitio de Jenkins, sí veo las Categorías, la descripción de las categorías y el recuento de “Temas”, pero al hacer clic en cualquier categoría, de nuevo no puedo ver ningún problema.

4 Me gusta

1 me gusta

Conseguí que meta.discourse.org renderizara la versión HTML antigua en Firefox 40:

Esto debería ocurrir en todos los Firefox < 77.

3 Me gusta

Como se señaló, mi captura de pantalla proviene de la variante de Android. El sitio parece funcionar bien en una variante de escritorio.

No tengo idea de cómo puedo extraer información adicional del navegador FF para Android para ayudar a depurar.

3 Me gusta

Acabo de instalar la versión obsoleta de Firefox 68.9 fennec en mi teléfono y parece que ahora funciona:

¿Alguna idea de qué me estoy perdiendo al intentar reproducir el error?

3 Me gusta

Bueno, no estoy seguro de qué decir. Acabo de tomar un teléfono Android reseteado de fábrica (con la versión 7.0 porque es un teléfono antiguo), descargué Firefox Android 68.11 APK, lo instalé y navegué a meta(.)discourse(.)org ** y obtengo la captura de pantalla anterior.

Luego se pone raro. Voy a meta(.)discourse(.)org/t/ ** y obtengo:

“Oops! Esa página no existe o es privada.”

Pero luego obtengo una lista de temas “Populares” y “Recientes” y puedo ver este mismo tema.
Al hacer clic en el tema, ahora veo el título del tema, además de “bug”, “pri-high”, pero sin contenido.

**: publicación limitada a 2 enlaces
(tampoco puedo subir capturas de pantalla a través de la interfaz de usuario, así que tuve que subirlas por respuesta, una a la vez)

1 me gusta

1 me gusta

Vigilando por si alguien encuentra una solución para usar Discourse en un iPhone 6 antes de que termine comprando un teléfono nuevo.

1 me gusta

Tengo el mismo problema, como se explica a continuación:

1 me gusta

Para iOS < 13 o Firefox Fennec obsoleto en Android, deberíamos mostrar la vista HTML.

Sin embargo, no lo estamos haciendo porque no hay vista HTML debido a

que está en nuestra base de código desde siempre.

Incluir el contenido del rastreador para que podamos recurrir a la vista HTML es costoso, así que tal vez queramos agregar Safari antiguo a

para que se haga solo cuando sea necesario?

La otra alternativa es decirle a Babel que transpila replaceAll / encontrar un polyfill lo suficientemente bueno.

cc @sam @david @gerhard

5 Me gusta

Otras alternativas que se me ocurren:

  1. Eliminar browser_update_user_agents por completo, usar una solicitud XHR compatible con IE6 para obtener el contenido para renderizar en estos navegadores en dispositivos móviles. (desactivar javascript ya no funciona en móviles de todos modos)

  2. Polyfill replaceAll

  3. Incluir el contenido del rastreador incondicionalmente (incluso en dispositivos móviles)

  4. Igual que (1) pero dejar la configuración como una micro optimización, recurrir a XHR.

Me inclino entre (1) y (3), (4)

7 Me gusta

3 es algo que me temo que tendremos que hacer eventualmente, ya que el número de dispositivos móviles abandonados por sus fabricantes solo aumentará con el tiempo. Aumentará la carga del servidor al completar la plantilla y ampliará el tamaño de nuestro HTML en dispositivos móviles, pero en mi opinión deberíamos hacerlo.

Así que diría que hagamos 3 e investiguemos si hacer 1 y 2 es factible.

5 Me gusta

Podríamos darle la vuelta, habilitar la optimización móvil solo en navegadores específicos, lo que nos permitiría mantener esta optimización en el 95% del tráfico móvil que nos llega y seguir siendo muy seguros.

3 Me gusta