{"id":10475,"date":"2025-10-22T01:21:27","date_gmt":"2025-10-22T01:21:27","guid":{"rendered":"https:\/\/pokecon.jp\/job\/?p=10475"},"modified":"2025-10-22T01:21:27","modified_gmt":"2025-10-22T01:21:27","slug":"next-js-16-next-js","status":"publish","type":"post","link":"https:\/\/pokecon.jp\/job\/10475\/","title":{"rendered":"Next.js 16 | Next.js"},"content":{"rendered":"\n<\/p>\n<div>\n<p>Ahead of our upcoming <a target=\"_blank\" href=\"https:\/\/nextjs.org\/conf\" rel=\"noopener noreferrer\" target=\"_blank\">Next.js Conf 2025<span class=\"inline-flex\"><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\" fill=\"currentColor\"\/><\/svg><\/span><\/a>, Next.js 16 is now available.<\/p>\n<p>This release provides the latest improvements to Turbopack, caching, and the Next.js architecture. Since the previous beta release, we added several new features and improvements:<\/p>\n<ul>\n<li><a target=\"_blank\" href=\"http:\/\/nextjs.org\/blog\/next-16#cache-components\"><strong>Cache Components<\/strong><\/a>: New model using Partial Pre-Rendering (PPR) and use cache for instant navigation.<\/li>\n<li><a target=\"_blank\" href=\"http:\/\/nextjs.org\/blog\/next-16#nextjs-devtools-mcp\"><strong>Next.js Devtools MCP<\/strong><\/a>: Model Context Protocol integration for improved debugging and workflow.<\/li>\n<li><a target=\"_blank\" href=\"http:\/\/nextjs.org\/blog\/next-16#proxyts-formerly-middlewarets\"><strong>Proxy<\/strong><\/a>: Middleware replaced by <code>proxy.ts<\/code> to clarify network boundary.<\/li>\n<li><a target=\"_blank\" href=\"http:\/\/nextjs.org\/blog\/next-16#logging-improvements\"><strong>DX<\/strong><\/a>: Improved logging for builds and development requests.<\/li>\n<\/ul>\n<p>For reminder, those features were available since the previous beta release:<\/p>\n<p>Upgrade to Next.js 16:<\/p>\n<div class=\"relative code-block-module__NOThwW__wrapper code-block-module__NOThwW__hasFileName not-prose\" data-geist-code-block=\"\">\n<pre class=\"code-block-module__NOThwW__pre\"><code class=\"code-block-module__NOThwW__code\"><span class=\"line\"><span style=\"color:var(--shiki-token-comment)\"># Use the automated upgrade CLI<\/span><\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-token-function)\">npx<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-string)\">@next\/codemod@canary<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-string)\">upgrade<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-string)\">latest<\/span><\/span>\n<span class=\"line\"> <\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-token-comment)\"># ...or upgrade manually<\/span><\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-token-function)\">npm<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-string)\">install<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-string)\">next@latest<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-string)\">react@latest<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-string)\">react-dom@latest<\/span><\/span>\n<span class=\"line\"> <\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-token-comment)\"># ...or start a new project<\/span><\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-token-function)\">npx<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-string)\">create-next-app@latest<\/span><\/span><\/code><\/pre>\n<\/div>\n<p>For cases where the codemod can&#8217;t fully migrate your code, please read the <a target=\"_blank\" href=\"https:\/\/nextjs.org\/docs\/guides\/upgrading\/version-16\">upgrade guide<\/a>.<\/p>\n<h3 id=\"cache-components\" data-docs-heading=\"\"><a target=\"_blank\" href=\"#cache-components\">Cache Components<span><svg viewbox=\"0 0 16 16\" height=\"0.7em\" width=\"0.7em\">\n  <g stroke-width=\"1.2\" fill=\"none\" stroke=\"currentColor\">\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698\"\/>\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698\"\/>\n  <\/g>\n<\/svg><\/span><\/a><\/h3>\n<p>Cache Components are a new set of features designed to make caching in Next.js both more explicit, and more flexible. They center around the new <code>\"use cache\"<\/code> directive, which can be used to cache pages, components, and functions, and which leverages the compiler to automatically generate cache keys wherever it\u2019s used.<\/p>\n<p>Unlike the implicit caching found in previous versions of the App Router, caching with Cache Components is entirely opt-in. All dynamic code in any page, layout, or API route is executed at request time by default, giving Next.js an out-of-the-box experience that\u2019s better aligned with what developers expect from a full-stack application framework.<\/p>\n<p>Cache Components also complete the story of Partial Prerendering (PPR), which was first introduced in 2023. Prior to PPR, Next.js had to choose whether to render each URL statically or dynamically; there was no middle ground. PPR eliminated this dichotomy, and let developers opt portions of their static pages into dynamic rendering (via Suspense) without sacrificing the fast initial load of fully static pages.<\/p>\n<p>You can enable Cache Components in your <code>next.config.ts<\/code> file:<\/p>\n<div class=\"relative code-block-module__NOThwW__wrapper code-block-module__NOThwW__hasFileName not-prose\" data-geist-code-block=\"\">\n<pre class=\"code-block-module__NOThwW__pre\"><code class=\"code-block-module__NOThwW__code\"><span class=\"line\"><span style=\"color:var(--shiki-token-keyword)\">const<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-constant)\">nextConfig<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-keyword)\">=<\/span><span style=\"color:var(--shiki-color-text)\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-color-text)\">  cacheComponents<\/span><span style=\"color:var(--shiki-token-keyword)\">:<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-constant)\">true<\/span><span style=\"color:var(--shiki-token-punctuation)\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-color-text)\">};<\/span><\/span>\n<span class=\"line\"> <\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-token-keyword)\">export<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-keyword)\">default<\/span><span style=\"color:var(--shiki-color-text)\"> nextConfig;<\/span><\/span><\/code><\/pre>\n<\/div>\n<p>We will be sharing more about Cache Components and how to use them at <a target=\"_blank\" href=\"https:\/\/nextjs.org\/conf\" rel=\"noopener noreferrer\" target=\"_blank\">Next.js Conf 2025<span class=\"inline-flex\"><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\" fill=\"currentColor\"\/><\/svg><\/span><\/a> on October 22nd, and we will be sharing more content in our blog and documentation in the coming weeks.<\/p>\n<blockquote class=\"p-3 text-sm\">\n<p><strong>Note:<\/strong> as previously announced in the beta release, the previous experimental <code>experimental.ppr<\/code> flag and configuration options have been removed in favor of the Cache Components configuration.<\/p>\n<\/blockquote>\n<p>Learn more in the documentation <a target=\"_blank\" href=\"https:\/\/nextjs.org\/docs\/app\/api-reference\/config\/next-config-js\/cacheComponents\">here<\/a>.<\/p>\n<h3 id=\"nextjs-devtools-mcp\" data-docs-heading=\"\"><a target=\"_blank\" href=\"#nextjs-devtools-mcp\">Next.js Devtools MCP<span><svg viewbox=\"0 0 16 16\" height=\"0.7em\" width=\"0.7em\">\n  <g stroke-width=\"1.2\" fill=\"none\" stroke=\"currentColor\">\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698\"\/>\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698\"\/>\n  <\/g>\n<\/svg><\/span><\/a><\/h3>\n<p>Next.js 16 introduces <strong>Next.js DevTools MCP<\/strong>, a Model Context Protocol integration for AI-assisted debugging with contextual insight into your application.<\/p>\n<p>The Next.js DevTools MCP provides AI agents with:<\/p>\n<ul>\n<li><strong>Next.js knowledge<\/strong>: Routing, caching, and rendering behavior<\/li>\n<li><strong>Unified logs<\/strong>: Browser and server logs without switching contexts<\/li>\n<li><strong>Automatic error access<\/strong>: Detailed stack traces without manual copying<\/li>\n<li><strong>Page awareness<\/strong>: Contextual understanding of the active route<\/li>\n<\/ul>\n<p>This enables AI agents to diagnose issues, explain behavior, and suggest fixes directly within your development workflow.<\/p>\n<p>Learn more in the documentation <a target=\"_blank\" href=\"https:\/\/nextjs.org\/docs\/app\/guides\/mcp\">here<\/a>.<\/p>\n<h3 id=\"proxyts-formerly-middlewarets\" data-docs-heading=\"\"><a target=\"_blank\" href=\"#proxyts-formerly-middlewarets\"><code>proxy.ts<\/code> (formerly <code>middleware.ts<\/code>)<span><svg viewbox=\"0 0 16 16\" height=\"0.7em\" width=\"0.7em\">\n  <g stroke-width=\"1.2\" fill=\"none\" stroke=\"currentColor\">\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698\"\/>\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698\"\/>\n  <\/g>\n<\/svg><\/span><\/a><\/h3>\n<p><code>proxy.ts<\/code> replaces <code>middleware.ts<\/code> and makes the app\u2019s network boundary explicit. <code>proxy.ts<\/code> runs on the Node.js runtime.<\/p>\n<ul>\n<li><strong>What to do<\/strong>: Rename <code>middleware.ts<\/code> \u2192 <code>proxy.ts<\/code> and rename the exported function to <code>proxy<\/code>. Logic stays the same.<\/li>\n<li><strong>Why<\/strong>: Clearer naming and a single, predictable runtime for request interception.<\/li>\n<\/ul>\n<div class=\"relative code-block-module__NOThwW__wrapper code-block-module__NOThwW__hasFileName not-prose\" data-geist-code-block=\"\">\n<pre class=\"code-block-module__NOThwW__pre\"><code class=\"code-block-module__NOThwW__code\"><span class=\"line\"><span style=\"color:var(--shiki-token-keyword)\">export<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-keyword)\">default<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-keyword)\">function<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-function)\">proxy<\/span><span style=\"color:var(--shiki-color-text)\">(request<\/span><span style=\"color:var(--shiki-token-keyword)\">:<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-function)\">NextRequest<\/span><span style=\"color:var(--shiki-color-text)\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-color-text)\">  <\/span><span style=\"color:var(--shiki-token-keyword)\">return<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-constant)\">NextResponse<\/span><span style=\"color:var(--shiki-token-function)\">.redirect<\/span><span style=\"color:var(--shiki-color-text)\">(<\/span><span style=\"color:var(--shiki-token-keyword)\">new<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-function)\">URL<\/span><span style=\"color:var(--shiki-color-text)\">(<\/span><span style=\"color:var(--shiki-token-string-expression)\">'\/home'<\/span><span style=\"color:var(--shiki-token-punctuation)\">,<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-constant)\">request<\/span><span style=\"color:var(--shiki-color-text)\">.url));<\/span><\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-color-text)\">}<\/span><\/span><\/code><\/pre>\n<\/div>\n<blockquote class=\"p-3 text-sm\">\n<p><strong>Note:<\/strong> The <code>middleware.ts<\/code> file is still available for Edge runtime use cases, but it is deprecated and will be removed in a future version.<\/p>\n<\/blockquote>\n<p>Learn more in the documentation <a target=\"_blank\" href=\"https:\/\/nextjs.org\/docs\/app\/getting-started\/proxy\">here<\/a>.<\/p>\n<h3 id=\"logging-improvements\" data-docs-heading=\"\"><a target=\"_blank\" href=\"#logging-improvements\">Logging Improvements<span><svg viewbox=\"0 0 16 16\" height=\"0.7em\" width=\"0.7em\">\n  <g stroke-width=\"1.2\" fill=\"none\" stroke=\"currentColor\">\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698\"\/>\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698\"\/>\n  <\/g>\n<\/svg><\/span><\/a><\/h3>\n<p>In Next.js 16 the development request logs are extended showing where time is spent.<\/p>\n<ul>\n<li>Compile: Routing and compilation<\/li>\n<li>Render: Running your code and React rendering<\/li>\n<\/ul>\n<div class=\"flex justify-center\">\n<figure><img alt=\"\" loading=\"lazy\" width=\"656.3636363636363\" height=\"373.6363636363636\" decoding=\"async\" data-nimg=\"1\" class=\"rounded-md border border-gray-200 bg-gray-100\" style=\"color:transparent\" srcset=\"\/_next\/image?url=https%3A%2F%2Fh8DxKfmAPhn8O0p3.public.blob.vercel-storage.com%2Fstatic%2Fblog%2Fnext-16%2Fdevelopment-log.jpg&amp;w=750&amp;q=75 1x, \/_next\/image?url=https%3A%2F%2Fh8DxKfmAPhn8O0p3.public.blob.vercel-storage.com%2Fstatic%2Fblog%2Fnext-16%2Fdevelopment-log.jpg&amp;w=1920&amp;q=75 2x\" src=\"https:\/\/nextjs.org\/_next\/image?url=https%3A%2F%2Fh8DxKfmAPhn8O0p3.public.blob.vercel-storage.com%2Fstatic%2Fblog%2Fnext-16%2Fdevelopment-log.jpg&amp;w=1920&amp;q=75\"\/><\/figure>\n<\/div>\n<p>The build is also extended to show where time is spent. Each step in the build process is now shown with the time it took to complete.<\/p>\n<div class=\"relative code-block-module__NOThwW__wrapper code-block-module__NOThwW__hasFileName not-prose\" data-geist-code-block=\"\">\n<pre class=\"code-block-module__NOThwW__pre\"><code class=\"code-block-module__NOThwW__code\"><span class=\"line\"><span style=\"color:var(--shiki-color-text)\">   <\/span><span style=\"color:var(--shiki-token-function)\">\u25b2<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-string)\">Next.js<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-constant)\">16<\/span><span style=\"color:var(--shiki-color-text)\"> (Turbopack)<\/span><\/span>\n<span class=\"line\"> <\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-function)\">\u2713<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-string)\">Compiled<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-string)\">successfully<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-string)\">in<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-constant)\">615<\/span><span style=\"color:var(--shiki-token-string)\">ms<\/span><\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-function)\">\u2713<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-string)\">Finished<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-string)\">TypeScript<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-string)\">in<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-constant)\">1114<\/span><span style=\"color:var(--shiki-token-string)\">ms<\/span><\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-function)\">\u2713<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-string)\">Collecting<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-string)\">page<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-string)\">data<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-string)\">in<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-constant)\">208<\/span><span style=\"color:var(--shiki-token-string)\">ms<\/span><\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-function)\">\u2713<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-string)\">Generating<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-string)\">static<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-string)\">pages<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-string)\">in<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-constant)\">239<\/span><span style=\"color:var(--shiki-token-string)\">ms<\/span><\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-function)\">\u2713<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-string)\">Finalizing<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-string)\">page<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-string)\">optimization<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-string)\">in<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-constant)\">5<\/span><span style=\"color:var(--shiki-token-string)\">ms<\/span><\/span><\/code><\/pre>\n<\/div>\n<hr\/>\n<p>The following features were <a target=\"_blank\" href=\"https:\/\/nextjs.org\/blog\/next-16-beta\">previously<\/a> announced in the beta release:<\/p>\n<h3 id=\"developer-experience\" data-docs-heading=\"\"><a target=\"_blank\" href=\"#developer-experience\">Developer Experience<span><svg viewbox=\"0 0 16 16\" height=\"0.7em\" width=\"0.7em\">\n  <g stroke-width=\"1.2\" fill=\"none\" stroke=\"currentColor\">\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698\"\/>\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698\"\/>\n  <\/g>\n<\/svg><\/span><\/a><\/h3>\n<h4 id=\"turbopack-stable\" data-docs-heading=\"\"><a target=\"_blank\" href=\"#turbopack-stable\">Turbopack (stable)<span><svg viewbox=\"0 0 16 16\" height=\"0.7em\" width=\"0.7em\">\n  <g stroke-width=\"1.2\" fill=\"none\" stroke=\"currentColor\">\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698\"\/>\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698\"\/>\n  <\/g>\n<\/svg><\/span><\/a><\/h4>\n<p>Turbopack has reached stability for both development and production builds, and is now the default bundler for all new Next.js projects. Since its beta release earlier this summer, adoption has scaled rapidly: more than 50% of development sessions and 20% of production builds on Next.js 15.3+ are already running on Turbopack.<\/p>\n<p>With Turbopack, you can expect:<\/p>\n<ul>\n<li>2\u20135\u00d7 faster production builds<\/li>\n<li>Up to 10\u00d7 faster Fast Refresh<\/li>\n<\/ul>\n<p>We&#8217;re making Turbopack the default to bring these performance gains to every Next.js developer, no configuration required. For apps with custom webpack setups, you can continue using webpack by running:<\/p>\n<div class=\"relative code-block-module__NOThwW__wrapper code-block-module__NOThwW__hasFileName not-prose\" data-geist-code-block=\"\">\n<pre class=\"code-block-module__NOThwW__pre\"><code class=\"code-block-module__NOThwW__code\"><span class=\"line\"><span style=\"color:var(--shiki-token-function)\">next<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-string)\">dev<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-string)\">--webpack<\/span><\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-token-function)\">next<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-string)\">build<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-string)\">--webpack<\/span><\/span><\/code><\/pre>\n<\/div>\n<h4 id=\"turbopack-file-system-caching-beta\" data-docs-heading=\"\"><a target=\"_blank\" href=\"#turbopack-file-system-caching-beta\">Turbopack File System Caching (beta)<span><svg viewbox=\"0 0 16 16\" height=\"0.7em\" width=\"0.7em\">\n  <g stroke-width=\"1.2\" fill=\"none\" stroke=\"currentColor\">\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698\"\/>\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698\"\/>\n  <\/g>\n<\/svg><\/span><\/a><\/h4>\n<p>Turbopack now supports filesystem caching in development, storing compiler artifacts on disk between runs for significantly faster compile times across restarts, especially in large projects.<\/p>\n<p>Enable filesystem caching in your configuration:<\/p>\n<div class=\"relative code-block-module__NOThwW__wrapper code-block-module__NOThwW__hasFileName not-prose\" data-geist-code-block=\"\">\n<pre class=\"code-block-module__NOThwW__pre\"><code class=\"code-block-module__NOThwW__code\"><span class=\"line\"><span style=\"color:var(--shiki-token-keyword)\">const<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-constant)\">nextConfig<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-keyword)\">=<\/span><span style=\"color:var(--shiki-color-text)\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-color-text)\">  experimental<\/span><span style=\"color:var(--shiki-token-keyword)\">:<\/span><span style=\"color:var(--shiki-color-text)\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-color-text)\">    turbopackFileSystemCacheForDev<\/span><span style=\"color:var(--shiki-token-keyword)\">:<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-constant)\">true<\/span><span style=\"color:var(--shiki-token-punctuation)\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-color-text)\">  }<\/span><span style=\"color:var(--shiki-token-punctuation)\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-color-text)\">};<\/span><\/span>\n<span class=\"line\"> <\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-token-keyword)\">export<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-keyword)\">default<\/span><span style=\"color:var(--shiki-color-text)\"> nextConfig;<\/span><\/span><\/code><\/pre>\n<\/div>\n<p>All internal Vercel apps are already using this feature, and we\u2019ve seen notable improvements in developer productivity across large repositories.<\/p>\n<p>We\u2019d love to hear your feedback as we iterate on filesystem caching. Please try it out and share your experience.<\/p>\n<h4 id=\"simplified-create-next-app\" data-docs-heading=\"\"><a target=\"_blank\" href=\"#simplified-create-next-app\">Simplified <code>create-next-app<\/code><span><svg viewbox=\"0 0 16 16\" height=\"0.7em\" width=\"0.7em\">\n  <g stroke-width=\"1.2\" fill=\"none\" stroke=\"currentColor\">\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698\"\/>\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698\"\/>\n  <\/g>\n<\/svg><\/span><\/a><\/h4>\n<p><code>create-next-app<\/code> has been redesigned with a simplified setup flow, updated project structure, and improved defaults. The new template includes the App Router by default, TypeScript-first configuration, Tailwind CSS, and ESLint.<\/p>\n<h4 id=\"build-adapters-api-alpha\" data-docs-heading=\"\"><a target=\"_blank\" href=\"#build-adapters-api-alpha\">Build Adapters API (alpha)<span><svg viewbox=\"0 0 16 16\" height=\"0.7em\" width=\"0.7em\">\n  <g stroke-width=\"1.2\" fill=\"none\" stroke=\"currentColor\">\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698\"\/>\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698\"\/>\n  <\/g>\n<\/svg><\/span><\/a><\/h4>\n<p>Following the <a target=\"_blank\" href=\"https:\/\/github.com\/vercel\/next.js\/discussions\/77740\" rel=\"noopener noreferrer\" target=\"_blank\">Build Adapters RFC<span class=\"inline-flex\"><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\" fill=\"currentColor\"\/><\/svg><\/span><\/a>, we&#8217;ve worked with the community and deployment platforms to deliver the first alpha version of the Build Adapters API.<\/p>\n<p>Build Adapters allow you to create custom adapters that hook into the build process, enabling deployment platforms and custom build integrations to modify Next.js configuration or process build output.<\/p>\n<div class=\"relative code-block-module__NOThwW__wrapper code-block-module__NOThwW__hasFileName not-prose\" data-geist-code-block=\"\">\n<pre class=\"code-block-module__NOThwW__pre\"><code class=\"code-block-module__NOThwW__code\"><span class=\"line\"><span style=\"color:var(--shiki-token-keyword)\">const<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-constant)\">nextConfig<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-keyword)\">=<\/span><span style=\"color:var(--shiki-color-text)\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-color-text)\">  experimental<\/span><span style=\"color:var(--shiki-token-keyword)\">:<\/span><span style=\"color:var(--shiki-color-text)\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-color-text)\">    adapterPath<\/span><span style=\"color:var(--shiki-token-keyword)\">:<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-constant)\">require<\/span><span style=\"color:var(--shiki-token-function)\">.resolve<\/span><span style=\"color:var(--shiki-color-text)\">(<\/span><span style=\"color:var(--shiki-token-string-expression)\">'.\/my-adapter.js'<\/span><span style=\"color:var(--shiki-color-text)\">)<\/span><span style=\"color:var(--shiki-token-punctuation)\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-color-text)\">  }<\/span><span style=\"color:var(--shiki-token-punctuation)\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-color-text)\">};<\/span><\/span>\n<span class=\"line\"> <\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-token-constant)\">module<\/span><span style=\"color:var(--shiki-color-text)\">.<\/span><span style=\"color:var(--shiki-token-constant)\">exports<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-keyword)\">=<\/span><span style=\"color:var(--shiki-color-text)\"> nextConfig;<\/span><\/span><\/code><\/pre>\n<\/div>\n<p>Share your feedback in the <a target=\"_blank\" href=\"https:\/\/github.com\/vercel\/next.js\/discussions\/77740\" rel=\"noopener noreferrer\" target=\"_blank\">RFC discussion<span class=\"inline-flex\"><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\" fill=\"currentColor\"\/><\/svg><\/span><\/a>.<\/p>\n<h4 id=\"react-compiler-support-stable\" data-docs-heading=\"\"><a target=\"_blank\" href=\"#react-compiler-support-stable\">React Compiler Support (stable)<span><svg viewbox=\"0 0 16 16\" height=\"0.7em\" width=\"0.7em\">\n  <g stroke-width=\"1.2\" fill=\"none\" stroke=\"currentColor\">\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698\"\/>\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698\"\/>\n  <\/g>\n<\/svg><\/span><\/a><\/h4>\n<p>Built-in support for the React Compiler is now stable in Next.js 16 following the React Compiler&#8217;s 1.0 release. The React Compiler automatically memoizes components, reducing unnecessary re-renders with zero manual code changes.<\/p>\n<p>The <code>reactCompiler<\/code> configuration option has been promoted from <code>experimental<\/code> to stable. It is not enabled by default as we continue gathering build performance data across different application types. Expect compile times in development and during builds to be higher when enabling this option as the React Compiler relies on Babel.<\/p>\n<div class=\"relative code-block-module__NOThwW__wrapper code-block-module__NOThwW__hasFileName not-prose\" data-geist-code-block=\"\">\n<pre class=\"code-block-module__NOThwW__pre\"><code class=\"code-block-module__NOThwW__code\"><span class=\"line\"><span style=\"color:var(--shiki-token-keyword)\">const<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-constant)\">nextConfig<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-keyword)\">=<\/span><span style=\"color:var(--shiki-color-text)\"> {<\/span><\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-color-text)\">  reactCompiler<\/span><span style=\"color:var(--shiki-token-keyword)\">:<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-constant)\">true<\/span><span style=\"color:var(--shiki-token-punctuation)\">,<\/span><\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-color-text)\">};<\/span><\/span>\n<span class=\"line\"> <\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-token-keyword)\">export<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-keyword)\">default<\/span><span style=\"color:var(--shiki-color-text)\"> nextConfig;<\/span><\/span><\/code><\/pre>\n<\/div>\n<p>Install the latest version of the React Compiler plugin:<\/p>\n<div class=\"relative code-block-module__NOThwW__wrapper code-block-module__NOThwW__hasFileName code-block-module__NOThwW__hideLineNumbers not-prose\" data-geist-code-block=\"\">\n<pre class=\"code-block-module__NOThwW__pre\"><code class=\"code-block-module__NOThwW__code\"><span class=\"line\"><span style=\"color:var(--shiki-token-function)\">npm<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-string)\">install<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-string)\">babel-plugin-react-compiler@latest<\/span><\/span><\/code><\/pre>\n<\/div>\n<h3 id=\"core-features--architecture\" data-docs-heading=\"\"><a target=\"_blank\" href=\"#core-features--architecture\">Core Features &amp; Architecture<span><svg viewbox=\"0 0 16 16\" height=\"0.7em\" width=\"0.7em\">\n  <g stroke-width=\"1.2\" fill=\"none\" stroke=\"currentColor\">\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698\"\/>\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698\"\/>\n  <\/g>\n<\/svg><\/span><\/a><\/h3>\n<h4 id=\"enhanced-routing-and-navigation\" data-docs-heading=\"\"><a target=\"_blank\" href=\"#enhanced-routing-and-navigation\">Enhanced Routing and Navigation<span><svg viewbox=\"0 0 16 16\" height=\"0.7em\" width=\"0.7em\">\n  <g stroke-width=\"1.2\" fill=\"none\" stroke=\"currentColor\">\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698\"\/>\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698\"\/>\n  <\/g>\n<\/svg><\/span><\/a><\/h4>\n<p>Next.js 16 includes a complete overhaul of the routing and navigation system,<br \/>\nmaking page transitions leaner and faster.<\/p>\n<p><strong>Layout deduplication<\/strong>: When prefetching multiple URLs with a shared layout, the layout is downloaded once instead of separately for each Link. For example, a page with 50 product links now downloads the shared layout once instead of 50 times, dramatically reducing the network transfer size.<\/p>\n<p><strong>Incremental prefetching<\/strong>: Next.js only prefetches parts not already in cache, rather than entire pages. The prefetch cache now:<\/p>\n<ul>\n<li>Cancels requests when the link leaves the viewport<\/li>\n<li>Prioritizes link prefetching on hover or when re-entering the viewport<\/li>\n<li>Re-prefetches links when their data is invalidated<\/li>\n<li>Works seamlessly with upcoming features like Cache Components<\/li>\n<\/ul>\n<p><strong>Trade-off<\/strong>: You may see more individual prefetch requests, but with much lower total transfer sizes. We believe this is the right trade-off for nearly all applications. If the increased request count causes issues, please let us know. We&#8217;re working on additional optimizations to inline data chunks more efficiently.<\/p>\n<p>These changes require no code modifications and are designed to improve performance across all apps.<\/p>\n<h4 id=\"improved-caching-apis\" data-docs-heading=\"\"><a target=\"_blank\" href=\"#improved-caching-apis\">Improved Caching APIs<span><svg viewbox=\"0 0 16 16\" height=\"0.7em\" width=\"0.7em\">\n  <g stroke-width=\"1.2\" fill=\"none\" stroke=\"currentColor\">\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698\"\/>\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698\"\/>\n  <\/g>\n<\/svg><\/span><\/a><\/h4>\n<p>Next.js 16 introduces refined caching APIs for more explicit control over cache behavior.<\/p>\n<h5 id=\"revalidatetag-updated\" data-docs-heading=\"\"><a target=\"_blank\" href=\"#revalidatetag-updated\"><code>revalidateTag()<\/code> (updated)<span><svg viewbox=\"0 0 16 16\" height=\"0.7em\" width=\"0.7em\">\n  <g stroke-width=\"1.2\" fill=\"none\" stroke=\"currentColor\">\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698\"\/>\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698\"\/>\n  <\/g>\n<\/svg><\/span><\/a><\/h5>\n<p><code>revalidateTag()<\/code> now requires a <strong><a target=\"_blank\" href=\"https:\/\/nextjs.org\/docs\/app\/api-reference\/functions\/cacheLife#reference\" rel=\"noopener noreferrer\" target=\"_blank\"><code>cacheLife<\/code> profile<span class=\"inline-flex\"><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\" fill=\"currentColor\"\/><\/svg><\/span><\/a><\/strong> as the second argument to enable stale-while-revalidate (SWR) behavior:<\/p>\n<div class=\"relative code-block-module__NOThwW__wrapper not-prose\" data-geist-code-block=\"\"><button aria-label=\"Copy code\" class=\"code-block-module__NOThwW__copyButton code-block-module__NOThwW__copyFloatingButton\" type=\"button\"><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M2.75 0.5C1.7835 0.5 1 1.2835 1 2.25V9.75C1 10.7165 1.7835 11.5 2.75 11.5H3.75H4.5V10H3.75H2.75C2.61193 10 2.5 9.88807 2.5 9.75V2.25C2.5 2.11193 2.61193 2 2.75 2H8.25C8.38807 2 8.5 2.11193 8.5 2.25V3H10V2.25C10 1.2835 9.2165 0.5 8.25 0.5H2.75ZM7.75 4.5C6.7835 4.5 6 5.2835 6 6.25V13.75C6 14.7165 6.7835 15.5 7.75 15.5H13.25C14.2165 15.5 15 14.7165 15 13.75V6.25C15 5.2835 14.2165 4.5 13.25 4.5H7.75ZM7.5 6.25C7.5 6.11193 7.61193 6 7.75 6H13.25C13.3881 6 13.5 6.11193 13.5 6.25V13.75C13.5 13.8881 13.3881 14 13.25 14H7.75C7.61193 14 7.5 13.8881 7.5 13.75V6.25Z\" fill=\"currentColor\"\/><\/svg><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M15.5607 3.99999L15.0303 4.53032L6.23744 13.3232C5.55403 14.0066 4.44599 14.0066 3.76257 13.3232L4.2929 12.7929L3.76257 13.3232L0.969676 10.5303L0.439346 9.99999L1.50001 8.93933L2.03034 9.46966L4.82323 12.2626C4.92086 12.3602 5.07915 12.3602 5.17678 12.2626L13.9697 3.46966L14.5 2.93933L15.5607 3.99999Z\" fill=\"currentColor\"\/><\/svg><\/button><\/p>\n<pre class=\"code-block-module__NOThwW__pre\"><code class=\"code-block-module__NOThwW__code\"><span class=\"line\"><span style=\"color:var(--shiki-token-keyword)\">import<\/span><span style=\"color:var(--shiki-color-text)\"> { revalidateTag } <\/span><span style=\"color:var(--shiki-token-keyword)\">from<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-string-expression)\">'next\/cache'<\/span><span style=\"color:var(--shiki-color-text)\">;<\/span><\/span>\n<span class=\"line\"> <\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-token-comment)\">\/\/ \u2705 Use built-in cacheLife profile (we recommend 'max' for most cases)<\/span><\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-token-function)\">revalidateTag<\/span><span style=\"color:var(--shiki-color-text)\">(<\/span><span style=\"color:var(--shiki-token-string-expression)\">'blog-posts'<\/span><span style=\"color:var(--shiki-token-punctuation)\">,<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-string-expression)\">'max'<\/span><span style=\"color:var(--shiki-color-text)\">);<\/span><\/span>\n<span class=\"line\"> <\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-token-comment)\">\/\/ Or use other built-in profiles<\/span><\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-token-function)\">revalidateTag<\/span><span style=\"color:var(--shiki-color-text)\">(<\/span><span style=\"color:var(--shiki-token-string-expression)\">'news-feed'<\/span><span style=\"color:var(--shiki-token-punctuation)\">,<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-string-expression)\">'hours'<\/span><span style=\"color:var(--shiki-color-text)\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-token-function)\">revalidateTag<\/span><span style=\"color:var(--shiki-color-text)\">(<\/span><span style=\"color:var(--shiki-token-string-expression)\">'analytics'<\/span><span style=\"color:var(--shiki-token-punctuation)\">,<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-string-expression)\">'days'<\/span><span style=\"color:var(--shiki-color-text)\">);<\/span><\/span>\n<span class=\"line\"> <\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-token-comment)\">\/\/ Or use an inline object with a custom revalidation time<\/span><\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-token-function)\">revalidateTag<\/span><span style=\"color:var(--shiki-color-text)\">(<\/span><span style=\"color:var(--shiki-token-string-expression)\">'products'<\/span><span style=\"color:var(--shiki-token-punctuation)\">,<\/span><span style=\"color:var(--shiki-color-text)\"> { revalidate<\/span><span style=\"color:var(--shiki-token-keyword)\">:<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-constant)\">3600<\/span><span style=\"color:var(--shiki-color-text)\"> });<\/span><\/span>\n<span class=\"line\"> <\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-token-comment)\">\/\/ \u26a0\ufe0f Deprecated - single argument form<\/span><\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-token-function)\">revalidateTag<\/span><span style=\"color:var(--shiki-color-text)\">(<\/span><span style=\"color:var(--shiki-token-string-expression)\">'blog-posts'<\/span><span style=\"color:var(--shiki-color-text)\">);<\/span><\/span><\/code><\/pre>\n<\/div>\n<p>The profile argument accepts built-in <code>cacheLife<\/code> profile names (like <code>'max'<\/code>, <code>'hours'<\/code>, <code>'days'<\/code>) or <a target=\"_blank\" href=\"https:\/\/nextjs.org\/docs\/app\/api-reference\/functions\/cacheLife#defining-reusable-cache-profiles\" rel=\"noopener noreferrer\" target=\"_blank\">custom profiles<span class=\"inline-flex\"><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\" fill=\"currentColor\"\/><\/svg><\/span><\/a> defined in your <code>next.config<\/code>. You can also pass an inline <code>{ expire: number }<\/code> object. We recommend using <code>'max'<\/code> for most cases, as it enables background revalidation for long-lived content. When users request tagged content, they receive cached data immediately while Next.js revalidates in the background.<\/p>\n<p>Use <code>revalidateTag()<\/code> when you want to invalidate only properly tagged cached entries with stale-while-revalidate behavior. This is ideal for static content that can tolerate eventual consistency.<\/p>\n<blockquote class=\"p-3 text-sm\">\n<p><strong>Migration guidance:<\/strong> Add the second argument with a <code>cacheLife<\/code> profile (we recommend <code>'max'<\/code>) for SWR behavior, or use <code>updateTag()<\/code> in Server Actions if you need read-your-writes semantics.<\/p>\n<\/blockquote>\n<h5 id=\"updatetag-new\" data-docs-heading=\"\"><a target=\"_blank\" href=\"#updatetag-new\"><code>updateTag()<\/code> (new)<span><svg viewbox=\"0 0 16 16\" height=\"0.7em\" width=\"0.7em\">\n  <g stroke-width=\"1.2\" fill=\"none\" stroke=\"currentColor\">\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698\"\/>\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698\"\/>\n  <\/g>\n<\/svg><\/span><\/a><\/h5>\n<p><code>updateTag()<\/code> is a new Server Actions-only API that provides <strong>read-your-writes<\/strong> semantics, expiring and immediately reading fresh data within the same request:<\/p>\n<div class=\"relative code-block-module__NOThwW__wrapper not-prose\" data-geist-code-block=\"\"><button aria-label=\"Copy code\" class=\"code-block-module__NOThwW__copyButton code-block-module__NOThwW__copyFloatingButton\" type=\"button\"><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M2.75 0.5C1.7835 0.5 1 1.2835 1 2.25V9.75C1 10.7165 1.7835 11.5 2.75 11.5H3.75H4.5V10H3.75H2.75C2.61193 10 2.5 9.88807 2.5 9.75V2.25C2.5 2.11193 2.61193 2 2.75 2H8.25C8.38807 2 8.5 2.11193 8.5 2.25V3H10V2.25C10 1.2835 9.2165 0.5 8.25 0.5H2.75ZM7.75 4.5C6.7835 4.5 6 5.2835 6 6.25V13.75C6 14.7165 6.7835 15.5 7.75 15.5H13.25C14.2165 15.5 15 14.7165 15 13.75V6.25C15 5.2835 14.2165 4.5 13.25 4.5H7.75ZM7.5 6.25C7.5 6.11193 7.61193 6 7.75 6H13.25C13.3881 6 13.5 6.11193 13.5 6.25V13.75C13.5 13.8881 13.3881 14 13.25 14H7.75C7.61193 14 7.5 13.8881 7.5 13.75V6.25Z\" fill=\"currentColor\"\/><\/svg><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M15.5607 3.99999L15.0303 4.53032L6.23744 13.3232C5.55403 14.0066 4.44599 14.0066 3.76257 13.3232L4.2929 12.7929L3.76257 13.3232L0.969676 10.5303L0.439346 9.99999L1.50001 8.93933L2.03034 9.46966L4.82323 12.2626C4.92086 12.3602 5.07915 12.3602 5.17678 12.2626L13.9697 3.46966L14.5 2.93933L15.5607 3.99999Z\" fill=\"currentColor\"\/><\/svg><\/button><\/p>\n<pre class=\"code-block-module__NOThwW__pre\"><code class=\"code-block-module__NOThwW__code\"><span class=\"line\"><span style=\"color:var(--shiki-token-string-expression)\">'use server'<\/span><span style=\"color:var(--shiki-color-text)\">;<\/span><\/span>\n<span class=\"line\"> <\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-token-keyword)\">import<\/span><span style=\"color:var(--shiki-color-text)\"> { updateTag } <\/span><span style=\"color:var(--shiki-token-keyword)\">from<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-string-expression)\">'next\/cache'<\/span><span style=\"color:var(--shiki-color-text)\">;<\/span><\/span>\n<span class=\"line\"> <\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-token-keyword)\">export<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-keyword)\">async<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-keyword)\">function<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-function)\">updateUserProfile<\/span><span style=\"color:var(--shiki-color-text)\">(userId<\/span><span style=\"color:var(--shiki-token-keyword)\">:<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-constant)\">string<\/span><span style=\"color:var(--shiki-token-punctuation)\">,<\/span><span style=\"color:var(--shiki-color-text)\"> profile<\/span><span style=\"color:var(--shiki-token-keyword)\">:<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-function)\">Profile<\/span><span style=\"color:var(--shiki-color-text)\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-color-text)\">  <\/span><span style=\"color:var(--shiki-token-keyword)\">await<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-constant)\">db<\/span><span style=\"color:var(--shiki-token-function)\">.<\/span><span style=\"color:var(--shiki-token-constant)\">users<\/span><span style=\"color:var(--shiki-token-function)\">.update<\/span><span style=\"color:var(--shiki-color-text)\">(userId<\/span><span style=\"color:var(--shiki-token-punctuation)\">,<\/span><span style=\"color:var(--shiki-color-text)\"> profile);<\/span><\/span>\n<span class=\"line\"> <\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-color-text)\">  <\/span><span style=\"color:var(--shiki-token-comment)\">\/\/ Expire cache and refresh immediately - user sees their changes right away<\/span><\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-color-text)\">  <\/span><span style=\"color:var(--shiki-token-function)\">updateTag<\/span><span style=\"color:var(--shiki-color-text)\">(<\/span><span style=\"color:var(--shiki-token-string-expression)\">`user-<\/span><span style=\"color:var(--shiki-token-keyword)\">${<\/span><span style=\"color:var(--shiki-color-text)\">userId<\/span><span style=\"color:var(--shiki-token-keyword)\">}<\/span><span style=\"color:var(--shiki-token-string-expression)\">`<\/span><span style=\"color:var(--shiki-color-text)\">);<\/span><\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-color-text)\">}<\/span><\/span><\/code><\/pre>\n<\/div>\n<p>This ensures interactive features reflect changes immediately. Perfect for forms, user settings, and any workflow where users expect to see their updates instantly.<\/p>\n<h5 id=\"refresh-new\" data-docs-heading=\"\"><a target=\"_blank\" href=\"#refresh-new\"><code>refresh()<\/code> (new)<span><svg viewbox=\"0 0 16 16\" height=\"0.7em\" width=\"0.7em\">\n  <g stroke-width=\"1.2\" fill=\"none\" stroke=\"currentColor\">\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698\"\/>\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698\"\/>\n  <\/g>\n<\/svg><\/span><\/a><\/h5>\n<p><code>refresh()<\/code> is a new Server Actions-only API for refreshing <strong>uncached data only<\/strong>. It doesn&#8217;t touch the cache at all:<\/p>\n<div class=\"relative code-block-module__NOThwW__wrapper not-prose\" data-geist-code-block=\"\"><button aria-label=\"Copy code\" class=\"code-block-module__NOThwW__copyButton code-block-module__NOThwW__copyFloatingButton\" type=\"button\"><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M2.75 0.5C1.7835 0.5 1 1.2835 1 2.25V9.75C1 10.7165 1.7835 11.5 2.75 11.5H3.75H4.5V10H3.75H2.75C2.61193 10 2.5 9.88807 2.5 9.75V2.25C2.5 2.11193 2.61193 2 2.75 2H8.25C8.38807 2 8.5 2.11193 8.5 2.25V3H10V2.25C10 1.2835 9.2165 0.5 8.25 0.5H2.75ZM7.75 4.5C6.7835 4.5 6 5.2835 6 6.25V13.75C6 14.7165 6.7835 15.5 7.75 15.5H13.25C14.2165 15.5 15 14.7165 15 13.75V6.25C15 5.2835 14.2165 4.5 13.25 4.5H7.75ZM7.5 6.25C7.5 6.11193 7.61193 6 7.75 6H13.25C13.3881 6 13.5 6.11193 13.5 6.25V13.75C13.5 13.8881 13.3881 14 13.25 14H7.75C7.61193 14 7.5 13.8881 7.5 13.75V6.25Z\" fill=\"currentColor\"\/><\/svg><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\" aria-hidden=\"true\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M15.5607 3.99999L15.0303 4.53032L6.23744 13.3232C5.55403 14.0066 4.44599 14.0066 3.76257 13.3232L4.2929 12.7929L3.76257 13.3232L0.969676 10.5303L0.439346 9.99999L1.50001 8.93933L2.03034 9.46966L4.82323 12.2626C4.92086 12.3602 5.07915 12.3602 5.17678 12.2626L13.9697 3.46966L14.5 2.93933L15.5607 3.99999Z\" fill=\"currentColor\"\/><\/svg><\/button><\/p>\n<pre class=\"code-block-module__NOThwW__pre\"><code class=\"code-block-module__NOThwW__code\"><span class=\"line\"><span style=\"color:var(--shiki-token-string-expression)\">'use server'<\/span><span style=\"color:var(--shiki-color-text)\">;<\/span><\/span>\n<span class=\"line\"> <\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-token-keyword)\">import<\/span><span style=\"color:var(--shiki-color-text)\"> { refresh } <\/span><span style=\"color:var(--shiki-token-keyword)\">from<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-string-expression)\">'next\/cache'<\/span><span style=\"color:var(--shiki-color-text)\">;<\/span><\/span>\n<span class=\"line\"> <\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-token-keyword)\">export<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-keyword)\">async<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-keyword)\">function<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-function)\">markNotificationAsRead<\/span><span style=\"color:var(--shiki-color-text)\">(notificationId<\/span><span style=\"color:var(--shiki-token-keyword)\">:<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-constant)\">string<\/span><span style=\"color:var(--shiki-color-text)\">) {<\/span><\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-color-text)\">  <\/span><span style=\"color:var(--shiki-token-comment)\">\/\/ Update the notification in the database<\/span><\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-color-text)\">  <\/span><span style=\"color:var(--shiki-token-keyword)\">await<\/span><span style=\"color:var(--shiki-color-text)\"> <\/span><span style=\"color:var(--shiki-token-constant)\">db<\/span><span style=\"color:var(--shiki-token-function)\">.<\/span><span style=\"color:var(--shiki-token-constant)\">notifications<\/span><span style=\"color:var(--shiki-token-function)\">.markAsRead<\/span><span style=\"color:var(--shiki-color-text)\">(notificationId);<\/span><\/span>\n<span class=\"line\"> <\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-color-text)\">  <\/span><span style=\"color:var(--shiki-token-comment)\">\/\/ Refresh the notification count displayed in the header<\/span><\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-color-text)\">  <\/span><span style=\"color:var(--shiki-token-comment)\">\/\/ (which is fetched separately and not cached)<\/span><\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-color-text)\">  <\/span><span style=\"color:var(--shiki-token-function)\">refresh<\/span><span style=\"color:var(--shiki-color-text)\">();<\/span><\/span>\n<span class=\"line\"><span style=\"color:var(--shiki-color-text)\">}<\/span><\/span><\/code><\/pre>\n<\/div>\n<p>This API is complementary to the client-side <code>router.refresh()<\/code>. Use it when you need to refresh uncached data displayed elsewhere on the page after performing an action. Your cached page shells and static content remain fast while dynamic data like notification counts, live metrics, or status indicators refresh.<\/p>\n<h4 id=\"react-192-and-canary-features\" data-docs-heading=\"\"><a target=\"_blank\" href=\"#react-192-and-canary-features\">React 19.2 and Canary Features<span><svg viewbox=\"0 0 16 16\" height=\"0.7em\" width=\"0.7em\">\n  <g stroke-width=\"1.2\" fill=\"none\" stroke=\"currentColor\">\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698\"\/>\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698\"\/>\n  <\/g>\n<\/svg><\/span><\/a><\/h4>\n<p>The App Router in Next.js 16 uses the latest React <a target=\"_blank\" href=\"https:\/\/react.dev\/blog\/2023\/05\/03\/react-canaries\" rel=\"noopener noreferrer nofollow\" target=\"_blank\">Canary release<span class=\"inline-flex\"><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\" fill=\"currentColor\"\/><\/svg><\/span><\/a>, which includes the newly released React 19.2 features and other features being incrementally stabilized. Highlights include:<\/p>\n<ul>\n<li><strong><a target=\"_blank\" href=\"https:\/\/react.dev\/reference\/react\/ViewTransition\" rel=\"noopener noreferrer nofollow\" target=\"_blank\">View Transitions<span class=\"inline-flex\"><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\" fill=\"currentColor\"\/><\/svg><\/span><\/a><\/strong>: Animate elements that update inside a Transition or navigation<\/li>\n<li><strong><a target=\"_blank\" href=\"https:\/\/react.dev\/reference\/react\/useEffectEvent\" rel=\"noopener noreferrer nofollow\" target=\"_blank\"><code>useEffectEvent<\/code><span class=\"inline-flex\"><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\" fill=\"currentColor\"\/><\/svg><\/span><\/a><\/strong>: Extract non-reactive logic from Effects into reusable Effect Event functions<\/li>\n<li><strong><a target=\"_blank\" href=\"https:\/\/react.dev\/reference\/react\/Activity\" rel=\"noopener noreferrer nofollow\" target=\"_blank\">Activity<span class=\"inline-flex\"><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\" fill=\"currentColor\"\/><\/svg><\/span><\/a><\/strong>: Render &#8220;background activity&#8221; by hiding UI with <code>display: none<\/code> while maintaining state and cleaning up Effects<\/li>\n<\/ul>\n<p>Learn more in the <a target=\"_blank\" href=\"https:\/\/react.dev\/blog\/2025\/10\/01\/react-19-2\" rel=\"noopener noreferrer nofollow\" target=\"_blank\">React 19.2 announcement<span class=\"inline-flex\"><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\" fill=\"currentColor\"\/><\/svg><\/span><\/a>.<\/p>\n<h3 id=\"breaking-changes-and-other-updates\" data-docs-heading=\"\"><a target=\"_blank\" href=\"#breaking-changes-and-other-updates\">Breaking Changes and Other Updates<span><svg viewbox=\"0 0 16 16\" height=\"0.7em\" width=\"0.7em\">\n  <g stroke-width=\"1.2\" fill=\"none\" stroke=\"currentColor\">\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698\"\/>\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698\"\/>\n  <\/g>\n<\/svg><\/span><\/a><\/h3>\n<h4 id=\"version-requirements\" data-docs-heading=\"\"><a target=\"_blank\" href=\"#version-requirements\">Version Requirements<span><svg viewbox=\"0 0 16 16\" height=\"0.7em\" width=\"0.7em\">\n  <g stroke-width=\"1.2\" fill=\"none\" stroke=\"currentColor\">\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698\"\/>\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698\"\/>\n  <\/g>\n<\/svg><\/span><\/a><\/h4>\n<div class=\"overflow-x-auto\">\n<div class=\"s_table\"><table class=\"w-full table-auto\">\n<thead>\n<tr>\n<th class=\"min-w-[12ch]\">Change<\/th>\n<th class=\"min-w-[12ch]\">Details<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Node.js 20.9+<\/strong><\/td>\n<td>Minimum version now 20.9.0 (LTS); Node.js 18 no longer supported<\/td>\n<\/tr>\n<tr>\n<td><strong>TypeScript 5+<\/strong><\/td>\n<td>Minimum version now 5.1.0<\/td>\n<\/tr>\n<tr>\n<td><strong>Browsers<\/strong><\/td>\n<td>Chrome 111+, Edge 111+, Firefox 111+, Safari 16.4+<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<\/div>\n<h4 id=\"removals\" data-docs-heading=\"\"><a target=\"_blank\" href=\"#removals\">Removals<span><svg viewbox=\"0 0 16 16\" height=\"0.7em\" width=\"0.7em\">\n  <g stroke-width=\"1.2\" fill=\"none\" stroke=\"currentColor\">\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698\"\/>\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698\"\/>\n  <\/g>\n<\/svg><\/span><\/a><\/h4>\n<p>These features were previously deprecated and are now removed:<\/p>\n<div class=\"overflow-x-auto\">\n<div class=\"s_table\"><table class=\"w-full table-auto\">\n<thead>\n<tr>\n<th class=\"min-w-[12ch]\">Removed<\/th>\n<th class=\"min-w-[12ch]\">Replacement<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>AMP support<\/strong><\/td>\n<td>All AMP APIs and configs removed (<code>useAmp<\/code>, <code>export const config = { amp: true }<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><strong><code>next lint<\/code> command<\/strong><\/td>\n<td>Use Biome or ESLint directly; <code>next build<\/code> no longer runs linting. A codemod is available: <code>npx @next\/codemod@canary next-lint-to-eslint-cli .<\/code><\/td>\n<\/tr>\n<tr>\n<td><strong><code>devIndicators<\/code> options<\/strong><\/td>\n<td><code>appIsrStatus<\/code>, <code>buildActivity<\/code>, <code>buildActivityPosition<\/code> removed from config. The indicator remains.<\/td>\n<\/tr>\n<tr>\n<td><strong><code>serverRuntimeConfig<\/code>, <code>publicRuntimeConfig<\/code><\/strong><\/td>\n<td>Use environment variables (<code>.env<\/code> files)<\/td>\n<\/tr>\n<tr>\n<td><strong><code>experimental.turbopack<\/code> location<\/strong><\/td>\n<td>Config moved to top-level <code>turbopack<\/code> (no longer in <code>experimental<\/code>)<\/td>\n<\/tr>\n<tr>\n<td><strong><code>experimental.dynamicIO<\/code> flag<\/strong><\/td>\n<td>Renamed to <code>cacheComponents<\/code><\/td>\n<\/tr>\n<tr>\n<td><strong><code>experimental.ppr<\/code> flag<\/strong><\/td>\n<td>PPR flag removed; evolving into Cache Components programming model<\/td>\n<\/tr>\n<tr>\n<td><strong><code>export const experimental_ppr<\/code><\/strong><\/td>\n<td>Route-level PPR export removed; evolving into Cache Components programming model<\/td>\n<\/tr>\n<tr>\n<td><strong>Automatic <code>scroll-behavior: smooth<\/code><\/strong><\/td>\n<td>Add <code>data-scroll-behavior=\"smooth\"<\/code> to HTML document to opt back in<\/td>\n<\/tr>\n<tr>\n<td><strong><code>unstable_rootParams()<\/code><\/strong><\/td>\n<td>We are working on an alternative API that we will ship in an upcoming minor<\/td>\n<\/tr>\n<tr>\n<td><strong>Sync <code>params<\/code>, <code>searchParams<\/code> props<\/strong> access<\/td>\n<td>Must use async: <code>await params<\/code>, <code>await searchParams<\/code><\/td>\n<\/tr>\n<tr>\n<td><strong>Sync <code>cookies()<\/code>, <code>headers()<\/code>, <code>draftMode()<\/code><\/strong> access<\/td>\n<td>Must use async: <code>await cookies()<\/code>, <code>await headers()<\/code>, <code>await draftMode()<\/code><\/td>\n<\/tr>\n<tr>\n<td><strong>Metadata image route <code>params<\/code> argument<\/strong><\/td>\n<td>Changed to async <code>params<\/code>; <code>id<\/code> from <code>generateImageMetadata<\/code> now <code>Promise<string\/><\/code><\/td>\n<\/tr>\n<tr>\n<td><strong><code>next\/image<\/code> local src with query strings<\/strong><\/td>\n<td>Now requires <code>images.localPatterns<\/code> config to prevent enumeration attacks<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<\/div>\n<h4 id=\"behavior-changes\" data-docs-heading=\"\"><a target=\"_blank\" href=\"#behavior-changes\">Behavior Changes<span><svg viewbox=\"0 0 16 16\" height=\"0.7em\" width=\"0.7em\">\n  <g stroke-width=\"1.2\" fill=\"none\" stroke=\"currentColor\">\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698\"\/>\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698\"\/>\n  <\/g>\n<\/svg><\/span><\/a><\/h4>\n<p>These features have new default behaviors in Next.js 16:<\/p>\n<div class=\"overflow-x-auto\">\n<div class=\"s_table\"><table class=\"w-full table-auto\">\n<thead>\n<tr>\n<th class=\"min-w-[12ch]\">Changed Behavior<\/th>\n<th class=\"min-w-[12ch]\">Details<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><strong>Default bundler<\/strong><\/td>\n<td>Turbopack is now the default bundler for all apps; opt out with <code>next build --webpack<\/code><\/td>\n<\/tr>\n<tr>\n<td><strong><code>images.minimumCacheTTL<\/code> default<\/strong><\/td>\n<td>Changed from 60s to 4 hours (14400s); reduces revalidation cost for images without cache-control headers<\/td>\n<\/tr>\n<tr>\n<td><strong><code>images.imageSizes<\/code> default<\/strong><\/td>\n<td>Removed <code>16<\/code> from default sizes (used by only 4.2% of projects); reduces srcset size and API variations<\/td>\n<\/tr>\n<tr>\n<td><strong><code>images.qualities<\/code> default<\/strong><\/td>\n<td>Changed from <code>[1..100]<\/code> to <code>[75]<\/code>; <code>quality<\/code> prop is now coerced to closest value in <code>images.qualities<\/code><\/td>\n<\/tr>\n<tr>\n<td><strong><code>images.dangerouslyAllowLocalIP<\/code><\/strong><\/td>\n<td>New security restriction blocks local IP optimization by default; set to <code>true<\/code> for private networks only<\/td>\n<\/tr>\n<tr>\n<td><strong><code>images.maximumRedirects<\/code> default<\/strong><\/td>\n<td>Changed from unlimited to 3 redirects maximum; set to <code>0<\/code> to disable or increase for rare edge cases<\/td>\n<\/tr>\n<tr>\n<td><strong><code>@next\/eslint-plugin-next<\/code> default<\/strong><\/td>\n<td>Now defaults to ESLint Flat Config format, aligning with ESLint v10 which will drop legacy config support<\/td>\n<\/tr>\n<tr>\n<td><strong>Prefetch cache behavior<\/strong><\/td>\n<td>Complete rewrite with layout deduplication and incremental prefetching<\/td>\n<\/tr>\n<tr>\n<td><strong><code>revalidateTag()<\/code> signature<\/strong><\/td>\n<td>Now requires <code>cacheLife<\/code> profile as second argument for stale-while-revalidate behavior<\/td>\n<\/tr>\n<tr>\n<td><strong>Babel configuration in Turbopack<\/strong><\/td>\n<td>Automatically enables Babel if a babel config is found (previously exited with hard error)<\/td>\n<\/tr>\n<tr>\n<td><strong>Terminal output<\/strong><\/td>\n<td>Redesigned with clearer formatting, better error messages, and improved performance metrics<\/td>\n<\/tr>\n<tr>\n<td><strong>Dev and build output directories<\/strong><\/td>\n<td><code>next dev<\/code> and <code>next build<\/code> now use separate output directories, enabling concurrent execution<\/td>\n<\/tr>\n<tr>\n<td><strong>Lockfile behavior<\/strong><\/td>\n<td>Added lockfile mechanism to prevent multiple <code>next dev<\/code> or <code>next build<\/code> instances on the same project<\/td>\n<\/tr>\n<tr>\n<td><strong>Parallel routes <code>default.js<\/code><\/strong><\/td>\n<td>All parallel route slots now require explicit <code>default.js<\/code> files; builds fail without them. Create <code>default.js<\/code> that calls <code>notFound()<\/code> or returns <code>null<\/code> for previous behavior<\/td>\n<\/tr>\n<tr>\n<td><strong>Modern Sass API<\/strong><\/td>\n<td>Bumped <code>sass-loader<\/code> to v16, which supports modern Sass syntax and new features<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<\/div>\n<h4 id=\"deprecations\" data-docs-heading=\"\"><a target=\"_blank\" href=\"#deprecations\">Deprecations<span><svg viewbox=\"0 0 16 16\" height=\"0.7em\" width=\"0.7em\">\n  <g stroke-width=\"1.2\" fill=\"none\" stroke=\"currentColor\">\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698\"\/>\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698\"\/>\n  <\/g>\n<\/svg><\/span><\/a><\/h4>\n<p>These features are deprecated in Next.js 16 and will be removed in a future version:<\/p>\n<div class=\"overflow-x-auto\">\n<div class=\"s_table\"><table class=\"w-full table-auto\">\n<thead>\n<tr>\n<th class=\"min-w-[12ch]\">Deprecated<\/th>\n<th class=\"min-w-[12ch]\">Details<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td><code>middleware.ts<\/code> filename<\/td>\n<td>Rename to <code>proxy.ts<\/code> to clarify network boundary and routing focus<\/td>\n<\/tr>\n<tr>\n<td><code>next\/legacy\/image<\/code> component<\/td>\n<td>Use <code>next\/image<\/code> instead for improved performance and features<\/td>\n<\/tr>\n<tr>\n<td><code>images.domains<\/code> config<\/td>\n<td>Use <code>images.remotePatterns<\/code> config instead for improved security restriction<\/td>\n<\/tr>\n<tr>\n<td><code>revalidateTag()<\/code> single argument<\/td>\n<td>Use <code>revalidateTag(tag, profile)<\/code> for SWR, or <code>updateTag(tag)<\/code> in Actions for read-your-writes<\/td>\n<\/tr>\n<\/tbody>\n<\/table><\/div>\n<\/div>\n<h4 id=\"additional-improvements\" data-docs-heading=\"\"><a target=\"_blank\" href=\"#additional-improvements\">Additional Improvements<span><svg viewbox=\"0 0 16 16\" height=\"0.7em\" width=\"0.7em\">\n  <g stroke-width=\"1.2\" fill=\"none\" stroke=\"currentColor\">\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M8.995,7.005 L8.995,7.005c1.374,1.374,1.374,3.601,0,4.975l-1.99,1.99c-1.374,1.374-3.601,1.374-4.975,0l0,0c-1.374-1.374-1.374-3.601,0-4.975 l1.748-1.698\"\/>\n    <path fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-miterlimit=\"10\" d=\"M7.005,8.995 L7.005,8.995c-1.374-1.374-1.374-3.601,0-4.975l1.99-1.99c1.374-1.374,3.601-1.374,4.975,0l0,0c1.374,1.374,1.374,3.601,0,4.975 l-1.748,1.698\"\/>\n  <\/g>\n<\/svg><\/span><\/a><\/h4>\n<ul>\n<li><strong>Performance improvements<\/strong>: Significant performance optimizations for <code>next dev<\/code> and <code>next start<\/code> commands<\/li>\n<li><strong>Node.js native TypeScript for <code>next.config.ts<\/code><\/strong>: Run <code>next dev<\/code>, <code>next build<\/code>, and <code>next start<\/code> commands with <code>--experimental-next-config-strip-types<\/code> flag to enable native TypeScript for <code>next.config.ts<\/code>.<\/li>\n<\/ul>\n<p>We&#8217;ll aim to share a more comprehensive migration guide ahead of the stable release in our documentation.<\/p>\n<p>Share your feedback and help shape the future of Next.js:<\/p>\n<p>Next.js is the result of the combined work of over 3,000 individual developers. This release was brought to you by:<\/p>\n<ul>\n<li>The <strong>Next.js<\/strong> team: <a target=\"_blank\" href=\"https:\/\/github.com\/acdlite\" rel=\"noopener noreferrer nofollow\" target=\"_blank\">Andrew<span class=\"inline-flex\"><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\" fill=\"currentColor\"\/><\/svg><\/span><\/a>, <a target=\"_blank\" href=\"https:\/\/github.com\/unstubbable\" rel=\"noopener noreferrer nofollow\" target=\"_blank\">Hendrik<span class=\"inline-flex\"><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\" fill=\"currentColor\"\/><\/svg><\/span><\/a>, <a target=\"_blank\" href=\"https:\/\/github.com\/lubieowoce\" rel=\"noopener noreferrer nofollow\" target=\"_blank\">Janka<span class=\"inline-flex\"><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\" fill=\"currentColor\"\/><\/svg><\/span><\/a>, <a target=\"_blank\" href=\"https:\/\/github.com\/huozhi\" rel=\"noopener noreferrer nofollow\" target=\"_blank\">Jiachi<span class=\"inline-flex\"><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\" fill=\"currentColor\"\/><\/svg><\/span><\/a>, <a target=\"_blank\" href=\"https:\/\/github.com\/feedthejim\" rel=\"noopener noreferrer nofollow\" target=\"_blank\">Jimmy<span class=\"inline-flex\"><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\" fill=\"currentColor\"\/><\/svg><\/span><\/a>, <a target=\"_blank\" href=\"https:\/\/github.com\/devjiwonchoi\" rel=\"noopener noreferrer nofollow\" target=\"_blank\">Jiwon<span class=\"inline-flex\"><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\" fill=\"currentColor\"\/><\/svg><\/span><\/a>, <a target=\"_blank\" href=\"https:\/\/github.com\/ijjk\" rel=\"noopener noreferrer nofollow\" target=\"_blank\">JJ<span class=\"inline-flex\"><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\" fill=\"currentColor\"\/><\/svg><\/span><\/a>, <a target=\"_blank\" href=\"https:\/\/github.com\/gnoff\" rel=\"noopener noreferrer nofollow\" target=\"_blank\">Josh<span class=\"inline-flex\"><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\" fill=\"currentColor\"\/><\/svg><\/span><\/a>, <a target=\"_blank\" href=\"https:\/\/github.com\/gao_jude\" rel=\"noopener noreferrer nofollow\" target=\"_blank\">Jude<span class=\"inline-flex\"><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\" fill=\"currentColor\"\/><\/svg><\/span><\/a>, <a target=\"_blank\" href=\"https:\/\/x.com\/samselikoff\" rel=\"noopener noreferrer nofollow\" target=\"_blank\">Sam<span class=\"inline-flex\"><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\" fill=\"currentColor\"\/><\/svg><\/span><\/a>, <a target=\"_blank\" href=\"https:\/\/github.com\/sebmarkbage\" rel=\"noopener noreferrer nofollow\" target=\"_blank\">Sebastian<span class=\"inline-flex\"><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\" fill=\"currentColor\"\/><\/svg><\/span><\/a>, <a target=\"_blank\" href=\"https:\/\/github.com\/eps1lon\" rel=\"noopener noreferrer nofollow\" target=\"_blank\">Sebbie<span class=\"inline-flex\"><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\" fill=\"currentColor\"\/><\/svg><\/span><\/a>, <a target=\"_blank\" href=\"https:\/\/github.com\/wyattjoh\" rel=\"noopener noreferrer nofollow\" target=\"_blank\">Wyatt<span class=\"inline-flex\"><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\" fill=\"currentColor\"\/><\/svg><\/span><\/a>, and <a target=\"_blank\" href=\"https:\/\/github.com\/ztanner\" rel=\"noopener noreferrer nofollow\" target=\"_blank\">Zack<span class=\"inline-flex\"><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\" fill=\"currentColor\"\/><\/svg><\/span><\/a>.<\/li>\n<li>The <strong>Turbopack<\/strong> team: <a target=\"_blank\" href=\"https:\/\/github.com\/bgw\" rel=\"noopener noreferrer nofollow\" target=\"_blank\">Benjamin<span class=\"inline-flex\"><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\" fill=\"currentColor\"\/><\/svg><\/span><\/a>, <a target=\"_blank\" href=\"https:\/\/github.com\/Cy-Tek\" rel=\"noopener noreferrer nofollow\" target=\"_blank\">Josh<span class=\"inline-flex\"><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\" fill=\"currentColor\"\/><\/svg><\/span><\/a>, <a target=\"_blank\" href=\"https:\/\/github.com\/lukesandberg\" rel=\"noopener noreferrer nofollow\" target=\"_blank\">Luke<span class=\"inline-flex\"><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\" fill=\"currentColor\"\/><\/svg><\/span><\/a>, <a target=\"_blank\" href=\"https:\/\/github.com\/mischnic\" rel=\"noopener noreferrer nofollow\" target=\"_blank\">Niklas<span class=\"inline-flex\"><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\" fill=\"currentColor\"\/><\/svg><\/span><\/a>, <a target=\"_blank\" href=\"https:\/\/github.com\/timneutkens\" rel=\"noopener noreferrer nofollow\" target=\"_blank\">Tim<span class=\"inline-flex\"><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\" fill=\"currentColor\"\/><\/svg><\/span><\/a>, <a target=\"_blank\" href=\"https:\/\/github.com\/sokra\" rel=\"noopener noreferrer nofollow\" target=\"_blank\">Tobias<span class=\"inline-flex\"><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\" fill=\"currentColor\"\/><\/svg><\/span><\/a>, and <a target=\"_blank\" href=\"https:\/\/github.com\/wbinnssmith\" rel=\"noopener noreferrer nofollow\" target=\"_blank\">Will<span class=\"inline-flex\"><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\" fill=\"currentColor\"\/><\/svg><\/span><\/a>.<\/li>\n<li>The <strong>Next.js Docs<\/strong> team: <a target=\"_blank\" href=\"https:\/\/github.com\/delbaoliveira\" rel=\"noopener noreferrer nofollow\" target=\"_blank\">Delba<span class=\"inline-flex\"><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\" fill=\"currentColor\"\/><\/svg><\/span><\/a>, <a target=\"_blank\" href=\"https:\/\/github.com\/molebox\" rel=\"noopener noreferrer nofollow\" target=\"_blank\">Rich<span class=\"inline-flex\"><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\" fill=\"currentColor\"\/><\/svg><\/span><\/a>, <a target=\"_blank\" href=\"https:\/\/github.com\/ismaelrumzan\" rel=\"noopener noreferrer nofollow\" target=\"_blank\">Ismael<span class=\"inline-flex\"><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\" fill=\"currentColor\"\/><\/svg><\/span><\/a>, and <a target=\"_blank\" href=\"https:\/\/github.com\/icyJoseph\" rel=\"noopener noreferrer nofollow\" target=\"_blank\">Joseph<span class=\"inline-flex\"><svg data-testid=\"geist-icon\" height=\"16\" stroke-linejoin=\"round\" style=\"color:currentColor\" viewbox=\"0 0 16 16\" width=\"16\"><path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M6.75011 4H6.00011V5.5H6.75011H9.43945L5.46978 9.46967L4.93945 10L6.00011 11.0607L6.53044 10.5303L10.499 6.56182V9.25V10H11.999V9.25V5C11.999 4.44772 11.5512 4 10.999 4H6.75011Z\" fill=\"currentColor\"\/><\/svg><\/span><\/a>.<\/li>\n<\/ul>\n<p>Huge thanks to @mischnic, @timneutkens, @unstubbable, @wyattjoh, @Cy-Tek, @lukesandberg, @OoMNoO, @ztanner, @icyJoseph, @huozhi, @gnoff, @ijjk, @povilasv, @dwrth, @obendev, @aymericzip, @devjiwonchoi, @SyMind, @vercel-release-bot, @Shireee, @eps1lon, @dharun36, @kachkaev, @bgw, @yousefdawood7, @TheAlexLichter, @sokra, @ericx0099, @leerob, @Copilot, @fireairforce, @fufuShih, @anvibanga, @hayes, @Milancen123, @martinfrancois, @lubieowoce, @gaojude, @lachlanjc, @liketiger, @styfle, @aaronbrown-vercel, @Samii2383, @FelipeChicaiza, @kevva, @m1abdullahh, @F7b5, @Anshuman71, @RobertFent, @poteto, @chloe-yan, @sireesha-siri, @brian-lou, @joao4xz, @stefanprobst, @samselikoff, @acdlite, @gwkline, @bgub, @brock-statsig, and @karlhorky for helping!<\/p>\n<\/div>\n\n<br \/><a href=\"https:\/\/nextjs.org\/blog\/next-16\">\u5143\u306e\u8a18\u4e8b\u3092\u78ba\u8a8d\u3059\u308b <\/a><\/p>\n","protected":false},"excerpt":{"rendered":"Ahead of our upcoming Next.js Conf 2025, Next.js 16 is now available. This release provides the latest improve [&hellip;]","protected":false},"author":1,"featured_media":10476,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[2],"tags":[],"class_list":["post-10475","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-hatena-blog"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Next.js 16 | Next.js - \u30dd\u30b1\u30b3\u30f3<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/nextjs.org\/blog\/next-16\" \/>\n<meta property=\"og:locale\" content=\"ja_JP\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Next.js 16 | Next.js - \u30dd\u30b1\u30b3\u30f3\" \/>\n<meta property=\"og:description\" content=\"Ahead of our upcoming Next.js Conf 2025, Next.js 16 is now available. This release provides the latest improve [&hellip;]\" \/>\n<meta property=\"og:url\" content=\"https:\/\/nextjs.org\/blog\/next-16\" \/>\n<meta property=\"og:site_name\" content=\"\u30dd\u30b1\u30b3\u30f3\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-22T01:21:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/10\/twitter-card.png\" \/>\n\t<meta property=\"og:image:width\" content=\"2400\" \/>\n\t<meta property=\"og:image:height\" content=\"1256\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"info@pokecon.jp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u57f7\u7b46\u8005\" \/>\n\t<meta name=\"twitter:data1\" content=\"info@pokecon.jp\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593\" \/>\n\t<meta name=\"twitter:data2\" content=\"12\u5206\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/nextjs.org\\\/blog\\\/next-16#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/10475\\\/\"},\"author\":{\"name\":\"info@pokecon.jp\",\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#\\\/schema\\\/person\\\/16c9f07b1ba984d165d9aee259bda997\"},\"headline\":\"Next.js 16 | Next.js\",\"datePublished\":\"2025-10-22T01:21:27+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/10475\\\/\"},\"wordCount\":2092,\"image\":{\"@id\":\"https:\\\/\\\/nextjs.org\\\/blog\\\/next-16#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/twitter-card.png\",\"articleSection\":[\"\u306f\u3066\u306a\u30d6\u30ed\u30b0\"],\"inLanguage\":\"ja\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/10475\\\/\",\"url\":\"https:\\\/\\\/nextjs.org\\\/blog\\\/next-16\",\"name\":\"Next.js 16 | Next.js - \u30dd\u30b1\u30b3\u30f3\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/nextjs.org\\\/blog\\\/next-16#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/nextjs.org\\\/blog\\\/next-16#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/twitter-card.png\",\"datePublished\":\"2025-10-22T01:21:27+00:00\",\"author\":{\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#\\\/schema\\\/person\\\/16c9f07b1ba984d165d9aee259bda997\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/nextjs.org\\\/blog\\\/next-16#breadcrumb\"},\"inLanguage\":\"ja\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/nextjs.org\\\/blog\\\/next-16\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/nextjs.org\\\/blog\\\/next-16#primaryimage\",\"url\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/twitter-card.png\",\"contentUrl\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/twitter-card.png\",\"width\":2400,\"height\":1256},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/nextjs.org\\\/blog\\\/next-16#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u30db\u30fc\u30e0\",\"item\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Next.js 16 | Next.js\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#website\",\"url\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/\",\"name\":\"\u30dd\u30b1\u30b3\u30f3\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ja\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/#\\\/schema\\\/person\\\/16c9f07b1ba984d165d9aee259bda997\",\"name\":\"info@pokecon.jp\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ja\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g\",\"caption\":\"info@pokecon.jp\"},\"url\":\"https:\\\/\\\/pokecon.jp\\\/job\\\/author\\\/infopokecon-jp\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Next.js 16 | Next.js - \u30dd\u30b1\u30b3\u30f3","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/nextjs.org\/blog\/next-16","og_locale":"ja_JP","og_type":"article","og_title":"Next.js 16 | Next.js - \u30dd\u30b1\u30b3\u30f3","og_description":"Ahead of our upcoming Next.js Conf 2025, Next.js 16 is now available. This release provides the latest improve [&hellip;]","og_url":"https:\/\/nextjs.org\/blog\/next-16","og_site_name":"\u30dd\u30b1\u30b3\u30f3","article_published_time":"2025-10-22T01:21:27+00:00","og_image":[{"width":2400,"height":1256,"url":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/10\/twitter-card.png","type":"image\/png"}],"author":"info@pokecon.jp","twitter_card":"summary_large_image","twitter_misc":{"\u57f7\u7b46\u8005":"info@pokecon.jp","\u63a8\u5b9a\u8aad\u307f\u53d6\u308a\u6642\u9593":"12\u5206"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/nextjs.org\/blog\/next-16#article","isPartOf":{"@id":"https:\/\/pokecon.jp\/job\/10475\/"},"author":{"name":"info@pokecon.jp","@id":"https:\/\/pokecon.jp\/job\/#\/schema\/person\/16c9f07b1ba984d165d9aee259bda997"},"headline":"Next.js 16 | Next.js","datePublished":"2025-10-22T01:21:27+00:00","mainEntityOfPage":{"@id":"https:\/\/pokecon.jp\/job\/10475\/"},"wordCount":2092,"image":{"@id":"https:\/\/nextjs.org\/blog\/next-16#primaryimage"},"thumbnailUrl":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/10\/twitter-card.png","articleSection":["\u306f\u3066\u306a\u30d6\u30ed\u30b0"],"inLanguage":"ja"},{"@type":"WebPage","@id":"https:\/\/pokecon.jp\/job\/10475\/","url":"https:\/\/nextjs.org\/blog\/next-16","name":"Next.js 16 | Next.js - \u30dd\u30b1\u30b3\u30f3","isPartOf":{"@id":"https:\/\/pokecon.jp\/job\/#website"},"primaryImageOfPage":{"@id":"https:\/\/nextjs.org\/blog\/next-16#primaryimage"},"image":{"@id":"https:\/\/nextjs.org\/blog\/next-16#primaryimage"},"thumbnailUrl":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/10\/twitter-card.png","datePublished":"2025-10-22T01:21:27+00:00","author":{"@id":"https:\/\/pokecon.jp\/job\/#\/schema\/person\/16c9f07b1ba984d165d9aee259bda997"},"breadcrumb":{"@id":"https:\/\/nextjs.org\/blog\/next-16#breadcrumb"},"inLanguage":"ja","potentialAction":[{"@type":"ReadAction","target":["https:\/\/nextjs.org\/blog\/next-16"]}]},{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/nextjs.org\/blog\/next-16#primaryimage","url":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/10\/twitter-card.png","contentUrl":"https:\/\/pokecon.jp\/job\/wp-content\/uploads\/2025\/10\/twitter-card.png","width":2400,"height":1256},{"@type":"BreadcrumbList","@id":"https:\/\/nextjs.org\/blog\/next-16#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u30db\u30fc\u30e0","item":"https:\/\/pokecon.jp\/job\/"},{"@type":"ListItem","position":2,"name":"Next.js 16 | Next.js"}]},{"@type":"WebSite","@id":"https:\/\/pokecon.jp\/job\/#website","url":"https:\/\/pokecon.jp\/job\/","name":"\u30dd\u30b1\u30b3\u30f3","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/pokecon.jp\/job\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ja"},{"@type":"Person","@id":"https:\/\/pokecon.jp\/job\/#\/schema\/person\/16c9f07b1ba984d165d9aee259bda997","name":"info@pokecon.jp","image":{"@type":"ImageObject","inLanguage":"ja","@id":"https:\/\/secure.gravatar.com\/avatar\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/2b0549cd9f7907c092ca5fbb283baf72337f235726e4b46fa39ec0b701ac2fe2?s=96&d=wavatar&r=g","caption":"info@pokecon.jp"},"url":"https:\/\/pokecon.jp\/job\/author\/infopokecon-jp\/"}]}},"_links":{"self":[{"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/posts\/10475","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/comments?post=10475"}],"version-history":[{"count":1,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/posts\/10475\/revisions"}],"predecessor-version":[{"id":10477,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/posts\/10475\/revisions\/10477"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/media\/10476"}],"wp:attachment":[{"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/media?parent=10475"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/categories?post=10475"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/pokecon.jp\/job\/wp-json\/wp\/v2\/tags?post=10475"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}