Capítulo 337 de 456
Guia de upgrade de Next.js 12 para 13: introduz o diretório app (opcional), consolida o novo next/image, <Link> sem <a> filho obrigatório, e next/font.
app directory: nova convenção de roteamento introduzida nesta versão; upgrade para v13 NÃO exige migrar para app, pode-se continuar em pages.next/image (novo comportamento): o comportamento experimental de next/future/image (v12) vira o default de next/image; import antigo renomeado para next/legacy/image.<Link> sem <a> filho: <Link> sempre renderiza <a> internamente e repassa props; legacyBehavior prop mantém comportamento antigo.next/font: novo módulo de otimização de fontes, com customização e privacidade, substituindo o antigo inlining automático de CSS.next/script: comportamento atualizado para suportar tanto pages quanto app.swcMinify muda default de false para true.next/image → next/legacy/image; next/future/image → next/image.<Link> não aceita mais <a> como filho (a não ser com legacyBehavior).target config removida, substituída por Output File Tracing.npm i next@13 react@latest react-dom@latest eslint-config-next@13
// Next.js 12: `<a>` has to be nested otherwise it's excluded
<Link href="/about">
<a>About</a>
</Link>
// Next.js 13: `<Link>` always renders `<a>` under the hood
<Link href="/about">
About
</Link>
<Link>, migrável via codemod new-link.| Import antigo | Import novo (v13) |
|---|---|
next/image | next/legacy/image |
next/future/image | next/image |
<a> como filho de <Link> sem legacyBehavior: quebra em v13; rodar codemod new-link para migrar automaticamente.app: falso — pages continua totalmente suportado com os novos recursos compartilhados (Image, Link, Script, Font).next-image-to-legacy-image (renomeia) e next-image-experimental (adota o novo comportamento, apenas uso estático).next/font substitui o inlining automático de CSS de fontes anterior.next-image-to-legacy-image, next-image-experimental, new-link cobrem as migrações desta versão.next export, next/og).