# What changed in next

> 629 changes in next 14 to 16 from its official release notes, upgrade guides and advisories: 136 breaking, 13 deprecations, 68 security, 119 new APIs and options. Each one cited. Sources checked 2026-10-17. HTML: https://unstale.sh/npm/next/

To see which of these apply to a repository, run `npx @unstale/cli init` in it.

## next 16

### Breaking changes

- The true value is removed from the agentUpgrade option. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- The obsolete experimental appNewScrollHandler configuration option was removed. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- The navigation API is stabilized by removing its unstable_ prefix. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- The prefetch API is stabilized by removing its unstable_ prefix. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Turbopack rules support type: 'text', and binding imports of non-ESM modules now error. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Strict route matching is enabled by default. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- The static generation stream option was renamed to waitForAllReady. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Remote caching is authenticated with OIDC instead of a static personal access token. (16.3.2) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.2)
- Caches now error when called after prerendering has aborted. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- The catchError API is stabilized by removing its unstable prefix. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Renames experimental.useExperimentalReact to blockingSSR. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Removes the flag because Node streams are now enabled. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- The inert experimental.viewTransition flag was removed. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Invalid values returned by generateStaticParams now cause an error. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Empty or incomplete generateStaticParams results now cause an error with output: export. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- instant no longer implicitly opts into Partial Prefetching. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Removes the instant navigation developer tools toggle. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- The command now exits non-zero and prints a clear message when type generation fails. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Moves outputHashSalt out of the experimental configuration namespace. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Partial fallback behavior is now gated behind the partialPrefetching flag. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- partialFallback behavior is now gated behind the partialPrefetching flag. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- The partialFallbacks configuration flag is removed. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Renames the prefetch option value from force-runtime to allow-runtime. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- The Server Actions body size limit is now enforced in the Edge runtime. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- The serverActions.bodySizeLimit setting is enforced for Server Actions running in the Edge runtime. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Removes the obsolete shouldWaitOnAllReady render option. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- supportsImmutableAssets is no longer supported with config.output. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Non-document requests to unknown paths now receive a plain-text 404 response. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- The flag guarding unstable_io is removed. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- RSC request-header validation is enabled by default. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Removes the inert experimental.viewTransition flag. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Disallowed development origins are blocked by default. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- The experimental option is removed because no-cache behavior is now hard-coded. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Accessing undefined root params now produces an error. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Reduces the maximum image response body from 300MB to 50MB. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Disallows javascript URLs in router methods and redirects. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Moves Turbopack warning suppression from experimental configuration to turbopack.ignoreIssue. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Introduces unstable_instant for instant navigation behavior and testing. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Using unstable_instant without cacheComponents now produces a static error. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Turbopack no longer generates webpack statistics. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Server Action submissions from privacy-sensitive contexts are disallowed by default. (16.1.7) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.7), [security advisory](https://github.com/advisories/GHSA-MQ59-M269-XVCX)
- Build-time validation now detects ambiguous app routes. (16.1.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.0)
- The clientSegmentCache flag has been fully removed. (16.0.3, 16.1.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.3), [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.0)
- staleTimes.static now consistently enforces a 30-second minimum. (16.0.3, 16.1.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.3), [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.0)
- The unstable_forceStale prefetch option was removed. (16.0.1) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.1)
- Built-in AMP support and its codemod are removed. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0), [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx)
- The amp configuration and page-level AMP configuration are removed. (16.0.0) — [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16), [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-16)
- next build no longer runs linting automatically. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0), [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16), [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-16)
- Supported browser minimums are Chrome 111, Edge 111, Firefox 111, and Safari 16.4. (16.0.0) — [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- Top-level option for migrating active dynamicIO or useCache usage to the Cache Components model. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx)
- PPR is enabled through the cacheComponents configuration instead of the experimental PPR flag. (16.0.0) — [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- The clientParamParsing configuration is removed and bundled with Cache Components. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)
- The client segment cache is enabled by default. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)
- Synchronous access is removed; cookies can only be accessed asynchronously in Next.js 16. (16.0.0) — [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- Next.js no longer overrides smooth scrolling during navigation by default; this attribute restores the previous override behavior. (16.0.0) — [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-16)
- All parallel route slots require explicit default.js files or builds fail. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- The appIsrStatus option was removed; the development indicator itself remains available. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16), [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-16)
- The buildActivity option was removed; the development indicator itself remains available. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16), [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-16)
- The buildActivityPosition option was removed; the development indicator itself remains available. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16), [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-16)
- Synchronous access is removed; draftMode can only be accessed asynchronously in Next.js 16. (16.0.0) — [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- The dynamicIO flag is removed. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0), [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- proxy runs on the Node.js runtime and cannot be configured to use the Edge runtime. (16.0.0) — [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16), [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-16)
- The package uses ESLint Flat Config by default. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)
- eslint-config-next version 16 requires ESLint 9 or later, while existing configurations may retain a compatible ESLint version. (16.0.0) — [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- The eslint option in the Next.js config file is removed. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16), [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-16)
- The deprecated route-level experimental_ppr configuration is removed. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0), [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx)
- The experimental Partial Prerendering flag and route-level segment option are removed. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- The cacheHandlers configuration moves out of the experimental namespace. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)
- The Turbopack module IDs setting moves under the experimental configuration namespace. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)
- Removed; migrate active usage to the top-level cacheComponents option or remove the flag. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- The First Load JS metric is removed from next build output because it was inaccurate for server-driven architectures. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- Synchronous access is removed; headers can only be accessed asynchronously in Next.js 16. (16.0.0) — [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- Image-generating functions receive id as a Promise when using generateImageMetadata. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- Local IP image optimization is blocked by default and can be enabled only for private networks. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16), [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-16)
- The 16-pixel value is removed from the default imageSizes array, reducing the shipped srcset size. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0), [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16), [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-16)
- Local image sources with query strings require images.localPatterns configuration. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0), [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16), [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-16)
- The default maximum image redirects changes from unlimited to 3. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16), [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-16)
- The default minimum image cache TTL increases from 60 seconds to 4 hours, reducing revalidation cost. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0), [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16), [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-16)
- The default image qualities value changes from allowing all qualities to only [75]. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16), [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-16)
- The routeType value changes from middleware to proxy for Proxy requests. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)
- Proxy only supports the Node.js runtime. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0), [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx)
- The next/amp hook imports and useAmp usage are removed. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16), [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-16)
- The next build output no longer includes the size and First Load JS metrics because they were inaccurate for server-driven architectures. (16.0.0) — [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-16)
- Flat config becomes the default ESLint configuration format. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0), [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16), [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-16)
- The next lint command is removed; use Biome or ESLint directly. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16), [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-16)
- Removed; replace next lint scripts with ESLint CLI commands. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- next/root-params replaces the removed unstable_rootParams function. (16.0.0) — [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- Next.js 16 requires Node.js 20.9.0 or newer; Node.js 18 is unsupported. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16), [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-16)
- Route params become Promises. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)
- Image-generating functions receive params as a Promise and must await it. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- Synchronous params access is removed in layouts, pages, routes, defaults, and metadata image conventions. (16.0.0) — [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- During next dev, process.argv no longer includes dev when loaded from the Next config file. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16), [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-16)
- The middleware function should be renamed to proxy, including named exports. (16.0.0) — [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- MiddlewareMatcher is renamed to ProxyMatcher. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)
- Removed; use NEXT_PUBLIC_ environment variables for client-accessible configuration instead. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16), [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-16)
- An image quality value absent from images.qualities is coerced to the closest configured value. (16.0.0) — [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- The rdcForNavigations configuration is removed and bundled with Cache Components. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)
- revalidateTag now requires a cacheLife profile; the single-argument form is deprecated and causes a TypeScript error. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- Router scroll optimization is enabled by default. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)
- Turbopack fully supports importing Sass files from node_modules, but does not support the legacy tilde prefix. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- Next.js no longer overrides scroll-behavior during navigation by default; the previous behavior is opt-in. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- Route searchParams become Promises. (15.0.0, 16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-15)
- serverRuntimeConfig is removed; server-only values should use environment variables instead. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16), [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-16)
- The sitemap generating function receives id as a promise and must await it. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- The size metric is removed from next build output because it was inaccurate for server-driven architectures. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- The middleware URL normalization flag is renamed to skipProxyUrlNormalize. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16), [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-16)
- Deprecated synchronous access to Dynamic APIs is removed. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0), [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx)
- Turbopack configuration moves from experimental.turbopack to a top-level nextConfig option. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-16)
- Turbopack adds a separate filesystem cache setting for builds. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)
- Turbopack adds a separate filesystem cache setting for development. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)
- The persistent caching configuration names are replaced by filesystem cache names. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)
- The minimum supported TypeScript version is increased to 5.1.0. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0), [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16), [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-16)
- The unstable_rootParams function has been removed; use next/root-params instead. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- Next.js adds updateTag and changes the revalidateTag signature. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)
- The useAmp API is removed as part of AMP support removal. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- next build fails when it detects a custom webpack configuration while Turbopack is the default. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)

