Capítulo 52 de 456
Guia de diagnóstico e otimização de performance do next dev (compilação sob demanda, diferente de next build/next start), cobrindo antivírus, bundler, imports, Tailwind, webpack custom, memória, HMR de Server Components e Docker.
next dev vs produção: dev compila rotas sob demanda ao navegar; build de produção faz minificação e content hashing, ausentes em dev.next dev desde as versões recentes; usar --webpack para reverter ao webpack.optimizePackageImports: opção experimental em next.config.js que otimiza imports de pacotes que usam barrel files (Turbopack já faz isso automaticamente, sem precisar da config).serverComponentsHmrCache: opção experimental que cacheia respostas de fetch em Server Components entre refreshes de HMR, evitando refetch a cada mudança local.logging.fetches: opção de log detalhado de requisições fetch durante o dev.trace-turbopack.bin via --internal-trace, interpretado com npx next internal trace e visualizado em trace.nextjs.org.# Atualizar e usar Turbopack (padrão)
pnpm add next@latest
pnpm dev # Turbopack é usado por padrão
# Reverter para Webpack
pnpm dev --webpack
// Import otimizado de ícones (evitar milhares de módulos)
// Em vez de:
import { TriangleIcon } from '@phosphor-icons/react'
// Fazer:
import { TriangleIcon } from '@phosphor-icons/react/dist/csr/Triangle'
// next.config.js — otimizar barrel files (não necessário no Turbopack)
module.exports = {
experimental: {
optimizePackageImports: ['package-name'],
},
}
// tailwind.config.js — escopo específico do content
module.exports = {
content: [
'./src/**/*.{js,ts,jsx,tsx}', // Good
// '../../packages/**/*.{js,ts,jsx,tsx}', // Muito amplo, casa node_modules
],
}
content do Tailwind restrito evita scanning de diretórios enormes (ex: node_modules).# Turbopack tracing
pnpm dev --internal-trace
npx next internal trace .next-profiles/trace-turbopack.bin
@material-ui/icons, react-icons, @phosphor-icons/react sem import específico carregam milhares de módulos desnecessários.react-icons (pi, md, tb, cg): multiplica módulos processados pelo compiler mesmo usando um ícone de cada.content do Tailwind muito amplo: incluir node_modules ou diretórios grandes no glob de scanning derruba a performance do build.optimizePackageImports quando estiver em Webpack.content do Tailwind com escopo específico evita scanning excessivo.serverComponentsHmrCache para cachear fetch entre HMR refreshes.