Quick summary
- O Pesadelo dos Core Web Vitals: LCP e CLS
- A Trindade da Otimização: WebP, AVIF e Lazy Loading
- next/image : A "Mágica" Sob o Capô
Para quem vive no ecossistema de SEO e Growth, a equação é simples: Imagens pesadas = LCP (Largest Contentful Paint) alto = Ranking ruim no Google.
No passado, resolver isso exigia um pipeline de build complexo (Gulp, Webpack, ImageMagick) para gerar múltiplas versões de cada ativo. Hoje, se você usa React e Next.js, a ferramenta next/image faz o trabalho pesado por você.
Aqui no Abstract Studio, performance não é "nice to have", é feature. Vamos mergulhar em como transformar a performance do seu front-end usando formatos modernos (WebP/AVIF) e carregamento inteligente.
O Pesadelo dos Core Web Vitals: LCP e CLS
Antes do código, o contexto. O Google avalia sua página com base em métricas vitais. Duas delas são assassinadas por imagens mal otimizadas:
LCP (Largest Contentful Paint): O tempo que leva para o maior elemento visível (geralmente a imagem Hero) carregar. Se demorar mais de 2.5s, você falhou.
CLS (Cumulative Layout Shift): Sabe quando você vai clicar em um botão e a página "pula" porque uma imagem carregou lá em cima e empurrou tudo para baixo? Isso é CLS. O Google odeia, e seu usuário odeia mais ainda.
O componente nativo <img> do HTML é "burro". Ele não sabe o tamanho da imagem até fazer o download, causando o layout shift, e baixa a imagem original mesmo que o usuário esteja num celular 3G.
A Trindade da Otimização: WebP, AVIF e Lazy Loading
Para vencer o Lighthouse, precisamos de três coisas:
Formatos Modernos: Esqueça JPG e PNG. O WebP é, em média, 30% menor. O AVIF é ainda mais agressivo, chegando a ser 50% menor que o JPEG com a mesma qualidade visual.
Lazy Loading: Carregar apenas o que o usuário está vendo. Se a imagem está no rodapé, ela não deve consumir banda durante o carregamento inicial.
Dimensionamento Correto: Servir uma imagem de 4000px de largura para um celular de 375px de largura é um crime contra a performance.
next/image: A "Mágica" Sob o Capô
O Next.js introduziu o componente <Image /> para abstrair toda essa complexidade. Ele não é apenas um wrapper HTML; ele é conectado a uma API de otimização de imagem on-demand.
Quando você usa <Image />, o Next.js:
Detecta o navegador do usuário.
Converte a imagem original para AVIF (se o navegador suportar) ou WebP automaticamente.
Redimensiona a imagem para o tamanho exato do container (via
srcset).Reserva o espaço no layout para evitar CLS (Layout Shift).
Implementação Prática
Vamos ao código.
O jeito errado (HTML padrão):
JavaScript
/* Não faça isso em 2024 */
<img
src="/hero-banner.jpg"
alt="Banner Principal"
class="w-full h-auto"
/>
O jeito Abstract Studio (Next.js):
JavaScript
import Image from 'next/image';
import heroPic from '../public/hero-banner.jpg'; // Import estático
export default function Hero() {
return (
<div className="relative w-full h-[500px]">
<Image
src={heroPic}
alt="Banner de Alta Performance"
fill // Ocupa o container pai (position: absolute)
style={{ objectFit: 'cover' }}
priority // CRÍTICO: Avisa ao Next para NÃO fazer lazy loading aqui
quality={85} // Otimização de compressão
placeholder="blur" // Efeito de carregamento suave
/>
</div>
);
}
O Detalhe que Ninguém Conta: A Propriedade priority
O Lazy Loading é ativado por padrão no Next.js. Isso é ótimo para imagens "abaixo da dobra" (que o usuário precisa rolar para ver).
Porém, um erro clássico de desenvolvedores Jr. (e até Seniors) é deixar o lazy loading ativado na Imagem Hero (a principal do topo).
O Problema: O navegador espera o JS hidratar para decidir carregar a imagem. Isso aumenta o LCP.
A Solução: Adicione a prop
priorityouloading="eager"na imagem principal. Isso diz ao navegador: "Carregue isso AGORA, é importante".
Dominando a Propriedade sizes
Se você usa fill ou imagens responsivas, o Next.js precisa de uma dica de qual tamanho de imagem baixar. Se você não configurar a prop sizes, ele pode baixar uma imagem muito maior do que o necessário por precaução.
Imagine um grid de cards de produtos. Em desktop são 3 colunas, em mobile é 1 coluna.
JavaScript
<div className="grid grid-cols-1 md:grid-cols-3 gap-4">
{products.map((product) => (
<div key={product.id} className="relative h-64">
<Image
src={product.image}
alt={product.name}
fill
/*
TRADUÇÃO DA PROP SIZES:
- (max-width: 768px) 100vw -> Em mobile, a imagem ocupa 100% da tela.
- (max-width: 1200px) 50vw -> Em tablets, ocupa metade.
- 33vw -> Em desktop, ocupa um terço da tela.
*/
sizes="(max-width: 768px) 100vw, (max-width: 1200px) 50vw, 33vw"
className="rounded-lg object-cover"
/>
</div>
))}
</div>
Configurar sizes corretamente pode reduzir o peso da página em kilobytes preciosos, impactando diretamente na velocidade de renderização em redes 4G.
Lidando com Imagens Remotas (CDN/S3)
Se suas imagens vêm de um CMS (WordPress, Contentful) ou bucket S3, você precisa configurar o next.config.js para permitir a otimização, por segurança.
JavaScript
// next.config.js
module.exports = {
images: {
formats: ['image/avif', 'image/webp'], // Força a geração de AVIF
remotePatterns: [
{
protocol: 'https',
hostname: 'meu-bucket-s3.amazonaws.com',
pathname: '/uploads/**',
},
],
},
}
Atenção: Ao ativar formats: ['image/avif', 'image/webp'], o servidor Next.js levará um pouco mais de tempo na primeirarequisição para gerar o AVIF (que é computacionalmente pesado), mas cacheará o resultado para sempre. O ganho de compressão do AVIF compensa esse custo inicial.
Conclusão: Performance é UX (e Dinheiro)
Otimizar imagens não é apenas sobre deixar o Lighthouse verde. É sobre respeitar o plano de dados do seu usuário e entregar valor mais rápido. O ecossistema do Next.js transformou uma tarefa complexa de engenharia em uma API declarativa simples.
Não há mais desculpas para servir megabytes de pixels desnecessários. Use WebP/AVIF, entenda o priority e configure seus sizes. Seu SEO agradecerá.
Seu e-commerce ou SaaS está lento e perdendo conversão? No Abstract Studio, nós somos obcecados por milissegundos. Construímos aplicações que carregam instantaneamente e escalam globalmente. Se você quer auditar a performance do seu front-end, fale com a gente.
Written by
Vinicius Silva
Vinicius Silva é fundador da Abstract Prisma e criador do AbstractOS, o sistema operacional digital que reúne criação de software com IA, gestão de negócios e marketing num lugar só, pensado para PMEs e fundadores no Brasil. Escreve sobre operação de negócios, criação de produtos com IA, marketing e o ecossistema digital brasileiro (Pix, NF-e, WhatsApp, LGPD).
Published on Jan 28, 2026
Was this article helpful to you?
Crie seu app com IA em 30 segundos
Pipeline hierárquico com Gemini, Claude e GPT. Edição visual. Deploy instantâneo.
Related modules
Put what you just read into practice with these platform modules.
Comments
Be the first to comment.