### Security

- Security fixes address unauthenticated remote code execution when SVG files are used with the Image Optimization API. (15.5.28, 16.4.1) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.28), [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.1)
- Fixes a denial-of-service vulnerability in the App Router when using Server Actions. (15.5.21, 16.2.11, 16.4.1) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.21), [security advisory](https://github.com/advisories/GHSA-M99W-X7HQ-7VFJ), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.11), [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.28), [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.1)
- Security fix for unauthenticated remote code execution in functions returning typed arrays. (16.4.1) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.1)
- Adds AI-assisted upgrade support, including security vulnerability coverage. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Security fix prevents information disclosure through App Router metadata image routes when dynamicParams is bypassed. (15.5.27, 16.3.8) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.27), [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.8), [security advisory](https://github.com/advisories/GHSA-F87G-XV8R-7P7X)
- Security fixes address a server-side request forgery vulnerability in image optimization. (16.3.8) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.8), [security advisory](https://github.com/advisories/GHSA-CJQ9-62Q9-8JV4)
- Security fix prevents cache poisoning of ISR pages in self-hosted Next.js applications. (15.5.27, 16.3.8) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.27), [security advisory](https://github.com/advisories/GHSA-4JQV-MC3X-M676), [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.8)
- Security fixes address information disclosure in the Next.js development server's Model Context Protocol endpoint. (16.3.8) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.8), [security advisory](https://github.com/advisories/GHSA-39W2-RJM5-CHCV)
- Security fix prevents cross-user content substitution and persistent denial of service from cache poisoning during SSG/ISR rendering. (15.5.27, 16.3.8) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.27), [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.8), [security advisory](https://github.com/advisories/GHSA-MCJ8-R9MP-W47P)
- Security fixes prevent pending use cache fills from leaking Draft Mode content into regular responses and persisted pages. (16.3.8) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.8), [security advisory](https://github.com/advisories/GHSA-3W37-WQ28-93X7)
- Security fixes prevent cache leaks across root parameter values in nested use cache functions. (16.3.8) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.8)
- Fixed a remote code execution vulnerability in next/og ImageResponse. (16.3.6) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.6), [security advisory](https://github.com/advisories/GHSA-VCVR-R3JV-PC5J)
- Adds CSP nonces to script tags in loading and template files. (16.3.5) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.5)
- Security fixes address unauthenticated remote code execution when AVIF files are used. (15.5.24, 16.3.3) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.24), [security advisory](https://github.com/advisories/GHSA-2XP9-VWFH-VXW4), [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.3)
- Security fixes address unauthenticated remote code execution on Windows-hosted servers. (15.5.24, 16.3.3) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.24), [security advisory](https://github.com/advisories/GHSA-P293-QW3H-JR36), [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.3)
- Internal development request-id headers are no longer exposed through userland headers(). (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Fixes unbounded Server Action payloads in the Edge runtime. (15.5.21, 16.2.11) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.21), [security advisory](https://github.com/advisories/GHSA-4C39-4CCG-62R3), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.11)
- Fixes a denial-of-service vulnerability in the Image Optimization API when processing SVGs. (15.5.21, 16.2.11) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.21), [security advisory](https://github.com/advisories/GHSA-Q8WF-6R8G-63CH), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.11)
- Fixes a Middleware / Proxy bypass affecting App Router applications using Turbopack and a single locale. (15.5.21, 16.2.11) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.21), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.11), [security advisory](https://github.com/advisories/GHSA-6GPP-XCG3-4W24)
- Fixes cache confusion of response bodies for requests with bodies. (15.5.21, 16.2.11) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.21), [security advisory](https://github.com/advisories/GHSA-68G3-V927-F742), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.11)
- Fixes cache confusion for request bodies containing invalid UTF-8 byte sequences. (15.5.21, 16.2.11) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.21), [security advisory](https://github.com/advisories/GHSA-4633-3J49-MH5Q), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.11)
- Fixes server-side request forgery through rewrites with attacker-controlled destination hostnames. (15.5.21, 16.2.11) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.21), [security advisory](https://github.com/advisories/GHSA-P9J2-GV94-2WF4), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.11)
- Fixes server-side request forgery in Server Actions on custom servers. (15.5.21, 16.2.11) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.21), [security advisory](https://github.com/advisories/GHSA-89XV-2M56-2M9X), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.11)
- Fixes unauthenticated disclosure of internal Server Function endpoints. (15.5.21, 16.2.11) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.21), [security advisory](https://github.com/advisories/GHSA-955P-X3MX-JCVP), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.11)
- An incomplete prior fix for App Router middleware or proxy bypass through segment-prefetch routes was addressed. (15.5.18, 16.2.6) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.18), [security advisory](https://github.com/advisories/GHSA-26HH-7CQF-HHC6)
- Fixes a moderate cross-site scripting vulnerability when beforeInteractive scripts use untrusted input. (15.5.16, 16.2.5) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.16), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.5), [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.18), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.6), [security advisory](https://github.com/advisories/GHSA-GX5P-JG67-6X7H)
- Fixes a high-severity denial-of-service vulnerability caused by connection exhaustion. (15.5.16, 16.2.5) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.16), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.5), [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.18), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.6), [security advisory](https://github.com/advisories/GHSA-MG66-MRH9-M8JX)
- Fixes a moderate cross-site scripting vulnerability in App Router applications using CSP nonces. (15.5.16, 16.2.5) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.16), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.5), [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.18), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.6), [security advisory](https://github.com/advisories/GHSA-FFHC-5MCF-PF4Q)
- Fixes a moderate denial-of-service vulnerability in the Image Optimization API. (15.5.16, 16.2.5) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.16), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.5), [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.18), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.6), [security advisory](https://github.com/advisories/GHSA-H64F-5H5J-JQJH)
- Fixes a high-severity bypass affecting App Router applications through segment-prefetch routes. (15.5.16, 16.2.5) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.16), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.5), [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.18), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.6), [security advisory](https://github.com/advisories/GHSA-267C-6GRR-H53F)
- Fixes low-severity cache poisoning affecting Middleware / Proxy redirects. (15.5.16, 16.2.5) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.16), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.5), [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.18), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.6), [security advisory](https://github.com/advisories/GHSA-3G8H-86W9-WVMQ)
- Fixes a high-severity bypass through dynamic route parameter injection. (15.5.16, 16.2.5) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.16), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.5), [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.18), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.6), [security advisory](https://github.com/advisories/GHSA-492V-C6PP-MQQV)
- Fixes a high-severity bypass in Pages Router applications using i18n. (15.5.16, 16.2.5) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.16), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.5), [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.18), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.6), [security advisory](https://github.com/advisories/GHSA-36QX-FR4F-26G5)
- Fixes low-severity cache poisoning caused by collisions in React Server Component cache-busting. (15.5.16, 16.2.5) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.16), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.5), [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.18), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.6), [security advisory](https://github.com/advisories/GHSA-VFV6-92FF-J949)
- Fixes moderate cache poisoning affecting React Server Component responses. (15.5.16, 16.2.5) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.16), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.5), [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.18), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.6), [security advisory](https://github.com/advisories/GHSA-WFC6-R584-VFW7)
- Fixes a high-severity denial-of-service vulnerability affecting Server Components. (15.5.16, 16.2.5) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.16), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.5), [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.18), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.6), [security advisory](https://github.com/advisories/GHSA-8H8Q-6873-Q5FJ)
- Fixes a high-severity server-side request forgery vulnerability in applications using WebSocket upgrades. (15.5.16, 16.2.5) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.16), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.5), [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.18), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.6), [security advisory](https://github.com/advisories/GHSA-C4J6-FC7J-M34R)
- Patched a high-severity vulnerability where specially crafted requests to Server Function endpoints could trigger excessive CPU usage and denial of service. (15.5.15, 16.2.3) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.15), [security advisory](https://github.com/advisories/GHSA-Q4GF-8MX6-V5V3)
- Cross-site development-only WebSocket connections from privacy-sensitive origins can now be blocked. (16.1.7, 16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.7), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0), [security advisory](https://github.com/advisories/GHSA-JCC7-9WPM-MJ36)
- Adds images.maximumDiskCacheSize to control the next/image LRU disk cache size. (15.5.14, 16.1.7, 16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.7), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0), [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.14), [security advisory](https://github.com/advisories/GHSA-3X4C-7XQ6-9PQ8)
- Patched http-proxy to prevent request smuggling in rewrites. (15.5.13, 16.1.7) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.13), [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.7), [security advisory](https://github.com/advisories/GHSA-GGV3-7P47-PFV8)
- The maxPostponedStateSize limit is now always respected. (16.1.7) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.7), [security advisory](https://github.com/advisories/GHSA-H27X-G6W4-24GQ)
- Next.js HTTP request deserialization can lead to DoS when using insecure React Server Components (15.0.8 … 16.1.5) — [security advisory](https://github.com/advisories/GHSA-H25M-26QC-WCJF)
- Minimal-mode PPR resume handling now prevents unbounded request buffering or decompression from exhausting memory. (15.5.10, 16.1.5) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.10), [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.5), [security advisory](https://github.com/advisories/GHSA-5F7Q-JPQC-WP7H)
- Server Function endpoints now include fixes for denial-of-service vulnerabilities that could cause crashes, out-of-memory exceptions, or excessive CPU usage. (15.5.10, 16.1.5) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.10), [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.5)
- The Image Optimizer now prevents unrestricted memory use when optimizing external images, avoiding denial-of-service conditions. (15.5.10, 16.1.5) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.10), [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.5), [security advisory](https://github.com/advisories/GHSA-9G9P-9GW9-JX7F)
- A security patch was released; see the linked changelog for more information about CVE-2026-23864. (16.0.11) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.11)
- Next has a Denial of Service with Server Components - Incomplete Fix Follow-Up (14.2.35 … 16.0.10) — [security advisory](https://github.com/advisories/GHSA-5J59-XGG2-R9C4)
- This release contains a security patch; consult the linked security update for details. (16.0.10) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.10)
- The hardened React Server Components implementation fixes a critical remote-code-execution vulnerability; upgrading to 16.0.7 is required. (15.0.5 … 16.0.7) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.7), [security advisory](https://github.com/advisories/GHSA-9QR9-H5GF-34MP)
- The images.domains configuration is deprecated and warns; image remote patterns are preferred. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0), [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16), [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-16)
- Remote image hosts should be configured with remotePatterns for improved security. (16.0.0) — [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)

