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.
useFormStateis deprecated in favor ofuseActionState. - Async request APIs.
cookies,headers,draftMode, andparamsandsearchParamsin pages and layouts become asynchronous. Version 15 allowed temporary synchronous access. - Caching defaults flip.
fetchrequests,GETroute 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
paramsinopengraph-image,iconandapple-iconfiles. - 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 devandnext build. Custom webpack configuration needs a look. middlewareis renamed toproxy, and theedgeruntime is not supported inproxy.next lintis removed. You run ESLint or Biome directly, andnext buildno longer lints.next/imagedefault changes, includingminimumCacheTTL,imageSizesandqualities, plus a deprecatednext/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.