Programação

Melhorando o desempenho do site ao enviar mais CSS

há 1 h

O GitHub concluiu a migração do github.com de CSS-in-JS para CSS Modules em junho de 2026. A mudança começou no sistema de design Primer, que fornece componentes como botões, banners e breadcrumbs usados pela plataforma, e terminou com a remoção de sx, styled-components e styled-system do dotcom.

Por que a migração foi necessária

Em 2023, o número de componentes em algumas páginas cresceu rapidamente e expôs limitações da solução de CSS-in-JS usada pelo GitHub, incluindo custos de execução no cliente e no servidor. A equipe do Primer precisava de uma alternativa que preservasse acessibilidade, flexibilidade e desempenho sem interromper o funcionamento da plataforma durante a transição.

A solução escolhida foi CSS Modules:

  • Os estilos passaram a ser escritos em arquivos CSS ao lado do código JavaScript dos componentes.
  • Os nomes de classe ficaram locais por padrão, reduzindo colisões causadas por seletores globais.
  • O CSS deixou de depender de comportamento em tempo de execução no cliente ou no servidor.
  • As regras passaram a ser agrupadas em folhas de estilo enviadas junto com o HTML da página.
  • A abordagem manteve parte da colocalização e do encapsulamento desejados pela equipe no CSS-in-JS, mas usando recursos nativos de CSS.

A mudança exigia atualizar todos os componentes do Primer e todos os componentes do GitHub que usavam a técnica anterior. Para reduzir o risco, a equipe adotou uma migração incremental: cada componente era convertido, protegido por feature flag, testado em produção e liberado gradualmente. Durante o período de transição, componentes compatíveis com sx eram disponibilizados por meio da biblioteca intermediária @primer/styled-react; os componentes já migrados e sem esse uso podiam ser importados diretamente de @primer/react.

Resultados no Primer e no código do GitHub

Todos os componentes do Primer haviam sido migrados para CSS Modules até dezembro de 2024. Os resultados de desempenho levaram a equipe a aplicar a mesma estratégia ao restante do GitHub e a planejar a remoção completa do CSS-in-JS.

O principal obstáculo era o sx, propriedade usada durante anos como padrão de estilização no GitHub. Ela permitia que as equipes personalizassem componentes com objetos inline, mas também mantinha dependências e custos de execução associados ao CSS-in-JS. O código-base tinha milhares de ocorrências de sx.

A migração começou em abril de 2025, com aproximadamente 7.760 sxprops. Ian Sanders criou um plugin para VS Code que ajudava na conversão de propriedades individuais, e a equipe também desenvolveu um codemod interno para migrar arquivos inteiros. O processo foi majoritariamente automatizado, mas exigiu revisão manual e validação cuidadosa.

Uma rotação de 8 engenheiros migrou 6.419 props em 6 meses. Em algumas páginas, o tempo de renderização no servidor melhorou entre 1% e 22%.

Quando o trabalho foi retomado em abril de 2026, restavam 895 sxprops. Uma equipe de 2 engenheiros, apoiada intensivamente pelos agentes de programação do GitHub Copilot, reduziu esse número a zero em 3 semanas.

Remoção das dependências de estilo

Eliminar os sxprops não encerrou imediatamente a migração. O GitHub oferece 7 temas, cada um com uma variação de alto contraste, e parte desse sistema ainda dependia de styled-components.

As variáveis de tema já eram definidas em CSS pelo pacote @primer/css, e o suporte a temas sem styled-components havia sido planejado durante a migração do @primer/react no fim de 2025. Restava remover o uso de JavaScript e os utilitários fornecidos pela dependência. A equipe repetiu o processo de migração gradual, com feature flags e liberação controlada. Após dois meses e alguns ajustes, a remoção das dependências foi liberada.

Desfecho e impacto técnico

Desde junho de 2026, o GitHub roda com 100% de CSS Modules. A plataforma removeu do dotcom:

  • sx;
  • styled-components;
  • styled-system.

A estratégia de feature flags, testes em produção e rollout gradual permitiu fazer uma mudança arquitetural ampla sem quebrar o GitHub. O trabalho não foi apenas uma troca de formato de CSS: foi uma reestruturação progressiva de como a plataforma estiliza componentes, implementa temas e entrega a interface em escala. Além da remoção das dependências, o GitHub registrou ganhos de desempenho, especialmente no tempo de renderização no servidor.

Fontes

  • GitHub BlogImproving site performance by shipping more CSS

Ler na fonte

A BigTon News é uma plataforma de estudo e atualização própria. A escolha das fontes é editorial; o resumo é automático. Não nos responsabilizamos pelas notícias nem pelos conteúdos das fontes. Não republicamos a matéria: leia o original.

Assinar newsletter · Termos e privacidade