- Ces derniers mois, le site web de GitHub est devenu progressivement plus lent dans le navigateur Safari
- Sur les gros PR ou les fichiers contenant des milliers de lignes de code, le rendu de l’écran devient pratiquement impossible
- Le processus de rendu du navigateur utilise 100 % et, lors du défilement, des zones blanches s’affichent ; les fonctions de recherche et de commentaires subissent aussi de très fortes latences
- Des modifications CSS et l’usage de
transform entrent en conflit avec un bug de performance de Safari et provoquent le problème ; d’autres navigateurs comme Chrome s’en sortent relativement mieux
- Quelques correctifs de performance ont été appliqués dans WebKit, mais il est indiqué qu’une réponse temporaire de l’équipe frontend de GitHub sera nécessaire jusqu’à la prochaine version de Safari
Contexte et principaux problèmes
- Ces derniers temps, la dégradation globale des performances est particulièrement visible lorsqu’on accède au site web de GitHub avec le navigateur Safari
- En particulier, lorsqu’on consulte des Pull Requests (PR) avec des modifications de plusieurs milliers de lignes ou qu’on parcourt de gros fichiers de code, on atteint un niveau où le rendu lui-même devient impossible
- Dans Activity Monitor, le processus de rendu monopolise 100 % du CPU, et la page se rend si lentement que l’écran apparaît vide pendant le défilement
- Les fonctions interactives comme la recherche ou les commentaires sont gravement ralenties, et lors d’une revue de PR, même cliquer sur une case à cocher peut prendre plusieurs secondes
- Le même phénomène se produit même sur les derniers MacBook Pro haut de gamme équipés d’Apple Silicon, alors que Chrome ou d’autres navigateurs offrent une expérience bien meilleure
Cause du problème et analyse
- Des plaintes communes ont été signalées chez les utilisateurs de Safari 18.6 (ainsi que des versions bêta / Technology Preview)
- Certains utilisateurs indiquent que cette forte dégradation des performances se produit surtout sur GitHub, et non dans Safari de manière générale
- Il est expliqué que l’usage massif de sélecteurs CSS et de
transform: translateY entre directement en conflit avec les limites de gestion des couches GPU de Safari
- Le frontend de GitHub positionne toutes les lignes de texte avec
transform: translateY, ce qui amène Safari à créer des milliers de couches GPU
- Chrome, lorsqu’il n’y a pas ce type d’animation, optimise la création des couches et montre donc des performances relativement moins mauvaises
- Comme solution temporaire, l’application d’un script supprimant la propriété
transform accélère l’affichage, mais la précision du positionnement n’est pas parfaite
Expérience utilisateur et signalements variés
- Plusieurs utilisateurs se plaignent que toutes les interactions dans les PR, comme l’ajout de reviewers ou de labels, ou la modification de la description du PR, subissent des retards de plusieurs secondes
- Lors d’un accès via Safari, l’interface du navigateur de code ainsi que les fonctionnalités d’autocomplétion (barre de recherche, palette de commandes, etc.) deviennent très lentes
- Sur Safari iOS, il existe aussi des cas où des fonctions du navigateur comme le bouton natif retour ne fonctionnent pas correctement
- Du point de vue de l’accessibilité (VoiceOver), la dégradation des performances est également sévère, au point de rendre l’usage presque impossible pour les utilisateurs malvoyants
Discussions sur les solutions et la réponse
- Côté WebKit (moteur de Safari), quelques correctifs récents sur ce problème de performances lié au CSS / au compositeur ont été apportés, mais une résolution immédiate reste difficile avant la prochaine version de Safari
- Il est mentionné qu’il faut proposer aux ingénieurs de GitHub une réponse au bug avant la prochaine version de Safari et communiquer en amont sur les problèmes de performances
- Divers changements dans l’interface frontend (par exemple l’UI des fichiers modifiés dans les PR, de nouvelles fonctionnalités, etc.) sont considérés comme directement liés à cette dégradation des performances
- Certains utilisateurs contournent le problème ou utilisent une interface alternative via Graphite.dev, GitLab, ou des routeurs de protocole personnalisés (par ex. Finicky, Velja)
Autres commentaires et astuces d’usage
- Comme solution de contournement temporaire, il est conseillé dans Safari d’utiliser la fonctionnalité d’ajout de labels en mode tableau après avoir créé une issue ou une PR
- Des voix soulignent aussi la nécessité de prendre en charge divers navigateurs, tout en exprimant des inquiétudes face à une CSS trop complexe, à l’évolution de l’architecture d’ingénierie et à une standardisation excessive autour de Chrome
- Certains utilisateurs ont ajouté des commentaires critiques ou humoristiques sur les problèmes de performances (avec un rappel à éviter les débats émotionnels inutiles dans la discussion)
- Des avis internes et externes appellent à repenser les pratiques de développement frontend nécessitant une optimisation des performances, ainsi qu’à renforcer l’importance des tests multi-navigateurs
Conclusion
- Les récents changements de structure UI de GitHub et sa manière d’utiliser le CSS entrent en conflit avec les caractéristiques propres du rendu de Safari, provoquant des gênes critiques sur une plateforme de collaboration considérée comme standard dans l’industrie
- Une volonté d’amélioration active est nécessaire à la fois de la part de WebKit et de GitHub, avec à court terme une réponse centrée sur les utilisateurs de Safari et sur l’accessibilité
- Il s’agit d’un problème de performance suffisamment grave pour perturber le travail de développement, suscitant une forte empathie et une grande colère au sein de la communauté
1 commentaires
Avis Hacker News
Le site de GitHub est plutôt lent partout. On ne peut pas vraiment dire que c’est un bon logiciel, ni en performance ni en UX/UI, et ça donne l’impression d’un produit façonné par les KPI et les plans de toute une série d’intervenants. Le fait même que ce soit un réseau social pour développeurs est probablement sa partie la plus « innovante », et pour le travail de développement au quotidien, c’est tellement banal qu’on en vient à trouver GitLab bien meilleur. Ce problème n’est pas dû à Rails, et je ne pense pas qu’il soit juste d’esquiver le fond du sujet en l’enrobant de considérations techniques
L’équipe WebKit a déployé ces deux derniers jours des améliorations pour les problèmes de performance de GitHub dans Safari lien associé. Quelqu’un dans l’équipe a même créé une PR massive de plus de 1 000 fichiers, et ses collègues disaient en plaisantant : « quand elle s’ouvrira, je l’approuverai »
Dès que Microsoft a racheté GitHub, GitHub est presque immédiatement passé à un rendu JavaScript de type SPA. Avant, il était possible de naviguer sur GitHub sur un Mac Mini de 2011 avec JavaScript désactivé, alors qu’aujourd’hui le service est inutilisable sur d’anciens navigateurs même avec JS activé. Il est difficile de dire quel côté pose le plus problème, mais je pense que les deux portent une part de responsabilité. On peut toujours remplacer son matériel par un plus récent, mais dans un climat où l’on abandonne volontairement le support des anciens appareils et où l’on impose l’obsolescence programmée au détriment des capacités futures, on finit même par perdre confiance dans les standards du web
Il y a beaucoup de critiques contre React, mais dans ce cas précis il s’agit d’un problème de
transformCSS. Je recommande de lire réellement le contenu du lien associéJe recommande de migrer vers Forgejo, Codeberg ou SourceHut. C’est d’une rapidité fulgurante comparé à GitHub et GitLab Forgejo / Codeberg / SourceHut
push/pullfonctionnaient tant bien que mal, mais les actions étaient difficiles à utiliser car elles nécessitaient plus de 100 MB de transfertJe me demande comment ce type de problème peut se répéter dans de grandes organisations. Ils ont forcément dû voir les problèmes de performance dans les tests sur les principaux navigateurs, donc j’ai du mal à comprendre que quelqu’un ait pu donner son feu vert
En tant que développeur React, ce fil me fait ressentir toute la haine du monde. Il y a énormément de pièges dans les SPA, entre délais irréalistes et logique backend qu’on finit aussi par empiler côté frontend. Je me demande si React est vraiment un mauvais choix en soi, ou s’il existe de vraies applications React bien conçues
J’ai l’impression que tout l’écosystème informatique est devenu plus lent. Même avec un Mac Studio M4 Max récent et 64 GB de RAM, tous les sites web me paraissent plus lents qu’à l’époque de mon MacBook Pro 2011
Sur HN, j’ai souvent lu que GitHub était devenu lent à cause de la migration de son interface vers React, mais je me demande si c’est réellement le cas. Sur de petits projets, l’impact ne se voit pas, donc j’aimerais trouver des éléments concrets
GitHub est extrêmement lent non seulement dans Safari mais aussi dans Firefox, avec des spinners de chargement visibles un peu partout et des transitions de page plus longues qu’avant. Je ne comprends vraiment pas sur quels indicateurs ils se sont appuyés pour remplacer un SSR qui fonctionnait parfaitement par un SPA