Capítulo 92 de 456
@next/codemod roda transformações programáticas no codebase para acompanhar mudanças de API entre versões, evitando edição manual arquivo por arquivo — inclui um comando de upgrade all-in-one e uma coleção de codemods pontuais por versão.
npx @next/codemod <transform> <path>: sintaxe geral para rodar um codemod específico; suporta --dry (simulação sem editar) e --print (mostra o diff).npx @next/codemod upgrade [revision]: comando que atualiza Next.js/React/React DOM E roda os codemods recomendados automaticamente; revision aceita patch/minor/major, dist tag (latest/canary/rc) ou versão exata; default é minor.--yes/-y: pula todos os prompts interativos, aceitando os defaults (upgrade React além da 18, habilitar Turbopack, aplicar codemods recomendados, rodar codemods do React 19); auto-habilitado quando stdin não é um TTY (CI, agente de IA).# Upgrade para o último minor (default)
npx @next/codemod upgrade minor
# Upgrade para o último major
npx @next/codemod upgrade major
# Rodar via agente/CI, pulando todos os prompts
npx @next/codemod upgrade canary --yes
+ // TODO: Cache Components adoption. Refactor this route so this opt-out can be removed.
+ export const instant = false
+
export default function Page() {
return <h1>Hello</h1>
}
cache-components-instant-false (16.3) adiciona opt-out explícito por rota para permitir habilitar cacheComponents gradualmente.// Antes
import { cookies, headers } from 'next/headers'
const token = cookies().get('token')
// Depois (next-async-request-api, 15.0)
import { use } from 'react'
import { cookies, headers } from 'next/headers'
const token = use(cookies()).get('token')
next-async-request-api migra APIs dinâmicas síncronas (cookies(), headers(), draftMode()) para o modelo assíncrono, usando await ou React.use() conforme o contexto; quando não é possível migrar automaticamente, adiciona typecast ou comentário para revisão manual.| Versão | Codemod | O que faz |
|---|---|---|
| 16.3 | cache-components-instant-false | Adiciona export const instant = false em todo page/layout/default sem essa export, pra habilitar cacheComponents gradualmente |
| 16.3 | remove-partial-prefetch | Remove export const prefetch = 'partial' após habilitar partialPrefetching globalmente |
| 16.0 | remove-experimental-ppr | Remove experimental_ppr do Route Segment Config |
| 16.0 | remove-unstable-prefix | Remove prefixo unstable_ de API estabilizada (ex. unstable_cacheTag → cacheTag) |
| 16.0 | middleware-to-proxy | Migra middleware.ts/export middleware para proxy.ts/export proxy, e renomeia as opções de config correspondentes |
| 16.0 | next-lint-to-eslint-cli | Migra de next lint para ESLint CLI, gerando eslint.config.mjs |
| 15.0 | app-dir-runtime-config-experimental-edge | Transforma runtime = 'experimental-edge' em runtime = 'edge' (App Router) |
| 15.0 | next-async-request-api | Migra cookies()/headers()/draftMode() de síncrono para assíncrono |
| 14.0 | next-request-geo-ip | Substitui geo/ip de NextRequest por @vercel/functions (geolocation/ipAddress) |
| 14.0 | next-og-import | Move import de ImageResponse de next/server para next/og |
| 14.0 | metadata-to-viewport-export | Migra metadata de viewport (themeColor, etc.) para export viewport separado |
| 13.2 | built-in-next-font | Migra @next/font para next/font embutido, desinstalando o pacote antigo |
| 13.0 | next-image-to-legacy-image | Renomeia next/image → next/legacy/image e next/future/image → next/image |
| 13.0 | next-image-experimental | (Perigoso) migra next/legacy/image para o novo next/image, adicionando estilos inline e removendo props obsoletas (layout, objectFit, objectPosition, lazyBoundary, lazyRoot) |
| 13.0 | new-link | Remove tags <a> de dentro de <Link> |
| 11 | cra-to-next | Migra projeto Create React App para Next.js (Pages Router) |
| 10 | add-missing-react-import | Adiciona import de React ausente, necessário para o novo JSX transform |
| 9 | name-default-component | Nomeia componentes anônimos por Fast Refresh exigir nome |
| 8 | withamp-to-config | Transforma HOC withAmp em config de página (removido no Next.js 16 junto com suporte a AMP) |
next-image-experimental sem revisão: o próprio nome indica que é "dangerously" migratório — remove props e adiciona estilos inline automaticamente, exige checagem visual pós-migração.src/: reporta 0 ok silenciosamente em vez de falhar — sempre conferir a contagem de arquivos afetados, e usar ./src/app quando aplicável.npx @next/codemod upgrade [revision] para upgrades completos — ele já cuida de atualizar dependências e rodar os codemods recomendados.--dry para simular antes de aplicar, e --print para revisar o diff.--yes ou detecção automática de stdin não-TTY) evita travar em prompts.withamp-to-config) foram removidos no Next.js 16.