Skip to content

Conversation

mischnic
Copy link
Contributor

@mischnic mischnic commented Oct 18, 2025

preallocate hashmaps

@ijjk ijjk added created-by: Turbopack team PRs by the Turbopack team. Turbopack Related to Turbopack with Next.js. labels Oct 18, 2025
@mischnic mischnic marked this pull request as ready for review October 18, 2025 19:44
Copy link
Contributor Author

mischnic commented Oct 18, 2025

This stack of pull requests is managed by Graphite. Learn more about stacking.

@ijjk
Copy link
Member

ijjk commented Oct 18, 2025

Stats from current PR

Default Build (Increase detected ⚠️)
General
vercel/next.js canary vercel/next.js mischnic/parallel-merged-modules Change
buildDuration 20.2s 18.1s N/A
buildDurationCached 16.9s 13.5s N/A
nodeModulesSize 450 MB 450 MB
nextStartRea..uration (ms) 728ms 703ms N/A
Client Bundles (main, webpack)
vercel/next.js canary vercel/next.js mischnic/parallel-merged-modules Change
1916.HASH.js gzip 169 B 169 B
4498-HASH.js gzip 53.8 kB 53.8 kB N/A
9225-HASH.js gzip 5.32 kB 5.32 kB N/A
c57d0559-HASH.js gzip 62.1 kB 62.1 kB N/A
framework-HASH.js gzip 59.8 kB 59.8 kB
main-app-HASH.js gzip 257 B 258 B N/A
main-HASH.js gzip 39.5 kB 39.5 kB N/A
webpack-HASH.js gzip 1.69 kB 1.69 kB N/A
Overall change 60 kB 60 kB
Legacy Client Bundles (polyfills)
vercel/next.js canary vercel/next.js mischnic/parallel-merged-modules 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 vercel/next.js mischnic/parallel-merged-modules Change
_app-HASH.js gzip 193 B 193 B
_error-HASH.js gzip 182 B 182 B
css-HASH.js gzip 334 B 334 B
dynamic-HASH.js gzip 1.8 kB 1.8 kB N/A
edge-ssr-HASH.js gzip 256 B 255 B N/A
head-HASH.js gzip 350 B 352 B N/A
hooks-HASH.js gzip 384 B 381 B N/A
image-HASH.js gzip 4.79 kB 4.79 kB N/A
index-HASH.js gzip 259 B 260 B N/A
link-HASH.js gzip 2.5 kB 2.51 kB N/A
routerDirect..HASH.js gzip 318 B 317 B N/A
script-HASH.js gzip 386 B 386 B
withRouter-HASH.js gzip 315 B 315 B
1afbb74e6ecf..834.css gzip 106 B 106 B
Overall change 1.52 kB 1.52 kB
Client Build Manifests
vercel/next.js canary vercel/next.js mischnic/parallel-merged-modules Change
_buildManifest.js gzip 716 B 719 B N/A
Overall change 0 B 0 B
Rendered Page Sizes
vercel/next.js canary vercel/next.js mischnic/parallel-merged-modules Change
index.html gzip 522 B 524 B N/A
link.html gzip 537 B 538 B N/A
withRouter.html gzip 519 B 520 B N/A
Overall change 0 B 0 B
Edge SSR bundle Size Overall increase ⚠️
vercel/next.js canary vercel/next.js mischnic/parallel-merged-modules Change
edge-ssr.js gzip 128 kB 128 kB N/A
page.js gzip 259 kB 259 kB ⚠️ +188 B
Overall change 259 kB 259 kB ⚠️ +188 B
Middleware size
vercel/next.js canary vercel/next.js mischnic/parallel-merged-modules Change
middleware-b..fest.js gzip 637 B 643 B N/A
middleware-r..fest.js gzip 156 B 157 B N/A
middleware.js gzip 33.5 kB 33.1 kB N/A
edge-runtime..pack.js gzip 846 B 846 B
Overall change 846 B 846 B
Next Runtimes
vercel/next.js canary vercel/next.js mischnic/parallel-merged-modules Change
app-page-exp...dev.js gzip 291 kB 291 kB N/A
app-page-exp..prod.js gzip 160 kB 160 kB
app-page-tur...dev.js gzip 291 kB 291 kB N/A
app-page-tur..prod.js gzip 160 kB 160 kB
app-page-tur...dev.js gzip 287 kB 287 kB N/A
app-page-tur..prod.js gzip 158 kB 158 kB
app-page.run...dev.js gzip 287 kB 287 kB
app-page.run..prod.js gzip 158 kB 158 kB
app-route-ex...dev.js gzip 69.9 kB 69.9 kB
app-route-ex..prod.js gzip 48.7 kB 48.7 kB
app-route-tu...dev.js gzip 69.9 kB 69.9 kB
app-route-tu..prod.js gzip 48.7 kB 48.7 kB
app-route-tu...dev.js gzip 69.5 kB 69.5 kB
app-route-tu..prod.js gzip 48.5 kB 48.5 kB
app-route.ru...dev.js gzip 69.4 kB 69.4 kB
app-route.ru..prod.js gzip 48.5 kB 48.5 kB
dist_client_...dev.js gzip 326 B 326 B
dist_client_...dev.js gzip 328 B 328 B
dist_client_...dev.js gzip 320 B 320 B
dist_client_...dev.js gzip 318 B 318 B
pages-api-tu...dev.js gzip 42 kB 42 kB
pages-api-tu..prod.js gzip 32 kB 32 kB
pages-api.ru...dev.js gzip 42 kB 42 kB
pages-api.ru..prod.js gzip 32 kB 32 kB
pages-turbo....dev.js gzip 51.8 kB 51.8 kB
pages-turbo...prod.js gzip 39.2 kB 39.2 kB
pages.runtim...dev.js gzip 51.8 kB 51.8 kB
pages.runtim..prod.js gzip 39.2 kB 39.2 kB
server.runti..prod.js gzip 78.2 kB 78.2 kB
Overall change 1.81 MB 1.81 MB
build cache Overall increase ⚠️
vercel/next.js canary vercel/next.js mischnic/parallel-merged-modules Change
0.pack gzip 3.14 MB 3.14 MB N/A
index.pack gzip 93.6 kB 94.3 kB ⚠️ +751 B
Overall change 93.6 kB 94.3 kB ⚠️ +751 B
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
failed to diff
Diff for css-HASH.js
@@ -1,7 +1,31 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [9813],
   {
-    /***/ 3593: /***/ (
+    /***/ 5832: /***/ (module) => {
+      // extracted by mini-css-extract-plugin
+      module.exports = { helloWorld: "css_helloWorld__aUdUq" };
+
+      /***/
+    },
+
+    /***/ 6471: /***/ (
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/css",
+        function () {
+          return __webpack_require__(7839);
+        },
+      ]);
+      if (false) {
+      }
+
+      /***/
+    },
+
+    /***/ 7839: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -15,7 +39,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(1503);
       /* harmony import */ var _css_module_css__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(7634);
+        __webpack_require__(5832);
       /* harmony import */ var _css_module_css__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           _css_module_css__WEBPACK_IMPORTED_MODULE_1__
@@ -34,37 +58,13 @@
 
       /***/
     },
