next/image no Next.js: Como Otimizar LCP e Evitar Faturas Surpresa na Vercel
Em qualquer aplicação web moderna — seja uma loja virtual com milhares de produtos, um catálogo de imóveis ou a página inicial de um software B2B —, as imagens representam entre 60% e 80% de todo o peso em bytes transferido pela rede.
Por essa razão, o componente <Image /> do Next.js (next/image) é celebrado como uma das maiores inovações do framework. Ele converte automaticamente arquivos pesados em formatos modernos como WebP e AVIF, redimensiona imagens sob medida para a tela de cada celular e elimina saltos visuais de layout (Cumulative Layout Shift - CLS).
Porém, existe um lado sombrio que muitas empresas só descobrem no fim do mês: a fatura da infraestrutura de nuvem.
Se você não compreender a mecânica exata de como a Vercel e os servidores Node.js cobram e processam cada transformação gráfica, o que deveria ser uma melhoria de performance pode se transformar em um ralo financeiro de milhares de dólares.
Neste manual corporativo, vamos analisar a engenharia do next/image, como eliminar cobranças desnecessárias e a arquitetura ideal integrando com Supabase Storage.
1. A Armadilha Financeira da Otimização de Imagens
Para entender o risco financeiro, precisamos desmistificar como o Next.js lida com imagens:
Quando o seu navegador requisita uma imagem usando <Image src="https://seu-bucket.com/foto.jpg" width={400} height={300} alt="..." />, o Next.js não entrega o arquivo estático diretamente. Uma função servidora é acionada, faz o download do arquivo original, consome processamento de CPU para redimensioná-lo, converte para WebP/AVIF e armazena essa variação em cache.
A Política de Cobrança da Vercel
- Plano Hobby (Gratuito): Inclui apenas 1.000 imagens otimizadas de origem por mês.
- Plano Pro: Inclui 5.000 imagens por mês. Cada lote adicional de 1.000 imagens custa $5 a $9 dólares.
Onde Empresas Gastam Rios de Dinheiro Sem Saber?
- Queries Dinâmicas na URL: Se a URL da imagem contiver parâmetros variáveis ou timestamps (ex:
foto.jpg?t=123), a Vercel interpreta cada variação como uma "nova imagem de origem", recalculando e estourando a cota em poucas semanas. - Uso de Imagens de Usuários sem Moderação: Se o seu SaaS permite que clientes subam dezenas de fotos em alta resolução (4K/8K de celulares) e o
next/imagetenta redimensionar todas sob demanda no servidor, a CPU da sua função serverless atinge o teto. - Imagens de Ícones e SVGs Passando pelo Otimizador: Ícones e ilustrações vetoriais não precisam ser redimensionados via CPU. Passá-los pelo otimizador é literalmente queimar dinheiro.
2. A Arquitetura Padrão Ouro: Supabase Storage + remotePatterns
A maneira mais limpa e barata de operar imagens em larga escala em 2026 é manter a responsabilidade dividida:
- O Supabase Storage atua como o repositório de arquivos seguro e definitivo, protegido por políticas de Row Level Security (RLS).
- O Next.js consome essas imagens através de regras estritas declaradas no
next.config.ts.
Configuração Segura no next.config.ts
Nunca utilize a propriedade obsoleta images.domains. Utilize sempre remotePatterns delimitando estritamente o protocolo, hostname e caminho:
// next.config.ts
import type { NextConfig } from "next";
const nextConfig: NextConfig = {
images: {
formats: ['image/avif', 'image/webp'],
remotePatterns: [
{
protocol: 'https',
hostname: 'SEU_PROJETO.supabase.co',
pathname: '/storage/v1/object/public/**',
},
],
},
};
export default nextConfig;
3. Quando Usar a Propriedade unoptimized?
Nem toda imagem deve passar pelo pipeline de transformação do Next.js. O parâmetro unoptimized={true} instrui o framework a servir o arquivo diretamente da CDN, com custo zero de processamento na Vercel:
Casos Mandatórios para unoptimized:
- Imagens em Formato SVG: SVGs são vetores matemáticos e não têm perdas. Usar o otimizador da Vercel para SVGs é inútil.
- Gifs Animados: O processamento serverless de animações pode gerar travamentos ou arquivos estáticos corrompidos.
- Ambientes de Desenvolvimento Local: Para acelerar o boot local com Turbopack, você pode desativar o otimizador em
NODE_ENV === 'development'. - Imagens Já Redimensionadas na Origem: Se você utiliza serviços de CDN ou transformações nativas do Supabase Storage Image Transformation, entregue a URL final e marque
unoptimized.
// Exemplo: Ícone ou logo vetorial com custo ZERO de otimização
<Image
src="/images/logo-corporativa.svg"
alt="Logo da Empresa"
width={180}
height={40}
unoptimized
priority
/>
4. Otimização Cirúrgica de LCP (Largest Contentful Paint)
O LCP mede o tempo que o maior elemento visual da tela leva para ser desenhado no navegador do cliente, sendo uma das métricas vitais monitoradas pelo Vercel Speed Insights. Se o seu elemento de maior impacto for uma imagem de capa (Hero Image):
- Adicione a Propriedade
priority: Ela instrui o navegador a fazer o preload do arquivo no cabeçalho HTML, antes mesmo de processar os scripts React. - Defina Dimensões Reais (
widtheheight): Nunca deixe o navegador adivinhar o tamanho da imagem. Declare a proporção exata para prevenir qualquer salto de tela (CLS = 0). - Use a Propriedade
sizesde Forma Responsiva: Evita que um celular com tela pequena baixe a mesma versão gigantesca de um monitor 4K:
// Exemplo: Banner Hero com carregamento prioritário instantâneo
<Image
src="https://SEU_PROJETO.supabase.co/storage/v1/object/public/banners/hero.jpg"
alt="Dashboard Corporativo de Alta Performance"
width={1200}
height={630}
priority
sizes="(max-width: 768px) 100vw, (max-width: 1200px) 80vw, 1200px"
className="w-full h-auto rounded-xl shadow-2xl"
/>
Conclusão: Engenharia Limpa Gera Economia Real
O componente next/image é uma ferramenta poderosa, mas exige disciplina arquitetural. Tratar o consumo de recursos de nuvem como uma métrica de engenharia de primeira classe é o que separa protótipos amadores de sistemas corporativos escaláveis e financeiramente saudáveis.
Se a sua empresa precisa estruturar plataformas de alto tráfego, otimizar faturas de infraestrutura ou modernizar aplicações legadas com Next.js e Supabase, conheça nossos serviços de desenvolvimento sob medida ou solicite um diagnóstico de arquitetura.