- Dalam beberapa bulan terakhir, kecepatan situs web GitHub di browser Safari makin menurun
- Pada PR berukuran besar atau file kode dengan ribuan baris, rendering layar praktis menjadi mustahil
- Terjadi penggunaan 100% pada proses rendering browser, layar kosong saat menggulir, serta latensi parah pada fitur pencarian dan komentar
- Perubahan CSS dan penggunaan transform berbenturan dengan bug performa Safari dan memicu masalah ini, sementara browser lain seperti Chrome relatif lebih baik
- Beberapa patch performa sudah diterapkan di WebKit, tetapi disebutkan bahwa hingga rilis Safari berikutnya, tim frontend GitHub perlu menyiapkan penanganan sementara
Latar belakang dan masalah utama
- Belakangan ini, penurunan performa secara menyeluruh makin menonjol saat mengakses situs web GitHub lewat browser Safari
- Terutama saat melihat perubahan dengan ribuan baris atau lebih di Pull Request (PR) atau menjelajahi file kode berukuran besar, kondisinya mencapai titik di mana rendering itu sendiri nyaris tidak mungkin dilakukan
- Di Activity Monitor, proses rendering memakan 100% CPU, dan kecepatan render halaman begitu lambat hingga saat menggulir, layar tampak sebagai ruang kosong
- Fitur interaktif seperti pencarian dan komentar mengalami jeda parah, dan bahkan mengklik kotak centang saat review PR bisa memakan waktu beberapa detik atau lebih
- Masalah yang sama terjadi bahkan di MacBook Pro terbaru dengan Apple Silicon kelas atas, sementara saat memakai Chrome atau browser lain pengalamannya jauh lebih baik
Penyebab dan analisis masalah
- Keluhan yang sama datang dari pengguna Safari versi 18.6 (serta beta/Tech Preview)
- Seorang pengguna menyebut bahwa penurunan performa yang sangat parah ini terjadi secara khusus di GitHub, bukan di Safari secara umum
- Penggunaan besar-besaran selector CSS dan
transform: translateY dijelaskan berbenturan langsung dengan batas pemrosesan layer GPU Safari
- Karena frontend GitHub menempatkan setiap baris teks dengan
transform: translateY, Safari akhirnya membuat ribuan layer GPU
- Chrome mengoptimalkan pembuatan layer saat animasi seperti itu tidak ada, sehingga performanya relatif tidak separah itu
- Sebagai solusi sementara, menerapkan skrip untuk menghapus properti
transform dapat mempercepat kinerja, tetapi ketepatan posisinya tidak sempurna
Pengalaman pengguna dan berbagai laporan
- Banyak pengguna mengeluhkan bahwa semua interaksi di PR, seperti menambahkan reviewer atau label dan mengubah deskripsi PR, tertunda beberapa detik atau lebih
- Saat diakses lewat Safari, UI code browser dan autocomplete (seperti bilah pencarian dan command palette) menjadi sangat lambat
- Di iOS Safari, ada juga kasus di mana fungsi browser seperti tombol native kembali tidak bekerja dengan benar
- Dari sisi aksesibilitas (VoiceOver), penurunan performanya juga sangat parah, sampai-sampai pengguna tunanetra nyaris tidak bisa menggunakannya
Diskusi solusi dan penanganan
- Dari pihak WebKit (engine Safari), baru-baru ini sudah ada beberapa patch untuk masalah performa CSS/compositor terkait, tetapi perbaikan langsung dinilai sulit sebelum rilis Safari berikutnya
- Disebutkan perlunya mengusulkan penanganan bug kepada engineer GitHub sebelum rilis Safari berikutnya dan melakukan komunikasi lebih awal terkait isu performa
- Berbagai perubahan UI frontend (misalnya UI perubahan file PR, fitur baru, dan sebagainya) dinilai berkaitan langsung dengan penurunan performa
- Sebagian pengguna memilih jalan memutar atau UI alternatif melalui Graphite.dev, GitLab, atau custom protocol router (misalnya Finicky, Velja, dan lain-lain)
Komentar lain dan tips pengguna nyata
- Sebagai jalan memutar sementara, ada saran untuk membuat issue/PR di Safari lalu menggunakan fitur penambahan label berbasis tabel
- Ada juga suara yang menyoroti perlunya dukungan untuk berbagai browser, serta kekhawatiran terhadap CSS yang terlalu kompleks dan perubahan struktur engineering yang terlalu berpusat pada Chrome
- Sebagian pengguna menambahkan komentar kritis atau bernada humor tentang masalah performa ini (perdebatan emosional yang tidak perlu patut dihindari dalam diskusi)
- Muncul pendapat internal maupun eksternal tentang perlunya meninjau ulang pendekatan pengembangan frontend yang membutuhkan optimasi performa dan pentingnya pengujian lintas browser
Kesimpulan
- Perubahan terbaru pada struktur UI GitHub dan cara pemakaian CSS berbenturan dengan karakteristik rendering khas Safari, sehingga menimbulkan ketidaknyamanan browser yang serius pada platform kolaborasi standar industri ini
- Diperlukan kemauan perbaikan yang aktif dari WebKit maupun GitHub, dan penanganan yang berfokus pada pengguna Safari serta aksesibilitas dibutuhkan dalam jangka pendek
- Ini adalah masalah performa yang cukup parah hingga mengganggu pekerjaan pengembangan, sehingga memicu empati sekaligus kemarahan besar di komunitas
1 komentar
Komentar Hacker News
Situs web GitHub memang cenderung lambat di mana-mana. Dari sisi performa maupun UX/UI, ini sulit disebut sebagai perangkat lunak yang bagus, dan terasa seperti hasil dari tumpukan KPI serta perencanaan banyak orang. Bahwa ini adalah jejaring sosial untuk developer mungkin justru bagian yang paling “inovatif”, sementara untuk pekerjaan pengembangan sehari-hari terasa terlalu biasa sampai-sampai GitLab terasa jauh lebih baik. Masalah ini bukan karena Rails, dan menurut saya tidak tepat membungkusnya sebagai isu teknologi untuk menghindari inti persoalan
Tim WebKit telah menerapkan perbaikan isu performa GitHub dalam 2 hari terakhir tautan terkait. Tim mereka juga pernah membuat PR berskala besar, lebih dari 1000 file, dan rekan kerja sampai berkata, “Kalau sudah kebuka nanti saya approve” sambil menunggu PR-nya selesai dimuat
Begitu Microsoft mengakuisisi GitHub, GitHub hampir langsung beralih ke metode rendering JavaScript (SPA). Sebelumnya, di Mac Mini keluaran 2011 pun GitHub masih bisa dijelajahi walau JavaScript dimatikan, tetapi sekarang GitHub tidak bisa dipakai bahkan saat JS dinyalakan karena kompatibilitas browser lama. Sulit mengatakan mana yang lebih bermasalah, tetapi saya rasa kedua pihak sama-sama punya tanggung jawab. Saya memang bisa ganti ke perangkat terbaru, tetapi ketika dukungan untuk perangkat lama sengaja ditinggalkan dan planned obsolescence dipaksakan alih-alih fungsionalitas jangka panjang, rasanya kepercayaan pada standar web pun ikut runtuh
Banyak kritik diarahkan ke React, tetapi isu kali ini adalah masalah
CSS transform. Saya sarankan benar-benar membaca isi tautan terkaitSaya menyarankan migrasi ke Forgejo, Codeberg, atau SourceHut. Dibandingkan GitHub dan GitLab, mereka secepat kilat Forgejo / Codeberg / SourceHut
Saya penasaran bagaimana masalah seperti ini bisa terus berulang di organisasi besar. Rasanya dalam pengujian browser utama mereka pasti sudah menemukan masalah performa yang jelas, jadi saya tidak paham apakah ada seseorang yang tetap memaksa memberi persetujuan
Sebagai developer React, melihat thread ini membuat saya merasakan betapa besar kebencian dunia. Ada banyak jebakan dalam SPA, dari jadwal yang tidak realistis sampai logika backend yang ikut ditumpuk ke frontend. Saya jadi bertanya-tanya apakah React sendiri memang pilihan yang salah, atau adakah aplikasi React yang benar-benar dibuat dengan baik
Dalam komputasi secara umum, rasanya semuanya jadi lebih lambat. Bahkan dengan Mac Studio M4 Max terbaru, RAM 64GB, semua situs web terasa lebih lambat dibanding zaman MacBook Pro 2011
Saya sering mendengar di HN bahwa GitHub menjadi lambat setelah memigrasikan UI ke React, tetapi saya penasaran apakah memang benar begitu. Pada proyek kecil dampaknya tidak terasa, jadi saya ingin mencari dasar yang lebih pasti
Bukan hanya di Safari, di Firefox pun GitHub sangat lambat, spinner loading muncul di mana-mana, dan perpindahan halaman memakan waktu lebih lama daripada sebelumnya. Saya benar-benar tidak paham dengan metrik apa SSR yang tadinya bekerja sempurna itu sampai diganti menjadi SPA