Skip to content

feat: use Rspack persistent cache by default#81399

Merged
bgw merged 66 commits intovercel:canaryfrom
SyMind:rspack-persistent-cache
Dec 18, 2025
Merged

feat: use Rspack persistent cache by default#81399
bgw merged 66 commits intovercel:canaryfrom
SyMind:rspack-persistent-cache

Conversation

@SyMind
Copy link
Copy Markdown
Contributor

@SyMind SyMind commented Jul 8, 2025

Rspack now enables persistent caching by default.

Performance Comparison

Pages Router Project

I benchmarked performance using this repo: https://github.com/SyMind/chakra-ui-docs/tree/next-rspack to test the Next.js pages router.

I tested the performance with the following steps:

  1. Execute pnpm run dev
  2. Wait for the server to be ready (indicated by the 'Ready' message)
  3. Run curl on the root endpoint (/)

Each build was run 5 times, and the shortest time to reach "Compiled successfully" was recorded.

Test environment: Apple M1 Pro CPU

Tool Build without cache Build with cache Dev without cache Dev with cache
Rspack 3.8s 2.6s (1.46× faster) 1.7s 3ms (566.7× faster)
Webpack 14.0s 4.0s 7.8s 3.2s

App Router Project

I benchmarked performance using this repo: https://github.com/SyMind/shadcn-ui/tree/next-rspack to test the Next.js app router.

I tested the performance with the following steps:

  1. Execute pnpm run dev or pnpm run build
  2. Wait for the server to be ready (indicated by the 'Ready' message)
  3. Run curl on the root endpoint (/)

Each build was run 5 times, and the shortest time to reach "Compiled successfully" was recorded.

Test environment: Apple M1 Pro CPU

Bundler Build (No Cache) Build (Cache) Dev (No Cache) Dev (Cache)
Rspack 12.3s 5.9s (2.08× faster) 7.1s 1941ms (3.66× faster)
Webpack 27.0s 13.0s 11s 9.6s

About Rspack Persistent Cache Strategy

packages/next/src/server/dev/hot-reloader-rspack.ts

Rspack's persistent caching differs from Webpack in how it manages module graphs. While Webpack incrementally updates modules, Rspack operates on complete module graph snapshots for cache restoration.

Problem:

  • Next.js dev server starts with no page modules in the initial entry points
  • When Rspack restores from persistent cache, it finds no modules and purges the entire module graph
  • Later page requests find no cached module information, preventing cache reuse

Solution:

  • Track successfully built page entries after each compilation
  • Restore these entries on dev server restart to maintain module graph continuity
  • This ensures previously compiled pages can leverage persistent cache for faster builds

Note

I have updated the test case configuration in test/integration/telemetry/next.config.use-cache to disable persistent cache.

This is because, whether using webpack or Rspack, when persistent caching is enabled, modules are no longer recompiled by loaders, which prevents the Telemetry plugin from collecting information.

Please note that this issue also exists with webpack. You can reproduce it locally by running pnpm run test test/integration/telemetry/test/config.test.js twice.

@SyMind SyMind force-pushed the rspack-persistent-cache branch from 62090da to a453c91 Compare July 8, 2025 09:47
@ijjk
Copy link
Copy Markdown
Member

ijjk commented Jul 8, 2025

Failing test suites

Commit: dc9af8a | About building and testing Next.js

pnpm test-dev-rspack test/e2e/app-dir/shallow-routing/shallow-routing.test.ts(rspack) (job)

  • shallow-routing > pushState > should support setting a different pathname reflected on usePathname
Expand output

● shallow-routing › pushState › should support setting a different pathname reflected on usePathname

