Skip to content
Aventheon

Next.js 13 or 14 is out of support: what an upgrade to 16 involves

October 12, 2026

The Next.js support policy lists version 16 as Active LTS and version 15 as Maintenance LTS. A major version stays in Maintenance LTS for two years after its initial release, getting critical bug fixes and essential security updates only. Versions 13 and 14 are not on the supported list, so an app still running either one is not receiving fixes from the Next.js team.

That does not mean the app is broken today. It means the cost of staying put is rising, and every new security issue becomes your own problem to work around. Here is what the official upgrade guides say you will actually face.

The path is 14, then 15, then 16

The documentation has a guide for each hop: 13 to 14, 14 to 15, and 15 to 16. Plan on working through them in order. Each guide ships a codemod (npx @next/codemod@canary upgrade latest is the documented entry point), which handles the mechanical edits and leaves the judgment calls to you.

What changes in 15

  • React 19. Version 15 requires React and React DOM 19. useFormState is deprecated in favor of useActionState.
  • Async request APIs. cookies, headers, draftMode, and params and searchParams in pages and layouts become asynchronous. Version 15 allowed temporary synchronous access.
  • Caching defaults flip. fetch requests, GET route handlers and page segments in the client router cache are no longer cached by default. If your app quietly relied on the old defaults, performance or data freshness can change without any error.

What changes in 16

  • Synchronous access is gone. The temporary compatibility from 15 is removed, so any remaining synchronous use of those request APIs fails. The same applies to params in opengraph-image, icon and apple-icon files.
  • Runtime floor. Node.js 20.9 or later, TypeScript 5.1 or later, and a newer set of supported browsers.
  • Turbopack by default for next dev and next build. Custom webpack configuration needs a look.
  • middleware is renamed to proxy, and the edge runtime is not supported in proxy.
  • next lint is removed. You run ESLint or Biome directly, and next build no longer lints.
  • next/image default changes, including minimumCacheTTL, imageSizes and qualities, plus a deprecated next/legacy/image.

All of this is from the official upgrade guides. Read them for your own version before planning, because your app may touch only a few of these.

Why the tests matter more than the codemod

The caching changes are the dangerous ones. They do not throw errors. An app that behaved one way on 14 can behave differently on 15 and still compile and render. The only reliable way to know is a test suite that pins down current behavior before you start.

That is how we structure an Upgrade Sprint: agree the version target, add tests around the behavior that matters, move one version at a time, keep a rollback plan, and hand over docs. If you are not sure how big your jump is, a free 30-minute Triage will tell you what version you are on and what to look at first. A Modernization Assessment turns that into a written plan and a fixed quote.