next breaking changes
npm7 curated breaking changes across major versions of next. Use this as a migration checklist before bumping dependencies.
- 15 \u2192 16api
React Compiler stable (when enabled via experimental flag in 15, stable in 16).
MigrationEnable via `experimental.reactCompiler = true` in next.config.js. Reduces manual useMemo/useCallback.
- 15 \u2192 16build
Turbopack is the default dev bundler. Webpack dev path still available via `--webpack`.
MigrationIf you have custom webpack config for dev, either migrate to Turbopack rules or run `next dev --webpack`.
- 14 \u2192 15api
params and searchParams in pages/layouts/route handlers are now Promises and must be awaited.
Migration`export default async function Page({ params }) { const { id } = await params; }`. Use the `next-codemod` codemod `next-async-request-api`.
- 14 \u2192 15behavior
fetch() is no longer cached by default in Route Handlers and Server Components. Opt-in via `cache: 'force-cache'` or `export const fetchCache = 'default-cache'`.
MigrationAudit fetches you relied on being cached. Explicit opt-in: `fetch(url, { cache: 'force-cache' })` or set `export const dynamic = 'force-static'`.
- 14 \u2192 15behavior
GET Route Handlers are no longer cached by default. Client Router Cache no longer caches page components by default (staleTimes.dynamic defaults to 0).
MigrationTo restore previous behavior set `experimental.staleTimes.dynamic = 30` in next.config.js or export `dynamic = 'force-static'` from route handlers.
- 14 \u2192 15removal
@next/font package removed; use the built-in `next/font`.
Migration`npm uninstall @next/font` and replace `from '@next/font/google'` with `from 'next/font/google'`.
- 14 \u2192 15runtime
Minimum React version is 19 RC+ for App Router. Pages Router still supports React 18.
MigrationApp Router: upgrade to React 19. Pages Router: stay on React 18 if needed, but new features target 19.
Get this data programmatically \u2014 free, no authentication.
curl https://depscope.dev/api/breaking/npm/next