page.waitForSelector: Timeout 10000ms exceeded.
Call log:
  - waiting for locator('#pushstate-pathname') to be visible

  519 |
  520 |     return this.startChain(async () => {
> 521 |       const el = await page.waitForSelector(selector, {
      |                             ^
  522 |         timeout,
  523 |         state,
  524 |       })

  at waitForSelector (lib/browsers/playwright.ts:521:29)
  at Object.<anonymous> (e2e/app-dir/shallow-routing/shallow-routing.test.ts:34:9)
  at Proxy._chain (lib/browsers/playwright.ts:651:23)
  at Proxy._chain (lib/browsers/playwright.ts:632:17)
  at Proxy.startChain (lib/browsers/playwright.ts:520:17)
  at Object.waitForElementByCss (e2e/app-dir/shallow-routing/shallow-routing.test.ts:37:12)
  at Proxy._chain (lib/browsers/playwright.ts:651:23)
  at Proxy._chain (lib/browsers/playwright.ts:627:17)
  at Proxy.continueChain (lib/browsers/playwright.ts:433:17)
  at Object.text (e2e/app-dir/shallow-routing/shallow-routing.test.ts:38:12)

pnpm test-dev-rspack test/e2e/app-dir/with-babel/with-babel.test.ts(rspack) (job)

  • with babel > should support babel in app dir
Expand output

● with babel › should support babel in app dir

Failed to start server after 10000ms, waiting for this log pattern: /✓ Ready in /

  471 |     return setTimeout(() => {
  472 |       reject(
> 473 |         new Error(
      |         ^
  474 |           `Failed to start server after ${ms}ms, waiting for this log pattern: ${this.serverReadyPattern}`
  475 |         )
  476 |       )

  at Timeout._onTimeout (lib/next-modes/base.ts:473:9)

pnpm test test/integration/middleware-src/test/index.test.ts(rspack) (job)

  • Middleware in src/ and / folders > development mode > loads and runs only root middleware
Expand output

● Middleware in src/ and / folders › development mode › loads and runs only root middleware

expect(received).toBe(expected) // Object.is equality

Expected: false
Received: true

  31 |     const response = await fetchViaHTTP(appPort, '/post-1')
  32 |     expect(response.headers.has(srcHeader)).toBe(false)
> 33 |     expect(response.headers.has(`${srcHeader}-TS`)).toBe(false)
     |                                                     ^
  34 |     expect(response.headers.has(rootHeader)).toBe(false)
  35 |     expect(response.headers.has(`${rootHeader}-TS`)).toBe(true)
  36 |   })

  at Object.toBe (integration/middleware-src/test/index.test.ts:33:53)

pnpm test-dev-rspack test/e2e/app-dir/css-order/css-order.test.ts(rspack) (job)

  • css-order loose > should load correct styles navigating first -> first-client
  • css-order strict > should load correct styles navigating first -> first-client
Expand output

● css-order strict › should load correct styles navigating first -> first-client

page.waitForSelector: Timeout 10000ms exceeded.
Call log:
  - waiting for locator('#hello1c') to be visible

  519 |
  520 |     return this.startChain(async () => {
> 521 |       const el = await page.waitForSelector(selector, {
      |                             ^
  522 |         timeout,
  523 |         state,
  524 |       })

  at waitForSelector (lib/browsers/playwright.ts:521:29)
  at Playwright._chain (lib/browsers/playwright.ts:651:23)
  at Playwright._chain [as startChain] (lib/browsers/playwright.ts:632:17)
  at Playwright.startChain [as waitForElementByCss] (lib/browsers/playwright.ts:520:17)
  at waitForElementByCss (e2e/app-dir/css-order/css-order.test.ts:360:16)
  at Object.check (e2e/app-dir/css-order/css-order.test.ts:370:17)
  at Proxy._chain (lib/browsers/playwright.ts:651:23)
  at Proxy._chain (lib/browsers/playwright.ts:627:17)
  at Proxy.continueChain (lib/browsers/playwright.ts:451:17)
  at getComputedCss (e2e/app-dir/css-order/css-order.test.ts:361:16)
  at Object.check (e2e/app-dir/css-order/css-order.test.ts:370:17)

● css-order loose › should load correct styles navigating first -> first-client

page.waitForSelector: Timeout 10000ms exceeded.
Call log:
  - waiting for locator('#hello1c') to be visible

  519 |
  520 |     return this.startChain(async () => {
> 521 |       const el = await page.waitForSelector(selector, {
      |                             ^
  522 |         timeout,
  523 |         state,
  524 |       })

  at waitForSelector (lib/browsers/playwright.ts:521:29)
  at Playwright._chain (lib/browsers/playwright.ts:651:23)
  at Playwright._chain [as startChain] (lib/browsers/playwright.ts:632:17)
  at Playwright.startChain [as waitForElementByCss] (lib/browsers/playwright.ts:520:17)
  at waitForElementByCss (e2e/app-dir/css-order/css-order.test.ts:360:16)
  at Object.check (e2e/app-dir/css-order/css-order.test.ts:370:17)
  at Proxy._chain (lib/browsers/playwright.ts:651:23)
  at Proxy._chain (lib/browsers/playwright.ts:627:17)
  at Proxy.continueChain (lib/browsers/playwright.ts:451:17)
  at getComputedCss (e2e/app-dir/css-order/css-order.test.ts:361:16)
  at Object.check (e2e/app-dir/css-order/css-order.test.ts:370:17)

Comment thread packages/next/src/build/webpack-config.ts
@ijjk
Copy link
Copy Markdown
Member

ijjk commented Jul 11, 2025

Stats from current PR

Default Build (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary SyMind/next.js rspack-persistent-cache Change
buildDuration 18.1s 15.2s N/A
buildDurationCached 13.9s 11s N/A
nodeModulesSize 456 MB 457 MB ⚠️ +102 kB
nextStartRea..uration (ms) 715ms 721ms N/A
Client Bundles (main, webpack) Overall increase ⚠️
vercel/next.js canary SyMind/next.js rspack-persistent-cache Change
4765.HASH.js gzip 169 B 169 B
6566-HASH.js gzip 5.4 kB 5.38 kB N/A
7740-HASH.js gzip 51.2 kB 50.9 kB N/A
8258-HASH.js gzip 4.47 kB 4.48 kB N/A
b0b1acf2-HASH.js gzip 62.3 kB 62.3 kB N/A
framework-HASH.js gzip 59.7 kB 59.7 kB N/A
main-app-HASH.js gzip 255 B 252 B N/A
main-HASH.js gzip 38.5 kB 38.8 kB ⚠️ +259 B
webpack-HASH.js gzip 1.69 kB 1.69 kB
Overall change 40.4 kB 40.6 kB ⚠️ +259 B
Legacy Client Bundles (polyfills)
vercel/next.js canary SyMind/next.js rspack-persistent-cache Change
polyfills-HASH.js gzip 39.4 kB 39.4 kB
Overall change 39.4 kB 39.4 kB
Client Pages
vercel/next.js canary SyMind/next.js rspack-persistent-cache Change
_app-HASH.js gzip 193 B 192 B N/A
_error-HASH.js gzip 181 B 182 B N/A
css-HASH.js gzip 335 B 336 B N/A
dynamic-HASH.js gzip 1.81 kB 1.8 kB N/A
edge-ssr-HASH.js gzip 254 B 256 B N/A
head-HASH.js gzip 350 B 350 B
hooks-HASH.js gzip 385 B 383 B N/A
image-HASH.js gzip 580 B 580 B
index-HASH.js gzip 259 B 259 B
link-HASH.js gzip 2.5 kB 2.5 kB N/A
routerDirect..HASH.js gzip 320 B 317 B N/A
script-HASH.js gzip 386 B 384 B N/A
withRouter-HASH.js gzip 315 B 314 B N/A
1afbb74e6ecf..834.css gzip 106 B 106 B
Overall change 1.29 kB 1.29 kB
Client Build Manifests
vercel/next.js canary SyMind/next.js rspack-persistent-cache Change
_buildManifest.js gzip 737 B 735 B N/A
Overall change 0 B 0 B
Rendered Page Sizes
vercel/next.js canary SyMind/next.js rspack-persistent-cache Change
index.html gzip 523 B 524 B N/A
link.html gzip 538 B 538 B
withRouter.html gzip 520 B 520 B
Overall change 1.06 kB 1.06 kB
Edge SSR bundle Size Overall increase ⚠️
vercel/next.js canary SyMind/next.js rspack-persistent-cache Change
edge-ssr.js gzip 124 kB 125 kB ⚠️ +384 B
page.js gzip 237 kB 237 kB ⚠️ +187 B
Overall change 361 kB 362 kB ⚠️ +571 B
Middleware size Overall increase ⚠️
vercel/next.js canary SyMind/next.js rspack-persistent-cache Change
middleware-b..fest.js gzip 658 B 657 B N/A
middleware-r..fest.js gzip 155 B 156 B N/A
middleware.js gzip 32.7 kB 33 kB ⚠️ +301 B
edge-runtime..pack.js gzip 846 B 846 B
Overall change 33.5 kB 33.8 kB ⚠️ +301 B
Next Runtimes
vercel/next.js canary SyMind/next.js rspack-persistent-cache Change
app-page-exp...dev.js gzip 301 kB 301 kB
app-page-exp..prod.js gzip 156 kB 156 kB
app-page-tur...dev.js gzip 301 kB 301 kB N/A
app-page-tur..prod.js gzip 156 kB 156 kB
app-page-tur...dev.js gzip 298 kB 298 kB N/A
app-page-tur..prod.js gzip 154 kB 154 kB
app-page.run...dev.js gzip 298 kB 298 kB N/A
app-page.run..prod.js gzip 154 kB 154 kB
app-route-ex...dev.js gzip 68.6 kB 68.6 kB
app-route-ex..prod.js gzip 47.4 kB 47.4 kB
app-route-tu...dev.js gzip 68.6 kB 68.6 kB
app-route-tu..prod.js gzip 47.5 kB 47.5 kB
app-route-tu...dev.js gzip 68.2 kB 68.2 kB
app-route-tu..prod.js gzip 47.2 kB 47.2 kB
app-route.ru...dev.js gzip 68.2 kB 68.2 kB
app-route.ru..prod.js gzip 47.2 kB 47.2 kB
dist_client_...dev.js gzip 324 B 324 B
dist_client_...dev.js gzip 326 B 326 B
dist_client_...dev.js gzip 318 B 318 B
dist_client_...dev.js gzip 317 B 317 B
pages-api-tu...dev.js gzip 41 kB 41 kB
pages-api-tu..prod.js gzip 31.1 kB 31.1 kB
pages-api.ru...dev.js gzip 41 kB 41 kB
pages-api.ru..prod.js gzip 31.1 kB 31.1 kB
pages-turbo....dev.js gzip 50.5 kB 50.5 kB
pages-turbo...prod.js gzip 38 kB 38 kB
pages.runtim...dev.js gzip 50.4 kB 50.4 kB
pages.runtim..prod.js gzip 38 kB 38 kB
server.runti..prod.js gzip 59.8 kB 59.8 kB
Overall change 1.77 MB 1.77 MB
build cache Overall increase ⚠️
vercel/next.js canary SyMind/next.js rspack-persistent-cache Change
0.pack gzip 3.6 MB 3.61 MB ⚠️ +9.22 kB
index.pack gzip 99 kB 99.2 kB ⚠️ +222 B
Overall change 3.7 MB 3.71 MB ⚠️ +9.44 kB
Diff details
Diff for page.js

Diff too large to display

Diff for middleware.js

Diff too large to display

Diff for edge-ssr.js

Diff too large to display

Diff for _buildManifest.js
@@ -611,35 +611,35 @@ self.__BUILD_MANIFEST = (function (a, b, c) {
       numHashes: NaN,
       bitArray: [],
     },
-    "/": ["static\u002Fchunks\u002Fpages\u002Findex-8312816003c836ca.js"],
+    "/": ["static\u002Fchunks\u002Fpages\u002Findex-0eb0f30aae464b15.js"],
     "/_error": [
-      "static\u002Fchunks\u002Fpages\u002F_error-108d239ccbd01df3.js",
+      "static\u002Fchunks\u002Fpages\u002F_error-7503b65793aeda9f.js",
     ],
     "/css": [
       "static\u002Fcss\u002Fded6b86ab9cc0a1f.css",
-      "static\u002Fchunks\u002Fpages\u002Fcss-c7999ca7b397642c.js",
+      "static\u002Fchunks\u002Fpages\u002Fcss-14b4ec2febaa617d.js",
     ],
     "/dynamic": [
-      "static\u002Fchunks\u002Fpages\u002Fdynamic-1bf1b522b071e22a.js",
+      "static\u002Fchunks\u002Fpages\u002Fdynamic-24891a28ecfaf61d.js",
     ],
     "/edge-ssr": [
-      "static\u002Fchunks\u002Fpages\u002Fedge-ssr-9f01876339e3437b.js",
+      "static\u002Fchunks\u002Fpages\u002Fedge-ssr-f68757662e8cc4b5.js",
     ],
-    "/head": ["static\u002Fchunks\u002Fpages\u002Fhead-edae0400cfdbe933.js"],
-    "/hooks": ["static\u002Fchunks\u002Fpages\u002Fhooks-c11320a657ec666d.js"],
+    "/head": ["static\u002Fchunks\u002Fpages\u002Fhead-25d6de8fe25c2526.js"],
+    "/hooks": ["static\u002Fchunks\u002Fpages\u002Fhooks-34de3af84d413de3.js"],
     "/image": [
-      "static\u002Fchunks\u002F8258-9768ab794e68b1dc.js",
-      "static\u002Fchunks\u002Fpages\u002Fimage-174112e04c93dfd7.js",
+      "static\u002Fchunks\u002F6316-07d5277e1ed2f1f9.js",
+      "static\u002Fchunks\u002Fpages\u002Fimage-7218f8bad067d350.js",
     ],
-    "/link": ["static\u002Fchunks\u002Fpages\u002Flink-69a06d3260afde67.js"],
+    "/link": ["static\u002Fchunks\u002Fpages\u002Flink-fb9703d62b3bdf85.js"],
     "/routerDirect": [
-      "static\u002Fchunks\u002Fpages\u002FrouterDirect-eab8cdd319b4a9be.js",
+      "static\u002Fchunks\u002Fpages\u002FrouterDirect-7a0b11345ff468cf.js",
     ],
     "/script": [
-      "static\u002Fchunks\u002Fpages\u002Fscript-ae5bd9e9cf17793f.js",
+      "static\u002Fchunks\u002Fpages\u002Fscript-3fa0815377002305.js",
     ],
     "/withRouter": [
-      "static\u002Fchunks\u002Fpages\u002FwithRouter-b277df764694ea2e.js",
+      "static\u002Fchunks\u002Fpages\u002FwithRouter-608a306c0a09e667.js",
     ],
     sortedPages: [
       "\u002F",
Diff for css-HASH.js
@@ -1,31 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [9813],
   {
-    /***/ 4131: /***/ (module) => {
-      // extracted by mini-css-extract-plugin
-      module.exports = { helloWorld: "css_helloWorld__aUdUq" };
-
-      /***/
-    },
-
-    /***/ 6015: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/css",
-        function () {
-          return __webpack_require__(6854);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
-
-    /***/ 6854: /***/ (
+    /***/ 1048: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -39,7 +15,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(1329);
       /* harmony import */ var _css_module_css__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(4131);
+        __webpack_require__(9541);
       /* harmony import */ var _css_module_css__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           _css_module_css__WEBPACK_IMPORTED_MODULE_1__
@@ -58,13 +34,37 @@
 
       /***/
     },
+
+    /***/ 4641: /***/ (
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/css",
+        function () {
+          return __webpack_require__(1048);
+        },
+      ]);
+      if (false) {
+      }
+
+      /***/
+    },
+
+    /***/ 9541: /***/ (module) => {
+      // extracted by mini-css-extract-plugin
+      module.exports = { helloWorld: "css_helloWorld__aUdUq" };
+
+      /***/
+    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(6015)
+      __webpack_exec__(4641)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for dynamic-HASH.js
@@ -1,17 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [2291],
   {
-    /***/ 946: /***/ (
-      module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      module.exports = __webpack_require__(5104);
-
-      /***/
-    },
-
-    /***/ 1036: /***/ (
+    /***/ 1266: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -26,7 +16,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(1329);
       /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(946);
+        __webpack_require__(1776);
       /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           next_dynamic__WEBPACK_IMPORTED_MODULE_1__
@@ -35,12 +25,12 @@
       const DynamicHello = next_dynamic__WEBPACK_IMPORTED_MODULE_1___default()(
         () =>
           __webpack_require__
-            .e(/* import() */ 4765)
-            .then(__webpack_require__.bind(__webpack_require__, 4765))
+            .e(/* import() */ 9715)
+            .then(__webpack_require__.bind(__webpack_require__, 9715))
             .then((mod) => mod.Hello),
         {
           loadableGenerated: {
-            webpack: () => [/*require.resolve*/ 4765],
+            webpack: () => [/*require.resolve*/ 9715],
           },
         }
       );
@@ -67,7 +57,44 @@
       /***/
     },
 
-    /***/ 3399: /***/ (
+    /***/ 1776: /***/ (
+      module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      module.exports = __webpack_require__(7760);
+
+      /***/
+    },
+
+    /***/ 3749: /***/ (
+      __unused_webpack_module,
+      exports,
+      __webpack_require__
+    ) => {
+      "use strict";
+      /* __next_internal_client_entry_do_not_use__  cjs */
+      Object.defineProperty(exports, "__esModule", {
+        value: true,
+      });
+      Object.defineProperty(exports, "LoadableContext", {
+        enumerable: true,
+        get: function () {
+          return LoadableContext;
+        },
+      });
+      const _interop_require_default = __webpack_require__(1532);
+      const _react = /*#__PURE__*/ _interop_require_default._(
+        __webpack_require__(7197)
+      );
+      const LoadableContext = _react.default.createContext(null);
+      if (false) {
+      } //# sourceMappingURL=loadable-context.shared-runtime.js.map
+
+      /***/
+    },
+
+    /***/ 6535: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -109,7 +136,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
       const _react = /*#__PURE__*/ _interop_require_default._(
         __webpack_require__(7197)
       );
-      const _loadablecontextsharedruntime = __webpack_require__(9829);
+      const _loadablecontextsharedruntime = __webpack_require__(3749);
       function resolve(obj) {
         return obj && obj.default ? obj.default : obj;
       }
@@ -342,7 +369,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
       /***/
     },
 
-    /***/ 5104: /***/ (module, exports, __webpack_require__) => {
+    /***/ 7760: /***/ (module, exports, __webpack_require__) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -375,7 +402,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
         __webpack_require__(7197)
       );
       const _loadablesharedruntime = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(3399)
+        __webpack_require__(6535)
       );
       const isServerSide = "object" === "undefined";
       // Normalize loader to return the module as form { default: Component } for `React.lazy`.
@@ -475,7 +502,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
       /***/
     },
 
-    /***/ 8695: /***/ (
+    /***/ 9585: /***/ (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -483,7 +510,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/dynamic",
         function () {
-          return __webpack_require__(1036);
+          return __webpack_require__(1266);
         },
       ]);
       if (false) {
@@ -491,40 +518,13 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
 
       /***/
     },
-
-    /***/ 9829: /***/ (
-      __unused_webpack_module,
-      exports,
-      __webpack_require__
-    ) => {
-      "use strict";
-      /* __next_internal_client_entry_do_not_use__  cjs */
-      Object.defineProperty(exports, "__esModule", {
-        value: true,
-      });
-      Object.defineProperty(exports, "LoadableContext", {
-        enumerable: true,
-        get: function () {
-          return LoadableContext;
-        },
-      });
-      const _interop_require_default = __webpack_require__(1532);
-      const _react = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(7197)
-      );
-      const LoadableContext = _react.default.createContext(null);
-      if (false) {
-      } //# sourceMappingURL=loadable-context.shared-runtime.js.map
-
-      /***/
-    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(8695)
+      __webpack_exec__(9585)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for head-HASH.js
@@ -1,24 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [5350],
   {
-    /***/ 361: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/head",
-        function () {
-          return __webpack_require__(721);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
-
-    /***/ 721: /***/ (
+    /***/ 5163: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -33,7 +16,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(1329);
       /* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(5051);
+        __webpack_require__(7269);
       /* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           next_head__WEBPACK_IMPORTED_MODULE_1__
@@ -67,12 +50,29 @@
       /***/
     },
 
-    /***/ 5051: /***/ (
+    /***/ 7269: /***/ (
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) => {
-      module.exports = __webpack_require__(4981);
+      module.exports = __webpack_require__(2053);
+
+      /***/
+    },
+
+    /***/ 8563: /***/ (
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/head",
+        function () {
+          return __webpack_require__(5163);
+        },
+      ]);
+      if (false) {
+      }
 
       /***/
     },
@@ -82,7 +82,7 @@
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(361)
+      __webpack_exec__(8563)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for hooks-HASH.js
@@ -1,7 +1,24 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [9804],
   {
-    /***/ 1705: /***/ (
+    /***/ 1271: /***/ (
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/hooks",
+        function () {
+          return __webpack_require__(2631);
+        },
+      ]);
+      if (false) {
+      }
+
+      /***/
+    },
+
+    /***/ 2631: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -59,30 +76,13 @@
 
       /***/
     },
-
-    /***/ 8637: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/hooks",
-        function () {
-          return __webpack_require__(1705);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(8637)
+      __webpack_exec__(1271)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for image-HASH.js
@@ -1,7 +1,24 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [2983],
   {
-    /***/ 798: /***/ (
+    /***/ 565: /***/ (
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/image",
+        function () {
+          return __webpack_require__(7813);
+        },
+      ]);
+      if (false) {
+      }
+
+      /***/
+    },
+
+    /***/ 7813: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -18,8 +35,8 @@
 
       // EXTERNAL MODULE: ./node_modules/.pnpm/react@19.2.2/node_modules/react/jsx-runtime.js
       var jsx_runtime = __webpack_require__(1329);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.2.2_react@19.2.2__react@19.2.2/node_modules/next/image.js
-      var next_image = __webpack_require__(8258);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.2.2_react@19.2.2__react@19.2.2/node_modules/next/image.js
+      var next_image = __webpack_require__(6316);
       var image_default = /*#__PURE__*/ __webpack_require__.n(next_image); // ./pages/nextjs.png
       /* harmony default export */ const nextjs = {
         src: "/_next/static/media/nextjs.cae0b805.png",
@@ -48,30 +65,13 @@
 
       /***/
     },
-
-    /***/ 7643: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/image",
-        function () {
-          return __webpack_require__(798);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
-    /******/ __webpack_require__.O(0, [8258, 636, 6593, 8792], () =>
-      __webpack_exec__(7643)
+    /******/ __webpack_require__.O(0, [6316, 636, 6593, 8792], () =>
+      __webpack_exec__(565)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for link-HASH.js
@@ -1,43 +1,36 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [4672],
   {
-    /***/ 4183: /***/ (module, exports, __webpack_require__) => {
+    /***/ 443: /***/ (
+      module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      module.exports = __webpack_require__(2457);
+
+      /***/
+    },
+
+    /***/ 2185: /***/ (__unused_webpack_module, exports) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
         value: true,
       });
-      Object.defineProperty(exports, "getDomainLocale", {
+      Object.defineProperty(exports, "errorOnce", {
         enumerable: true,
         get: function () {
-          return getDomainLocale;
+          return errorOnce;
         },
       });
-      const _normalizetrailingslash = __webpack_require__(8887);
-      const basePath =
-        /* unused pure expression or super */ null && (false || "");
-      function getDomainLocale(path, locale, locales, domainLocales) {
-        if (false) {
-        } else {
-          return false;
-        }
-      }
-      if (
-        (typeof exports.default === "function" ||
-          (typeof exports.default === "object" && exports.default !== null)) &&
-        typeof exports.default.__esModule === "undefined"
-      ) {
-        Object.defineProperty(exports.default, "__esModule", {
-          value: true,
-        });
-        Object.assign(exports.default, exports);
-        module.exports = exports.default;
-      } //# sourceMappingURL=get-domain-locale.js.map
+      let errorOnce = (_) => {};
+      if (false) {
+      } //# sourceMappingURL=error-once.js.map
 
       /***/
     },
 
-    /***/ 5049: /***/ (module, exports, __webpack_require__) => {
+    /***/ 2457: /***/ (module, exports, __webpack_require__) => {
       "use strict";
       /* __next_internal_client_entry_do_not_use__  cjs */
       Object.defineProperty(exports, "__esModule", {
@@ -64,17 +57,17 @@
       const _react = /*#__PURE__*/ _interop_require_wildcard._(
         __webpack_require__(7197)
       );
-      const _resolvehref = __webpack_require__(3575);
-      const _islocalurl = __webpack_require__(4135);
-      const _formaturl = __webpack_require__(3050);
-      const _utils = __webpack_require__(6864);
-      const _addlocale = __webpack_require__(1789);
-      const _routercontextsharedruntime = __webpack_require__(1778);
-      const _useintersection = __webpack_require__(7210);
-      const _getdomainlocale = __webpack_require__(4183);
-      const _addbasepath = __webpack_require__(6518);
-      const _usemergedref = __webpack_require__(9011);
-      const _erroronce = __webpack_require__(5193);
+      const _resolvehref = __webpack_require__(5687);
+      const _islocalurl = __webpack_require__(7127);
+      const _formaturl = __webpack_require__(58);
+      const _utils = __webpack_require__(2080);
+      const _addlocale = __webpack_require__(5709);
+      const _routercontextsharedruntime = __webpack_require__(4770);
+      const _useintersection = __webpack_require__(3290);
+      const _getdomainlocale = __webpack_require__(4615);
+      const _addbasepath = __webpack_require__(8422);
+      const _usemergedref = __webpack_require__(9667);
+      const _erroronce = __webpack_require__(2185);
       const prefetched = new Set();
       function prefetch(router, href, as, options) {
         if (false) {
@@ -453,82 +446,7 @@
       /***/
     },
 
-    /***/ 5193: /***/ (__unused_webpack_module, exports) => {
-      "use strict";
-
-      Object.defineProperty(exports, "__esModule", {
-        value: true,
-      });
-      Object.defineProperty(exports, "errorOnce", {
-        enumerable: true,
-        get: function () {
-          return errorOnce;
-        },
-      });
-      let errorOnce = (_) => {};
-      if (false) {
-      } //# sourceMappingURL=error-once.js.map
-
-      /***/
-    },
-
-    /***/ 5529: /***/ (
-      module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      module.exports = __webpack_require__(5049);
-
-      /***/
-    },
-
-    /***/ 6887: /***/ (
-      __unused_webpack_module,
-      __webpack_exports__,
-      __webpack_require__
-    ) => {
-      "use strict";
-      __webpack_require__.r(__webpack_exports__);
-      /* harmony export */ __webpack_require__.d(__webpack_exports__, {
-        /* harmony export */ __N_SSP: () => /* binding */ __N_SSP,
-        /* harmony export */ default: () => __WEBPACK_DEFAULT_EXPORT__,
-        /* harmony export */
-      });
-      /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
-        __webpack_require__(1329);
-      /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(5529);
-      /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default =
-        /*#__PURE__*/ __webpack_require__.n(
-          next_link__WEBPACK_IMPORTED_MODULE_1__
-        );
-
-      function aLink(props) {
-        return /*#__PURE__*/ (0,
-        react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {
-          children: [
-            /*#__PURE__*/ (0,
-            react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h3", {
-              children: "A Link page!",
-            }),
-            /*#__PURE__*/ (0,
-            react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(
-              next_link__WEBPACK_IMPORTED_MODULE_1___default(),
-              {
-                href: "/",
-                children: "Go to /",
-              }
-            ),
-          ],
-        });
-      }
-      var __N_SSP = true;
-      /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = aLink;
-
-      /***/
-    },
-
-    /***/ 7210: /***/ (module, exports, __webpack_require__) => {
+    /***/ 3290: /***/ (module, exports, __webpack_require__) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -541,7 +459,7 @@
         },
       });
       const _react = __webpack_require__(7197);
-      const _requestidlecallback = __webpack_require__(1785);
+      const _requestidlecallback = __webpack_require__(6809);
       const hasIntersectionObserver =
         typeof IntersectionObserver === "function";
       const observers = new Map();
@@ -653,7 +571,106 @@
       /***/
     },
 
-    /***/ 9011: /***/ (module, exports, __webpack_require__) => {
+    /***/ 4615: /***/ (module, exports, __webpack_require__) => {
+      "use strict";
+
+      Object.defineProperty(exports, "__esModule", {
+        value: true,
+      });
+      Object.defineProperty(exports, "getDomainLocale", {
+        enumerable: true,
+        get: function () {
+          return getDomainLocale;
+        },
+      });
+      const _normalizetrailingslash = __webpack_require__(903);
+      const basePath =
+        /* unused pure expression or super */ null && (false || "");
+      function getDomainLocale(path, locale, locales, domainLocales) {
+        if (false) {
+        } else {
+          return false;
+        }
+      }
+      if (
+        (typeof exports.default === "function" ||
+          (typeof exports.default === "object" && exports.default !== null)) &&
+        typeof exports.default.__esModule === "undefined"
+      ) {
+        Object.defineProperty(exports.default, "__esModule", {
+          value: true,
+        });
+        Object.assign(exports.default, exports);
+        module.exports = exports.default;
+      } //# sourceMappingURL=get-domain-locale.js.map
+
+      /***/
+    },
+
+    /***/ 6745: /***/ (
+      __unused_webpack_module,
+      __webpack_exports__,
+      __webpack_require__
+    ) => {
+      "use strict";
+      __webpack_require__.r(__webpack_exports__);
+      /* harmony export */ __webpack_require__.d(__webpack_exports__, {
+        /* harmony export */ __N_SSP: () => /* binding */ __N_SSP,
+        /* harmony export */ default: () => __WEBPACK_DEFAULT_EXPORT__,
+        /* harmony export */
+      });
+      /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
+        __webpack_require__(1329);
+      /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ =
+        __webpack_require__(443);
+      /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default =
+        /*#__PURE__*/ __webpack_require__.n(
+          next_link__WEBPACK_IMPORTED_MODULE_1__
+        );
+
+      function aLink(props) {
+        return /*#__PURE__*/ (0,
+        react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)("div", {
+          children: [
+            /*#__PURE__*/ (0,
+            react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("h3", {
+              children: "A Link page!",
+            }),
+            /*#__PURE__*/ (0,
+            react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(
+              next_link__WEBPACK_IMPORTED_MODULE_1___default(),
+              {
+                href: "/",
+                children: "Go to /",
+              }
+            ),
+          ],
+        });
+      }
+      var __N_SSP = true;
+      /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = aLink;
+
+      /***/
+    },
+
+    /***/ 7595: /***/ (
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/link",
+        function () {
+          return __webpack_require__(6745);
+        },
+      ]);
+      if (false) {
+      }
+
+      /***/
+    },
+
+    /***/ 9667: /***/ (module, exports, __webpack_require__) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -730,30 +747,13 @@
 
       /***/
     },
-
-    /***/ 9297: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/link",
-        function () {
-          return __webpack_require__(6887);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(9297)
+      __webpack_exec__(7595)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for routerDirect-HASH.js
@@ -1,34 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [188],
   {
-    /***/ 1576: /***/ (
-      module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      module.exports = __webpack_require__(5704);
-
-      /***/
-    },
-
-    /***/ 7881: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/routerDirect",
-        function () {
-          return __webpack_require__(9851);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
-
-    /***/ 9851: /***/ (
+    /***/ 3401: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -43,7 +16,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(1329);
       /* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(1576);
+        __webpack_require__(6702);
       /* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           next_router__WEBPACK_IMPORTED_MODULE_1__
@@ -62,13 +35,40 @@
 
       /***/
     },
+
+    /***/ 4787: /***/ (
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/routerDirect",
+        function () {
+          return __webpack_require__(3401);
+        },
+      ]);
+      if (false) {
+      }
+
+      /***/
+    },
+
+    /***/ 6702: /***/ (
+      module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      module.exports = __webpack_require__(728);
+
+      /***/
+    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(7881)
+      __webpack_exec__(4787)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for script-HASH.js
@@ -1,34 +1,17 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [1209],
   {
-    /***/ 2777: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/script",
-        function () {
-          return __webpack_require__(9272);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
-
-    /***/ 8662: /***/ (
+    /***/ 6868: /***/ (
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) => {
-      module.exports = __webpack_require__(4550);
+      module.exports = __webpack_require__(1190);
 
       /***/
     },
 
-    /***/ 9272: /***/ (
+    /***/ 7478: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -43,7 +26,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(1329);
       /* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(8662);
+        __webpack_require__(6868);
       /* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           next_script__WEBPACK_IMPORTED_MODULE_1__
@@ -75,13 +58,30 @@
 
       /***/
     },
+
+    /***/ 7659: /***/ (
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/script",
+        function () {
+          return __webpack_require__(7478);
+        },
+      ]);
+      if (false) {
+      }
+
+      /***/
+    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(2777)
+      __webpack_exec__(7659)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for withRouter-HASH.js
@@ -1,17 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [3263],
   {
-    /***/ 1576: /***/ (
-      module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      module.exports = __webpack_require__(5704);
-
-      /***/
-    },
-
-    /***/ 8478: /***/ (
+    /***/ 2528: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -26,7 +16,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(1329);
       /* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(1576);
+        __webpack_require__(6702);
       /* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           next_router__WEBPACK_IMPORTED_MODULE_1__
@@ -45,7 +35,17 @@
       /***/
     },
 
-    /***/ 9505: /***/ (
+    /***/ 6702: /***/ (
+      module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      module.exports = __webpack_require__(728);
+
+      /***/
+    },
+
+    /***/ 9763: /***/ (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -53,7 +53,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/withRouter",
         function () {
-          return __webpack_require__(8478);
+          return __webpack_require__(2528);
         },
       ]);
       if (false) {
@@ -67,7 +67,7 @@
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(9505)
+      __webpack_exec__(9763)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for 6566-HASH.js

Diff too large to display

Diff for 7740-HASH.js
failed to diff
Diff for 8258-HASH.js

Diff too large to display

Diff for main-HASH.js

Diff too large to display

Commit: dc9af8a

@vercel vercel deleted a comment from ijjk Jul 14, 2025
@ijjk
Copy link
Copy Markdown
Member

ijjk commented Jul 14, 2025

Allow CI Workflow Run

  • approve CI run for commit: dc9af8a

Note: this should only be enabled once the PR is ready to go and can only be enabled by a maintainer

@SyMind SyMind force-pushed the rspack-persistent-cache branch from 6eb3c5d to f95ab11 Compare July 16, 2025 07:35
@SyMind SyMind force-pushed the rspack-persistent-cache branch from f95ab11 to cabc286 Compare July 16, 2025 08:06
@SyMind SyMind marked this pull request as ready for review July 16, 2025 08:08
@SyMind SyMind force-pushed the rspack-persistent-cache branch from 3af19c6 to e508d20 Compare July 16, 2025 11:04
@SyMind SyMind force-pushed the rspack-persistent-cache branch from bd4c2ce to ba670a6 Compare November 26, 2025 08:03
Comment thread packages/next/src/server/dev/hot-reloader-rspack.ts
@SyMind SyMind force-pushed the rspack-persistent-cache branch from 783213c to 714fa8d Compare November 28, 2025 03:29
@SyMind SyMind force-pushed the rspack-persistent-cache branch from 1b10816 to 22d72ec Compare December 17, 2025 07:32
@SyMind SyMind force-pushed the rspack-persistent-cache branch 2 times, most recently from db7fd9f to b6fd219 Compare December 17, 2025 07:53
@SyMind SyMind force-pushed the rspack-persistent-cache branch from b6fd219 to 5861ba2 Compare December 17, 2025 07:58
@SyMind SyMind force-pushed the rspack-persistent-cache branch from 79bff10 to 824879c Compare December 17, 2025 09:12
@SyMind SyMind marked this pull request as ready for review December 17, 2025 09:46
@bgw bgw merged commit aa8a243 into vercel:canary Dec 18, 2025
453 of 471 checks passed
ch4og pushed a commit to csmplay/mapban that referenced this pull request Dec 23, 2025
This PR contains the following updates:

| Package | Change | Age | Confidence |
|---|---|---|---|
| [eslint-config-next](https://nextjs.org/docs/app/api-reference/config/eslint) ([source](https://github.com/vercel/next.js/tree/HEAD/packages/eslint-config-next)) | [`16.0.7` -> `16.1.1`](https://renovatebot.com/diffs/npm/eslint-config-next/16.0.7/16.1.1) | [![age](https://developer.mend.io/api/mc/badges/age/npm/eslint-config-next/16.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) | [![confidence](https://developer.mend.io/api/mc/badges/confidence/npm/eslint-config-next/16.0.7/16.1.1?slim=true)](https://docs.renovatebot.com/merge-confidence/) |

---

### Release Notes

<details>
<summary>vercel/next.js (eslint-config-next)</summary>

### [`v16.1.1`](https://github.com/vercel/next.js/releases/tag/v16.1.1)

[Compare Source](https://github.com/vercel/next.js/compare/v16.1.0...v16.1.1)

> \[!NOTE]
> This release is backporting bug fixes. It does **not** include all pending features/changes on canary.

##### Core Changes

- Turbopack: Create junction points instead of symlinks on Windows ([#&#8203;87606](https://github.com/vercel/next.js/issues/87606))

##### Credits

Huge thanks to [@&#8203;sokra](https://github.com/sokra) and [@&#8203;ztanner](https://github.com/ztanner) for helping!

### [`v16.1.0`](https://github.com/vercel/next.js/releases/tag/v16.1.0)

[Compare Source](https://github.com/vercel/next.js/compare/v16.0.10...v16.1.0)

> \[!TIP]\
> **Check out our Next v16.1 [Blog Post](https://nextjs.org/blog/next-16-1) to learn more about this release.**

##### Core Changes

- fix: Rspack throw error when using ForceCompleteRuntimePlugin: [#&#8203;85221](https://github.com/vercel/next.js/issues/85221)
- fix: build CLI output not displaying Proxy (Middleware) when nodejs runtime: [#&#8203;85403](https://github.com/vercel/next.js/issues/85403)
- fix: staleTimes.static should consistently enforce a 30s minimum: [#&#8203;85479](https://github.com/vercel/next.js/issues/85479)
- \[turbopack] fix build of empty entries of pages: [#&#8203;84873](https://github.com/vercel/next.js/issues/84873)
- Cache the head separately from the route tree: [#&#8203;84724](https://github.com/vercel/next.js/issues/84724)
- Allow inspecting dev server on default port with `next dev --inspect`: [#&#8203;85037](https://github.com/vercel/next.js/issues/85037)
- Avoid proxying React modules through workUnitStore: [#&#8203;85486](https://github.com/vercel/next.js/issues/85486)
- fix: redirect should always return updated router state: [#&#8203;85533](https://github.com/vercel/next.js/issues/85533)
- Upgrade React from `b4455a6e-20251027` to `4f931700-20251029`: [#&#8203;85518](https://github.com/vercel/next.js/issues/85518)
- \[turbopack] Move generation of `cacheLife` types out of the webpack plugin and into the dev bundler directly: [#&#8203;85539](https://github.com/vercel/next.js/issues/85539)
- Ensure user-space stack frame for `'use cache'` in page/layout component: [#&#8203;85519](https://github.com/vercel/next.js/issues/85519)
- Update parallel routes in build-complete: [#&#8203;85546](https://github.com/vercel/next.js/issues/85546)
- fully remove clientSegmentCache flag: [#&#8203;85541](https://github.com/vercel/next.js/issues/85541)
- \[turbopack] Support relative paths in turbopack source maps.: [#&#8203;85146](https://github.com/vercel/next.js/issues/85146)
- Release unnecessary memory on hydration finish: [#&#8203;84967](https://github.com/vercel/next.js/issues/84967)
- Preserve interception markers in parameter types: [#&#8203;85526](https://github.com/vercel/next.js/issues/85526)
- move segment cache entries to top level segment-cache dir: [#&#8203;85542](https://github.com/vercel/next.js/issues/85542)
- Upgrade React from `4f931700-20251029` to `561ee24d-20251101`: [#&#8203;85670](https://github.com/vercel/next.js/issues/85670)
- \[devtools] Remove title from preferences: [#&#8203;85698](https://github.com/vercel/next.js/issues/85698)
- Update font data: [#&#8203;85708](https://github.com/vercel/next.js/issues/85708)
- Don't invalidate hot reloader excessively during dev server boot: [#&#8203;85732](https://github.com/vercel/next.js/issues/85732)
- \[codemod] fix: next-lint-to-eslint-cli did not handle `'next'` plugin: [#&#8203;85749](https://github.com/vercel/next.js/issues/85749)
- Upgrade React from `561ee24d-20251101` to `67f7d47a-20251103`: [#&#8203;85762](https://github.com/vercel/next.js/issues/85762)
- Tracing: Fix memory leak in span map: [#&#8203;85529](https://github.com/vercel/next.js/issues/85529)
- Fix documentation typo in refresh function: [#&#8203;85696](https://github.com/vercel/next.js/issues/85696)
- fix: eslint-config-next types was exporting to dist/src: [#&#8203;85768](https://github.com/vercel/next.js/issues/85768)
- Upgrade React from `67f7d47a-20251103` to `f646e8ff-20251104`: [#&#8203;85772](https://github.com/vercel/next.js/issues/85772)
- remove unused RSC payload property: [#&#8203;85746](https://github.com/vercel/next.js/issues/85746)
- \[runtime prefetching]: fix runtime prefetching when deployed: [#&#8203;85595](https://github.com/vercel/next.js/issues/85595)
- Turbopack: next build --analyze: [#&#8203;85197](https://github.com/vercel/next.js/issues/85197)
- Build: Log amount of workers during static generation: [#&#8203;85706](https://github.com/vercel/next.js/issues/85706)
- Upgrade React from `f646e8ff-20251104` to `dd048c3b-20251105`: [#&#8203;85819](https://github.com/vercel/next.js/issues/85819)
- Sync devFallbackParams when generateStaticParams change: [#&#8203;85741](https://github.com/vercel/next.js/issues/85741)
- chore: upgrade rspack 1.6.0: [#&#8203;84210](https://github.com/vercel/next.js/issues/84210)
- \[mcp] get\_routes mcp tool: [#&#8203;85773](https://github.com/vercel/next.js/issues/85773)
- Split each path param into a separate cache key : [#&#8203;85758](https://github.com/vercel/next.js/issues/85758)
- \[turbopack] change server source maps in production to use relative paths: [#&#8203;85576](https://github.com/vercel/next.js/issues/85576)
- fix: skip collecting metadata for app-error in webpack: [#&#8203;85892](https://github.com/vercel/next.js/issues/85892)
- fix: support root span attributes with a custom server: [#&#8203;85521](https://github.com/vercel/next.js/issues/85521)
- fix isDynamicRSC condition when deployed: [#&#8203;85919](https://github.com/vercel/next.js/issues/85919)
- \[turbopack] Make it possible to synchronously access native bindings: [#&#8203;85787](https://github.com/vercel/next.js/issues/85787)
- Upgrade React from `dd048c3b-20251105` to `fa50caf5-20251107`: [#&#8203;85906](https://github.com/vercel/next.js/issues/85906)
- Fix telemetry event loss on build failures and server shutdown: [#&#8203;85867](https://github.com/vercel/next.js/issues/85867)
- Remove one stack frame from `'use cache'` call stacks: [#&#8203;85966](https://github.com/vercel/next.js/issues/85966)
- Upgrade React from `fa50caf5-20251107` to `52684925-20251110`: [#&#8203;85980](https://github.com/vercel/next.js/issues/85980)
- Deployment adapter: fix metadata for "/" route: [#&#8203;85820](https://github.com/vercel/next.js/issues/85820)
- Enable React's default Transition indicator behind a flag: [#&#8203;86000](https://github.com/vercel/next.js/issues/86000)
- update routes-manifest to include whether app has pages routes: [#&#8203;86051](https://github.com/vercel/next.js/issues/86051)
- Fix 404 responses for interception routes with missing children slots: [#&#8203;85779](https://github.com/vercel/next.js/issues/85779)
- Build: Share StaticWorker between static check and static generation: [#&#8203;85860](https://github.com/vercel/next.js/issues/85860)
- \[devtool] highlight all link in error message: [#&#8203;86084](https://github.com/vercel/next.js/issues/86084)
- fix(nodejs-middleware): await for body cloning to be properly finalized: [#&#8203;85418](https://github.com/vercel/next.js/issues/85418)
- Add build-time validation to detect ambiguous app routes: [#&#8203;85834](https://github.com/vercel/next.js/issues/85834)
- Don't use inspector frontend URLs from other processes: [#&#8203;86082](https://github.com/vercel/next.js/issues/86082)
- Upgrade React from `52684925-20251110` to `93fc5740-20251113`: [#&#8203;86103](https://github.com/vercel/next.js/issues/86103)
- \[next-upgrade] Force install of dev dependencies: [#&#8203;86119](https://github.com/vercel/next.js/issues/86119)
- Fix telemetry event race condition in webpack worker for [@&#8203;vercel/og](https://github.com/vercel/og) detection: [#&#8203;86145](https://github.com/vercel/next.js/issues/86145)
- Turbopack: Add bundle analyzer UI to next build --experimental-analyze: [#&#8203;85788](https://github.com/vercel/next.js/issues/85788)
- Upgrade React from `93fc5740-20251113` to `fb2177c1-20251114`: [#&#8203;86155](https://github.com/vercel/next.js/issues/86155)
- fix: cacheMaxMemorySize should not disable dev HMR cache: [#&#8203;86164](https://github.com/vercel/next.js/issues/86164)
- Fix streaming server actions: [#&#8203;86148](https://github.com/vercel/next.js/issues/86148)
- Allow attaching a debugger when `next dev` is already running: [#&#8203;86083](https://github.com/vercel/next.js/issues/86083)
- Introduce `next analyze`: a built-in bundle analyzer for Turbopack: [#&#8203;85915](https://github.com/vercel/next.js/issues/85915)
- Turbopack: add `experimental.turbopackClient/ServerSideNestedAsyncChunking`: [#&#8203;85827](https://github.com/vercel/next.js/issues/85827)
- next analyze: annotate polyfill modules in UI: [#&#8203;86062](https://github.com/vercel/next.js/issues/86062)
- Stop adding additional padding to Next.js logs: [#&#8203;86139](https://github.com/vercel/next.js/issues/86139)
- \[next-upgrade] Add `next upgrade`: [#&#8203;86120](https://github.com/vercel/next.js/issues/86120)
- Fix prerendering of interception routes with generateStaticParams: [#&#8203;85835](https://github.com/vercel/next.js/issues/85835)
- \[Segment Cache] Re-implement refresh reducer: [#&#8203;84426](https://github.com/vercel/next.js/issues/84426)
- Upgrade React from `fb2177c1-20251114` to `0972e239-20251118`: [#&#8203;86263](https://github.com/vercel/next.js/issues/86263)
- `next analyze`: Make ipv6 server links valid and normalize localhost: [#&#8203;86219](https://github.com/vercel/next.js/issues/86219)
- fix: prevent fetch abort errors propagating to user error boundaries: [#&#8203;86277](https://github.com/vercel/next.js/issues/86277)
- chore(turbopack-node): remove some outdated codes: [#&#8203;86111](https://github.com/vercel/next.js/issues/86111)
- \[devtools] Ensure Chrome DevTools workspace can connect with proxy rewrites: [#&#8203;86289](https://github.com/vercel/next.js/issues/86289)
- Fix log log alignment in spinners: [#&#8203;86298](https://github.com/vercel/next.js/issues/86298)
- fix: Rename proxy.js to middleware.js in NFT file: [#&#8203;86214](https://github.com/vercel/next.js/issues/86214)
- Turbopack: allow trace level tracing: [#&#8203;86255](https://github.com/vercel/next.js/issues/86255)
- Allow SSR to finish microtasky work before flushing: [#&#8203;86311](https://github.com/vercel/next.js/issues/86311)
- Turbopack: fix passing project options from napi: [#&#8203;86256](https://github.com/vercel/next.js/issues/86256)
- \[Cache Components] Atomic setTimeouts: [#&#8203;86093](https://github.com/vercel/next.js/issues/86093)
- Turbopack: add experimental.turbopackInputSourceMaps and respect serverSourceMaps: [#&#8203;86340](https://github.com/vercel/next.js/issues/86340)
- \[Cache Components] Discriminate static shell validation errors by type: [#&#8203;85747](https://github.com/vercel/next.js/issues/85747)
- Turbopack: add NEXT\_TURBOPACK\_WRITE\_ROUTES\_HASHES\_MANIFEST to write hashes into manifest: [#&#8203;86257](https://github.com/vercel/next.js/issues/86257)
- Add reasons for some server-external-packages: [#&#8203;86254](https://github.com/vercel/next.js/issues/86254)
- Send dynamic validation errors to browser via WebSocket: [#&#8203;85818](https://github.com/vercel/next.js/issues/85818)
- Delete un-used prefetch outputs with PPR: [#&#8203;86100](https://github.com/vercel/next.js/issues/86100)
- Revert "Turbopack: add bundle-analyzer to versioning and add dependen…: [#&#8203;86394](https://github.com/vercel/next.js/issues/86394)
- Turbopack: add bundle-analyzer to versioning and add dependency: [#&#8203;86355](https://github.com/vercel/next.js/issues/86355)
- fix issue -  [#&#8203;86365](https://github.com/vercel/next.js/issues/86365): [#&#8203;86366](https://github.com/vercel/next.js/issues/86366)
- Turbopack: fix import chain by determining depth locally per route: [#&#8203;86350](https://github.com/vercel/next.js/issues/86350)
- Use JSONC for default server-external-packages: [#&#8203;86252](https://github.com/vercel/next.js/issues/86252)
- add debug logs to onSegmentPrerenderError: [#&#8203;86358](https://github.com/vercel/next.js/issues/86358)
- Skip request if "full" prefetch is already pending: [#&#8203;86405](https://github.com/vercel/next.js/issues/86405)
- fix: Rename proxy.js to middleware.js in NFT file ([#&#8203;86214](https://github.com/vercel/next.js/issues/86214))
- fix: prevent fetch abort errors propagating to user error boundaries ([#&#8203;86277](https://github.com/vercel/next.js/issues/86277))
- Turbopack: fix passing project options from napi ([#&#8203;86256](https://github.com/vercel/next.js/issues/86256))
- Eslint: Improve Google Tag manager third parties message: [#&#8203;51903](https://github.com/vercel/next.js/issues/51903)
- \[ts-plugin] keep showing the types in the function body: [#&#8203;86273](https://github.com/vercel/next.js/issues/86273)
- \[turbopack] Enable the filesystem cache for dev in canary builds: [#&#8203;85940](https://github.com/vercel/next.js/issues/85940)
- docs: fix typos in packages: [#&#8203;82508](https://github.com/vercel/next.js/issues/82508)
- Turbopack: Expose an environment variable for exposing the `detail` field of issues: [#&#8203;86518](https://github.com/vercel/next.js/issues/86518)
- Turbopack: inner graph tree shaking: [#&#8203;85973](https://github.com/vercel/next.js/issues/85973)
- \[next-upgrade] Fall back to `npx` if `yarn dlx` is not available: [#&#8203;86384](https://github.com/vercel/next.js/issues/86384)
- Update font data: [#&#8203;86521](https://github.com/vercel/next.js/issues/86521)
- Convert any export from a `'use cache'` module to a cache function: [#&#8203;86014](https://github.com/vercel/next.js/issues/86014)
- fix(nodejs-middleware): await for body cloning to be properly finalized ([#&#8203;85418](https://github.com/vercel/next.js/issues/85418))
- Fix stale dev types causing build failure after route deletion: [#&#8203;86489](https://github.com/vercel/next.js/issues/86489)
- bump the browserslist version to silence a warning in CI ([#&#8203;86625](https://github.com/vercel/next.js/issues/86625))
- add bundle analyzer as dev dependency to next: [#&#8203;86497](https://github.com/vercel/next.js/issues/86497)
- Remove obsolete `setReferenceManifestsSingleton` call: [#&#8203;86574](https://github.com/vercel/next.js/issues/86574)
- Add flag to show ignore listed frames: [#&#8203;86285](https://github.com/vercel/next.js/issues/86285)
- Add alinea to server-external-packages.json: [#&#8203;55006](https://github.com/vercel/next.js/issues/55006)
- Fix error logging for `'use cache'` runtime errors in production: [#&#8203;86500](https://github.com/vercel/next.js/issues/86500)
- Upgrade React from `8ac5f4eb-20251119` to `fd524fe0-20251121`: [#&#8203;86473](https://github.com/vercel/next.js/issues/86473)
- Add "[@&#8203;zenstackhq/runtime](https://github.com/zenstackhq/runtime)" to server-external-packages.json: [#&#8203;54829](https://github.com/vercel/next.js/issues/54829)
- \[Cache Components] Ensure cache misses always cause a restart in dev: [#&#8203;86583](https://github.com/vercel/next.js/issues/86583)
- bump the browserslist version to silence a warning in CI: [#&#8203;86625](https://github.com/vercel/next.js/issues/86625)
- Turbopack: import to `char` not replaced: [#&#8203;86573](https://github.com/vercel/next.js/issues/86573)
- Revert "add bundle analyzer as dev dependency to next ([#&#8203;86497](https://github.com/vercel/next.js/issues/86497))": [#&#8203;86672](https://github.com/vercel/next.js/issues/86672)
- Handle cross-page client reference contamination in development: [#&#8203;86591](https://github.com/vercel/next.js/issues/86591)
- Match behavior of baseline-browser-mapping with caniuse-lite: [#&#8203;86653](https://github.com/vercel/next.js/issues/86653)
- Turbopack: don't generateBuildId in dev: [#&#8203;86581](https://github.com/vercel/next.js/issues/86581)
- \[devtool] unify the bundler field: [#&#8203;86514](https://github.com/vercel/next.js/issues/86514)
- Turbopack: normalize distDir separators: [#&#8203;86697](https://github.com/vercel/next.js/issues/86697)
- Cover org package external in externals-transitive test: [#&#8203;86691](https://github.com/vercel/next.js/issues/86691)
- \[turbopack] Enable filesystem cache by default for development: [#&#8203;85975](https://github.com/vercel/next.js/issues/85975)
- Log generate params duration in dev: [#&#8203;86726](https://github.com/vercel/next.js/issues/86726)
- \[CC] Fix hanging dynamic promise when abandoning render: [#&#8203;86690](https://github.com/vercel/next.js/issues/86690)
- Convert Windows paths as well when reading sourcemap: [#&#8203;86723](https://github.com/vercel/next.js/issues/86723)
- Deterministic functions-config-manifest.json: [#&#8203;86736](https://github.com/vercel/next.js/issues/86736)
- Abstract deployment id access into module: [#&#8203;86727](https://github.com/vercel/next.js/issues/86727)
- Deterministically order pages in the `MappedPages`  structure: [#&#8203;86744](https://github.com/vercel/next.js/issues/86744)
- \[turbopack] move edge entry wrapper to build template: [#&#8203;86699](https://github.com/vercel/next.js/issues/86699)
- Properly type ComponentMod: [#&#8203;86765](https://github.com/vercel/next.js/issues/86765)
- Properly type edge handler fn: [#&#8203;86766](https://github.com/vercel/next.js/issues/86766)
- Remove unused Server.responseCache: [#&#8203;86768](https://github.com/vercel/next.js/issues/86768)
- \[Cache Components] Fast setImmediate: [#&#8203;86018](https://github.com/vercel/next.js/issues/86018)
- \[devtool] make the draggable content selective: [#&#8203;86816](https://github.com/vercel/next.js/issues/86816)
- Create server module map proxy only once: [#&#8203;86750](https://github.com/vercel/next.js/issues/86750)
- fix(next/image): add `?dpl` query string for local images (without static import): [#&#8203;86485](https://github.com/vercel/next.js/issues/86485)
- fix(next/image): handle `?dpl` for src without protocol: [#&#8203;86836](https://github.com/vercel/next.js/issues/86836)
- Upgrade React from `7dc903cd-20251203` to `66ae640b-20251204`: [#&#8203;86843](https://github.com/vercel/next.js/issues/86843)
- Upgrade React from `66ae640b-20251204` to `378973b3-20251205`: [#&#8203;86852](https://github.com/vercel/next.js/issues/86852)
- Turbopack: remove pages router double template: [#&#8203;86842](https://github.com/vercel/next.js/issues/86842)
- Introduce NextConfigRuntime: [#&#8203;86812](https://github.com/vercel/next.js/issues/86812)
- Generate required-server-files before prerendering: [#&#8203;86830](https://github.com/vercel/next.js/issues/86830)
- Update react version in cna templates ([#&#8203;86950](https://github.com/vercel/next.js/issues/86950))
- Include nextConfig in edge runtime via separate manifest: [#&#8203;86769](https://github.com/vercel/next.js/issues/86769)
- Fix required-server-files: [#&#8203;86875](https://github.com/vercel/next.js/issues/86875)
- Add pino-related packages to server-external-packages: [#&#8203;86884](https://github.com/vercel/next.js/issues/86884)
- Fix validateTurboNextConfig running for next start: [#&#8203;86886](https://github.com/vercel/next.js/issues/86886)
- Add experimental.runtimeServerDeploymentId: [#&#8203;86865](https://github.com/vercel/next.js/issues/86865)
- \[turbopack] Mark packages as side effect free when local analysis determines that they are.: [#&#8203;86398](https://github.com/vercel/next.js/issues/86398)
- Fix: Missing null check in LRU cleanup: [#&#8203;87124](https://github.com/vercel/next.js/issues/87124)
- improve segment cache lru typesafety: [#&#8203;87129](https://github.com/vercel/next.js/issues/87129)
- \[Segment Cache] Detect third-party redirect + static export w/ HEAD request: [#&#8203;85910](https://github.com/vercel/next.js/issues/85910)
- Fix: External redirect swallowed by Next.js: [#&#8203;87121](https://github.com/vercel/next.js/issues/87121)
- Fix error propagation and teardown in Server Action request decoding: [#&#8203;87193](https://github.com/vercel/next.js/issues/87193)
- Fix interception routes with trailing slash configuration: [#&#8203;86787](https://github.com/vercel/next.js/issues/86787)
- \[ci] Stop building when creating release: [#&#8203;87178](https://github.com/vercel/next.js/issues/87178)
- fix: otel error spans from streamed responses: [#&#8203;86955](https://github.com/vercel/next.js/issues/86955)
- Refactor: Unify history traversal with other nav types: [#&#8203;87128](https://github.com/vercel/next.js/issues/87128)
- Create initial tree using same function as navigations: [#&#8203;87147](https://github.com/vercel/next.js/issues/87147)
- Re-implement hmr-refresh in terms of refresh: [#&#8203;87135](https://github.com/vercel/next.js/issues/87135)
- Delete old navigation response handling implementation: [#&#8203;87149](https://github.com/vercel/next.js/issues/87149)
- Reflect runtime type of `resHeaders` in static types: [#&#8203;87145](https://github.com/vercel/next.js/issues/87145)
- \[turbopack] Flag `turbopackInferModuleSideEffects` so it is only enabled in canary builds: [#&#8203;87215](https://github.com/vercel/next.js/issues/87215)
- \[turbopack] update warning message in the bundle analyzer: [#&#8203;87255](https://github.com/vercel/next.js/issues/87255)
- chore: update rspack 1.6.5: [#&#8203;86853](https://github.com/vercel/next.js/issues/86853)
- Update font data: [#&#8203;87259](https://github.com/vercel/next.js/issues/87259)
- bundle-analyzer: make running the web server default: [#&#8203;87258](https://github.com/vercel/next.js/issues/87258)
- bundle analyzer: remove custom output option: [#&#8203;87267](https://github.com/vercel/next.js/issues/87267)
- Ensure constructor for `useSearchParams` can be imported for `instanceof` checks: [#&#8203;87269](https://github.com/vercel/next.js/issues/87269)
- Upgrade React from `b45bb335-20251211` to `f93b9fd4-20251217`: [#&#8203;87281](https://github.com/vercel/next.js/issues/87281)
- feat: use Rspack persistent cache by default: [#&#8203;81399](https://github.com/vercel/next.js/issues/81399)
- Move next-env.d.ts to dist dir: [#&#8203;86752](https://github.com/vercel/next.js/issues/86752)
- Revert "Move next-env.d.ts to dist dir": [#&#8203;87311](https://github.com/vercel/next.js/issues/87311)

##### Example Changes

- Chore: Update with-supabase example to Next.js 16: [#&#8203;86105](https://github.com/vercel/next.js/issues/86105)
- docs: add example for enabling both AVIF and WebP image formats for better image optimization: [#&#8203;86191](https://github.com/vercel/next.js/issues/86191)
- examples: fix typos: [#&#8203;82506](https://github.com/vercel/next.js/issues/82506)
- chore(examples): remove `with-windicss` example: [#&#8203;81846](https://github.com/vercel/next.js/issues/81846)
- examples: fix typos in cms-agilitycms: [#&#8203;82504](https://github.com/vercel/next.js/issues/82504)
- Turbopack: Improve the description on InvalidLoaderRuleConditionIssue: [#&#8203;87008](https://github.com/vercel/next.js/issues/87008)

##### Misc Changes

- chore: Add `opt-level = s` for not frequently used crates: [#&#8203;85426](https://github.com/vercel/next.js/issues/85426)
- \[test] Deflake cache-components-allow-otel-spans: [#&#8203;85466](https://github.com/vercel/next.js/issues/85466)
- \[test] Move remaining `experimental.cacheLife`: [#&#8203;85467](https://github.com/vercel/next.js/issues/85467)
- Turbopack: chore: Remove mopa dependency in turbo-tasks (2nd attempt): [#&#8203;85286](https://github.com/vercel/next.js/issues/85286)
- Update Proxy docs: [#&#8203;85439](https://github.com/vercel/next.js/issues/85439)
- \[CNA] Do not prompt for Turbopack: [#&#8203;85404](https://github.com/vercel/next.js/issues/85404)
- Clean up new release process: [#&#8203;85458](https://github.com/vercel/next.js/issues/85458)
- Update E2E tests workflow: [#&#8203;85485](https://github.com/vercel/next.js/issues/85485)
- Update E2E deploy tests manifest: [#&#8203;85483](https://github.com/vercel/next.js/issues/85483)
- docs: example are incorrect async function exports only: [#&#8203;85453](https://github.com/vercel/next.js/issues/85453)
- \[test] Handle CLI assertions where no "Compiling..." log is present: [#&#8203;85499](https://github.com/vercel/next.js/issues/85499)
- \[test] Speed up refresh test: [#&#8203;85505](https://github.com/vercel/next.js/issues/85505)
- \[test] Add test cases for dynamic caches without suspense boundaries: [#&#8203;85500](https://github.com/vercel/next.js/issues/85500)
- docs: Routes are wrapped w/ Activity in Cache Components: [#&#8203;85309](https://github.com/vercel/next.js/issues/85309)
- docs: GET handler behavior under cache components: [#&#8203;85389](https://github.com/vercel/next.js/issues/85389)
- \[test] Avoid needless start/stop from using `createSandbox`: [#&#8203;85507](https://github.com/vercel/next.js/issues/85507)
- \[test] Use `--debug-build-paths` instead of `NEXT_PRIVATE_APP_PATHS`: [#&#8203;85504](https://github.com/vercel/next.js/issues/85504)
- docs: revalidateTag requires second argument: [#&#8203;85284](https://github.com/vercel/next.js/issues/85284)
- Refactor GTM implementation to support google tag gateway: [#&#8203;81011](https://github.com/vercel/next.js/issues/81011)
- Update Rspack production test manifest: [#&#8203;85494](https://github.com/vercel/next.js/issues/85494)
- Update Rspack development test manifest: [#&#8203;85495](https://github.com/vercel/next.js/issues/85495)
- \[docs] Fix a typo: [#&#8203;85492](https://github.com/vercel/next.js/issues/85492)
- \[test] Regenerate tsconfig.json files: [#&#8203;85515](https://github.com/vercel/next.js/issues/85515)
- \[Turbopack] clean up `completion.rs` a bit: [#&#8203;84863](https://github.com/vercel/next.js/issues/84863)
- \[test] Remove `maxRetries` and `hardError` parameters: [#&#8203;85536](https://github.com/vercel/next.js/issues/85536)
- Turbopack: remove the .into() alias to .cell(): [#&#8203;85516](https://github.com/vercel/next.js/issues/85516)
- \[test] Consolidate identical snapshots across different bundlers: [#&#8203;85532](https://github.com/vercel/next.js/issues/85532)
- \[turbopack] Change where `cell`s are created in `resolve_raw` to make cell allocation order deterministic.: [#&#8203;85525](https://github.com/vercel/next.js/issues/85525)
- Turbopack: Make tasks deterministic: [#&#8203;85524](https://github.com/vercel/next.js/issues/85524)
- \[test] Separate act and assertions: [#&#8203;85508](https://github.com/vercel/next.js/issues/85508)
- \[test] `assert*` -> `waitFor*` when the util is not instant: [#&#8203;85450](https://github.com/vercel/next.js/issues/85450)
- Turbopack: move whole\_app\_module\_graphs to top level: [#&#8203;84897](https://github.com/vercel/next.js/issues/84897)
- \[test] Bail on sending requests to Next.js instance if it's no longer available: [#&#8203;85557](https://github.com/vercel/next.js/issues/85557)
- \[test] Deflake tests comparing two random numbers: [#&#8203;85571](https://github.com/vercel/next.js/issues/85571)
- \[test] Disallow custom `RegExp`-like implementations in `check`: [#&#8203;85537](https://github.com/vercel/next.js/issues/85537)
- \[test] Deflake prerender suite: [#&#8203;85563](https://github.com/vercel/next.js/issues/85563)
- Turbopack: chore: Remove some dead MagicAny serialization code from turbo\_tasks::value: [#&#8203;85577](https://github.com/vercel/next.js/issues/85577)
- \[test]: fix broken scroll restoration test: [#&#8203;85599](https://github.com/vercel/next.js/issues/85599)
- \[test] Deflake nested `after()` tests: [#&#8203;85566](https://github.com/vercel/next.js/issues/85566)
- \[test] Stop installing unused dependencies: [#&#8203;85569](https://github.com/vercel/next.js/issues/85569)
- \[test] Consider `test/integration/` in flake detection tests: [#&#8203;85590](https://github.com/vercel/next.js/issues/85590)
- Turbopack: more checks on verify\_serialization: [#&#8203;84952](https://github.com/vercel/next.js/issues/84952)
- Turbopack: add track\_caller to improve panics: [#&#8203;85565](https://github.com/vercel/next.js/issues/85565)
- Turbopack: add verify\_determinism feature to check if tasks are deterministic: [#&#8203;85559](https://github.com/vercel/next.js/issues/85559)
- docs: cache life rework: [#&#8203;85224](https://github.com/vercel/next.js/issues/85224)
- Turbopack: fix hanging dev server and builds with fs cache: [#&#8203;85606](https://github.com/vercel/next.js/issues/85606)
- Turbopack: Fix compound assignment expression evaluation ([#&#8203;85478](https://github.com/vercel/next.js/issues/85478)): [#&#8203;85593](https://github.com/vercel/next.js/issues/85593)
- Turbopack: fix Scope holding Arc too long: [#&#8203;85611](https://github.com/vercel/next.js/issues/85611)
- \[ci] Improve change detection logic in `run-for-change` script: [#&#8203;85619](https://github.com/vercel/next.js/issues/85619)
- \[test] Ignore in deploy tests if a child process isn't available: [#&#8203;85636](https://github.com/vercel/next.js/issues/85636)
- Turbopack: add size\_hint and len for Chunk iterator: [#&#8203;85622](https://github.com/vercel/next.js/issues/85622)
- \[test]: move resume-data-cache to e2e test: [#&#8203;85647](https://github.com/vercel/next.js/issues/85647)
- Update Rspack development test manifest: [#&#8203;85662](https://github.com/vercel/next.js/issues/85662)
- Update Rspack production test manifest: [#&#8203;85661](https://github.com/vercel/next.js/issues/85661)
- Update Rspack production test manifest: [#&#8203;85688](https://github.com/vercel/next.js/issues/85688)
- Update Rspack development test manifest: [#&#8203;85689](https://github.com/vercel/next.js/issues/85689)
- \[test] Deflake root-optional-revalidate: [#&#8203;85584](https://github.com/vercel/next.js/issues/85584)
- docs: fix generateImageMetadata example to use normal params object: [#&#8203;85658](https://github.com/vercel/next.js/issues/85658)
- Turbopack: Upgrade image crate: [#&#8203;85084](https://github.com/vercel/next.js/issues/85084)
- docs: update multi sitemap argumenmt type: [#&#8203;85701](https://github.com/vercel/next.js/issues/85701)
- \[test] Move all files to .ts (6/6): [#&#8203;85641](https://github.com/vercel/next.js/issues/85641)
- Turbopack: add a batch add method to the storage: [#&#8203;84270](https://github.com/vercel/next.js/issues/84270)
- docs: recommend reverse-proxy when self-hosting: [#&#8203;85650](https://github.com/vercel/next.js/issues/85650)
- \[test] Deflake prefetching.stale-times: [#&#8203;85733](https://github.com/vercel/next.js/issues/85733)
- \[test] Deflake custom cache handler test: [#&#8203;85610](https://github.com/vercel/next.js/issues/85610)
- \[test] Allow CLI integration test to be retryable: [#&#8203;85586](https://github.com/vercel/next.js/issues/85586)
- docs: update docs to mention ESLint as default: [#&#8203;85740](https://github.com/vercel/next.js/issues/85740)
- docs(next.config): this docs should remove ".mts" is not supported.: [#&#8203;85716](https://github.com/vercel/next.js/issues/85716)
- Turbopack: cleanup StyleSheetLike: [#&#8203;85718](https://github.com/vercel/next.js/issues/85718)
- Turbopack: disable tree shaking for tracing: [#&#8203;85722](https://github.com/vercel/next.js/issues/85722)
- \[test] Move all files to .ts (3/6): [#&#8203;85638](https://github.com/vercel/next.js/issues/85638)
- \[test] Move all files to .ts (2/6): [#&#8203;85637](https://github.com/vercel/next.js/issues/85637)
- \[test] Move all files to .ts (1/6): [#&#8203;85634](https://github.com/vercel/next.js/issues/85634)
- docs: generateSitemap passes id as promise: [#&#8203;85767](https://github.com/vercel/next.js/issues/85767)
- \[test] Move all files to .ts (4/6): [#&#8203;85639](https://github.com/vercel/next.js/issues/85639)
- docs: disclosure on path-to-regexp: [#&#8203;85629](https://github.com/vercel/next.js/issues/85629)
- chore: update rspack binding to 1.6.0: [#&#8203;85717](https://github.com/vercel/next.js/issues/85717)
- Turbopack: trace worker\_threads worker entry: [#&#8203;85734](https://github.com/vercel/next.js/issues/85734)
- Update Rspack development test manifest: [#&#8203;85761](https://github.com/vercel/next.js/issues/85761)
- Turbopack: chore: Remove `extern crate` and `macro_use` syntax: [#&#8203;85778](https://github.com/vercel/next.js/issues/85778)
- \[turbopack] Drop duration and allocation tracking from CaptureFuture: [#&#8203;85534](https://github.com/vercel/next.js/issues/85534)
- Turbopack: chore: Remove dead RouteMatcher stuff: [#&#8203;85784](https://github.com/vercel/next.js/issues/85784)
- docs: fresh up getting started 00: [#&#8203;85736](https://github.com/vercel/next.js/issues/85736)
- Turbopack: chore: Remove the serde\_regex dependency, which wasn't very heavily used: [#&#8203;85578](https://github.com/vercel/next.js/issues/85578)
- Turbopack: use batch add in connect children: [#&#8203;85623](https://github.com/vercel/next.js/issues/85623)
- \[test] Move all files to .ts (5/6): [#&#8203;85640](https://github.com/vercel/next.js/issues/85640)
- \[test] Deflake legacy-link-behavior: [#&#8203;85805](https://github.com/vercel/next.js/issues/85805)
- Resolve request ID confusion: [#&#8203;85809](https://github.com/vercel/next.js/issues/85809)
- Turbopack: use batch add to add initial followers: [#&#8203;85624](https://github.com/vercel/next.js/issues/85624)
- Turbopack: chore: Remove dead experimental.ppr struct field: [#&#8203;85792](https://github.com/vercel/next.js/issues/85792)
- Turbopack: chore: Avoid string clones in Glob::parse by using RcStr: [#&#8203;85579](https://github.com/vercel/next.js/issues/85579)
- Update Rspack production test manifest: [#&#8203;85795](https://github.com/vercel/next.js/issues/85795)
- docs: getting started updates 01: [#&#8203;85750](https://github.com/vercel/next.js/issues/85750)
- chore: Update patricia\_tree dependency, remove manual serde impls: [#&#8203;85785](https://github.com/vercel/next.js/issues/85785)
- docs: keywords in system reqs and add browserslist: [#&#8203;85838](https://github.com/vercel/next.js/issues/85838)
- Honour `NEXT_TEST_PREFER_OFFLINE` in `install-native.mjs`: [#&#8203;85850](https://github.com/vercel/next.js/issues/85850)
- Turbopack: chore: Update anyhow, remove old backtrace feature: [#&#8203;85844](https://github.com/vercel/next.js/issues/85844)
- Turbopack: Remove some dead (or useless) code from `next-core/src/next_client_reference/visit_client_reference.rs`: [#&#8203;85843](https://github.com/vercel/next.js/issues/85843)
- sort dependencies for smaller diffs: [#&#8203;82291](https://github.com/vercel/next.js/issues/82291)
- Update Rspack development test manifest: [#&#8203;85846](https://github.com/vercel/next.js/issues/85846)
- Turbopack: Remove `non_operation_vc_strongly_consistent` feature usage from next-api: [#&#8203;85874](https://github.com/vercel/next.js/issues/85874)
- Turbopack: remove the streaming hack for improved stability: [#&#8203;85858](https://github.com/vercel/next.js/issues/85858)
- test: Port clean-distdir integration test to the modern e2e test framework: [#&#8203;85828](https://github.com/vercel/next.js/issues/85828)
- Update font data: [#&#8203;85920](https://github.com/vercel/next.js/issues/85920)
- Update deploy manifest: [#&#8203;85924](https://github.com/vercel/next.js/issues/85924)
- Turbopack: chore: Merge `turbo-tasks-macros-shared` crate into `turbo-tasks-macros`: [#&#8203;85917](https://github.com/vercel/next.js/issues/85917)
- Turbopack: Fix IO concurrency for MacOS: [#&#8203;85861](https://github.com/vercel/next.js/issues/85861)
- Add Appwrite Sites to supported adapters: [#&#8203;85830](https://github.com/vercel/next.js/issues/85830)
- \[turbopack] Remove LocalTaskType::Native, it is dead: [#&#8203;85480](https://github.com/vercel/next.js/issues/85480)
- \[test] Increase response timeout in `next.browserWithResponse()`: [#&#8203;85911](https://github.com/vercel/next.js/issues/85911)
- Hoist inner `'use cache'` functions to reduce function allocations: [#&#8203;85904](https://github.com/vercel/next.js/issues/85904)
- docs: eslint config update: [#&#8203;85969](https://github.com/vercel/next.js/issues/85969)
- Fix Turbopack local font `font-family` declaration: [#&#8203;85913](https://github.com/vercel/next.js/issues/85913)
- switch to slice in createRuntimePrefetchTransformStream: [#&#8203;85822](https://github.com/vercel/next.js/issues/85822)
- Update authentication.mdx: Fix `Auth0` Link: [#&#8203;85953](https://github.com/vercel/next.js/issues/85953)
- Turbopack: remove unused function: [#&#8203;85974](https://github.com/vercel/next.js/issues/85974)
- docs: cacheHandlers: [#&#8203;85311](https://github.com/vercel/next.js/issues/85311)
- docs: Feedback item on proxy default: [#&#8203;86004](https://github.com/vercel/next.js/issues/86004)
- \[test] Add missing test fixtures for `cacheLife` & `cacheTag` in client: [#&#8203;85872](https://github.com/vercel/next.js/issues/85872)
- Fix false-positive build error for `cacheLife` & `cacheTag`: [#&#8203;85875](https://github.com/vercel/next.js/issues/85875)
- \[cna] For pnpm ignore postinstall from `sharp` and `unrs-resolver`: [#&#8203;83168](https://github.com/vercel/next.js/issues/83168)
- Turbopack: refactor `evaluate` to take module\_graph: [#&#8203;85971](https://github.com/vercel/next.js/issues/85971)
- Turbopack: remove duplicate traversal implementations: [#&#8203;85853](https://github.com/vercel/next.js/issues/85853)
- Omit unused `encryptActionBoundArgs`/`decryptActionBoundArgs` imports: [#&#8203;86015](https://github.com/vercel/next.js/issues/86015)
- Turbopack: cleanup db log and add verbose option: [#&#8203;85965](https://github.com/vercel/next.js/issues/85965)
- \[ci]: fix retry\_deploy\_test workflow: [#&#8203;85981](https://github.com/vercel/next.js/issues/85981)
- Fix typo in documentation: [#&#8203;86054](https://github.com/vercel/next.js/issues/86054)
- perf: revert to use the light safe stringify for is-error: [#&#8203;86053](https://github.com/vercel/next.js/issues/86053)
- Turbopack: expose used export info in tests: [#&#8203;86037](https://github.com/vercel/next.js/issues/86037)
- Docs: Mention npm link with Turbopack root: [#&#8203;86075](https://github.com/vercel/next.js/issues/86075)
- script: align the commits group logic with the origin script: [#&#8203;86079](https://github.com/vercel/next.js/issues/86079)
- Update cookies.mdx: [#&#8203;86094](https://github.com/vercel/next.js/issues/86094)
- Remove redundant example code for cacheLife docs: [#&#8203;86043](https://github.com/vercel/next.js/issues/86043)
- test: improve router prefetch test reliability: [#&#8203;86098](https://github.com/vercel/next.js/issues/86098)
- Add postpone handling in app-page handler: [#&#8203;86101](https://github.com/vercel/next.js/issues/86101)
- Turbopack: remove global\_information struct: [#&#8203;86089](https://github.com/vercel/next.js/issues/86089)
- Turbopack: add task\_id\_details feature: [#&#8203;84970](https://github.com/vercel/next.js/issues/84970)
- Turbopack: Refactor output assets to allow to lazy compute output assets: [#&#8203;85753](https://github.com/vercel/next.js/issues/85753)
- Un-skip tests in prefetch-runtime.test.ts: [#&#8203;86097](https://github.com/vercel/next.js/issues/86097)
- Turbopack: add flags to AvailabilityInfo: [#&#8203;85771](https://github.com/vercel/next.js/issues/85771)
- Turbopack: apply side effects false removal on all module types: [#&#8203;86133](https://github.com/vercel/next.js/issues/86133)
- \[build] Remove `layers` experiment flag from next-runtime webpack config: [#&#8203;86126](https://github.com/vercel/next.js/issues/86126)
- Turbopack: only enable nested async availability in production: [#&#8203;85728](https://github.com/vercel/next.js/issues/85728)
- \[turbopack] Remove `Clone` from `Effect`: [#&#8203;86110](https://github.com/vercel/next.js/issues/86110)
- Turbopack: mark more modules as side effect free: [#&#8203;86136](https://github.com/vercel/next.js/issues/86136)
- \[test] Use `next-data-api-endpoint` for Middleware HTTP method tests: [#&#8203;86157](https://github.com/vercel/next.js/issues/86157)
- fix broken extend implementation on DynamicStorage: [#&#8203;86204](https://github.com/vercel/next.js/issues/86204)
- Turbopack: avoid creating another async chunk loader where there is already one available: [#&#8203;85817](https://github.com/vercel/next.js/issues/85817)
- Fix typo on 03-layouts-and-pages.mdx: [#&#8203;86186](https://github.com/vercel/next.js/issues/86186)
- Update 14-metadata-and-og-images.mdx: [#&#8203;86198](https://github.com/vercel/next.js/issues/86198)
- \[turbopack] Model `||`, `&&`, and `??` as control flow operators: [#&#8203;85837](https://github.com/vercel/next.js/issues/85837)
- chore: remove empty docs folder: [#&#8203;86216](https://github.com/vercel/next.js/issues/86216)
- docs: cacheHandlers use object instead of class: [#&#8203;86022](https://github.com/vercel/next.js/issues/86022)
- docs: follow up to getting started CC and use-cache API ref: [#&#8203;85582](https://github.com/vercel/next.js/issues/85582)
- Turbopack: use batch insert to make dependencies outdated: [#&#8203;85625](https://github.com/vercel/next.js/issues/85625)
- Update Rspack production test manifest: [#&#8203;86233](https://github.com/vercel/next.js/issues/86233)
- \[test] Update snapshots: [#&#8203;86288](https://github.com/vercel/next.js/issues/86288)
- \[test] Add failing test for `useActionState` with `'use cache'`: [#&#8203;86292](https://github.com/vercel/next.js/issues/86292)
- \[test] Disable flaky prefetching.stale-times test: [#&#8203;86299](https://github.com/vercel/next.js/issues/86299)
- Update Rspack production test manifest: [#&#8203;86283](https://github.com/vercel/next.js/issues/86283)
- Replace tuples with better suited data structures for server references: [#&#8203;86294](https://github.com/vercel/next.js/issues/86294)
- create-next-app: Add `ignoreScripts` for `unrs-resolver` on bun: [#&#8203;86324](https://github.com/vercel/next.js/issues/86324)
- Turbopack: bundle-analyzer need to avoid using the local next.js build: [#&#8203;86258](https://github.com/vercel/next.js/issues/86258)
- Turbopack: remove unused method: [#&#8203;86259](https://github.com/vercel/next.js/issues/86259)
- Turbopack: disable input source maps for analyze: [#&#8203;86341](https://github.com/vercel/next.js/issues/86341)
- Turbopack: perf: Fix unused argument filtering optimization in turbo-tasks for `self` arguments: [#&#8203;86231](https://github.com/vercel/next.js/issues/86231)
- Turbopack: Remove dead `turbo_tasks::persisted_graph` module: [#&#8203;86329](https://github.com/vercel/next.js/issues/86329)
- \[turbopack] Refactor the analyzer to fix a few issues and prepare to split it up: [#&#8203;86265](https://github.com/vercel/next.js/issues/86265)
- next-analyze: improve network error visuals: [#&#8203;86222](https://github.com/vercel/next.js/issues/86222)
- Turbopack: test if unused self arguments are filtered: [#&#8203;86353](https://github.com/vercel/next.js/issues/86353)
- Upgrade React from `0972e239-20251118` to `8ac5f4eb-20251119`: [#&#8203;86351](https://github.com/vercel/next.js/issues/86351)
- Update Rspack development test manifest: [#&#8203;86332](https://github.com/vercel/next.js/issues/86332)
- Turbopack: refactor tuple variant into struct: [#&#8203;86374](https://github.com/vercel/next.js/issues/86374)
- Migrate to VisitMut: [#&#8203;86347](https://github.com/vercel/next.js/issues/86347)
- Turbopack: decode url encoding and relative paths in source maps: [#&#8203;86342](https://github.com/vercel/next.js/issues/86342)
- Turbopack: remove Asset supertrait from Module trait. Modules don't have content: [#&#8203;86339](https://github.com/vercel/next.js/issues/86339)
- docs: csr-bailout debugging: [#&#8203;86359](https://github.com/vercel/next.js/issues/86359)
- docs: serverless deploy feedback: [#&#8203;86357](https://github.com/vercel/next.js/issues/86357)
- Bump swc to 48: [#&#8203;86240](https://github.com/vercel/next.js/issues/86240)
- docs: cacheLife feedback: [#&#8203;86128](https://github.com/vercel/next.js/issues/86128)
- Update Next.js auth docs examples: [#&#8203;86361](https://github.com/vercel/next.js/issues/86361)
- Update Rspack production test manifest: [#&#8203;86369](https://github.com/vercel/next.js/issues/86369)
- Revert "Turbopack: remove Asset supertrait from Module trait. Modules don't have content": [#&#8203;86415](https://github.com/vercel/next.js/issues/86415)
- Revert "\[turbopack] Model `||`, `&&`, and `??` as control flow operators ([#&#8203;85837](https://github.com/vercel/next.js/issues/85837))": [#&#8203;86432](https://github.com/vercel/next.js/issues/86432)
- Turbopack: avoid embedding deployment ID into the turbopack runtime: [#&#8203;86370](https://github.com/vercel/next.js/issues/86370)
- Revert "Turbopack: JsAnalyzer parse AssignExpr ([#&#8203;83962](https://github.com/vercel/next.js/issues/83962))": [#&#8203;86420](https://github.com/vercel/next.js/issues/86420)
- \[test] Let pending test finish on abort: [#&#8203;86307](https://github.com/vercel/next.js/issues/86307)
- Fix compilation of exported server functions: [#&#8203;86296](https://github.com/vercel/next.js/issues/86296)
- docs: fix getInitialProps execution behavior during navigation: [#&#8203;86387](https://github.com/vercel/next.js/issues/86387)
- Turbopack: bail instead of panic: [#&#8203;86470](https://github.com/vercel/next.js/issues/86470)
- Update Rspack production test manifest: [#&#8203;86457](https://github.com/vercel/next.js/issues/86457)
- Fix typed routes test expectations: [#&#8203;86487](https://github.com/vercel/next.js/issues/86487)
- Add test for external middleware rewrite with changed headers: [#&#8203;49606](https://github.com/vercel/next.js/issues/49606)
- Fix grammar and typos in typescript doc: [#&#8203;86513](https://github.com/vercel/next.js/issues/86513)
- Skip filesystem-cache.test.ts test with Webpack: [#&#8203;86506](https://github.com/vercel/next.js/issues/86506)
- Migrate required-server-files-ssr-404 to be isolated: [#&#8203;86515](https://github.com/vercel/next.js/issues/86515)
- Turbopack: fixup route hashes generation: [#&#8203;86502](https://github.com/vercel/next.js/issues/86502)
- Bump swc: [#&#8203;86496](https://github.com/vercel/next.js/issues/86496)
- Try to improve typed-routes test flakyness: [#&#8203;86512](https://github.com/vercel/next.js/issues/86512)
- Use retry in tests instead of requesting page: [#&#8203;86535](https://github.com/vercel/next.js/issues/86535)
- Turbopack: Use `Debug` instead of `Display` for `ValueDebugFormat` impl on `RcStr`: [#&#8203;86522](https://github.com/vercel/next.js/issues/86522)
- \[test] Add test fixture for runtime error in `'use cache'`: [#&#8203;86499](https://github.com/vercel/next.js/issues/86499)
- Migrate app-dir-export test to be isolated: [#&#8203;86534](https://github.com/vercel/next.js/issues/86534)
- Turbopack: write symlinks to access transitive `serverExternalPackages`
- Fix no-double-tailwind-execution flake: [#&#8203;86549](https://github.com/vercel/next.js/issues/86549)
- Update Rspack development test manifest: [#&#8203;86531](https://github.com/vercel/next.js/issues/86531)
- Turbopack: slightly fewer turbo tasks calls during resolving: [#&#8203;86542](https://github.com/vercel/next.js/issues/86542)
- Turbopack: remove OptionStringifiedSourceMap: [#&#8203;86547](https://github.com/vercel/next.js/issues/86547)
- Turbopack: Simplify the return type of `FileSystemPath::try_join`: [#&#8203;86523](https://github.com/vercel/next.js/issues/86523)
- Turbopack: remove into() which cells internally: [#&#8203;86548](https://github.com/vercel/next.js/issues/86548)
- docs: fix cache component doc grammar: [#&#8203;86563](https://github.com/vercel/next.js/issues/86563)
- fix(turbopack): Disable ES3 transforms from preset-env: [#&#8203;86532](https://github.com/vercel/next.js/issues/86532)
- Don't run bundle-analyzer dev script with turborepo: [#&#8203;86586](https://github.com/vercel/next.js/issues/86586)
- \[turbopack] Support traversing the graph in reverse order: [#&#8203;86427](https://github.com/vercel/next.js/issues/86427)
- Update Rspack development test manifest: [#&#8203;86657](https://github.com/vercel/next.js/issues/86657)
- Update Rspack production test manifest: [#&#8203;86658](https://github.com/vercel/next.js/issues/86658)
- \[test] Deflake `use-cache-router-handler-only` in deploy tests: [#&#8203;86678](https://github.com/vercel/next.js/issues/86678)
- Allow exporting object and array literals in `'use cache'` files again: [#&#8203;86655](https://github.com/vercel/next.js/issues/86655)
- Turbopack: use tracing context for config watching: [#&#8203;86576](https://github.com/vercel/next.js/issues/86576)
- Turbopack: align chunk loading error name: [#&#8203;86593](https://github.com/vercel/next.js/issues/86593)
- docs: update prefix two-digit number in routing section: [#&#8203;77758](https://github.com/vercel/next.js/issues/77758)
- \[bundle-analyzer] Disable revalidateOnFocus and revalidateOnReconnect: [#&#8203;86688](https://github.com/vercel/next.js/issues/86688)
- Turbopack: improve eventual consistency: [#&#8203;86682](https://github.com/vercel/next.js/issues/86682)
- \[test] Enable Playwright traces in deploy tests: [#&#8203;86683](https://github.com/vercel/next.js/issues/86683)
- \[test] Deflake `app-dir-prevent-304-caching`: [#&#8203;86693](https://github.com/vercel/next.js/issues/86693)
- Bump to swc 49: [#&#8203;86689](https://github.com/vercel/next.js/issues/86689)
- Turbopack: process.env.TURBOPACK should be a string: [#&#8203;86680](https://github.com/vercel/next.js/issues/86680)
- Turbopack: arrange empty space in trace viewer correctly: [#&#8203;86612](https://github.com/vercel/next.js/issues/86612)
- \[turbopack] Remove the docs on the bundle size gap: [#&#8203;86707](https://github.com/vercel/next.js/issues/86707)
- \[test] Improve app-basepath assertion error: [#&#8203;86725](https://github.com/vercel/next.js/issues/86725)
- fix(next-custom-transforms): preserve all declarators in multi-declarator export statements: [#&#8203;86552](https://github.com/vercel/next.js/issues/86552)
- Turbopack: avoid snapshotting while continuously idle, fix spans : [#&#8203;86611](https://github.com/vercel/next.js/issues/86611)
- Turbopack: fix fuzz command: [#&#8203;86732](https://github.com/vercel/next.js/issues/86732)
- \[test] Ensure CI uses configured Node.js version: [#&#8203;86720](https://github.com/vercel/next.js/issues/86720)
- Turbopack: improve eventual consistency: [#&#8203;86724](https://github.com/vercel/next.js/issues/86724)
- Update Rspack development test manifest: [#&#8203;86715](https://github.com/vercel/next.js/issues/86715)
- Update Rspack production test manifest: [#&#8203;86716](https://github.com/vercel/next.js/issues/86716)
- Turbopack: don't read binding\_usage in dev: [#&#8203;86722](https://github.com/vercel/next.js/issues/86722)
- \[test] app-basepath less agressive request reading: [#&#8203;86740](https://github.com/vercel/next.js/issues/86740)
- Stop apps/bundle-analyzer/next-env.d.ts from changing: [#&#8203;86743](https://github.com/vercel/next.js/issues/86743)
- \[turbopack] Move turbo-tasks-testing to dev-dependencies: [#&#8203;86745](https://github.com/vercel/next.js/issues/86745)
- Turbopack: chore: Remove re-exports from turbopack crate: [#&#8203;85791](https://github.com/vercel/next.js/issues/85791)
- Turbopack: Split Dirty into Dirtyness and CleanInSession: [#&#8203;86070](https://github.com/vercel/next.js/issues/86070)
- Turbopack: remove DirtyContainerCount from dirty\_container\_update: [#&#8203;86071](https://github.com/vercel/next.js/issues/86071)
- Turbopack: fix double deployment id in web workers: [#&#8203;86754](https://github.com/vercel/next.js/issues/86754)
- Turbopack: Split AggregatedDirtyContainer: [#&#8203;86606](https://github.com/vercel/next.js/issues/86606)
- Turbopack: Split AggregatedDirtyContainerCount: [#&#8203;86072](https://github.com/vercel/next.js/issues/86072)
- Turbopack: Avoid that session-dependent tasks write to DB on every build: [#&#8203;86068](https://github.com/vercel/next.js/issues/86068)
- Turbopack: Use TransientCellData for non-serializable cells: [#&#8203;86069](https://github.com/vercel/next.js/issues/86069)
- Fix typo in fetching data documentation: [#&#8203;86758](https://github.com/vercel/next.js/issues/86758)
- Upgrade React from `fd524fe0-20251121` to `7dc903cd-20251203`: [#&#8203;86771](https://github.com/vercel/next.js/issues/86771)
- Turbopack: use match consistently in macro: [#&#8203;86767](https://github.com/vercel/next.js/issues/86767)
- setup release branch
- Revert "feat(breaking): Hard Deprecate PPR Configuration ([#&#8203;84280](https://github.com/vercel/next.js/issues/84280))"
- Update React Version
- update tag
- update version script
- docs: cookie clear and has alignment: [#&#8203;86788](https://github.com/vercel/next.js/issues/86788)
- \[test] fix missing nft file: [#&#8203;86817](https://github.com/vercel/next.js/issues/86817)
- Remove unused `vitest` from dependency tree: [#&#8203;86821](https://github.com/vercel/next.js/issues/86821)
- Update installed Next.js: [#&#8203;86822](https://github.com/vercel/next.js/issues/86822)
- Remove Vercel mention from Next.js docs: [#&#8203;86801](https://github.com/vercel/next.js/issues/86801)
- Remove unused `vite` from dependency tree: [#&#8203;86824](https://github.com/vercel/next.js/issues/86824)
- Update Rspack development test manifest: [#&#8203;86802](https://github.com/vercel/next.js/issues/86802)
- Turbopack: bincode: Add crate with bincode serialization helpers: [#&#8203;85878](https://github.com/vercel/next.js/issues/85878)
- Turbopack: perf: Avoid clones in RopeReader: [#&#8203;86708](https://github.com/vercel/next.js/issues/86708)
- Add Firebase App Hosting to the deployment guide: [#&#8203;86832](https://github.com/vercel/next.js/issues/86832)
- Turbopack: bincode: Add custom bincode reader/writer implementations: [#&#8203;86632](https://github.com/vercel/next.js/issues/86632)
- Turbopack: bincode: Add traits for types that require `TurboBincodeEncoder` or `TurboBincodeDecoder`: [#&#8203;86633](https://github.com/vercel/next.js/issues/86633)
- Turbopack: bincode: Implement bincode Encode/Decode traits on all turbo task values: [#&#8203;85580](https://github.com/vercel/next.js/issues/85580)
- Turbopack: bincode: Add bincode encode/decode wrappers for `serde_json::Value` when stored in a cell: [#&#8203;86749](https://github.com/vercel/next.js/issues/86749)
- Turbopack: bincode: Use bincode to store the contents of value cells: [#&#8203;86338](https://github.com/vercel/next.js/issues/86338)
- \[test] Fix external rewrite target URL origin: [#&#8203;86863](https://github.com/vercel/next.js/issues/86863)
- Turbopack: correctly overwrite existing symlinks: [#&#8203;86808](https://github.com/vercel/next.js/issues/86808)
- Turbopack: fix race condition when invalidating: [#&#8203;86859](https://github.com/vercel/next.js/issues/86859)
- Turbopack: handle non-serializable cell content for cell update operation: [#&#8203;86861](https://github.com/vercel/next.js/issues/86861)
- Turbopack: bincode: Migrate TaskInput serialization to bincode: [#&#8203;86631](https://github.com/vercel/next.js/issues/86631)
- Add gitignore note for next-env.d.ts: [#&#8203;86809](https://github.com/vercel/next.js/issues/86809)
- docs: fix broken examples link: [#&#8203;86916](https://github.com/vercel/next.js/issues/86916)
- chore: update rspack binding to 1.6.7: [#&#8203;87058](https://github.com/vercel/next.js/issues/87058)
- Update Rspack production test manifest: [#&#8203;87051](https://github.com/vercel/next.js/issues/87051)
- docs: dynamic routes w/ gsP: [#&#8203;86402](https://github.com/vercel/next.js/issues/86402)
- Update self-hosting.mdx: [#&#8203;87109](https://github.com/vercel/next.js/issues/87109)
- Turbopack: Add a custom serde\_self\_describing Serializer/Deserializer: [#&#8203;86885](https://github.com/vercel/next.js/issues/86885)
- Turbopack: bincode: Remove automatic serde derives from `#[turbo_tasks::value]` macro: [#&#8203;86634](https://github.com/vercel/next.js/issues/86634)
- Turbopack: Add `turbo-frozenmap` crate with `FrozenMap` and `FrozenSet` implementations: [#&#8203;87042](https://github.com/vercel/next.js/issues/87042)
- \[turbopack] Rename is\_marked\_as\_side\_effect\_free to side\_effects and return ModuleSideEffects enum: [#&#8203;87102](https://github.com/vercel/next.js/issues/87102)
- Turbopack: Switch RequestKey's `conditions` field from BTreeMap to FrozenMap: [#&#8203;87099](https://github.com/vercel/next.js/issues/87099)
- Turbopack: Remove remaining dead implementations of serde traits: [#&#8203;86910](https://github.com/vercel/next.js/issues/86910)
- \[turbopack\[ Use a frozenset in ImportUsage: [#&#8203;87118](https://github.com/vercel/next.js/issues/87118)
- \[turbopack] Rename graph traversal algorithms: [#&#8203;87119](https://github.com/vercel/next.js/issues/87119)
- Turbopack: Inline uses of the SliceMap type alias: [#&#8203;87122](https://github.com/vercel/next.js/issues/87122)
- \[ci] Bump Lerna to 5.x: [#&#8203;87180](https://github.com/vercel/next.js/issues/87180)
- \[ci] Downgrade Lerna to 4.0.0: [#&#8203;87187](https://github.com/vercel/next.js/issues/87187)
- \[ci] Bump Lerna to latest: [#&#8203;87188](https://github.com/vercel/next.js/issues/87188)
- \[ci] Ensure build-and-deploy runs on pushes: [#&#8203;87207](https://github.com/vercel/next.js/issues/87207)
- \[ci] Fix build-and-deploy
- \[ci] Stop running build\_and\_deploy on tag pushes: [#&#8203;87176](https://github.com/vercel/next.js/issues/87176)
- \[ci] Ensure build-and-deploy run on path-like branches
- \[ci] Cancel in-progress pull\_request\_stats with native concurrency features: [#&#8203;87190](https://github.com/vercel/next.js/issues/87190)
- \[ci] Cancel in-progress build\_and\_deploy for PRs: [#&#8203;87191](https://github.com/vercel/next.js/issues/87191)
- \[ci] Ensure runners use configured Node.js version: [#&#8203;87183](https://github.com/vercel/next.js/issues/87183)
- chore: update next-rspack rust toolchain: [#&#8203;87220](https://github.com/vercel/next.js/issues/87220)
- bundle-analyzer: Show compressed sizes: [#&#8203;87093](https://github.com/vercel/next.js/issues/87093)
- chore: update [@&#8203;next/rspack-binding](https://github.com/next/rspack-binding) version: [#&#8203;87223](https://github.com/vercel/next.js/issues/87223)
- \[ci] Stop running explicit build when creating release: [#&#8203;87212](https://github.com/vercel/next.js/issues/87212)
- \[ci] Stop using restore-keys for package manager stores: [#&#8203;87209](https://github.com/vercel/next.js/issues/87209)
- chore(turbo-tasks-fs): remove duplicated value\_to\_string of FileSystemPath: [#&#8203;87227](https://github.com/vercel/next.js/issues/87227)
- \[ci] Fix releaseStats in build-and-deploy: [#&#8203;87235](https://github.com/vercel/next.js/issues/87235)
- Update turbopack team members: [#&#8203;87231](https://github.com/vercel/next.js/issues/87231)
- \[ci] Only install Playwright dependencies for used browser: [#&#8203;87002](https://github.com/vercel/next.js/issues/87002)
- \[turbopack] Break ties using a counter instead of node index: [#&#8203;87252](https://github.com/vercel/next.js/issues/87252)
- bundle-analyzer: use <Select> and multiselect for top bar: [#&#8203;87254](https://github.com/vercel/next.js/issues/87254)
- \[test] Don't use `request.allHeaders()` in sync `page.on()` callbacks: [#&#8203;86751](https://github.com/vercel/next.js/issues/86751)
- test: fix actions deployment tests: [#&#8203;87279](https://github.com/vercel/next.js/issues/87279)
- bundle analyzer: prevent flashes and stuck empty canvases on resize: [#&#8203;87289](https://github.com/vercel/next.js/issues/87289)
- Cross link to the demo from the bundle analyzer: [#&#8203;87290](https://github.com/vercel/next.js/issues/87290)
- bundle analyzer: remove geist font in favor of system ui fonts: [#&#8203;87292](https://github.com/vercel/next.js/issues/87292)

##### Credits

Huge thanks to [@&#8203;kdy1](https://github.com/kdy1), [@&#8203;eps1lon](https://github.com/eps1lon), [@&#8203;SyMind](https://github.com/SyMind), [@&#8203;bgw](https://github.com/bgw), [@&#8203;swarnava](https://github.com/swarnava), [@&#8203;devjiwonchoi](https://github.com/devjiwonchoi), [@&#8203;ztanner](https://github.com/ztanner), [@&#8203;ijjk](https://github.com/ijjk), [@&#8203;huozhi](https://github.com/huozhi), [@&#8203;icyJoseph](https://github.com/icyJoseph), [@&#8203;acdlite](https://github.com/acdlite), [@&#8203;unstubbable](https://github.com/unstubbable), [@&#8203;gnoff](https://github.com/gnoff), [@&#8203;gusfune](https://github.com/gusfune), [@&#8203;vercel-release-bot](https://github.com/vercel-release-bot), [@&#8203;lukesandberg](https://github.com/lukesandberg), [@&#8203;sokra](https://github.com/sokra), [@&#8203;hayes](https://github.com/hayes), [@&#8203;shuding](https://github.com/shuding), [@&#8203;wyattjoh](https://github.com/wyattjoh), [@&#8203;marjan-ahmed](https://github.com/marjan-ahmed), [@&#8203;timneutkens](https://github.com/timneutkens), [@&#8203;ajstrongdev](https://github.com/ajstrongdev), [@&#8203;zigang93](https://github.com/zigang93), [@&#8203;mischnic](https://github.com/mischnic), [@&#8203;Nayeem-XTREME](https://github.com/Nayeem-XTREME), [@&#8203;hamirmahal](https://github.com/hamirmahal), [@&#8203;eli0shin](https://github.com/eli0shin), [@&#8203;tessamero](https://github.com/tessamero), [@&#8203;gaojude](https://github.com/gaojude), [@&#8203;jamesdaniels](https://github.com/jamesdaniels), [@&#8203;georgesfarah](https://github.com/georgesfarah), [@&#8203;timeyoutakeit](https://github.com/timeyoutakeit), [@&#8203;sequencerr](https://github.com/sequencerr), [@&#8203;Strernd](https://github.com/Strernd), [@&#8203;lucasadrianof](https://github.com/lucasadrianof), [@&#8203;wbinnssmith](https://github.com/wbinnssmith), [@&#8203;hamidreza-nateghi](https://github.com/hamidreza-nateghi), [@&#8203;jokokoloko](https://github.com/jokokoloko), [@&#8203;dijonmusters](https://github.com/dijonmusters), [@&#8203;H01001000](https://github.com/H01001000), [@&#8203;xusd320](https://github.com/xusd320), [@&#8203;lubieowoce](https://github.com/lubieowoce), [@&#8203;KaziMahbuburRahman](https://github.com/KaziMahbuburRahman), [@&#8203;zhiyanzhaijie](https://github.com/zhiyanzhaijie), [@&#8203;feedthejim](https://github.com/feedthejim), [@&#8203;that-one-arab](https://github.com/that-one-arab), [@&#8203;JamBalaya56562](https://github.com/JamBalaya56562), [@&#8203;shrink](https://github.com/shrink), [@&#8203;florianliebig](https://github.com/florianliebig), [@&#8203;allenzhou101](https://github.com/allenzhou101), [@&#8203;benmerckx](https://github.com/benmerckx), [@&#8203;ymc9](https://github.com/ymc9), [@&#8203;Marukome0743](https://github.com/Marukome0743), [@&#8203;pyrytakala](https://github.com/pyrytakala), [@&#8203;danpeleg4](https://github.com/danpeleg4), [@&#8203;gaearon](https://github.com/gaearon), [@&#8203;styfle](https://github.com/styfle), [@&#8203;jhuleatt](https://github.com/jhuleatt), [@&#8203;muhammadsyaddad](https://github.com/muhammadsyaddad), [@&#8203;roelvan](https://github.com/roelvan), and [@&#8203;SukkaW](https://github.com/SukkaW) for helping!

### [`v16.0.10`](https://github.com/vercel/next.js/releases/tag/v16.0.10)

[Compare Source](https://github.com/vercel/next.js/compare/v16.0.9...v16.0.10)

Please see the [Next.js Security Update](https://nextjs.org/blog/security-update-2025-12-11) for information about this security patch.

### [`v16.0.9`](https://github.com/vercel/next.js/compare/v16.0.8...v16.0.9)

[Compare Source](https://github.com/vercel/next.js/compare/v16.0.8...v16.0.9)

### [`v16.0.8`](https://github.com/vercel/next.js/releases/tag/v16.0.8)

[Compare Source](https://github.com/vercel/next.js/compare/v16.0.7...v16.0.8)

> \[!NOTE]
> This release is backporting bug fixes. It does **not** include all pending features/changes on canary.

##### Core Changes

- Update react version in cna templates ([#&#8203;86950](https://github.com/vercel/next.js/issues/86950))

##### Credits

Huge thanks to [@&#8203;huozhi](https://github.com/huozhi) for helping!

</details>

---

### Configuration

📅 **Schedule**: Branch creation - At any time (no schedule defined), A…
@github-actions github-actions bot added the locked label Jan 1, 2026
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Jan 1, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants