Parece familiar?
Mas primeiro…
Antes de avançar, é importante fazer uma breve revisão e lembrar a razão de todo esse esforço. As métricas de Core Web Vitals são cruciais para a otimização de mecanismos de busca e para a satisfação geral do usuário em qualquer página.
Com React Server Components, streaming e várias otimizações embutidas que funcionam sem a necessidade de manipular o Webpack, é possível alcançar pontuações verdes no Lighthouse sem muitas noites em claro depurando tamanhos de bundles.
Compreender essas funcionalidades é fundamental para o bom funcionamento dos projetos.
Estratégia de Renderização Correta
O desempenho da página começa com a forma como ela é renderizada, e a equipe de desenvolvimento não deseja causar uma impressão negativa.
-
Static Site Generation (SSG): Isso é útil para conteúdo que não muda muito, como posts de blog, landing pages e documentação. A aplicação é pré-construída uma vez e servida rapidamente para sempre.
-
Incremental Static Regeneration (ISR): O ponto ideal para muitas aplicações. Permite servir páginas em cache instantaneamente, mas atualizá-las em segundo plano quando necessário, aprimorando ainda mais o desempenho estático com dados dinâmicos. Perfeito para páginas de produtos de e-commerce ou artigos de notícias.
-
Server-Side Rendering (SSR): Recomenda-se usar esta estratégia apenas quando for absolutamente necessário ter dados atualizados a cada requisição, como em painéis de análise ou conteúdo específico do usuário que não pode ser armazenado em cache.
-
Client-Side Rendering (CSR): Honestamente, esta deve ser a estratégia menos prioritária ou até evitada. A menos que haja uma razão muito específica, o CSR prejudica os Core Web Vitals mais do que ajuda, pois compila o JavaScript no lado do cliente.
Otimização de Imagens: O Ponto de Partida Mais Fácil
Um segredo mal guardado é que a imagem principal de uma página é provavelmente o elemento LCP, e otimizá-la é frequentemente a maneira mais rápida de melhorar o desempenho.
Corrigir Mudanças de Layout com Otimização de Fontes
Ilhas de Interatividade: Enviar Menos JavaScript
Divisão de Bundles e Envio Apenas do Necessário
É também possível usar o pacote next/bundle-analyzer
para visualizar o que está realmente contido nos bundles:
Otimizando para INP
Além de enviar menos JavaScript, estas são as ações que realmente importam para tornar as interações mais rápidas e responsivas:
-
Manter os event handlers leves: A lógica pesada deve ser movida para fora dos click handlers. Ninguém deseja esperar 500ms para um botão responder.
-
Usar startTransition: É recomendado envolver as atualizações não urgentes em
useTransition
para que não bloqueiem a UI e a renderização crítica. -
Virtualizar listas longas: Se a aplicação estiver renderizando centenas de itens, é útil usar algo como
react-virtual
para renderizar apenas os itens visíveis em uma lista.
Caching para Dados Antigos e Lentos
Streaming com Suspense
A shell da página acima carrega instantaneamente, então as avaliações e recomendações são transmitidas à medida que ficam prontas. Os usuários veem o progresso em vez de uma tela em branco.
Algumas Ferramentas Úteis
Algumas ferramentas que podem realmente ajudar a equipe a depurar, medir e ajustar as páginas da web para obter a pontuação métrica perfeita incluem:
-
Chrome Lighthouse: Embutido nas DevTools.
-
PageSpeed Insights: https://pagespeed.web.dev/
Pontuações perfeitas de Core Web Vitals não são tudo. No entanto, elas servem como um bom indicativo para medir e determinar se uma aplicação é realmente agradável de usar.
Agora, é a vez da comunidade tech: Qual tem sido o maior desafio de desempenho? Imagens massivas, JavaScript pesado ou algo completamente diferente?
Portfólio: trillionclues.vercel.app