Skip to content
industry insights

O GitHub ficou 22% mais rápido enviando mais CSS

O instinto habitual de performance web é enviar menos código, mas o compromisso do GitHub aponta na direção oposta. O detalhe: uma resposta de servidor mais rápida não significa automaticamente uma página com sensação de maior velocidade.

Cassidy Wolfe
O GitHub ficou 22% mais rápido enviando mais CSS

A solução contraintuitiva: enviar mais CSS

O GitHub acaba de relatar uma vitória significativa: até 22% de redução no tempo de renderização do servidor em páginas específicas. Esse aumento de performance veio de uma decisão contraintuitiva — enviar mais CSS. Em vez de gerar estilos dinamicamente durante a execução, o GitHub optou por compilar seu trabalho de estilização no momento do build, retirando a tarefa intensiva de CPU do processamento no momento da requisição.

Esse resultado parece contraditório para muitos desenvolvedores web. A sabedoria convencional muitas vezes dita que um CSS mais enxuto e específico para cada rota é o ideal para a performance. No entanto, produzir esse CSS personalizado dinamicamente, particularmente com bibliotecas de CSS-in-JS renderizadas no servidor, pode consumir ciclos substanciais de CPU do servidor durante cada requisição do usuário. O benefício percebido de enviar apenas o CSS "necessário" torna-se um gargalo no lado do servidor.

Crucialmente, essa melhoria foca apenas na renderização do lado do servidor (server-side rendering). O número de 22% representa o tempo economizado no servidor ao preparar a resposta HTML inicial. Isso não implica que os tempos totais de carregamento da página no lado do cliente diminuíram na mesma proporção ou que toda a aplicação ficou 22% mais rápida. Esta é uma otimização direcionada para a carga de trabalho do servidor, deslocando uma parte significativa da lógica de estilização da execução em tempo real para a compilação de ativos estáticos.

A conta oculta de CPU na estilização em tempo real

A arquitetura inicial do GitHub dependia fortemente de CSS-in-JS renderizado no servidor, uma técnica onde a lógica de estilização é executada durante cada requisição. Essa abordagem utiliza JavaScript para avaliar estilos dependentes de propriedades, gerar nomes de classe únicos e coletar o CSS necessário enquanto o servidor renderiza o HTML. Embora pareça eficiente, esse processo dinâmico carrega um custo computacional oculto.

Em páginas com muitos componentes, esse custo aumenta drasticamente. A resolução e a inserção de estilo de cada componente adicionam trabalho de CPU a um caminho de renderização já ocupado. Imagine uma página com centenas de componentes, cada um potencialmente disparando sua própria avaliação de estilo — o efeito cumulativo rapidamente se transforma em um gargalo significativo no servidor.

A estilização em tempo real oferece um benefício convincente: ela emite apenas os estilos precisos necessários para um determinado estado da página, minimizando o payload de CSS no lado do cliente. No entanto, essa seletividade não é gratuita. O servidor paga o preço em ciclos de CPU, realizando repetidamente os mesmos cálculos de estilo e manipulações de string para cada requisição recebida.

Esse compromisso ficou claro para o GitHub. A promessa de bundles de cliente enxutos foi ofuscada pelo aumento do tempo de renderização do servidor, forçando-os a reavaliar se a perda de performance realmente valia os benefícios percebidos da estilização dinâmica orientada a componentes.

CSS Modules movem o trabalho para antes da requisição

A transição do GitHub para CSS Modules exemplifica uma mudança fundamental em onde o trabalho computacional acontece. Em vez de gerar estilos sob demanda, os CSS Modules compilam estilos em arquivos .css estáticos no momento do build. Isso significa que o servidor renderiza apenas HTML estático com nomes de classe pré-definidos, removendo completamente a geração de estilos do ciclo de requisição-resposta.

Não se trata de eliminar o trabalho, mas sim de deslocar seu custo. Embora enviar mais CSS possa significar um payload inicial ligeiramente maior para o cliente, esses arquivos estáticos são altamente cacheáveis, e a CPU do servidor é liberada da tarefa intensiva de avaliação de estilo em tempo real. O compromisso prioriza a performance do servidor e tempos de renderização inicial mais rápidos.

