- En los últimos meses, la velocidad del sitio web de GitHub ha ido empeorando gradualmente en el navegador Safari
- En los PR grandes o en archivos de código con miles de líneas, renderizar la pantalla se ha vuelto prácticamente imposible
- Se presentan problemas como uso del 100% del proceso de renderizado del navegador, pantallas en blanco al desplazarse y retrasos graves en funciones de búsqueda y comentarios
- Los cambios de CSS y el uso de transform entran en conflicto con un bug de rendimiento de Safari y provocan el problema; otros navegadores como Chrome se comportan relativamente mejor
- En WebKit ya se aplicaron algunos parches de rendimiento, pero se menciona la necesidad de una respuesta temporal del equipo de frontend de GitHub hasta el próximo lanzamiento de Safari
Contexto y problemas principales
- Recientemente, al acceder al sitio web de GitHub desde Safari se ha hecho evidente una degradación general del rendimiento
- En particular, al revisar cambios de miles de líneas o más en un Pull Request (PR) o al explorar archivos de código muy grandes, el nivel de lentitud llega al punto de hacer imposible el renderizado
- En Activity Monitor, el proceso de renderizado ocupa el 100% del CPU, y la velocidad de renderizado de la página es tan lenta que al desplazarse la pantalla aparece como un espacio vacío
- Las funciones interactivas, como búsqueda y comentarios, sufren retrasos severos, y durante la revisión de PR incluso hacer clic en una casilla puede tardar varios segundos
- El mismo comportamiento ocurre incluso en una MacBook Pro reciente con Apple Silicon de gama alta, mientras que en Chrome u otros navegadores la experiencia es mucho mejor
Causa y análisis del problema
- Se han recibido quejas comunes de usuarios de Safari 18.6 (así como de la beta y la Technical Preview)
- Algunos usuarios señalan que la degradación grave del rendimiento ocurre de forma particularmente marcada solo en GitHub, no en Safari en general
- Se describe que el uso masivo de selectores CSS y de
transform: translateY choca directamente con los límites de Safari para manejar capas GPU
- Como el frontend de GitHub posiciona todas las líneas de texto con
transform: translateY, Safari termina creando miles de capas GPU
- Chrome, cuando no hay este tipo de animaciones, optimiza la creación de capas y por eso muestra un rendimiento relativamente menos deficiente
- Como medida temporal, aplicar un script que quite la propiedad
transform acelera el funcionamiento, aunque la precisión del posicionamiento no es perfecta
Experiencia de usuario y reportes diversos
- Varios usuarios expresan su frustración porque todas las interacciones en los PR, como agregar revisores o etiquetas y editar la descripción del PR, se retrasan varios segundos
- Al entrar desde Safari, la interfaz del navegador de código y del autocompletado (barra de búsqueda, command palette, etc.) se vuelve muy lenta
- En iOS Safari también existen casos donde funciones del navegador, como el botón nativo de retroceder, no funcionan correctamente
- También desde la perspectiva de accesibilidad (VoiceOver), la degradación del rendimiento es tan grave que para usuarios con discapacidad visual el uso se vuelve casi imposible
Discusión sobre soluciones y respuesta
- Del lado de WebKit (el motor de Safari) se han hecho recientemente algunos parches para este problema de rendimiento de CSS/compositor, pero es difícil resolverlo de inmediato antes del próximo lanzamiento de Safari
- Se menciona la necesidad de proponer una respuesta al bug para los ingenieros de GitHub y de comunicar con anticipación los problemas de rendimiento antes del próximo lanzamiento de Safari
- Se considera que varios cambios recientes en la UI del frontend (por ejemplo, la UI de cambios de archivos en PR y nuevas funciones) están directamente relacionados con la degradación del rendimiento
- Algunos usuarios optan por soluciones alternativas o interfaces sustitutas como Graphite.dev, GitLab o enrutadores de protocolo personalizados (por ejemplo, Finicky, Velja, etc.)
Otros comentarios y consejos prácticos de usuarios
- Como solución temporal, se sugiere en Safari crear el issue/PR y luego usar la función de agregar etiquetas en formato de tabla
- Hay voces que expresan preocupación por un CSS excesivamente complejo, cambios en la estructura de ingeniería y una excesiva orientación a Chrome, y que enfatizan la necesidad de dar soporte a varios navegadores
- Algunos usuarios añadieron comentarios críticos o humorísticos sobre el problema de rendimiento (se pide cuidado en la discusión para evitar debates emocionales innecesarios)
- Tanto interna como externamente se plantean opiniones sobre repensar las prácticas de desarrollo frontend que requieren optimización de rendimiento y sobre la importancia de probar en múltiples navegadores
Conclusión
- Los cambios recientes en la estructura de la UI de GitHub y en su uso de CSS entran en conflicto con las características propias de renderizado de Safari, causando un problema grave de usabilidad del navegador en una plataforma de colaboración estándar de la industria
- Se necesita una voluntad activa de mejora tanto por parte de WebKit como de GitHub, y a corto plazo se requiere una respuesta centrada en usuarios de Safari y en accesibilidad
- Es un problema de rendimiento que llega a interferir con el trabajo de desarrollo, por lo que en la comunidad se ha generado un fuerte consenso y enojo
1 comentarios
Opinión de Hacker News
El sitio web de Github tiende a ser lento en general. No se puede decir que sea un buen software ni en rendimiento ni en UX/UI; da la impresión de ser el resultado de los KPI y la planeación de muchas personas metidos ahí. Lo más “innovador” es que exista como una red social para desarrolladores, y para el trabajo de desarrollo cotidiano es tan mediocre que Gitlab llega a sentirse mucho mejor. Este problema no es culpa de Rails, y no me parece correcto disfrazarlo como un tema técnico para evadir el fondo del asunto
El equipo de WebKit aplicó en los últimos dos días mejoras para este problema de rendimiento en Github enlace relacionado. Dentro del equipo incluso crearon PR gigantescos, de más de 1000 archivos, y sus colegas les decían “te lo apruebo cuando termine de cargar”
En cuanto Microsoft adquirió Github, Github cambió casi de inmediato a un modelo de renderizado con JavaScript (SPA). Antes se podía navegar Github incluso en un Mac Mini 2011 con JavaScript desactivado, pero ahora, aun con JS activado, ya no se puede usar Github por la compatibilidad con navegadores antiguos. Es difícil decir qué lado tiene más culpa, pero creo que ambos la comparten. Uno podría cambiarse a un dispositivo más nuevo, pero cuando el soporte para hardware antiguo se abandona deliberadamente y se impone la obsolescencia programada por encima de la funcionalidad futura, hasta la fe en los estándares web se tambalea
Hay mucha crítica hacia React, pero este problema en particular es de
CSS transform. Recomiendo leer de verdad el contenido del enlace relacionadoRecomiendo migrar a Forgejo, Codeberg o SourceHut. Comparados con Github y Gitlab, son rapidísimos Forgejo / Codeberg / SourceHut
Me pregunto cómo este tipo de problema se repite en organizaciones grandes. Seguramente detectaron problemas de rendimiento en pruebas con los navegadores principales, así que no entiendo cómo alguien dio luz verde para seguir adelante
Como desarrollador de React, al ver este hilo siento el odio del mundo. Hay demasiadas trampas: calendarios irreales, y SPA que cargan incluso la lógica de backend en el frontend. Me pregunto si React en sí fue una mala decisión, o si de verdad existen apps en React bien hechas
Da la sensación de que, en general, todo en la computación se volvió más lento. Incluso usando una Mac Studio M4 Max reciente con 64GB de RAM, todos los sitios web se sienten más lentos que en la época de un MacBook Pro 2011
En HN he visto muchas veces que Github se volvió lento al migrar su UI a React, pero me pregunto si realmente fue así. En proyectos pequeños no se nota tanto, así que quisiera encontrar evidencia más sólida
No solo en Safari: en Firefox Github también está increíblemente lento, aparecen spinners de carga por todos lados y los cambios de página tardan más que antes. No entiendo con qué métricas decidieron reemplazar por SPA un SSR que funcionaba perfectamente bien