### Deprecations

- React 18 support is deprecated for the Pages Router. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Undocumented custom server methods are deprecated. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- The Edge Runtime is deprecated. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- experimental.useCache receives a deprecated annotation. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- The experimental useCache feature is now deprecated. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- TypeScript v6 deprecates baseUrl, affecting projects that use this compiler option. (16.2.2) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.2)
- TypeScript v6 deprecates moduleResolution, affecting projects that use this compiler option. (16.2.2) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.2)
- Middleware is deprecated and developers are directed to use Proxy. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0), [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx)
- The named middleware export is deprecated and should be renamed to proxy. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-16)
- Use of the legacy image component emits a deprecation warning. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0), [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16), [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-16)
- Runtime configuration is deprecated and emits a deprecation warning. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)
- Runtime configuration is deprecated and emits a deprecation warning. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)

### New APIs and options

- Turbopack can be configured with additional filesystem roots. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- create-next-app adds a Cache Components option and prompt. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Adds experimental configuration for mozjpeg image optimization. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Turbopack supports experimental.serverMinification, and experimental.turbopackMinify was expanded. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Turbopack import.meta.glob accepts a module type argument. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Adds Instant Insights for prefetch() and navigation(). (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Adds Instant Insights for prefetch() and navigation(). (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- The loaders API gained a version and a .resolve capability. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- A next/cache-handlers types entrypoint was added for cache handler type usage. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Adds an option to preserve React Compiler memoization. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Setting TURBO_PERSISTENCE_MMAP=0 disables mmap for turbo-persistence. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Introduces configuration options for Turbopack garbage collection. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Adds unstable_ensureStatic segment configuration with shell and prefetch modes. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Adds navigation as an ensureStatic level. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- An unstable navigation API was introduced for Partial Prefetching workflows. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Adds APIs for matching route parameters. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- An unstable prefetch API was introduced for Partial Prefetching workflows. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Webpack loaders receive this.mode. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Webpack loaders receive this.target. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- bfcacheId can opt out of state preservation. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Adds an option to control development-server restarts triggered by memory thresholds. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Next.js adds the experimental.appShells feature flag. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- An experimental appShells feature flag was added. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Adds experimental chunking heuristics configuration to next.config.js. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Turbopack adds a graph-based CSS chunking algorithm behind experimental.cssChunking. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Adds a flag controlling whether development validation runs in a worker. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Adds experimental React Compiler support in Turbopack. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Next.js adds SWC preset-env configuration through experimental.swcEnvOptions. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Adds the experimental.turbopackChunking configuration option. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Workers can remain same-origin when assetPrefix points to a CDN. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Adds an experimental image optimization operation cache. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Turbopack supports import.meta.env. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Turbopack adds import.meta.glob support for Vite compatibility. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Turbopack supports the caseSensitive option for import.meta.glob. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Webpack loaders can use importModule support under Turbopack. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Adds request timing information to Instant Insights. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- The environment variable salts content-hash filenames. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- A CLI command compacts the Turbopack database after a build. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- The environment variable controls the Turbopack trace output location. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- A new environment variable controls the Turbopack trace output location. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Next.js adds the instrumentationClientInject configuration option. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Adapters can override outputHashSalt in modifyConfig. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Adds a global opt-in for Partial Prefetching. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- The Turbopack CLI adds filesystem-backed persistent caching. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- The project directory is passed to adapter modifyConfig. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- robots.ts supports non-standard directives through the other field. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Adds an experimental flag to cancel superseded Server Components HMR requests. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Adds a next.config.js option for serverFastRefresh. (16.2.2, 16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.2), [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Adds an environment variable for debugging CSS chunking. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Adds an environment variable for debugging CSS chunking. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Routes can configure unstable_prefetch independently from unstable_instant. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- The experiment adds a useOffline flag with offline retry behavior. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- The experiment adds a useOffline hook exposing offline state to userland. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Turbopack adds LocalPathOrProjectPath PostCSS config resolution. (16.2.7) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.7)
- Adds CPU profiling support to the dev, build, and start commands. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Adds experimental gesture push support to the App Router. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Adds an experimental App Router scroll handler. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Adds an experimental flag for cached navigations and caching visited static pages. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Adds an experimental Turbopack immutable asset token option. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Adds an experimental configuration option for Lightning CSS features. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Adds an experimental option to bundle segment prefetches into a single response. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Adds an experimental Turbopack option to report system environment variable inlining. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Next.js adds a runtime server deployment ID configuration option. (16.1.0, 16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.0), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Adds experimental strict route type checking for App Router pages, routes, cache profiles, and Pages Router routes. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Adds an experimental feature flag for vary parameter tracking. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Adds support for custom image cache handlers. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Adds a configuration limit for the maximum image response body size. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Allows Node.js experimental inspector flags when running next build. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Adds the NEXT_DEPLOYMENT_ID global for deployment identification. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Allows Node.js experimental inspector flags when running next dev. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Allows inspecting the server started by next start. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Adds the transitionTypes prop to next/link. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Adds component-level error recovery through unstable_catchError in error.js. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Adds an unstable route segment configuration for dynamic stale time. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Adds unstable_retry() to error.js for retrying error states. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Turbopack adds an input source maps option and respects serverSourceMaps. (16.1.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.0)
- An MCP tool named get_routes is added for retrieving routes. (16.0.3, 16.1.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.3), [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.0)
- Turbopack adds support for analyzing builds with next build --analyze. (16.0.3, 16.1.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.3), [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.0)
- The dev server can be inspected on its default port with the --inspect option. (16.0.3, 16.1.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.3), [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.0)
- This environment variable enables writing route hashes into the manifest. (16.1.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.0)
- Next.js adds a next upgrade command, including fallback to npx when yarn dlx is unavailable. (16.1.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.0)
- Appwrite Sites is added to the supported adapters. (16.0.3) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.3)
- React 19.2 adds Activity for hiding background UI while preserving state and cleaning up effects. (16.0.0) — [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- Call before reading process.env when environment variables must be evaluated at runtime rather than bundled during build. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- create-next-app adds a webpack flag and applies it when users choose webpack or decline Turbopack. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)
- Adding data-scroll-behavior="smooth" restores the previous scroll override during navigation. (16.0.0) — [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- Turbopack adds the debugIds configuration option. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-16)
- The native TypeScript resolver for Next.js configuration requires an explicit experimental flag. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)
- The alpha Build Adapters API adds experimental.adapterPath for custom build-process adapters. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16), [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-16)
- The Next.js development MCP server adds a get_errors endpoint. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)
- The Next.js development MCP server adds a get_page_metadata endpoint. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)
- Next Image adds an option controlling whether local IP addresses may be loaded. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)
- Next Image adds a maximum redirect limit for image loading. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)
- The Next.js development server includes an MCP server, enabled by default. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)
- The next/cache module adds a refresh API. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)
- Turbopack implements the declarations option for next/font/local. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)
- Adds the next-rspack-binding package for Rspack integration. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)
- Next.js configuration can use the `.mts` extension with Node.js native TypeScript resolution. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)
- The recommended named export for the renamed routing file is proxy. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx)
- Proxy replaces the deprecated Middleware file convention, with a codemod available for migration. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0), [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16), [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-16)
- The renamed proxy.ts file is the recommended replacement for middleware.ts. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx)
- The App Router uses React 19.2 features including View Transitions, useEffectEvent, and Activity. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx)
- Next.js adds a configuration option for enabling React Compiler integration, which is stable. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0), [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16), [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-16)
- The redirects configuration can be defined as a synchronous function. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)
- Allows refreshing the client router from within a Server Action after performing an action. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- The rewrites configuration can be defined as a synchronous function. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)
- Generated globally available RouteContext types help migrate route handlers to async params with type safety. (16.0.0) — [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- Turbopack provides resolveAlias for mapping imports such as browser requests for Node.js modules. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx)
- Turbopack provides resolveAlias for browser-side aliases such as mapping Node.js modules to empty modules. (16.0.0) — [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16), [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-16)
- updateTag provides Server Actions with read-your-writes cache expiration and immediate refresh semantics. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- React 19.2 adds useEffectEvent for extracting non-reactive effect logic into reusable Effect Event functions. (16.0.0) — [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- React 19.2 adds View Transitions for animating elements updated inside a transition or navigation. (16.0.0) — [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- The --webpack flag opts out of the default Turbopack build and uses Webpack. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0), [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16), [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-16)

### Performance

- Dynamic imports are compiled lazily in development on the client and for SSR. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- App Shells are prefetched on the client and used in runtime prefetches to improve navigation performance. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Cached misses can now be served from the filesystem route cache. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Hot module replacement avoids quadratic queue shifts, improving development update performance. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Turbopack uses file sourcemaps to improve development performance. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Turbopack no longer emits a polyfill chunk for API routes. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- A single Node.js instance is pre-warmed when the development server starts, improving development startup behavior. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Turbopack enables mimalloc on musl-based Linux distributions, fixing a significant allocator-related performance issue. (16.1.2) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.2)
- Prefetching multiple URLs with a shared layout downloads the layout once. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)

### Behavior and default changes

- Adapter route collapses are enabled by default. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- New create-next-app projects enable Cache Components by default. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Draft Mode is allowed on unlisted closed routes in adapter deployments. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Durable use-cache entries now work with client components. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Turbopack shared runtime is enabled by default. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Turbopack export name mangling is enabled by default for builds. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- The stabilization of forbidden was reverted, so its stabilized status no longer applies. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- The next analyze command is promoted. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Static exports support immutable static assets when output is set to export. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Turbopack resolveAlias configuration now supports false values. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- The shared Turbopack runtime is enabled by default on canary builds. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- TURBOPACK_PRINT_CHUNK_GROUPS is available in release builds. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Turbopack enables export mangling by default in production builds to reduce bundle sizes. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Turbopack resolves imports rooted at / from the project directory. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- The stabilization of unauthorized was reverted, so its stabilized status no longer applies. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- web-vitals was upgraded to v6 and soft navigations are reported. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Export validation is now limited to files inside the app directory. (16.3.2) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.2)
- Only cache entries predating tag revalidation are discarded, and completed entries are reused. (16.3.1) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.1)
- Retains fewer stale cache versions and uses a TTL, with an mtime fallback. (16.3.1) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.1)
- The allow-runtime behavior is unified with Partial Prefetching. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- cacheLife profiles are now type-resolved, removing runtime assertions. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Skips interactive prompts when CLI flags are provided, making flagged project creation non-interactive. (16.2.2, 16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.2), [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- App Shells are enabled by default when Cache Components is enabled. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- experimental.cachedNavigations is enabled by default with cacheComponents. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- experimental.cachedNavigations is enabled by default when cacheComponents is enabled. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- experimental.optimisticRouting is enabled by default. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- experimental.optimisticRouting is enabled by default. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- The Turbopack filesystem cache for builds is enabled by default in non-stable releases. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- experimental.varyParams is enabled by default. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- experimental.varyParams is enabled by default. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- The new fragment scroll handler is enabled by default. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Turbopack enables import with { type: 'text' } by default. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Metadata image routes are statically prerendered under Cache Components. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Instant navigation validation is enabled by default. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- next build applies sourcemaps by default during prerender. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Node streams are enabled by default. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- outputHashSalt moved out of experimental configuration. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Partial fallback shell upgrades for next start are gated behind partialPrefetching. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- The export const prefetch API is stabilized. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Prefetching attempts a static prefetch before falling back to runtime behavior. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Request Insights display settings are persisted. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- The retry API is stabilized by removing its unstable prefix. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Root params support is enabled by default. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Client-handled Server Action redirects now return HTTP 200. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Disables supportsImmutableAssets when config.output is used. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- The Turbopack build filesystem cache is enabled by default. (16.0.0, 16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0), [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-16)
- The TypeScript CLI is enabled by default. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- The unstable_instant API is stabilized. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- The unstable_io API is stabilized and its guarding flag is removed. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- The next@latest dist-tag points to this stable release, affecting which version is resolved when installing or updating the package. (16.2.9) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.9)
- Includes the deployment id in cacheHandlers keys. (16.2.5) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.5), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.6)
- Allows boolean and number primitives in next.config defines. (16.2.4) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.4)
- adapterPath moves from experimental configuration to the stable top-level configuration. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Enables the experimental React debug channel by default. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Server Function logging is available through logging.serverFunctions and remains enabled by default. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Allows reset() to be called from a user-defined global-error component. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Prefetch completion always performs an upsert. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Server actions now limit the number of arguments to 1000. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Server HMR is enabled by default for App Router pages. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Unknown CSS selectors are reported as warnings. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Functions using use cache can access root params. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Route handlers now apply the server actions transform to modules in node_modules. (16.1.7) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.7)
- The response cache now uses an LRU cache scoped by invocation ID in minimal mode. (15.5.11, 16.1.6) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.6), [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.11)
- Running the bundle analyzer web server is now the default. (16.1.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.0)
- The turbopackInferModuleSideEffects flag is enabled only in canary builds. (16.1.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.0)
- Turbopack filesystem caching is enabled by default for development. (16.1.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.0)
- Rspack persistent caching is enabled by default. (16.1.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.0)
- The React version in create-next-app templates was updated. (16.0.8) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.8)
- Production Turbopack server source maps now use relative paths. (16.0.3) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.3)
- The Segment Cache fallback implementation was generalized. (16.0.1) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.1)
- Cache Components becomes a stable top-level configuration option. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0), [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- The default cache handler uses the cacheMaxMemorySize configuration. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)
- Turbopack filesystem caching is enabled by default for next build. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- Turbopack filesystem caching is enabled by default for next dev. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- The headers configuration can be defined as a synchronous function. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)
- Next.js prefetches only parts not already in cache instead of entire pages. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- next build now uses Turbopack by default, replacing the previous default build behavior. (16.0.0) — [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- next dev now writes to a separate .next/dev output directory, enabling concurrent dev and build execution. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16), [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-16)
- next dev now uses Turbopack by default, so the --turbopack or --turbo flag is no longer needed. (16.0.0) — [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- Turbopack becomes the default bundler, with a webpack opt-out flag. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0), [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-16)
- Turbopack configuration moves from experimental.turbopack to the top-level turbopack option. (16.0.0) — [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- Create Next App no longer needs to explicitly pass --turbopack because Turbopack is the default bundler. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)
- Filesystem caching is enabled by default for next dev to preserve compiler artifacts between runs. (16.0.0) — [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-16)
- The unstable_ prefix is removed from the cacheLife API, while the unstable prefix remains accepted for compatibility. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0), [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- The unstable_ prefix is removed from the cacheTag API, while the unstable prefix remains accepted for compatibility. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0), [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)

### Tooling

- A bundle analyzer skill was added for analyzing application bundles. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Each analyze run records a historical snapshot for later comparison. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Next.js codemods transform .mjs files. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- eslint-config-next supports ESLint 10. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- The skill was renamed to next-bundle-optimizer and its usage was documented. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Bundler configuration validation is skipped in next/jest and under test. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Development validation runs on a worker thread when using Cache Components. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Adds pipeline spans to Instant Insights. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Startup hints and help examples now include the port option. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- A CLI command was added to inspect static route information. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- The Turbopack tracing command uses next internal trace with the trace output path. (16.0.0, 16.3.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- A CLI command was added for uploading traces. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- The ESLint rule no-location-assign-relative-destination has been enhanced. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Adds local span tracing for Request Insights. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Turbopack enables server HMR for app route handlers, improving development feedback for route changes. (16.2.2, 16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.2), [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Adds Turbopack resolution support for LocalPathOrProjectPath PostCSS configurations. (16.2.7) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.7)
- Adds an agents-md codemod command for AI coding agents. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- create-next-app now generates AGENTS.md with bundled Next.js documentation. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Adds route filtering and negation pattern support to debug-build-paths. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Adds server HMR infrastructure and runtime support to Turbopack development. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- The @next/playwright package is published to npm as part of canary releases. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Turbopack can resolve TypeScript files used in Tailwind configuration. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Recognizes @typescript/native-preview as an alternative TypeScript compiler. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- The Turbopack TypeScript transform now supports verbatimModuleSyntax. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- The bundle analyzer now shows compressed sizes, helping developers evaluate output size more accurately. (16.1.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.0)
- Next.js introduces a built-in bundle analyzer for Turbopack. (16.1.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.0)
- The experimental bundle analyzer gains a bundle analyzer UI. (16.1.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.0)
- Turbopack source maps now support relative paths. (16.0.3) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.3)
- Enabling the React Compiler requires installing the React Compiler Babel plugin. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- The default create-next-app template now includes ESLint. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)
- Create Next App templates use ESLint Flat config. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)
- ESLint is added to the default Create Next App template. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)
- Generated globally available LayoutProps types help migrate to async params with type safety. (16.0.0) — [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- A migration codemod updates synchronous params, searchParams, cookies(), headers(), and draftMode() access to async APIs. (16.0.0) — [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- The upgrade codemod updates Turbopack configuration, linting, middleware conventions, stabilized API names, and experimental PPR settings. (16.0.0) — [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- A lockfile prevents multiple next dev or next build instances from running on the same project. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16), [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-16)
- The upgrade CLI prepares migration guides and codemod instructions for a coding agent. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- Generated globally available PageProps types help migrate to async params and searchParams with type safety. (16.0.0) — [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- The Sass loader supports modern Sass syntax and new features. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16), [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-16)
- The Next.js development MCP server exposes a server action tool. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)
- Turbopack adds support for the Webpack loader this.fs.readFile API. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)

### Fixes and other changes

- Turbopack fixes chunk-list collisions for lazy dynamic imports. (16.4.2) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.2)
- Turbopack now ignores realpath errors during module resolution, matching Node.js behavior. (16.4.2) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.2)
- Repeated tag revalidation triggered from after() is propagated. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Client params no longer suspend on shallow URL updates. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Static export now preserves configured output directories. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Custom cache handlers are available on initial requests. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- An explicitly configured generateBuildId is always used. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- HTTP status codes are preserved during prerendering. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Turbopack resolves ../ and root-based import.meta.glob patterns correctly. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Metadata rendering remains stable across streaming modes and respects Edge SSR streaming policy. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Internal image responses no longer share the requester's socket. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- The upgrade codemod honors non-interactive mode in its prompts. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Per-segment prefetching is preserved after dynamic navigation. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Proxy files are detected correctly when pageExtensions contains compound extensions. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- revalidateTag now reaches custom cache handlers when profiles differ. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Server Actions are handled on dynamic PPR fallback routes. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Server Actions no longer hang after navigation to PPR pages. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Static metadata prerendering is restored for dynamic routes. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- URL updates no longer trigger an unnecessary Suspense fallback. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Development invalidation no longer over- or under-invalidates use cache entries. (16.4.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.4.0)
- Fixes strongly consistent reads hanging when a task is canceled. (16.3.7) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.7)
- Skips 0-byte entries when initializing the disk LRU cache. (16.3.5) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.5)
- Rejects empty images when reading from or writing to the disk cache. (16.3.5) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.5)
- Emits whole-app server NFTs when standalone output is used with an adapter. (16.3.5) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.5)
- Fixes prerender signal retention for the use cache directive. (16.3.5) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.5)
- AVIF Image Optimization is re-enabled for developers using Next.js 16.3.4. (16.3.4) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.4)
- Fixes crossOrigin being unset in Turbopack manifests. (16.3.4) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.4)
- Fixes infinite recursion in testmode passthrough fetch behavior. (16.3.4) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.4)
- Fixes a build error when TypeScript is aliased to @typescript/typescript6. (16.3.4) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.4)
- Fixes Turbopack worker chunk loading when an asset prefix is configured. (16.3.2) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.2)
- Fixes catch-all index pages from being served for every other slug. (16.3.2) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.2)
- The prior i18n localization change for dynamic Pages API routes is reverted. (16.3.1) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.1)
- Reverts an i18n localization change for dynamic Pages API routes. (16.3.1) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.1)
- headers() again provides a live view of the incoming request. (16.3.1) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.1)
- Hot module reloading works for dynamic imports evaluated from layouts. (16.3.1) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.1)
- Image responses are preserved after optimization. (16.3.1) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.1)
- Optimistic routing bugs that caused repeated prefetch loops are fixed. (16.3.1) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.1)
- Missing styled-jsx styles in Pages Router SSR on adapter builds are fixed. (16.3.1) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.1)
- Cache item names generated by unstable_cache are encoded. (16.3.1) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.1)
- Files using the use cache directive can export literals. (16.3.1) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.1)
- Fixes callbacks running after the response has ended and request APIs used in promises passed to after. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Redirect destinations preserve basePath. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Redirect destinations preserve basePath. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Cache handler names are validated correctly. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- cacheHandlers names are validated correctly. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- expire values are normalized and validated, including Infinity, so configuration mistakes surface earlier. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- fetch respects HTTP Cache-Control headers when using TTL-based invalidation. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Fetch cache keys are byte-exact for binary request bodies. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- fetch(Request, init) is keyed by the effective request, and binary request bodies use byte-exact cache keys. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Fetch cache keys now use the effective request when fetch receives a Request and init. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Ensures headers() resolves to a unique value between render passes. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Cache Components now respects htmlLimitedBots without buffering the full response. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Local fonts now work in statically prerendered ImageResponse metadata routes. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- images.maximumResponseBody now applies to local images as well as remote images. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Instant Navigation Testing now supports full-page loads when deployed. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Instrumentation is awaited in RouteModule.prepare and middleware instrumentation is awaited correctly with adapters. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Middleware rewrite query parameters are preserved in Pages API routes. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- The development server restarts if the .next directory is deleted. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Server-side asset hashes now respect NEXT_HASH_SALT. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Response-based OpenTelemetry attributes are now set properly when using adapters. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- revalidate values are normalized and validated, including Infinity, so configuration mistakes surface earlier. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- optimizePackageImports now respects the sideEffects field in package.json. (16.3.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.3.0)
- Fixes add support for TypeScript 7, allowing Next.js projects to use that TypeScript release. (16.2.12) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.12)
- The package was published after being accidentally omitted since 16.2.4, making it available for developers to use. (16.2.10) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.10)
- A no-change release attempted to fix next@latest pointing at a prerelease version. (16.2.8) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.8)
- Propagates adapter preferred regions so regional deployment preferences are preserved. (16.2.7) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.7)
- Ensures non-ASCII characters in cache tags are encoded when tags are constructed. (16.2.7) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.7)
- Fixes hydration failures when a page is served from the HTTP cache during development. (16.2.7) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.7)
- FormData entries are no longer dropped, preserving submitted form data. (15.5.19, 16.2.7) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.19), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.7)
- Prevents catch-all router.query corruption when basePath and rewrites are used together. (16.2.7) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.7)
- Fixes a forwarding loop for server actions when middleware rewrites are applied. (16.2.7) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.7)
- Fixes handling of type: module in the project directory when using standalone output or adapters. (16.2.7) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.7)
- Double-encoding of URL pathname parts during client parameter parsing was corrected. (16.2.6) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.6)
- Fixes double-encoding of URL pathname parts during client parameter parsing. (16.2.5) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.5), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.6)
- Fixes the fallback route params case in the app-page handler. (16.2.5) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.5), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.6)
- Preserves HTTP access fallbacks during prerender recovery. (16.2.5) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.5), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.6)
- Fixes invalid HTML responses for route-level RSC requests in the deployment adapter. (16.2.5) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.5), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.6)
- Patches setHeader for direct route handlers. (16.2.5) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.5), [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.6)
- Fixes the filesystem watcher configuration so follow_symlinks(false) is applied. (16.2.4) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.4)
- Fixes Google Fonts with Turbopack for Windows on ARM64. (16.2.4) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.4)
- Scopes the Safari cache-buster to CSS and font assets in the Pages Router. (16.2.4) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.4)
- Content conflicts are detected when output assets are emitted. (16.2.3) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.3)
- Fixes an issue where manifest.ts breaks HMR. (16.2.3) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.3)
- Stale ISR revalidation errors are now reported via onRequestError. (16.2.3) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.3)
- Output assets are deduplicated during emission. (16.2.3) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.3)
- Fixes a race condition that could cause styles to be lost during concurrent rendering. (16.2.3) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.3)
- Fixes CSS HMR on Safari. (16.2.2) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.2)
- Turbopack excludes metadata routes from server HMR. (16.2.2) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.2)
- Adapter outputs for dynamic metadata routes were fixed. (16.2.1) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.1)
- Server actions now work correctly in standalone mode when cacheComponents is enabled. (16.2.1) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.1)
- The webpack loader runner layer was fixed for Turbopack builds. (16.2.1) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.1)
- Metadata lazy requiring and top-level await handling were fixed in Turbopack. (16.2.1) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.1)
- Turbopack now respects eval: true in worker_threads constructors. (16.2.1) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.1)
- Turbopack now respects eval: true in worker_threads constructors. (16.2.1) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.1)
- Handling of allowed development origins is fixed for no-cors requests. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Errors related to allowed development origins are improved. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Cache life and tag propagation is corrected for cache handler hits. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Strict route type validation no longer rejects numeric body parser size limits. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- CSS parse error recovery and reporting are improved. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Data URL CSS is no longer rejected by the Pages Router global CSS restriction. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Supports TypeScript noUncheckedSideEffectImports when importing CSS. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- The monorepo root search now handles pnpm workspace files. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- React Server Components error messages are improved. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Type inference for fallback props is fixed. (16.2.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.2.0)
- Streaming fetch calls no longer hang during development with Cache Components. (16.1.7) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.7)
- Next config is filtered only when the experimental flag is enabled. (16.1.4) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.4)
- Fixes a linked-list bug when removing entries from the LRU cache. (16.1.3) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.3)
- Fixes relative same-host redirects in Node.js middleware. (16.1.3) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.3)
- Turbopack no longer crashes when processing MDX files containing multibyte characters. (16.1.2) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.2)
- Creates junction points instead of symlinks on Windows. (16.1.1) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.1)
- Fixes flashes and stuck empty canvases when resizing the bundle analyzer. (16.1.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.0)
- The bundle analyzer no longer flashes or leaves canvases stuck empty when resized. (16.1.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.0)
- Setting cacheMaxMemorySize no longer disables the development HMR cache. (16.1.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.0)
- NFT output now uses middleware.js instead of proxy.js. (16.0.4, 16.1.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.4), [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.0)
- Local images without static imports and sources without protocols now correctly handle the ?dpl query string. (16.1.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.0)
- The codemod now correctly handles the next ESLint plugin. (16.0.3, 16.1.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.0), [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.3)
- Static types now correctly reflect the runtime type of resHeaders. (16.1.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.0)
- Object and array literals can again be exported from use cache files. (16.1.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.0)
- The useSearchParams constructor can now be imported for instanceof checks. (16.1.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.0)
- The useSearchParams constructor can now be imported for instanceof checks. (16.1.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.1.0)
- Body cloning in Node.js middleware is properly finalized by awaiting it. (16.0.5) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.5)
- Fetch abort errors no longer propagate to user error boundaries. (16.0.4) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.4)
- Project options are now passed correctly from napi to Turbopack. (16.0.4) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.4)
- False-positive build errors involving cacheLife and cacheTag are fixed. (16.0.3) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.3)
- False-positive build errors involving cacheLife in client code are fixed. (16.0.3) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.3)
- False-positive build errors involving cacheTag in client code are fixed. (16.0.3) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.3)
- Deployment adapter metadata for the root route is fixed. (16.0.3) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.3)
- Turbopack fixes the font-family declaration generated for local fonts. (16.0.3) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.3)
- Turbopack fixes the font-family declaration for local fonts. (16.0.3) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.3)
- The development fallback parameters are synchronized when generateStaticParams changes. (16.0.3) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.3)
- getServerInsertedHTML now skips rendering correctly. (16.0.1) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.1)
- The next-js condition is excluded from middleware, proxy, and instrumentation. (16.0.1) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.1)
- The package's type definitions were corrected. (16.0.1) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.1)
- Duplicate include entries are no longer generated on Windows. (16.0.1) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.1)
- Requests with Origin: null headers are handled correctly. (16.0.1) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.1)
- Parallel route parameter resolution now tracks depth correctly for static paths. (16.0.1) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.1)
- prefetch={true} functionality was restored. (16.0.1) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.1)
- The proxy file is picked up correctly on Windows. (16.0.1) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.1)
- req.query is writable. (16.0.1) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.1)
- Turbopack correctly traces files referenced with npm. (16.0.1) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.1)
- Components using useActionQueue no longer crash when suspending. (16.0.1) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.1)
- Coding agents can use version-matched Next.js documentation referenced from AGENTS.md during upgrades. (16.0.0) — [upgrade guide](https://github.com/vercel/next.js/blob/f7545a47811e04ea1aa9be2c37e722f7ba2906a3/docs/01-app/02-guides/upgrading/version-16.mdx), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-16)
- Turbopack fixes precedence handling for the pageExtensions configuration. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)
- TURBOPACK may now be undefined without causing a failure. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)
- The TURBOPACK environment value may now be undefined without causing a failure. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)
- Misspelling the 'use cache' directive now produces a build error. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)
- withRspack becomes idempotent, allowing repeated application without changing the result. (16.0.0) — [release notes](https://github.com/vercel/next.js/releases/tag/v16.0.0)

## next 15

### Breaking changes

- Next.js now rejects TypeScript versions 7.0 and later with an actionable error. (15.5.22) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.22)
- Turbopack no longer defines process.cwd() in node_modules, changing how dependencies access the current working directory. (15.5.6) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.6)
- Automatic Speed Insights instrumentation was removed; applications must add an explicit integration if they still need it. (15.0.0) — [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-15), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-15)
- The stable bundlePagesRouterDependencies option replaces experimental.bundlePagesExternals. (15.0.0) — [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-15), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-15)
- Page segments are no longer reused during Link or useRouter navigation, but remain reused for back-forward navigation and shared layouts. (15.0.0) — [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-15)
- cookies is now asynchronous and must be awaited for recommended usage. (15.0.0) — [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-15)
- draftMode is now asynchronous and must be awaited for recommended usage. (15.0.0) — [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-15)
- fetch requests are no longer cached by default; use cache: 'force-cache' to opt in. (15.0.0) — [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-15)
- The geo property was removed from NextRequest because hosting providers supply geolocation values. (15.0.0) — [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-15), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-15)
- GET functions in Route Handlers are no longer cached by default. (15.0.0) — [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-15)
- headers is now asynchronous and must be awaited for recommended usage. (15.0.0) — [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-15)
- The ip property was removed from NextRequest because hosting providers supply IP values. (15.0.0) — [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-15), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-15)
- The @next/font package was removed; imports must use the built-in next/font instead. (15.0.0) — [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-15), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-15)
- Font imports move from @next/font to the built-in next/font API. (15.0.0) — [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-15)
- params is now asynchronous in layouts, pages, route handlers, and related metadata files. (15.0.0) — [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-15)
- The minimum React DOM version is now 19. (15.0.0) — [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-15)
- The minimum React version is now 19. (15.0.0) — [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-15)
- The experimental-edge runtime value now errors; use edge instead. (15.0.0) — [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-15)
- useActionState replaces useFormState and provides direct access to pending state. (15.0.0) — [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-15)
- useFormState is deprecated and has been replaced by useActionState. (15.0.0) — [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-15)

