Key facts and links for Next.js 16. Use for planning, writing, and troubleshooting Next.js 16 changes.
Install
npx skills add https://github.com/gocallum/nextjs16-agent-skills --skill nextjs16-skillsSKILL.md
Links
- Docs: https://nextjs.org/docs
- Upgrade guide (v16): https://nextjs.org/docs/app/guides/upgrading/version-16
- Release notes/blog: https://nextjs.org/blog/next-16
Upgrade
# Automated upgrade
npx @next/codemod@canary upgrade latest
# Manual upgrade
npm install next@latest react@latest react-dom@latest
# New project
npx create-next-app@latest
Codemod covers (high-level): moves Turbopack config, migrates next lint → ESLint CLI, migrates middleware → proxy, removes some unstable_ prefixes, removes route-level experimental_ppr.
TypeScript: also upgrade @types/react and @types/react-dom.
What’s New (v16)
- Cache Components: opt-in caching via the
"use cache"directive; evolves/absorbs PPR. - Next.js DevTools MCP: Model Context Protocol integration for AI-assisted debugging.
proxy.ts: clearer network boundary;middleware.tsdeprecated for most use.- Better logs/metrics: more detailed
next devand build timing output.
Performance / DX
- Turbopack: stable; default bundler (opt out with
next dev --webpack,next build --webpack). - If you have a custom
webpackconfig,next buildmay fail (to prevent misconfiguration). Fix by migrating config, usingnext build --webpack, or using Turbopack and removing/ignoring the webpack config. - Turbopack config moved:
experimental.turbopack→ top-levelturbopackinnext.config.*. - Turbopack migration gotchas:
- Sass imports: remove the Webpack-only
~prefix (e.g.@import 'bootstrap/...';). - Browser bundles must not import Node built-ins (e.g.
fs). If unavoidable, useturbopack.resolveAliasas a stopgap.
- Sass imports: remove the Webpack-only
- Turbopack filesystem cache (dev, beta):
experimental.turbopackFileSystemCacheForDev: true. - React Compiler support: stable opt-in via
reactCompiler: true(expect higher build/compile cost). - Build Adapters API: alpha (custom build adapters).
- Routing/prefetching rewrite: layout deduplication + incremental prefetching.
Caching APIs (key signatures)
revalidateTag(tag, profile)now requires a cacheLife profile (or{ expire }) for SWR behavior.updateTag(tag)(Server Actions only): read-your-writes semantics.refresh()(Server Actions only): refresh uncached data; does not mutate cache.cacheLifeandcacheTagare stable (nounstable_prefix).
Requirements (v16)
- Node.js: 20.9+ (Node 18 not supported)
- TypeScript: 5.1+
- Browsers: Chrome/Edge/Firefox 111+, Safari 16.4+
Breaking / Behavior Changes (high-impact)
- Async Request APIs: sync access removed. Use
await params,await searchParams,await cookies(),await headers(),await draftMode(). - Tip (TypeScript):
npx next typegencan generate helpers likePageProps,LayoutProps,RouteContextto migrateparams/searchParamstypes safely. - Metadata images:
opengraph-image,twitter-image,icon,apple-iconnow receiveparams(andid) as Promises in the image function. - Sitemaps:
sitemap({ id })now receivesidas a Promise when usinggenerateSitemaps. - Parallel routes: slots require explicit
default.js. next/imagedefaults changed (cache TTL, sizes/qualities); localsrcwith query strings requiresimages.localPatterns.
Other notable behavior changes:
next devandnext builduse separate output dirs (next dev→.next/dev) and a lockfile prevents concurrent instances.- Scroll behavior: Next.js no longer overrides global
scroll-behavior: smoothduring navigations; adddata-scroll-behavior="smooth"on<html>to restore the previous override behavior. - ESLint:
@next/eslint-plugin-nextdefaults to ESLint Flat Config; legacy.eslintrcprojects may need migration.
Removed / Deprecated (high-level)
- Removed: AMP support;
next lint(use ESLint/Biome directly);eslintoption innext.config.*;serverRuntimeConfig/publicRuntimeConfig(use env vars);experimental.ppr+ route-levelexperimental_ppr;unstable_rootParams. - Deprecated:
middleware.tsfilename (preferproxy.ts);next/legacy/image;images.domains(preferimages.remotePatterns);revalidateTag(tag)single-arg form. proxy.tsnote:proxyruns onnodejsonly; Edge runtime is not supported inproxy. Keepmiddleware.tsif you must stay on Edge.- Config rename example:
skipMiddlewareUrlNormalize→skipProxyUrlNormalize.
Related skills
vercel-react-best-practicesvercel-labs751KReact and Next.js performance optimization guidelines from Vercel Engineering. This skill should be used when writing, reviewing, or refactoring React/Next.js code to ensure optimal performance patterns. Triggers on tasks involving React components, Next.js pages, data fetching, bundle optimization, or performance improvements.vercel-composition-patternsvercel-labs361KReact composition patterns that scale. Use when refactoring components with boolean prop proliferation, building flexible component libraries, or designing reusable APIs. Triggers on tasks involving compound components, render props, context providers, or component architecture. Includes React 19 API changes.vercel-react-view-transitionsvercel-labs135KGuide for implementing smooth, native-feeling animations using React's View Transition API (`<ViewTransition>` component, `addTransitionType`, and CSS view transition pseudo-elements). Use this skill whenever the user wants to add page transitions, animate route changes, create shared element animations, animate enter/exit of components, animate list reorder, implement directional (forward/back) navigation animations, or integrate view transitions in Next.js. Also use when the user mentions viewpick-ui-libraryemilkowalski124KPick the right library for a given frontend task from a curated, opinionated list — numbers, OTP inputs, charts, command menus, virtualization, drag and drop, toasts, state, styling, and more. Only runs when explicitly invoked; it does not trigger on its own.
