- In den letzten Monaten ist die Geschwindigkeit der GitHub-Website im Safari-Browser schrittweise gesunken
- Bei großen PRs oder Codedateien mit Tausenden von Zeilen ist das Rendern des Bildschirms praktisch unmöglich geworden
- Es treten 100 % Auslastung des Rendering-Prozesses im Browser, leere Bildschirme beim Scrollen sowie starke Verzögerungen bei Suche und Kommentaren auf
- CSS-Änderungen und der Einsatz von transform kollidieren mit einem Performance-Bug in Safari und verursachen das Problem; andere Browser wie Chrome sind vergleichsweise weniger betroffen
- In WebKit wurden einige Performance-Patches umgesetzt, doch bis zum nächsten Safari-Release ist laut GitHubs Frontend-Team ein provisorisches Gegensteuern nötig
Hintergrund und Hauptprobleme
- Beim Zugriff auf die GitHub-Website mit dem Safari-Browser fällt in letzter Zeit insgesamt ein deutlicher Performance-Abfall auf
- Besonders beim Prüfen von Pull Requests (PRs) mit Änderungen von mehreren Tausend Zeilen oder beim Durchsuchen großer Codedateien erreicht das Problem ein Niveau, bei dem das Rendern selbst kaum noch möglich ist
- Im Activity Monitor belegt der Rendering-Prozess 100 % CPU, und das Seiten-Rendering ist so langsam, dass beim Scrollen nur leere Bereiche erscheinen
- Interaktive Funktionen wie Suche und Kommentare reagieren stark verzögert, und selbst das Anklicken von Checkboxen bei PR-Reviews dauert mehrere Sekunden
- Dasselbe Verhalten tritt auch auf aktuellen MacBook Pro mit leistungsstarkem Apple Silicon auf, während Chrome oder andere Browser eine deutlich bessere Erfahrung bieten
Ursache und Analyse des Problems
- Gemeinsame Beschwerden von Nutzern der Safari-Version 18.6 (sowie Beta- und Tech-Preview-Versionen)
- Einige Nutzer erwähnen, dass die schwerwiegenden Performance-Einbrüche nur bei GitHub und nicht allgemein in Safari auftreten
- Der umfangreiche Einsatz von CSS-Selektoren und
transform: translateY wird als direkter Konflikt mit Safaris Grenzen bei der Verarbeitung von GPU-Layern beschrieben
- Da GitHubs Frontend jede Textzeile mit
transform: translateY positioniert, erzeugt Safari Tausende von GPU-Layern
- Chrome optimiert die Layer-Erzeugung, wenn solche Animationen nicht vorhanden sind, und zeigt daher vergleichsweise weniger starke Verlangsamungen
- Als vorläufige Maßnahme beschleunigt ein Skript zum Entfernen der
transform-Eigenschaft die Darstellung, allerdings nicht mit perfekter Positionsgenauigkeit
Nutzererfahrung und verschiedene Berichte
- Mehrere Nutzer beklagen, dass in PRs jede Interaktion wie das Hinzufügen von Reviewern und Labels oder das Bearbeiten der PR-Beschreibung um mehrere Sekunden verzögert ist
- In Safari werden der Code-Browser und die Autovervollständigungs-UI (Suchleiste, Command Palette usw.) sehr langsam
- Es gibt Fälle, in denen auf iOS Safari auch Browserfunktionen wie der native Zurück-Button nicht korrekt funktionieren
- Auch bei der Barrierefreiheit mit VoiceOver ist der Performance-Abfall so stark, dass die Nutzung für sehbehinderte Anwender nahezu unmöglich wird
Diskussion zu Lösung und Gegenmaßnahmen
- Auf WebKit-Seite (Safari-Engine) wurden zuletzt einige Patches für dieses CSS-/Compositor-Performance-Problem umgesetzt, eine sofortige Lösung vor dem nächsten Safari-Release ist jedoch schwierig
- Für GitHub-Ingenieure wurde die Notwendigkeit erwähnt, vor dem nächsten Safari-Release Bug-Gegenmaßnahmen vorzuschlagen und Performance-Probleme frühzeitig zu kommunizieren
- Verschiedene Änderungen an der Frontend-UI (z. B. die Dateiansicht in PRs, neue Funktionen usw.) gelten als direkt mit dem Performance-Abfall verbunden
- Einige Nutzer weichen auf Graphite.dev, GitLab oder Custom-Protocol-Router (z. B. Finicky, Velja usw.) aus beziehungsweise nutzen alternative UIs
Weitere Anmerkungen und praktische Tipps
- Als vorübergehender Workaround wird empfohlen, in Safari nach dem Erstellen eines Issues/PR die tabellenbasierte Funktion zum Hinzufügen von Labels zu verwenden
- Es gibt Stimmen, die vor zu komplexem CSS, Änderungen in der Engineering-Struktur und einer einseitigen Ausrichtung auf Chrome warnen und breitere Browser-Unterstützung fordern
- Einige Nutzer äußern sich kritisch oder humorvoll zu dem Performance-Problem (unnötig emotionale Debatten sollten in Diskussionen vermieden werden)
- Intern und extern wird gefordert, Frontend-Entwicklung mit Blick auf Performance-Optimierung zu überdenken und Multi-Browser-Tests stärker zu gewichten
Fazit
- Die jüngsten Änderungen an GitHubs UI-Struktur und der Einsatz von CSS kollidieren mit Safaris speziellen Rendering-Eigenschaften und verursachen auf einer branchenweit genutzten Kollaborationsplattform gravierende Browser-Probleme
- Sowohl WebKit als auch GitHub müssen aktiv Verbesserungen vorantreiben; kurzfristig ist eine Reaktion mit Fokus auf Safari- und Barrierefreiheitsnutzer nötig
- Das Performance-Problem ist so gravierend, dass es die Entwicklungsarbeit behindert und in der Community große Zustimmung und Verärgerung auslöst
1 Kommentare
Hacker-News-Kommentare
Die Github-Website ist generell überall eher langsam. Weder bei Performance noch bei UX/UI kann man sie als gute Software bezeichnen, und sie wirkt wie das Ergebnis, in das die KPIs und Planungen vieler Leute eingeflossen sind. Dass sie überhaupt ein soziales Netzwerk für Entwickler ist, scheint der „innovativste“ Teil zu sein, und für die tägliche Entwicklungsarbeit ist sie so mittelmäßig, dass Gitlab deutlich besser wirkt. Das Problem liegt nicht an Rails, und es ist nicht richtig, das Wesentliche zu umgehen, indem man es als Technikproblem tarnt
Das WebKit-Team hat in den letzten zwei Tagen Verbesserungen für das Github-Performance-Problem eingespielt passender Link. Im Team wurden auch große PRs erstellt (mehr als 1000 Dateien), und die Kollegen sagen dann nur: „Wenn es geladen ist, gebe ich es frei“
Direkt nachdem Microsoft Github übernommen hatte, wechselte Github fast sofort auf JavaScript-Rendering als SPA. Früher konnte man selbst auf einem Mac Mini von 2011 mit deaktiviertem JavaScript noch durch Github navigieren, heute ist Github selbst mit aktiviertem JS wegen der Kompatibilität alter Browser nicht mehr nutzbar. Es ist schwer zu sagen, welche Seite problematischer ist, aber ich denke, beide tragen Verantwortung. Man könnte natürlich auf neuere Geräte wechseln, aber in einer Atmosphäre, in der die Unterstützung alter Hardware bewusst aufgegeben und statt künftiger Funktionalität geplante Obsoleszenz erzwungen wird, verliert man sogar das Vertrauen in Webstandards
Es gibt viel Kritik an React, aber bei diesem Problem geht es um CSS transforms. Ich würde empfehlen, den verlinkten Inhalt tatsächlich zu lesen
Ich empfehle eine Migration zu Forgejo, Codeberg oder SourceHut. Im Vergleich zu Github und Gitlab sind sie blitzschnell Forgejo / Codeberg / SourceHut
Ich frage mich, wie sich solche Probleme in großen Organisationen immer wiederholen können. Bei den Tests in den wichtigsten Browsern müssten Performance-Probleme doch klar aufgefallen sein, daher verstehe ich nicht, wie jemand das trotzdem durchwinken konnte
Als React-Entwickler spüre ich beim Lesen dieses Threads den Hass der Welt. Es gibt viele Fallen bei unrealistischen Zeitplänen und SPAs, in die sogar Backend-Logik auf das Frontend geladen wird. Ich frage mich, ob React selbst die falsche Wahl ist oder ob es wirklich gut gemachte React-Apps gibt
Generell fühlt sich in der Computerwelt alles langsamer an. Selbst mit einem aktuellen Mac Studio M4 Max und 64 GB RAM ist jede Website langsamer als früher auf meinem MacBook Pro von 2011
Auf HN hört man oft, Github sei langsam geworden, seit die UI auf React migriert wurde, aber ich frage mich, ob das wirklich stimmt. Bei kleinen Projekten merke ich keinen Effekt, daher hätte ich gern belastbare Hinweise
Nicht nur in Safari, auch in Firefox ist Github extrem langsam. Überall sieht man Lade-Spinner, und Seitenwechsel dauern länger als früher. Ich verstehe wirklich nicht, anhand welcher Metriken man das zuvor perfekt funktionierende SSR überhaupt in eine SPA umgestellt hat