-
-    /***/ 4569: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/css",
-        function () {
-          return __webpack_require__(3593);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
-
-    /***/ 7634: /***/ (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__(4569)
+      __webpack_exec__(6471)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for dynamic-HASH.js
@@ -1,24 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [2291],
   {
-    /***/ 1033: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/dynamic",
-        function () {
-          return __webpack_require__(2283);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
-
-    /***/ 2283: /***/ (
+    /***/ 133: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -33,7 +16,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(1503);
       /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(4939);
+        __webpack_require__(7514);
       /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           next_dynamic__WEBPACK_IMPORTED_MODULE_1__
@@ -42,12 +25,12 @@
       const DynamicHello = next_dynamic__WEBPACK_IMPORTED_MODULE_1___default()(
         () =>
           __webpack_require__
-            .e(/* import() */ 1916)
-            .then(__webpack_require__.bind(__webpack_require__, 1916))
+            .e(/* import() */ 3862)
+            .then(__webpack_require__.bind(__webpack_require__, 3862))
             .then((mod) => mod.Hello),
         {
           loadableGenerated: {
-            webpack: () => [/*require.resolve*/ 1916],
+            webpack: () => [/*require.resolve*/ 3862],
           },
         }
       );
@@ -74,17 +57,24 @@
       /***/
     },
 
-    /***/ 4939: /***/ (
-      module,
+    /***/ 431: /***/ (
+      __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
     ) => {
-      module.exports = __webpack_require__(5121);
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/dynamic",
+        function () {
+          return __webpack_require__(133);
+        },
+      ]);
+      if (false) {
+      }
 
       /***/
     },
 
-    /***/ 5121: /***/ (module, exports, __webpack_require__) => {
+    /***/ 1709: /***/ (module, exports, __webpack_require__) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -117,7 +107,7 @@
         __webpack_require__(2223)
       );
       const _loadablesharedruntime = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(7622)
+        __webpack_require__(2522)
       );
       const isServerSide = "object" === "undefined";
       // Normalize loader to return the module as form { default: Component } for `React.lazy`.
@@ -217,7 +207,7 @@
       /***/
     },
 
-    /***/ 5160: /***/ (
+    /***/ 2463: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -244,7 +234,7 @@
       /***/
     },
 
-    /***/ 7622: /***/ (
+    /***/ 2522: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -286,7 +276,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
       const _react = /*#__PURE__*/ _interop_require_default._(
         __webpack_require__(2223)
       );
-      const _loadablecontextsharedruntime = __webpack_require__(5160);
+      const _loadablecontextsharedruntime = __webpack_require__(2463);
       function resolve(obj) {
         return obj && obj.default ? obj.default : obj;
       }
@@ -518,13 +508,23 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
 
       /***/
     },
+
+    /***/ 7514: /***/ (
+      module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      module.exports = __webpack_require__(1709);
+
+      /***/
+    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(1033)
+      __webpack_exec__(431)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for hooks-HASH.js
@@ -1,24 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [9804],
   {
-    /***/ 1679: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/hooks",
-        function () {
-          return __webpack_require__(9198);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
-
-    /***/ 9198: /***/ (
+    /***/ 2592: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -76,13 +59,30 @@
 
       /***/
     },
+
+    /***/ 3925: /***/ (
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/hooks",
+        function () {
+          return __webpack_require__(2592);
+        },
+      ]);
+      if (false) {
+      }
+
+      /***/
+    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(1679)
+      __webpack_exec__(3925)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for image-HASH.js

Diff too large to display

Diff for index-HASH.js
@@ -1,7 +1,24 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [3332],
   {
-    /***/ 3454: /***/ (
+    /***/ 8431: /***/ (
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/",
+        function () {
+          return __webpack_require__(8972);
+        },
+      ]);
+      if (false) {
+      }
+
+      /***/
+    },
+
+    /***/ 8972: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -19,30 +36,13 @@
 
       /***/
     },
-
-    /***/ 9241: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/",
-        function () {
-          return __webpack_require__(3454);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(9241)
+      __webpack_exec__(8431)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for link-HASH.js
@@ -1,26 +1,24 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [4672],
   {
-    /***/ 1970: /***/ (__unused_webpack_module, exports) => {
-      "use strict";
-
-      Object.defineProperty(exports, "__esModule", {
-        value: true,
-      });
-      Object.defineProperty(exports, "errorOnce", {
-        enumerable: true,
-        get: function () {
-          return errorOnce;
+    /***/ 2025: /***/ (
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/link",
+        function () {
+          return __webpack_require__(3072);
         },
-      });
-      let errorOnce = (_) => {};
+      ]);
       if (false) {
-      } //# sourceMappingURL=error-once.js.map
+      }
 
       /***/
     },
 
-    /***/ 3262: /***/ (module, exports, __webpack_require__) => {
+    /***/ 3066: /***/ (module, exports, __webpack_require__) => {
       "use strict";
       /* __next_internal_client_entry_do_not_use__  cjs */
       Object.defineProperty(exports, "__esModule", {
@@ -47,17 +45,17 @@
       const _react = /*#__PURE__*/ _interop_require_wildcard._(
         __webpack_require__(2223)
       );
-      const _resolvehref = __webpack_require__(7868);
-      const _islocalurl = __webpack_require__(9350);
-      const _formaturl = __webpack_require__(6319);
-      const _utils = __webpack_require__(9889);
-      const _addlocale = __webpack_require__(9466);
-      const _routercontextsharedruntime = __webpack_require__(5691);
-      const _useintersection = __webpack_require__(3981);
-      const _getdomainlocale = __webpack_require__(4206);
-      const _addbasepath = __webpack_require__(9339);
-      const _usemergedref = __webpack_require__(6848);
-      const _erroronce = __webpack_require__(1970);
+      const _resolvehref = __webpack_require__(2776);
+      const _islocalurl = __webpack_require__(5770);
+      const _formaturl = __webpack_require__(8531);
+      const _utils = __webpack_require__(3565);
+      const _addlocale = __webpack_require__(8878);
+      const _routercontextsharedruntime = __webpack_require__(5111);
+      const _useintersection = __webpack_require__(6873);
+      const _getdomainlocale = __webpack_require__(4554);
+      const _addbasepath = __webpack_require__(9567);
+      const _usemergedref = __webpack_require__(4308);
+      const _erroronce = __webpack_require__(8910);
       const prefetched = new Set();
       function prefetch(router, href, as, options) {
         if (false) {
@@ -436,7 +434,167 @@
       /***/
     },
 
-    /***/ 3981: /***/ (module, exports, __webpack_require__) => {
+    /***/ 3072: /***/ (
+      __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__(1503);
+      /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ =
+        __webpack_require__(6929);
+      /* 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;
+
+      /***/
+    },
+
+    /***/ 4308: /***/ (module, exports, __webpack_require__) => {
+      "use strict";
+
+      Object.defineProperty(exports, "__esModule", {
+        value: true,
+      });
+      Object.defineProperty(exports, "useMergedRef", {
+        enumerable: true,
+        get: function () {
+          return useMergedRef;
+        },
+      });
+      const _react = __webpack_require__(2223);
+      function useMergedRef(refA, refB) {
+        const cleanupA = (0, _react.useRef)(null);
+        const cleanupB = (0, _react.useRef)(null);
+        // NOTE: In theory, we could skip the wrapping if only one of the refs is non-null.
+        // (this happens often if the user doesn't pass a ref to Link/Form/Image)
+        // But this can cause us to leak a cleanup-ref into user code (previously via `<Link legacyBehavior>`),
+        // and the user might pass that ref into ref-merging library that doesn't support cleanup refs
+        // (because it hasn't been updated for React 19)
+        // which can then cause things to blow up, because a cleanup-returning ref gets called with `null`.
+        // So in practice, it's safer to be defensive and always wrap the ref, even on React 19.
+        return (0, _react.useCallback)(
+          (current) => {
+            if (current === null) {
+              const cleanupFnA = cleanupA.current;
+              if (cleanupFnA) {
+                cleanupA.current = null;
+                cleanupFnA();
+              }
+              const cleanupFnB = cleanupB.current;
+              if (cleanupFnB) {
+                cleanupB.current = null;
+                cleanupFnB();
+              }
+            } else {
+              if (refA) {
+                cleanupA.current = applyRef(refA, current);
+              }
+              if (refB) {
+                cleanupB.current = applyRef(refB, current);
+              }
+            }
+          },
+          [refA, refB]
+        );
+      }
+      function applyRef(refA, current) {
+        if (typeof refA === "function") {
+          const cleanup = refA(current);
+          if (typeof cleanup === "function") {
+            return cleanup;
+          } else {
+            return () => refA(null);
+          }
+        } else {
+          refA.current = current;
+          return () => {
+            refA.current = null;
+          };
+        }
+      }
+      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=use-merged-ref.js.map
+
+      /***/
+    },
+
+    /***/ 4554: /***/ (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__(7740);
+      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
+
+      /***/
+    },
+
+    /***/ 6873: /***/ (module, exports, __webpack_require__) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -449,7 +607,7 @@
         },
       });
       const _react = __webpack_require__(2223);
-      const _requestidlecallback = __webpack_require__(1472);
+      const _requestidlecallback = __webpack_require__(6892);
       const hasIntersectionObserver =
         typeof IntersectionObserver === "function";
       const observers = new Map();
@@ -561,189 +719,31 @@
       /***/
     },
 
-    /***/ 4206: /***/ (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__(6704);
-      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
-
-      /***/
-    },
-
-    /***/ 6691: /***/ (
+    /***/ 6929: /***/ (
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) => {
-      module.exports = __webpack_require__(3262);
+      module.exports = __webpack_require__(3066);
 
       /***/
     },
 
-    /***/ 6771: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/link",
-        function () {
-          return __webpack_require__(8178);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
-
-    /***/ 6848: /***/ (module, exports, __webpack_require__) => {
+    /***/ 8910: /***/ (__unused_webpack_module, exports) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
         value: true,
       });
-      Object.defineProperty(exports, "useMergedRef", {
+      Object.defineProperty(exports, "errorOnce", {
         enumerable: true,
         get: function () {
-          return useMergedRef;
+          return errorOnce;
         },
       });
-      const _react = __webpack_require__(2223);
-      function useMergedRef(refA, refB) {
-        const cleanupA = (0, _react.useRef)(null);
-        const cleanupB = (0, _react.useRef)(null);
-        // NOTE: In theory, we could skip the wrapping if only one of the refs is non-null.
-        // (this happens often if the user doesn't pass a ref to Link/Form/Image)
-        // But this can cause us to leak a cleanup-ref into user code (previously via `<Link legacyBehavior>`),
-        // and the user might pass that ref into ref-merging library that doesn't support cleanup refs
-        // (because it hasn't been updated for React 19)
-        // which can then cause things to blow up, because a cleanup-returning ref gets called with `null`.
-        // So in practice, it's safer to be defensive and always wrap the ref, even on React 19.
-        return (0, _react.useCallback)(
-          (current) => {
-            if (current === null) {
-              const cleanupFnA = cleanupA.current;
-              if (cleanupFnA) {
-                cleanupA.current = null;
-                cleanupFnA();
-              }
-              const cleanupFnB = cleanupB.current;
-              if (cleanupFnB) {
-                cleanupB.current = null;
-                cleanupFnB();
-              }
-            } else {
-              if (refA) {
-                cleanupA.current = applyRef(refA, current);
-              }
-              if (refB) {
-                cleanupB.current = applyRef(refB, current);
-              }
-            }
-          },
-          [refA, refB]
-        );
-      }
-      function applyRef(refA, current) {
-        if (typeof refA === "function") {
-          const cleanup = refA(current);
-          if (typeof cleanup === "function") {
-            return cleanup;
-          } else {
-            return () => refA(null);
-          }
-        } else {
-          refA.current = current;
-          return () => {
-            refA.current = null;
-          };
-        }
-      }
-      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=use-merged-ref.js.map
-
-      /***/
-    },
-
-    /***/ 8178: /***/ (
-      __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__(1503);
-      /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(6691);
-      /* 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;
+      let errorOnce = (_) => {};
+      if (false) {
+      } //# sourceMappingURL=error-once.js.map
 
       /***/
     },
@@ -753,7 +753,7 @@
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(6771)
+      __webpack_exec__(2025)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for routerDirect-HASH.js
@@ -1,7 +1,24 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [188],
   {
-    /***/ 286: /***/ (
+    /***/ 417: /***/ (
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/routerDirect",
+        function () {
+          return __webpack_require__(504);
+        },
+      ]);
+      if (false) {
+      }
+
+      /***/
+    },
+
+    /***/ 504: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -16,7 +33,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(1503);
       /* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(7798);
+        __webpack_require__(1840);
       /* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           next_router__WEBPACK_IMPORTED_MODULE_1__
@@ -36,29 +53,12 @@
       /***/
     },
 
-    /***/ 4283: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/routerDirect",
-        function () {
-          return __webpack_require__(286);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
-
-    /***/ 7798: /***/ (
+    /***/ 1840: /***/ (
       module,
       __unused_webpack_exports,
       __webpack_require__
     ) => {
-      module.exports = __webpack_require__(9587);
+      module.exports = __webpack_require__(1903);
 
       /***/
     },
@@ -68,7 +68,7 @@
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(4283)
+      __webpack_exec__(417)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for script-HASH.js
@@ -1,7 +1,34 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [1209],
   {
-    /***/ 661: /***/ (
+    /***/ 2398: /***/ (
+      module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      module.exports = __webpack_require__(2397);
+
+      /***/
+    },
+
+    /***/ 4305: /***/ (
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/script",
+        function () {
+          return __webpack_require__(8543);
+        },
+      ]);
+      if (false) {
+      }
+
+      /***/
+    },
+
+    /***/ 8543: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -16,7 +43,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(1503);
       /* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(5964);
+        __webpack_require__(2398);
       /* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           next_script__WEBPACK_IMPORTED_MODULE_1__
@@ -48,40 +75,13 @@
 
       /***/
     },
-
-    /***/ 5964: /***/ (
-      module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      module.exports = __webpack_require__(297);
-
-      /***/
-    },
-
-    /***/ 8803: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/script",
-        function () {
-          return __webpack_require__(661);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(8803)
+      __webpack_exec__(4305)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for withRouter-HASH.js
@@ -1,24 +1,17 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [3263],
   {
-    /***/ 3163: /***/ (
-      __unused_webpack_module,
+    /***/ 1840: /***/ (
+      module,
       __unused_webpack_exports,
       __webpack_require__
     ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/withRouter",
-        function () {
-          return __webpack_require__(3295);
-        },
-      ]);
-      if (false) {
-      }
+      module.exports = __webpack_require__(1903);
 
       /***/
     },
 
-    /***/ 3295: /***/ (
+    /***/ 2037: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -33,7 +26,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(1503);
       /* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(7798);
+        __webpack_require__(1840);
       /* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           next_router__WEBPACK_IMPORTED_MODULE_1__
@@ -52,12 +45,19 @@
       /***/
     },
 
-    /***/ 7798: /***/ (
-      module,
+    /***/ 4041: /***/ (
+      __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
     ) => {
-      module.exports = __webpack_require__(9587);
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/withRouter",
+        function () {
+          return __webpack_require__(2037);
+        },
+      ]);
+      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__(3163)
+      __webpack_exec__(4041)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for 4498-HASH.js
failed to diff
Diff for 9225-HASH.js
@@ -1,32 +1,81 @@
 "use strict";
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
-  [9225],
+  [8439],
   {
-    /***/ 2: /***/ (__unused_webpack_module, exports, __webpack_require__) => {
+    /***/ 405: /***/ (
+      __unused_webpack_module,
+      exports,
+      __webpack_require__
+    ) => {
       Object.defineProperty(exports, "__esModule", {
         value: true,
       });
-      Object.defineProperty(exports, "ImageConfigContext", {
+      Object.defineProperty(exports, "default", {
         enumerable: true,
         get: function () {
-          return ImageConfigContext;
+          return SideEffect;
         },
       });
-      const _interop_require_default = __webpack_require__(9010);
-      const _react = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(8879)
-      );
-      const _imageconfig = __webpack_require__(1686);
-      const ImageConfigContext = _react.default.createContext(
-        _imageconfig.imageConfigDefault
-      );
-      if (false) {
-      } //# sourceMappingURL=image-config-context.shared-runtime.js.map
+      const _react = __webpack_require__(1774);
+      const isServer = "object" === "undefined";
+      const useClientOnlyLayoutEffect = isServer
+        ? () => {}
+        : _react.useLayoutEffect;
+      const useClientOnlyEffect = isServer ? () => {} : _react.useEffect;
+      function SideEffect(props) {
+        const { headManager, reduceComponentsToState } = props;
+        function emitChange() {
+          if (headManager && headManager.mountedInstances) {
+            const headElements = _react.Children.toArray(
+              Array.from(headManager.mountedInstances).filter(Boolean)
+            );
+            headManager.updateHead(reduceComponentsToState(headElements));
+          }
+        }
+        if (isServer) {
+          headManager?.mountedInstances?.add(props.children);
+          emitChange();
+        }
+        useClientOnlyLayoutEffect(() => {
+          headManager?.mountedInstances?.add(props.children);
+          return () => {
+            headManager?.mountedInstances?.delete(props.children);
+          };
+        });
+        // We need to call `updateHead` method whenever the `SideEffect` is trigger in all
+        // life-cycles: mount, update, unmount. However, if there are multiple `SideEffect`s
+        // being rendered, we only trigger the method from the last one.
+        // This is ensured by keeping the last unflushed `updateHead` in the `_pendingUpdate`
+        // singleton in the layout effect pass, and actually trigger it in the effect pass.
+        useClientOnlyLayoutEffect(() => {
+          if (headManager) {
+            headManager._pendingUpdate = emitChange;
+          }
+          return () => {
+            if (headManager) {
+              headManager._pendingUpdate = emitChange;
+            }
+          };
+        });
+        useClientOnlyEffect(() => {
+          if (headManager && headManager._pendingUpdate) {
+            headManager._pendingUpdate();
+            headManager._pendingUpdate = null;
+          }
+          return () => {
+            if (headManager && headManager._pendingUpdate) {
+              headManager._pendingUpdate();
+              headManager._pendingUpdate = null;
+            }
+          };
+        });
+        return null;
+      } //# sourceMappingURL=side-effect.js.map
 
       /***/
     },
 
-    /***/ 1169: /***/ (
+    /***/ 1155: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -40,9 +89,9 @@
           return getImgProps;
         },
       });
-      const _warnonce = __webpack_require__(4352);
-      const _imageblursvg = __webpack_require__(2314);
-      const _imageconfig = __webpack_require__(1686);
+      const _warnonce = __webpack_require__(5358);
+      const _imageblursvg = __webpack_require__(6924);
+      const _imageconfig = __webpack_require__(9712);
       const VALID_LOADING_VALUES =
         /* unused pure expression or super */ null && [
           "lazy",
@@ -473,245 +522,60 @@
       /***/
     },
 
-    /***/ 1666: /***/ (module, exports, __webpack_require__) => {
-      /* __next_internal_client_entry_do_not_use__  cjs */
+    /***/ 1417: /***/ (
+      __unused_webpack_module,
+      exports,
+      __webpack_require__
+    ) => {
       Object.defineProperty(exports, "__esModule", {
         value: true,
       });
-      0 && 0;
-      function _export(target, all) {
-        for (var name in all)
-          Object.defineProperty(target, name, {
-            enumerable: true,
-            get: all[name],
-          });
-      }
-      _export(exports, {
-        default: function () {
+      Object.defineProperty(exports, "default", {
+        enumerable: true,
+        get: function () {
           return _default;
         },
-        defaultHead: function () {
-          return defaultHead;
-        },
       });
-      const _interop_require_default = __webpack_require__(9010);
-      const _interop_require_wildcard = __webpack_require__(2275);
-      const _jsxruntime = __webpack_require__(1024);
-      const _react = /*#__PURE__*/ _interop_require_wildcard._(
-        __webpack_require__(8879)
-      );
-      const _sideeffect = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(2543)
-      );
-      const _headmanagercontextsharedruntime = __webpack_require__(5428);
-      const _warnonce = __webpack_require__(4352);
-      function defaultHead() {
-        const head = [
-          /*#__PURE__*/ (0, _jsxruntime.jsx)(
-            "meta",
-            {
-              charSet: "utf-8",
-            },
-            "charset"
-          ),
-          /*#__PURE__*/ (0, _jsxruntime.jsx)(
-            "meta",
+      const _findclosestquality = __webpack_require__(1639);
+      function defaultLoader({ config, src, width, quality }) {
+        if (
+          src.startsWith("/") &&
+          src.includes("?") &&
+          config.localPatterns?.length === 1 &&
+          config.localPatterns[0].pathname === "**" &&
+          config.localPatterns[0].search === ""
+        ) {
+          throw Object.defineProperty(
+            new Error(
+              `Image with src "${src}" is using a query string which is not configured in images.localPatterns.` +
+                `\nRead more: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns`
+            ),
+            "__NEXT_ERROR_CODE",
             {
-              name: "viewport",
-              content: "width=device-width",
-            },
-            "viewport"
-          ),
-        ];
-        return head;
-      }
-      function onlyReactElement(list, child) {
-        // React children can be "string" or "number" in this case we ignore them for backwards compat
-        if (typeof child === "string" || typeof child === "number") {
-          return list;
-        }
-        // Adds support for React.Fragment
-        if (child.type === _react.default.Fragment) {
-          return list.concat(
-            _react.default.Children.toArray(child.props.children).reduce(
-              (fragmentList, fragmentChild) => {
-                if (
-                  typeof fragmentChild === "string" ||
-                  typeof fragmentChild === "number"
-                ) {
-                  return fragmentList;
-                }
-                return fragmentList.concat(fragmentChild);
-              },
-              []
-            )
+              value: "E871",
+              enumerable: false,
+              configurable: true,
+            }
           );
         }
-        return list.concat(child);
-      }
-      const METATYPES = ["name", "httpEquiv", "charSet", "itemProp"];
-      /*
- returns a function for filtering head child elements
- which shouldn't be duplicated, like <title/>
- Also adds support for deduplicated `key` properties
-*/ function unique() {
-        const keys = new Set();
-        const tags = new Set();
-        const metaTypes = new Set();
-        const metaCategories = {};
-        return (h) => {
-          let isUnique = true;
-          let hasKey = false;
-          if (h.key && typeof h.key !== "number" && h.key.indexOf("$") > 0) {
-            hasKey = true;
-            const key = h.key.slice(h.key.indexOf("$") + 1);
-            if (keys.has(key)) {
-              isUnique = false;
-            } else {
-              keys.add(key);
-            }
-          }
-          // eslint-disable-next-line default-case
-          switch (h.type) {
-            case "title":
-            case "base":
-              if (tags.has(h.type)) {
-                isUnique = false;
-              } else {
-                tags.add(h.type);
-              }
-              break;
-            case "meta":
-              for (let i = 0, len = METATYPES.length; i < len; i++) {
-                const metatype = METATYPES[i];
-                if (!h.props.hasOwnProperty(metatype)) continue;
-                if (metatype === "charSet") {
-                  if (metaTypes.has(metatype)) {
-                    isUnique = false;
-                  } else {
-                    metaTypes.add(metatype);
-                  }
-                } else {
-                  const category = h.props[metatype];
-                  const categories = metaCategories[metatype] || new Set();
-                  if (
-                    (metatype !== "name" || !hasKey) &&
-                    categories.has(category)
-                  ) {
-                    isUnique = false;
-                  } else {
-                    categories.add(category);
-                    metaCategories[metatype] = categories;
-                  }
-                }
-              }
-              break;
-          }
-          return isUnique;
-        };
-      }
-      /**
-       *
-       * @param headChildrenElements List of children of <Head>
-       */ function reduceComponents(headChildrenElements) {
-        return headChildrenElements
-          .reduce(onlyReactElement, [])
-          .reverse()
-          .concat(defaultHead().reverse())
-          .filter(unique())
-          .reverse()
-          .map((c, i) => {
-            const key = c.key || i;
-            if (false) {
-            }
-            return /*#__PURE__*/ _react.default.cloneElement(c, {
-              key,
-            });
-          });
-      }
-      /**
-       * This component injects elements to `<head>` of your page.
-       * To avoid duplicated `tags` in `<head>` you can use the `key` property, which will make sure every tag is only rendered once.
-       */ function Head({ children }) {
-        const headManager = (0, _react.useContext)(
-          _headmanagercontextsharedruntime.HeadManagerContext
-        );
-        return /*#__PURE__*/ (0, _jsxruntime.jsx)(_sideeffect.default, {
-          reduceComponentsToState: reduceComponents,
-          headManager: headManager,
-          children: children,
-        });
-      }
-      const _default = Head;
-      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=head.js.map
-
-      /***/
-    },
-
-    /***/ 1686: /***/ (__unused_webpack_module, exports) => {
-      Object.defineProperty(exports, "__esModule", {
-        value: true,
-      });
-      0 && 0;
-      function _export(target, all) {
-        for (var name in all)
-          Object.defineProperty(target, name, {
-            enumerable: true,
-            get: all[name],
-          });
+        if (false) {
+        }
+        const q = (0, _findclosestquality.findClosestQuality)(quality, config);
+        return `${config.path}?url=${encodeURIComponent(
+          src
+        )}&w=${width}&q=${q}${
+          src.startsWith("/_next/static/media/") && false ? 0 : ""
+        }`;
       }
-      _export(exports, {
-        VALID_LOADERS: function () {
-          return VALID_LOADERS;
-        },
-        imageConfigDefault: function () {
-          return imageConfigDefault;
-        },
-      });
-      const VALID_LOADERS = [
-        "default",
-        "imgix",
-        "cloudinary",
-        "akamai",
-        "custom",
-      ];
-      const imageConfigDefault = {
-        deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
-        imageSizes: [32, 48, 64, 96, 128, 256, 384],
-        path: "/_next/image",
-        loader: "default",
-        loaderFile: "",
-        /**
-         * @deprecated Use `remotePatterns` instead to protect your application from malicious users.
-         */ domains: [],
-        disableStaticImages: false,
-        minimumCacheTTL: 14400,
-        formats: ["image/webp"],
-        maximumRedirects: 3,
-        dangerouslyAllowLocalIP: false,
-        dangerouslyAllowSVG: false,
-        contentSecurityPolicy: `script-src 'none'; frame-src 'none'; sandbox;`,
-        contentDispositionType: "attachment",
-        localPatterns: undefined,
-        remotePatterns: [],
-        qualities: [75],
-        unoptimized: false,
-      }; //# sourceMappingURL=image-config.js.map
+      // We use this to determine if the import is the default loader
+      // or a custom loader defined by the user in next.config.js
+      defaultLoader.__next_img_default = true;
+      const _default = defaultLoader; //# sourceMappingURL=image-loader.js.map
 
       /***/
     },
 
-    /***/ 2285: /***/ (__unused_webpack_module, exports) => {
+    /***/ 1639: /***/ (__unused_webpack_module, exports) => {
       Object.defineProperty(exports, "__esModule", {
         value: true,
       });
@@ -735,7 +599,35 @@
       /***/
     },
 
-    /***/ 2314: /***/ (__unused_webpack_module, exports) => {
+    /***/ 2896: /***/ (
+      __unused_webpack_module,
+      exports,
+      __webpack_require__
+    ) => {
+      Object.defineProperty(exports, "__esModule", {
+        value: true,
+      });
+      Object.defineProperty(exports, "ImageConfigContext", {
+        enumerable: true,
+        get: function () {
+          return ImageConfigContext;
+        },
+      });
+      const _interop_require_default = __webpack_require__(2570);
+      const _react = /*#__PURE__*/ _interop_require_default._(
+        __webpack_require__(1774)
+      );
+      const _imageconfig = __webpack_require__(9712);
+      const ImageConfigContext = _react.default.createContext(
+        _imageconfig.imageConfigDefault
+      );
+      if (false) {
+      } //# sourceMappingURL=image-config-context.shared-runtime.js.map
+
+      /***/
+    },
+
+    /***/ 6924: /***/ (__unused_webpack_module, exports) => {
       /**
        * A shared function, used on both client and server, to generate a SVG blur placeholder.
        */
@@ -774,133 +666,7 @@
       /***/
     },
 
-    /***/ 2543: /***/ (
-      __unused_webpack_module,
-      exports,
-      __webpack_require__
-    ) => {
-      Object.defineProperty(exports, "__esModule", {
-        value: true,
-      });
-      Object.defineProperty(exports, "default", {
-        enumerable: true,
-        get: function () {
-          return SideEffect;
-        },
-      });
-      const _react = __webpack_require__(8879);
-      const isServer = "object" === "undefined";
-      const useClientOnlyLayoutEffect = isServer
-        ? () => {}
-        : _react.useLayoutEffect;
-      const useClientOnlyEffect = isServer ? () => {} : _react.useEffect;
-      function SideEffect(props) {
-        const { headManager, reduceComponentsToState } = props;
-        function emitChange() {
-          if (headManager && headManager.mountedInstances) {
-            const headElements = _react.Children.toArray(
-              Array.from(headManager.mountedInstances).filter(Boolean)
-            );
-            headManager.updateHead(reduceComponentsToState(headElements));
-          }
-        }
-        if (isServer) {
-          headManager?.mountedInstances?.add(props.children);
-          emitChange();
-        }
-        useClientOnlyLayoutEffect(() => {
-          headManager?.mountedInstances?.add(props.children);
-          return () => {
-            headManager?.mountedInstances?.delete(props.children);
-          };
-        });
-        // We need to call `updateHead` method whenever the `SideEffect` is trigger in all
-        // life-cycles: mount, update, unmount. However, if there are multiple `SideEffect`s
-        // being rendered, we only trigger the method from the last one.
-        // This is ensured by keeping the last unflushed `updateHead` in the `_pendingUpdate`
-        // singleton in the layout effect pass, and actually trigger it in the effect pass.
-        useClientOnlyLayoutEffect(() => {
-          if (headManager) {
-            headManager._pendingUpdate = emitChange;
-          }
-          return () => {
-            if (headManager) {
-              headManager._pendingUpdate = emitChange;
-            }
-          };
-        });
-        useClientOnlyEffect(() => {
-          if (headManager && headManager._pendingUpdate) {
-            headManager._pendingUpdate();
-            headManager._pendingUpdate = null;
-          }
-          return () => {
-            if (headManager && headManager._pendingUpdate) {
-              headManager._pendingUpdate();
-              headManager._pendingUpdate = null;
-            }
-          };
-        });
-        return null;
-      } //# sourceMappingURL=side-effect.js.map
-
-      /***/
-    },
-
-    /***/ 8035: /***/ (
-      __unused_webpack_module,
-      exports,
-      __webpack_require__
-    ) => {
-      Object.defineProperty(exports, "__esModule", {
-        value: true,
-      });
-      Object.defineProperty(exports, "default", {
-        enumerable: true,
-        get: function () {
-          return _default;
-        },
-      });
-      const _findclosestquality = __webpack_require__(2285);
-      function defaultLoader({ config, src, width, quality }) {
-        if (
-          src.startsWith("/") &&
-          src.includes("?") &&
-          config.localPatterns?.length === 1 &&
-          config.localPatterns[0].pathname === "**" &&
-          config.localPatterns[0].search === ""
-        ) {
-          throw Object.defineProperty(
-            new Error(
-              `Image with src "${src}" is using a query string which is not configured in images.localPatterns.` +
-                `\nRead more: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns`
-            ),
-            "__NEXT_ERROR_CODE",
-            {
-              value: "E871",
-              enumerable: false,
-              configurable: true,
-            }
-          );
-        }
-        if (false) {
-        }
-        const q = (0, _findclosestquality.findClosestQuality)(quality, config);
-        return `${config.path}?url=${encodeURIComponent(
-          src
-        )}&w=${width}&q=${q}${
-          src.startsWith("/_next/static/media/") && false ? 0 : ""
-        }`;
-      }
-      // We use this to determine if the import is the default loader
-      // or a custom loader defined by the user in next.config.js
-      defaultLoader.__next_img_default = true;
-      const _default = defaultLoader; //# sourceMappingURL=image-loader.js.map
-
-      /***/
-    },
-
-    /***/ 8848: /***/ (module, exports, __webpack_require__) => {
+    /***/ 7614: /***/ (module, exports, __webpack_require__) => {
       Object.defineProperty(exports, "__esModule", {
         value: true,
       });
@@ -910,7 +676,7 @@
           return useMergedRef;
         },
       });
-      const _react = __webpack_require__(8879);
+      const _react = __webpack_require__(1774);
       function useMergedRef(refA, refB) {
         const cleanupA = (0, _react.useRef)(null);
         const cleanupB = (0, _react.useRef)(null);
@@ -976,32 +742,7 @@
       /***/
     },
 
-    /***/ 9059: /***/ (
-      __unused_webpack_module,
-      exports,
-      __webpack_require__
-    ) => {
-      Object.defineProperty(exports, "__esModule", {
-        value: true,
-      });
-      Object.defineProperty(exports, "RouterContext", {
-        enumerable: true,
-        get: function () {
-          return RouterContext;
-        },
-      });
-      const _interop_require_default = __webpack_require__(9010);
-      const _react = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(8879)
-      );
-      const RouterContext = _react.default.createContext(null);
-      if (false) {
-      } //# sourceMappingURL=router-context.shared-runtime.js.map
-
-      /***/
-    },
-
-    /***/ 9225: /***/ (module, exports, __webpack_require__) => {
+    /***/ 8439: /***/ (module, exports, __webpack_require__) => {
       /* __next_internal_client_entry_do_not_use__  cjs */
       Object.defineProperty(exports, "__esModule", {
         value: true,
@@ -1012,27 +753,27 @@
           return Image;
         },
       });
-      const _interop_require_default = __webpack_require__(9010);
-      const _interop_require_wildcard = __webpack_require__(2275);
-      const _jsxruntime = __webpack_require__(1024);
+      const _interop_require_default = __webpack_require__(2570);
+      const _interop_require_wildcard = __webpack_require__(5643);
+      const _jsxruntime = __webpack_require__(2014);
       const _react = /*#__PURE__*/ _interop_require_wildcard._(
-        __webpack_require__(8879)
+        __webpack_require__(1774)
       );
       const _reactdom = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(3869)
+        __webpack_require__(7499)
       );
       const _head = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(1666)
+        __webpack_require__(9452)
       );
-      const _getimgprops = __webpack_require__(1169);
-      const _imageconfig = __webpack_require__(1686);
-      const _imageconfigcontextsharedruntime = __webpack_require__(2);
-      const _warnonce = __webpack_require__(4352);
-      const _routercontextsharedruntime = __webpack_require__(9059);
+      const _getimgprops = __webpack_require__(1155);
+      const _imageconfig = __webpack_require__(9712);
+      const _imageconfigcontextsharedruntime = __webpack_require__(2896);
+      const _warnonce = __webpack_require__(5358);
+      const _routercontextsharedruntime = __webpack_require__(9813);
       const _imageloader = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(8035)
+        __webpack_require__(1417)
       );
-      const _usemergedref = __webpack_require__(8848);
+      const _usemergedref = __webpack_require__(7614);
       // This is replaced by webpack define plugin
       const configEnv = {
         deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
@@ -1358,5 +1099,268 @@
 
       /***/
     },
+
+    /***/ 9452: /***/ (module, exports, __webpack_require__) => {
+      /* __next_internal_client_entry_do_not_use__  cjs */
+      Object.defineProperty(exports, "__esModule", {
+        value: true,
+      });
+      0 && 0;
+      function _export(target, all) {
+        for (var name in all)
+          Object.defineProperty(target, name, {
+            enumerable: true,
+            get: all[name],
+          });
+      }
+      _export(exports, {
+        default: function () {
+          return _default;
+        },
+        defaultHead: function () {
+          return defaultHead;
+        },
+      });
+      const _interop_require_default = __webpack_require__(2570);
+      const _interop_require_wildcard = __webpack_require__(5643);
+      const _jsxruntime = __webpack_require__(2014);
+      const _react = /*#__PURE__*/ _interop_require_wildcard._(
+        __webpack_require__(1774)
+      );
+      const _sideeffect = /*#__PURE__*/ _interop_require_default._(
+        __webpack_require__(405)
+      );
+      const _headmanagercontextsharedruntime = __webpack_require__(5326);
+      const _warnonce = __webpack_require__(5358);
+      function defaultHead() {
+        const head = [
+          /*#__PURE__*/ (0, _jsxruntime.jsx)(
+            "meta",
+            {
+              charSet: "utf-8",
+            },
+            "charset"
+          ),
+          /*#__PURE__*/ (0, _jsxruntime.jsx)(
+            "meta",
+            {
+              name: "viewport",
+              content: "width=device-width",
+            },
+            "viewport"
+          ),
+        ];
+        return head;
+      }
+      function onlyReactElement(list, child) {
+        // React children can be "string" or "number" in this case we ignore them for backwards compat
+        if (typeof child === "string" || typeof child === "number") {
+          return list;
+        }
+        // Adds support for React.Fragment
+        if (child.type === _react.default.Fragment) {
+          return list.concat(
+            _react.default.Children.toArray(child.props.children).reduce(
+              (fragmentList, fragmentChild) => {
+                if (
+                  typeof fragmentChild === "string" ||
+                  typeof fragmentChild === "number"
+                ) {
+                  return fragmentList;
+                }
+                return fragmentList.concat(fragmentChild);
+              },
+              []
+            )
+          );
+        }
+        return list.concat(child);
+      }
+      const METATYPES = ["name", "httpEquiv", "charSet", "itemProp"];
+      /*
+ returns a function for filtering head child elements
+ which shouldn't be duplicated, like <title/>
+ Also adds support for deduplicated `key` properties
+*/ function unique() {
+        const keys = new Set();
+        const tags = new Set();
+        const metaTypes = new Set();
+        const metaCategories = {};
+        return (h) => {
+          let isUnique = true;
+          let hasKey = false;
+          if (h.key && typeof h.key !== "number" && h.key.indexOf("$") > 0) {
+            hasKey = true;
+            const key = h.key.slice(h.key.indexOf("$") + 1);
+            if (keys.has(key)) {
+              isUnique = false;
+            } else {
+              keys.add(key);
+            }
+          }
+          // eslint-disable-next-line default-case
+          switch (h.type) {
+            case "title":
+            case "base":
+              if (tags.has(h.type)) {
+                isUnique = false;
+              } else {
+                tags.add(h.type);
+              }
+              break;
+            case "meta":
+              for (let i = 0, len = METATYPES.length; i < len; i++) {
+                const metatype = METATYPES[i];
+                if (!h.props.hasOwnProperty(metatype)) continue;
+                if (metatype === "charSet") {
+                  if (metaTypes.has(metatype)) {
+                    isUnique = false;
+                  } else {
+                    metaTypes.add(metatype);
+                  }
+                } else {
+                  const category = h.props[metatype];
+                  const categories = metaCategories[metatype] || new Set();
+                  if (
+                    (metatype !== "name" || !hasKey) &&
+                    categories.has(category)
+                  ) {
+                    isUnique = false;
+                  } else {
+                    categories.add(category);
+                    metaCategories[metatype] = categories;
+                  }
+                }
+              }
+              break;
+          }
+          return isUnique;
+        };
+      }
+      /**
+       *
+       * @param headChildrenElements List of children of <Head>
+       */ function reduceComponents(headChildrenElements) {
+        return headChildrenElements
+          .reduce(onlyReactElement, [])
+          .reverse()
+          .concat(defaultHead().reverse())
+          .filter(unique())
+          .reverse()
+          .map((c, i) => {
+            const key = c.key || i;
+            if (false) {
+            }
+            return /*#__PURE__*/ _react.default.cloneElement(c, {
+              key,
+            });
+          });
+      }
+      /**
+       * This component injects elements to `<head>` of your page.
+       * To avoid duplicated `tags` in `<head>` you can use the `key` property, which will make sure every tag is only rendered once.
+       */ function Head({ children }) {
+        const headManager = (0, _react.useContext)(
+          _headmanagercontextsharedruntime.HeadManagerContext
+        );
+        return /*#__PURE__*/ (0, _jsxruntime.jsx)(_sideeffect.default, {
+          reduceComponentsToState: reduceComponents,
+          headManager: headManager,
+          children: children,
+        });
+      }
+      const _default = Head;
+      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=head.js.map
+
+      /***/
+    },
+
+    /***/ 9712: /***/ (__unused_webpack_module, exports) => {
+      Object.defineProperty(exports, "__esModule", {
+        value: true,
+      });
+      0 && 0;
+      function _export(target, all) {
+        for (var name in all)
+          Object.defineProperty(target, name, {
+            enumerable: true,
+            get: all[name],
+          });
+      }
+      _export(exports, {
+        VALID_LOADERS: function () {
+          return VALID_LOADERS;
+        },
+        imageConfigDefault: function () {
+          return imageConfigDefault;
+        },
+      });
+      const VALID_LOADERS = [
+        "default",
+        "imgix",
+        "cloudinary",
+        "akamai",
+        "custom",
+      ];
+      const imageConfigDefault = {
+        deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
+        imageSizes: [32, 48, 64, 96, 128, 256, 384],
+        path: "/_next/image",
+        loader: "default",
+        loaderFile: "",
+        /**
+         * @deprecated Use `remotePatterns` instead to protect your application from malicious users.
+         */ domains: [],
+        disableStaticImages: false,
+        minimumCacheTTL: 14400,
+        formats: ["image/webp"],
+        maximumRedirects: 3,
+        dangerouslyAllowLocalIP: false,
+        dangerouslyAllowSVG: false,
+        contentSecurityPolicy: `script-src 'none'; frame-src 'none'; sandbox;`,
+        contentDispositionType: "attachment",
+        localPatterns: undefined,
+        remotePatterns: [],
+        qualities: [75],
+        unoptimized: false,
+      }; //# sourceMappingURL=image-config.js.map
+
+      /***/
+    },
+
+    /***/ 9813: /***/ (
+      __unused_webpack_module,
+      exports,
+      __webpack_require__
+    ) => {
+      Object.defineProperty(exports, "__esModule", {
+        value: true,
+      });
+      Object.defineProperty(exports, "RouterContext", {
+        enumerable: true,
+        get: function () {
+          return RouterContext;
+        },
+      });
+      const _interop_require_default = __webpack_require__(2570);
+      const _react = /*#__PURE__*/ _interop_require_default._(
+        __webpack_require__(1774)
+      );
+      const RouterContext = _react.default.createContext(null);
+      if (false) {
+      } //# sourceMappingURL=router-context.shared-runtime.js.map
+
+      /***/
+    },
   },
 ]);
Diff for main-HASH.js

Diff too large to display

Diff for main-app-HASH.js
@@ -1,64 +1,64 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [4977],
   {
-    /***/ 4245: /***/ (
+    /***/ 2788: /***/ () => {
+      /* (ignored) */
+      /***/
+    },
+
+    /***/ 3809: /***/ (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
     ) => {
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 7455, 23)
+        __webpack_require__.t.bind(__webpack_require__, 7641, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 2436, 23)
+        __webpack_require__.t.bind(__webpack_require__, 8833, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 4220, 23)
+        __webpack_require__.t.bind(__webpack_require__, 202, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 6179, 23)
+        __webpack_require__.t.bind(__webpack_require__, 5505, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 477, 23)
+        __webpack_require__.t.bind(__webpack_require__, 9743, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 45, 23)
+        __webpack_require__.t.bind(__webpack_require__, 2067, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 4644, 23)
+        __webpack_require__.t.bind(__webpack_require__, 1166, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 8713, 23)
+        __webpack_require__.t.bind(__webpack_require__, 3791, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 1432, 23)
+        __webpack_require__.t.bind(__webpack_require__, 666, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 5011, 23)
+        __webpack_require__.t.bind(__webpack_require__, 9993, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 2560, 23)
+        __webpack_require__.t.bind(__webpack_require__, 1706, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 5161)
+        __webpack_require__.bind(__webpack_require__, 6335)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 7801, 23)
+        __webpack_require__.t.bind(__webpack_require__, 3883, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 9992, 23)
+        __webpack_require__.t.bind(__webpack_require__, 7030, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 2066, 23)
+        __webpack_require__.t.bind(__webpack_require__, 3712, 23)
       );
 
       /***/
     },
-
-    /***/ 7854: /***/ () => {
-      /* (ignored) */
-      /***/
-    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
@@ -66,8 +66,8 @@
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(
       0,
-      [9137, 4498],
-      () => (__webpack_exec__(1225), __webpack_exec__(4245))
+      [2494, 6734],
+      () => (__webpack_exec__(9303), __webpack_exec__(3809))
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Commit: b75faa0

@ijjk
Copy link
Member

ijjk commented Oct 18, 2025

Failing test suites

Commit: b75faa0 | About building and testing Next.js

pnpm test-start-turbo test/e2e/app-dir/app-prefetch/prefetching.test.ts (turbopack)

  • app dir - prefetching > should show layout eagerly when prefetched with loading one level down (DD)
Expand output

● app dir - prefetching › should show layout eagerly when prefetched with loading one level down

thrown: "Exceeded timeout of 120000 ms for a test.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

  26 |   })
  27 |
> 28 |   it('should show layout eagerly when prefetched with loading one level down', async () => {
     |   ^
  29 |     let act: ReturnType<typeof createRouterAct>
  30 |     const timeController = createTimeController()
  31 |     const browser = await next.browser('/', {

  at it (e2e/app-dir/app-prefetch/prefetching.test.ts:28:3)
  at Object.describe (e2e/app-dir/app-prefetch/prefetching.test.ts:11:1)

pnpm test-dev test/e2e/app-dir/fallback-shells/fallback-shells.test.ts

  • fallback-shells > without IO > should start and not postpone the response (DD)
Expand output

● fallback-shells › without IO › should start and not postpone the response

thrown: "Timed out waiting for the response of /without-io/world"

   8 |
   9 |   describe('without IO', () => {
> 10 |     it('should start and not postpone the response', async () => {
     |     ^
  11 |       const { browser, response } =
  12 |         await next.browserWithResponse('/without-io/world')
  13 |

  at it (e2e/app-dir/fallback-shells/fallback-shells.test.ts:10:5)
  at describe (e2e/app-dir/fallback-shells/fallback-shells.test.ts:9:3)
  at Object.describe (e2e/app-dir/fallback-shells/fallback-shells.test.ts:4:1)

pnpm test-start test/e2e/app-dir/segment-cache/staleness/segment-cache-stale-time.test.ts

  • segment cache (staleness) > reuses dynamic data up to the staleTimes.dynamic threshold (DD)
Expand output

● segment cache (staleness) › reuses dynamic data up to the staleTimes.dynamic threshold

thrown: "Exceeded timeout of 120000 ms for a test.
Add a timeout value to this test to increase the timeout, if this is a long-running test. See https://jestjs.io/docs/api#testname-fn-timeout."

  148 |   })
  149 |
> 150 |   it('reuses dynamic data up to the staleTimes.dynamic threshold', async () => {
      |   ^
  151 |     let page: Playwright.Page
  152 |     const startDate = Date.now()
  153 |

  at it (e2e/app-dir/segment-cache/staleness/segment-cache-stale-time.test.ts:150:3)
  at Object.describe (e2e/app-dir/segment-cache/staleness/segment-cache-stale-time.test.ts:5:1)

pnpm test-start test/e2e/app-dir/cache-components-errors/cache-components-errors.test.ts

  • Cache Components Errors > Build With --prerender-debug > Dynamic Metadata - Error Route > should error the build for the correct reason when there is a cache components violation alongside dynamic metadata (DD)
  • Cache Components Errors > Build With --prerender-debug > Dynamic Root > should error the build if cache components happens in the root (outside a Suspense) (DD)
  • Cache Components Errors > Build With --prerender-debug > Error Attribution with Sync IO > Unguarded RSC with guarded Client sync IO > should error the build with a reason related dynamic data (DD)
  • Cache Components Errors > Build With --prerender-debug > With use cache: private > without Suspense > should error the build (DD)
Expand output

● Cache Components Errors › Build With --prerender-debug › Dynamic Metadata - Error Route › should error the build for the correct reason when there is a cache components violation alongside dynamic metadata

expect(received).toMatchInlineSnapshot(snapshot)

Snapshot name: `Cache Components Errors Build With --prerender-debug Dynamic Metadata - Error Route should error the build for the correct reason when there is a cache components violation alongside dynamic metadata 1`

- Snapshot  - 6
+ Received  + 6

@@ -21,17 +21,17 @@
      at ErrorBoundary (bundler:///<next-src>)
      at InnerScrollAndFocusHandler (bundler:///<next-src>)
      at ScrollAndFocusHandler (bundler:///<next-src>)
      at RenderFromTemplateContext (bundler:///<next-src>)
      at OuterLayoutRouter (bundler:///<next-src>)
-   330 |  */
+   331 |  */
-   331 | function InnerLayoutRouter({
+   332 | function InnerLayoutRouter({
- > 332 |   tree,
+ > 333 |   tree,
        |   ^
-   333 |   segmentPath,
+   334 |   segmentPath,
-   334 |   cacheNode,
+   335 |   cacheNode,
-   335 |   url,
+   336 |   url,
  To get a more detailed stack trace and pinpoint the issue, start the app in development mode by running `next dev`, then open "/dynamic-metadata-error-route" in your browser to investigate the error.
  Error occurred prerendering page "/dynamic-metadata-error-route". Read more: https://nextjs.org/docs/messages/prerender-error

  > Export encountered errors on following paths:
  	/dynamic-metadata-error-route/page: /dynamic-metadata-error-route"

  213 |           } else {
  214 |             if (isDebugPrerender) {
> 215 |               expect(output).toMatchInlineSnapshot(`
      |                              ^
  216 |                "Error: Route "/dynamic-metadata-error-route": A component accessed data, headers, params, searchParams, or a short-lived cache without a Suspense boundary nor a "use cache" above it. See more info: https://nextjs.org/docs/messages/next-prerender-missing-suspense
  217 |                    at InnerLayoutRouter (bundler:///<next-src>)
  218 |                    at RedirectErrorBoundary (bundler:///<next-src>)

  at Object.toMatchInlineSnapshot (e2e/app-dir/cache-components-errors/cache-components-errors.test.ts:215:30)

● Cache Components Errors › Build With --prerender-debug › Dynamic Root › should error the build if cache components happens in the root (outside a Suspense)

expect(received).toMatchInlineSnapshot(snapshot)

Snapshot name: `Cache Components Errors Build With --prerender-debug Dynamic Root should error the build if cache components happens in the root (outside a Suspense) 1`

- Snapshot  - 6
+ Received  + 6

@@ -55,17 +55,17 @@
      at ErrorBoundary (bundler:///<next-src>)
      at InnerScrollAndFocusHandler (bundler:///<next-src>)
      at ScrollAndFocusHandler (bundler:///<next-src>)
      at RenderFromTemplateContext (bundler:///<next-src>)
      at OuterLayoutRouter (bundler:///<next-src>)
-   330 |  */
+   331 |  */
-   331 | function InnerLayoutRouter({
+   332 | function InnerLayoutRouter({
- > 332 |   tree,
+ > 333 |   tree,
        |   ^
-   333 |   segmentPath,
+   334 |   segmentPath,
-   334 |   cacheNode,
+   335 |   cacheNode,
-   335 |   url,
+   336 |   url,
  To get a more detailed stack trace and pinpoint the issue, start the app in development mode by running `next dev`, then open "/dynamic-root" in your browser to investigate the error.
  Error occurred prerendering page "/dynamic-root". Read more: https://nextjs.org/docs/messages/prerender-error

  > Export encountered errors on following paths:
  	/dynamic-root/page: /dynamic-root"

  686 |           } else {
  687 |             if (isDebugPrerender) {
> 688 |               expect(output).toMatchInlineSnapshot(`
      |                              ^
  689 |                "Error: Route "/dynamic-root": A component accessed data, headers, params, searchParams, or a short-lived cache without a Suspense boundary nor a "use cache" above it. See more info: https://nextjs.org/docs/messages/next-prerender-missing-suspense
  690 |                    at IndirectionTwo (bundler:///app/dynamic-root/indirection.tsx:7:34)
  691 |                    at InnerLayoutRouter (bundler:///<next-src>)

  at Object.toMatchInlineSnapshot (e2e/app-dir/cache-components-errors/cache-components-errors.test.ts:688:30)

● Cache Components Errors › Build With --prerender-debug › Error Attribution with Sync IO › Unguarded RSC with guarded Client sync IO › should error the build with a reason related dynamic data

expect(received).toMatchInlineSnapshot(snapshot)

Snapshot name: `Cache Components Errors Build With --prerender-debug Error Attribution with Sync IO Unguarded RSC with guarded Client sync IO should error the build with a reason related dynamic data 1`

- Snapshot  - 6
+ Received  + 6

@@ -33,17 +33,17 @@
      at ErrorBoundary (bundler:///<next-src>)
      at InnerScrollAndFocusHandler (bundler:///<next-src>)
      at ScrollAndFocusHandler (bundler:///<next-src>)
      at RenderFromTemplateContext (<anonymous>)
      at OuterLayoutRouter (bundler:///<next-src>)
-   330 |  */
+   331 |  */
-   331 | function InnerLayoutRouter({
+   332 | function InnerLayoutRouter({
- > 332 |   tree,
+ > 333 |   tree,
        |   ^
-   333 |   segmentPath,
+   334 |   segmentPath,
-   334 |   cacheNode,
+   335 |   cacheNode,
-   335 |   url,
+   336 |   url,
  To get a more detailed stack trace and pinpoint the issue, start the app in development mode by running `next dev`, then open "/sync-attribution/unguarded-async-guarded-clientsync" in your browser to investigate the error.
  Error occurred prerendering page "/sync-attribution/unguarded-async-guarded-clientsync". Read more: https://nextjs.org/docs/messages/prerender-error

  > Export encountered errors on following paths:
  	/sync-attribution/unguarded-async-guarded-clientsync/page: /sync-attribution/unguarded-async-guarded-clientsync"

  2104 |             } else {
  2105 |               if (isDebugPrerender) {
> 2106 |                 expect(output).toMatchInlineSnapshot(`
       |                                ^
  2107 |                  "Error: Route "/sync-attribution/unguarded-async-guarded-clientsync": A component accessed data, headers, params, searchParams, or a short-lived cache without a Suspense boundary nor a "use cache" above it. See more info: https://nextjs.org/docs/messages/next-prerender-missing-suspense
  2108 |                      at section (<anonymous>)
  2109 |                      at main (<anonymous>)

  at Object.toMatchInlineSnapshot (e2e/app-dir/cache-components-errors/cache-components-errors.test.ts:2106:32)

● Cache Components Errors › Build With --prerender-debug › With use cache: private › without Suspense › should error the build

expect(received).toMatchInlineSnapshot(snapshot)

Snapshot name: `Cache Components Errors Build With --prerender-debug With \`use cache: private\` without Suspense should error the build 1`

- Snapshot  - 6
+ Received  + 6

@@ -21,17 +21,17 @@
      at ErrorBoundary (bundler:///<next-src>)
      at InnerScrollAndFocusHandler (bundler:///<next-src>)
      at ScrollAndFocusHandler (bundler:///<next-src>)
      at RenderFromTemplateContext (bundler:///<next-src>)
      at OuterLayoutRouter (bundler:///<next-src>)
-   330 |  */
+   331 |  */
-   331 | function InnerLayoutRouter({
+   332 | function InnerLayoutRouter({
- > 332 |   tree,
+ > 333 |   tree,
        |   ^
-   333 |   segmentPath,
+   334 |   segmentPath,
-   334 |   cacheNode,
+   335 |   cacheNode,
-   335 |   url,
+   336 |   url,
  To get a more detailed stack trace and pinpoint the issue, start the app in development mode by running `next dev`, then open "/use-cache-private-without-suspense" in your browser to investigate the error.
  Error occurred prerendering page "/use-cache-private-without-suspense". Read more: https://nextjs.org/docs/messages/prerender-error

  > Export encountered errors on following paths:
  	/use-cache-private-without-suspense/page: /use-cache-private-without-suspense"

  3132 |             } else {
  3133 |               if (isDebugPrerender) {
> 3134 |                 expect(output).toMatchInlineSnapshot(`
       |                                ^
  3135 |                  "Error: Route "/use-cache-private-without-suspense": A component accessed data, headers, params, searchParams, or a short-lived cache without a Suspense boundary nor a "use cache" above it. See more info: https://nextjs.org/docs/messages/next-prerender-missing-suspense
  3136 |                      at InnerLayoutRouter (bundler:///<next-src>)
  3137 |                      at RedirectErrorBoundary (bundler:///<next-src>)

  at Object.toMatchInlineSnapshot (e2e/app-dir/cache-components-errors/cache-components-errors.test.ts:3134:32)

Copy link

codspeed-hq bot commented Oct 18, 2025

CodSpeed Performance Report

Merging #85043 will not alter performance

Comparing mischnic/parallel-merged-modules (b75faa0) with canary (85c3d20)

Summary

✅ 17 untouched
⏩ 3 skipped1

Footnotes

  1. 3 benchmarks were skipped, so the baseline results were used instead. If they were deleted from the codebase, click here and archive them to remove them from the performance reports.

@mischnic mischnic changed the base branch from mischnic/TooManyMatchesWarning-severity to graphite-base/85043 October 18, 2025 20:54
@mischnic mischnic force-pushed the graphite-base/85043 branch from 0ada2b6 to e46d8be Compare October 18, 2025 20:55
@mischnic mischnic force-pushed the mischnic/parallel-merged-modules branch from fdc79a5 to 235efda Compare October 18, 2025 20:55
@graphite-app graphite-app bot changed the base branch from graphite-base/85043 to canary October 18, 2025 20:56
@mischnic mischnic force-pushed the mischnic/parallel-merged-modules branch from 235efda to 12906d6 Compare October 18, 2025 20:56
FxIndexSet<ResolvedVc<Box<dyn Module>>>,
>,
}
let span = tracing::info_span!("map").entered();
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

remove or make it more specific

@mischnic mischnic force-pushed the mischnic/parallel-merged-modules branch from 12906d6 to b75faa0 Compare October 18, 2025 21:51
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

created-by: Turbopack team PRs by the Turbopack team. Turbopack Related to Turbopack with Next.js.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants