- Nos últimos meses, a velocidade do site do GitHub no navegador Safari vem piorando gradualmente
- Em PRs grandes ou arquivos de código com milhares de linhas, a renderização da tela se tornou praticamente impossível
- Ocorrem uso de 100% do processo de renderização do navegador, exibição de tela em branco ao rolar e atrasos severos em recursos de busca e comentários
- Mudanças de CSS e uso de transform entram em conflito com bugs de desempenho do Safari e causam o problema; outros navegadores como o Chrome se saem relativamente melhor
- O WebKit aplicou alguns patches de desempenho, mas foi mencionada a necessidade de uma resposta temporária da equipe de frontend do GitHub até o próximo lançamento do Safari
Contexto e principais problemas
- Recentemente, a degradação geral de desempenho ao acessar o site do GitHub pelo Safari ficou evidente
- Em especial, ao revisar alterações com milhares de linhas ou mais em Pull Requests (PRs) ou navegar por arquivos grandes de código, a situação chegou ao ponto de a própria renderização se tornar inviável
- No Activity Monitor, o processo de renderização consome 100% da CPU, e a renderização da página fica tão lenta que a tela aparece em branco durante a rolagem
- Recursos interativos como busca e comentários sofrem atrasos severos, e até clicar em uma caixa de seleção durante a revisão de PR pode levar vários segundos
- O mesmo acontece até em MacBook Pro recentes com Apple Silicon de alto desempenho, enquanto o uso no Chrome ou em outros navegadores oferece uma experiência muito melhor
Causa do problema e análise
- Reclamações em comum de usuários do Safari 18.6 (e também de beta/Tech Preview)
- Alguns usuários mencionam que a degradação severa de desempenho acontece de forma especialmente crítica apenas no GitHub, e não no Safari como um todo
- Foi descrito que o uso massivo de seletores CSS e de
transform: translateY entra em conflito direto com os limites de processamento de camadas GPU do Safari
- Como o frontend do GitHub posiciona todas as linhas de texto com
transform: translateY, o Safari acaba criando milhares de camadas GPU
- O Chrome, quando não há esse tipo de animação, otimiza melhor a criação de camadas e por isso apresenta desempenho relativamente menos ruim
- Como solução temporária, aplicar um script para remover a propriedade
transform acelera o site, mas a precisão do posicionamento não fica perfeita
Experiência dos usuários e relatos diversos
- Vários usuários relatam o incômodo de ter todas as interações atrasadas em vários segundos em PRs, como adicionar revisores e labels ou editar a descrição do PR
- Ao acessar pelo Safari, a interface do navegador de código e os recursos de autocompletar (barra de busca, command palette etc.) ficam muito lentos
- Há casos em que até funções do navegador, como o botão nativo de voltar no Safari do iOS, não funcionam corretamente
- Do ponto de vista de acessibilidade (VoiceOver), a perda de desempenho também é severa, tornando o uso praticamente inviável para pessoas com deficiência visual
Discussão sobre solução e resposta
- O lado do WebKit (motor do Safari) aplicou recentemente alguns patches para esse problema de desempenho de CSS/compositor, mas uma correção imediata segue difícil antes da próxima versão do Safari
- Foi mencionada a necessidade de propor aos engenheiros do GitHub medidas de mitigação antes do próximo lançamento do Safari e de comunicar previamente os problemas de desempenho
- Diversas mudanças recentes na UI de frontend (por exemplo, a interface de alterações de arquivos em PRs e novos recursos) são vistas como diretamente relacionadas à queda de desempenho
- Alguns usuários contornam o problema usando Graphite.dev, GitLab ou roteadores de protocolo personalizados (como Finicky e Velja) para redirecionamento ou interfaces alternativas
Outros comentários e dicas práticas
- Como solução provisória, foi sugerido criar a issue/PR no Safari e depois usar o recurso de adicionar labels no formato de tabela
- Há vozes preocupadas com CSS excessivamente complexo, mudanças na estrutura de engenharia e a centralização em torno do Chrome, reforçando a necessidade de suporte real a vários navegadores
- Alguns usuários acrescentaram comentários críticos ou bem-humorados sobre o problema de desempenho (com alerta para evitar discussões emocionais desnecessárias)
- Surgem opiniões internas e externas pedindo uma revisão das práticas de desenvolvimento frontend que precisam de otimização de desempenho, além de destacar a importância de testes em múltiplos navegadores
Conclusão
- As mudanças recentes na estrutura de UI do GitHub e na forma de usar CSS entram em conflito com características específicas de renderização do Safari, causando um problema grave de usabilidade em uma plataforma padrão da indústria para colaboração
- Tanto o WebKit quanto o GitHub precisam agir de forma mais proativa, e no curto prazo são necessárias respostas voltadas a usuários do Safari e de acessibilidade
- Trata-se de um problema de desempenho sério o suficiente para atrapalhar o trabalho de desenvolvimento, gerando forte identificação e indignação na comunidade
1 comentários
Comentários no Hacker News
O site do Github é lento em geral. Não dá para dizer que seja um bom software em termos de desempenho ou UX/UI; parece o resultado de vários KPIs e planejamentos de muita gente empilhados juntos. O aspecto mais “inovador” é ele ser uma rede social para desenvolvedores, e para o trabalho de desenvolvimento do dia a dia ele é tão mediano que chega a fazer o Gitlab parecer muito melhor. Esse problema não é por causa de Rails, e acho errado usar a tecnologia como embalagem para desviar do ponto principal
A equipe do WebKit aplicou uma melhoria para o problema de desempenho do Github nos últimos dois dias link relacionado. O time chegou a criar PRs gigantescos, com mais de 1000 arquivos, e os colegas diziam “quando abrir eu aprovo” enquanto esperavam o PR carregar
Assim que a Microsoft adquiriu o Github, o Github quase imediatamente mudou para renderização em JavaScript (SPA). Antes, em um Mac Mini de 2011, ainda dava para navegar no Github mesmo com JavaScript desativado; hoje, mesmo com JS ativado, o Github fica inutilizável por causa da compatibilidade com navegadores antigos. É difícil dizer qual lado é mais culpado, mas acho que ambos têm responsabilidade. Dá para trocar por um dispositivo mais novo, mas parece que abandonaram de propósito o suporte a hardware antigo e empurraram obsolescência programada em vez de funcionalidade futura, a ponto de até a confiança nos padrões da web ficar abalada
Há muita crítica ao React, mas neste caso o problema é de
CSS transform. Recomendo ler o conteúdo do link de fatoRecomendo migrar para Forgejo, Codeberg e SourceHut. Comparados a Github e Gitlab, são rápidos como um raio Forgejo / Codeberg / SourceHut
Fico me perguntando como esse tipo de problema se repete em organizações grandes. Em testes com os principais navegadores, certamente alguém deve ter visto esses problemas de desempenho, então é difícil entender quem aprovou isso mesmo assim
Como desenvolvedor React, ver esta thread faz sentir o ódio do mundo. Há muitos cronogramas irreais e muitas armadilhas no modelo de SPA, incluindo jogar lógica de backend no frontend. Fico me perguntando se React em si é uma escolha errada, ou se existem apps em React realmente bem feitos
Em computação no geral, parece que tudo ficou mais lento. Mesmo usando um Mac Studio M4 Max moderno com 64GB de RAM, todos os sites parecem mais lentos do que no meu MacBook Pro de 2011
Já ouvi bastante no HN que o Github ficou lento quando migrou a UI para React, mas queria saber se isso é realmente verdade. Em projetos pequenos não senti impacto, então queria uma base mais concreta
Não é só no Safari; no Firefox o Github também está absurdamente lento, com spinners de carregamento aparecendo por toda parte e trocas de página demorando mais do que antes. Não entendo com que métrica trocaram um SSR que funcionava perfeitamente por uma SPA