A melhoria relatada de 22% no tempo de renderização do servidor em páginas específicas do GitHub é um resultado convincente, mas é crucial não confundir isso com ganhos universais em toda a sua plataforma. A migração mais ampla do Primer do GitHub, que envolveu a descontinuação de mais de 6.400 props dinâmicas, levou a uma redução geral de 55% no tempo de renderização no lado do servidor em suítes de componentes principais e uma redução de 25% no tempo de inicialização de componentes.

Os ganhos específicos por página variaram de 1% a 22%, refletindo a complexidade e a escala de sua aplicação. Esse resultado matizado ressalta que, embora o princípio de mover o trabalho para o tempo de compilação seja sólido, os benefícios exatos de desempenho dependem fortemente da arquitetura única da aplicação e do uso de componentes. Para mais detalhes sobre essa mudança arquitetural, veja Improving site performance by shipping more CSS - The GitHub Blog.

Gostando do artigo? Receba um assim na sua caixa de entrada toda manhã.

um e-mail por dia · cancele em dois cliques · sem rastreadores de terceiros

Meça a página, não a ideologia de estilo

As descobertas do GitHub oferecem uma lição vital: meça a página, não a ideologia de estilo. As equipes devem avaliar o tempo de renderização do servidor juntamente com bytes de CSS, comportamento de cache e métricas críticas voltadas para o usuário, como Time to First Byte (TTFB) e Largest Contentful Paint (LCP) em rotas representativas. Essa visão holística revela o verdadeiro impacto na experiência do usuário.

Nenhuma solução de estilo única reina suprema. CSS Modules, Tailwind CSS, Chakra UI e ferramentas de zero-runtime apresentam cada uma compensações distintas em experiência de autoria, carga útil de rede e sobrecarga arquitetural. A escolha depende inteiramente das necessidades específicas e dos gargalos de desempenho de uma aplicação, não de um decreto universal.

Benchmarking de toda a jornada do usuário é fundamental. Embora o GitHub tenha alcançado uma redução de até 22% no tempo de renderização do servidor ao enviar mais CSS, isso por si só não garante um carregamento de página geral mais rápido. O servidor é apenas um elo na corrente; uma carga útil maior no lado do cliente ou condições de rede mais lentas podem anular esses ganhos no lado do servidor.

Em última análise, o objetivo é uma aplicação mais rápida e responsiva para o usuário final. Isso significa testar e comparar rigorosamente modelos de estilo em relação a um conjunto abrangente de métricas. Escolha a abordagem que melhor se adapta à arquitetura da sua aplicação e entrega melhorias demonstráveis em toda a pilha.

Perguntas Frequentes

Como o GitHub reduziu o tempo de renderização do servidor em 22%?

Em páginas de destino específicas, o GitHub reduziu o trabalho de estilo no lado do servidor ao migrar de CSS-in-JS em tempo de execução para CSS Modules em tempo de compilação.

Uma renderização de servidor 22% mais rápida significa uma página 22% mais rápida?

Não. Isso descreve o tempo de renderização do servidor, não o tempo total de carregamento. Transferência de rede, análise de CSS e renderização também afetam o que os usuários experimentam.

Por que o CSS-in-JS em tempo de execução pode tornar a renderização do servidor mais lenta?

O servidor pode precisar avaliar estilos dinâmicos, gerar nomes de classe e coletar ou inserir CSS enquanto renderiza cada solicitação.

Quando uma equipe deve considerar CSS Modules?

Eles podem ser uma boa opção quando a geração de estilos no lado do servidor é custosa e uma equipe valoriza estilos com escopo definido, embora a carga útil de CSS deva ser medida.

Found this useful? Share it.

For builders

Want Stork to write one of these about your product?

Send us a URL. We use the product, form a view, and publish what we actually think — in 8 languages, labeled Sponsored, with no copy approval on your side. That last part is what makes it worth quoting.

See how it works$199 · AI tools & software only

Para builders

Esta página está trabalhando para a ferramenta de outra pessoa.

Agentes de IA leem. Compradores chegam nela. Ela responde em oito idiomas e via MCP. Sua ferramenta pode ter uma assim — no ar em 24 horas.