### Security

- Additional security hardening was added to next/og. (15.5.26) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.26)
- This release includes a security patch; consult the Next.js Security Update for details. (15.5.9) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.9)
- A security patch was released; the changelog contains more information about the issue. (15.4.11) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.4.11)
- This release includes a security patch; see the Next.js Security Update for details. (15.4.10) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.4.10)
- This release includes a security patch; the notes refer developers to the CVE-2026-23864 changelog for details. (15.3.9) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.3.9)
- This release contains a security patch; consult the Next.js Security Update for details. (15.3.8) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.3.8)
- This release includes security changes; see the linked CVE for additional details. (15.3.6) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.3.6)
- Applies a security patch addressing CVE-2026-23864. (15.2.9) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.2.9)
- A security patch is available; consult the Next.js Security Update for details. (15.2.8) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.2.8)
- A security patch was released; see the linked changelog for details about CVE-2026-23864. (15.1.12) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.1.12)
- This release contains a security patch; consult the Next.js Security Update for details. (15.1.11) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.1.11)
- A crafted request could expose compiled source code from Server Functions, potentially revealing business logic and embedded secrets. (15.1.11) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.1.11)
- A security patch was released; see the linked changelog for more information. (15.0.8) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.0.8)
- This release contains a security patch; see the Next.js Security Update for details. (15.0.7) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.0.7)
- The vulnerable RSC protocol was hardened to prevent remote code execution from attacker-controlled requests in App Router applications. (15.0.5) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.0.5)

### Deprecations

- useFormState is deprecated in React 19 and will be removed in a future release. (15.0.0) — [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-15)

### New APIs and options

- staleTimes opts page segments into client caching with dynamic and static durations. (15.0.0) — [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-15)
- fetchCache can opt all fetch requests in a layout or page into caching. (15.0.0) — [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-15)
- The upgrade codemod can retry with --skip-eslint-upgrade to preserve repaired ESLint dependencies. (15.0.0) — [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-15)
- The upgrade codemod can retry with --skip-react-upgrade to preserve repaired React dependencies. (15.0.0) — [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-15)
- useActionState replaces useFormState and provides additional properties such as direct access to pending state. (15.0.0) — [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-15)
- useFormStatus now exposes data, method, and action in React 19. (15.0.0) — [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-15), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-15)

### Performance

- Turbopack validates CSS without computing all paths. (15.5.11) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.11)

### Behavior and default changes

- The stable serverExternalPackages option replaces experimental.serverComponentsExternalPackages. (15.0.0) — [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-15), [upgrade guide](https://nextjs.org/docs/app/guides/upgrading/version-15)

### Tooling

- Turbopack now supports patterns in the exports field. (15.5.11) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.11)

### Fixes and other changes

- AVIF Image Optimization is re-enabled when newer versions of sharp are installed. (15.5.25) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.25)
- The package was published after being accidentally unavailable since 15.5.15. (15.5.20) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.20)
- Restores Content-Length and ETag for /_next/data/ JSON responses. (15.5.14) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.14)
- LRU cache items now have a minimum size of 1, preventing unbounded growth. (15.5.11) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.11)
- Fixes NFT tracing behavior in additional cases. (15.5.11) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.11)
- Fixes Turbopack NFT tracing for sharp 0.34. (15.5.11) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.11)
- Fixes a memory leak in the span map. (15.5.11) — [release notes](https://github.com/vercel/next.js/releases/tag/v15.5.11)
- The Pages Router supports React 18 and React 19, making the React 19 upgrade optional for Pages Router applications. (15.0.0) — [upgrade guide](https://nextjs.org/docs/pages/guides/upgrading/version-15)

## next 14

### Security

- A security patch was released; see the linked Next.js Security Update for details. (14.2.35) — [release notes](https://github.com/vercel/next.js/releases/tag/v14.2.35)
