Skip to content

bump webpack (fix css sideEffects order)#81685

Open
Netail wants to merge 3 commits intovercel:canaryfrom
Netail:fix/css-order-side-effect
Open

bump webpack (fix css sideEffects order)#81685
Netail wants to merge 3 commits intovercel:canaryfrom
Netail:fix/css-order-side-effect

Conversation

@Netail
Copy link
Contributor

@Netail Netail commented Jul 15, 2025

What?

Bump webpack to the latest version, including a CSS order fix when a package uses sideEffects

Fixes # #72846 (hopefully) in favour of #70087

@Netail Netail changed the title bump webpack bump webpack@5.100.2 Jul 15, 2025
@ijjk
Copy link
Member

ijjk commented Jul 15, 2025

Allow CI Workflow Run

  • approve CI run for commit: ce2abfe

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

@Netail Netail changed the title bump webpack@5.100.2 bump webpack@5.100.2 (fix css sideEffects order) Jul 16, 2025
@Netail Netail force-pushed the fix/css-order-side-effect branch 3 times, most recently from a396fd1 to ce2abfe Compare July 23, 2025 14:43
@huozhi huozhi added the CI approved Approve running CI for fork label Jul 23, 2025
@ijjk ijjk added the Rspack label Jul 23, 2025
@ijjk
Copy link
Member

ijjk commented Jul 23, 2025

Failing test suites

Commit: c852ca6 | About building and testing Next.js

pnpm test-dev test/development/app-dir/hmr-iframe/hmr-iframe.test.ts (job)

  • hmr-iframe > should do HMR when rendering two server component changes at the same time (DD)
Expand output

● hmr-iframe › should do HMR when rendering two server component changes at the same time

locator.innerText: Error: strict mode violation: locator('p') resolved to 3 elements:
    1) <p>An error occurred while running this page.</p> aka getByText('An error occurred while')
    2) <p>Reloading usually fixes this.</p> aka getByText('Reloading usually fixes this.')
    3) <p data-nextjs-call-stack-title="true">…</p> aka getByText('Call Stack')

Call log:
  - waiting for locator('p')

  26 |       await (await (await browser.elementByCss('iframe')).contentFrame())
  27 |         .locator('p')
> 28 |         .innerText()
     |          ^
  29 |     ).toEqual('content-new')
  30 |
  31 |     const cliOutput = next.cliOutput.slice(cliOutputLength)

  at Object.innerText (development/app-dir/hmr-iframe/hmr-iframe.test.ts:28:10)

pnpm test test/integration/next-dynamic-lazy-compilation/test/index.test.ts (job)

  • next/dynamic lazy compilation > development mode > should render server value (DD)
  • next/dynamic lazy compilation > development mode > should render dynamic server rendered values before hydration (DD)
  • next/dynamic lazy compilation > development mode > should render dynamic server rendered values on client mount (DD)
Expand output

● next/dynamic lazy compilation › development mode › should render server value

FetchError: request to http://localhost:34263/ failed, reason: socket hang up

  at ClientRequest.<anonymous> (../node_modules/.pnpm/node-fetch@2.6.7_encoding@0.1.13/node_modules/node-fetch/lib/index.js:1491:11)

● next/dynamic lazy compilation › development mode › should render dynamic server rendered values before hydration

page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:34263/
Call log:
  - navigating to "http://localhost:34263/", waiting until "load"

  343 |     await opts?.beforePageLoad?.(page)
  344 |
> 345 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  346 |   }
  347 |
  348 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:345:16)
  at webdriver (lib/next-webdriver.ts:156:3)
  at Object.<anonymous> (integration/next-dynamic-lazy-compilation/test/index.test.ts:29:21)

● next/dynamic lazy compilation › development mode › should render dynamic server rendered values on client mount

page.goto: net::ERR_CONNECTION_REFUSED at http://localhost:34263/
Call log:
  - navigating to "http://localhost:34263/", waiting until "load"

  343 |     await opts?.beforePageLoad?.(page)
  344 |
> 345 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  346 |   }
  347 |
  348 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:345:16)
  at webdriver (lib/next-webdriver.ts:156:3)
  at Object.<anonymous> (integration/next-dynamic-lazy-compilation/test/index.test.ts:39:21)

pnpm test-start-rspack test/production/app-dir/build-output-prerender/build-output-prerender.test.ts(rspack) (job)

  • build-output-prerender > without a next config file > without --debug-prerender > prints no experimental flags (unless enabled via env variable)
Expand output

● build-output-prerender › without a next config file › without --debug-prerender › prints no experimental flags (unless enabled via env variable)

expect(received).toMatchInlineSnapshot(snapshot)

Snapshot name: `build-output-prerender without a next config file without --debug-prerender prints no experimental flags (unless enabled via env variable) 1`

- Snapshot  - 0
+ Received  + 2

  ▲ Next.js x.y.z (Rspack)
+ - Experiments (use with caution):
+   ✓ strictRouteTypes (enabled by `__NEXT_EXPERIMENTAL_STRICT_ROUTE_TYPES`)

  300 |             `)
  301 |           } else if (isRspack) {
> 302 |             expect(getPreambleOutput(next.cliOutput)).toMatchInlineSnapshot(
      |                                                       ^
  303 |               `"▲ Next.js x.y.z (Rspack)"`
  304 |             )
  305 |           } else {

  at Object.toMatchInlineSnapshot (production/app-dir/build-output-prerender/build-output-prerender.test.ts:302:55)

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 -> second-client
  • css-order strict > should load correct styles navigating first -> second-client
Expand output

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

page.waitForSelector: Timeout 10000ms exceeded.
Call log:
  - waiting for locator('#hello2c') 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 -> second-client

page.waitForSelector: Timeout 10000ms exceeded.
Call log:
  - waiting for locator('#hello2c') 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)

pnpm test-dev-rspack test/e2e/app-dir/use-cache-without-experimental-flag/use-cache-without-experimental-flag.test.ts(rspack) (job)

  • parallel-routes-revalidation > should handle router.refresh() when called in a slot
Expand output

● parallel-routes-revalidation › should handle router.refresh() when called in a slot

TIMED OUT: true

false

undefined

  726 |   }
  727 |   console.error('TIMED OUT CHECK: ', { regex, content, lastErr })
> 728 |   throw new Error('TIMED OUT: ' + regex + '\n\n' + content + '\n\n' + lastErr)
      |         ^
  729 | }
  730 |
  731 | export class File {

  at check (lib/next-test-utils.ts:728:9)
  at Object.<anonymous> (e2e/app-dir/parallel-routes-revalidation/parallel-routes-revalidation.test.ts:53:5)

pnpm test test/integration/telemetry/test/config.test.ts (job)

  • config telemetry > production mode > emits telemery for usage of image, script & dynamic (DD)
Expand output

● config telemetry › production mode › emits telemery for usage of image, script & dynamic

expect(received).toEqual(expected) // deep equality

Expected: ArrayContaining [{"featureName": "next/image", "invocationCount": 2}, {"featureName": "next/script", "invocationCount": 1}, {"featureName": "next/dynamic", "invocationCount": 1}]
Received: [{"featureName": "vercelImageGeneration", "invocationCount": 1}, {"featureName": "vercelImageGeneration", "invocationCount": 0}]

  175 |
  176 |           // eslint-disable-next-line jest/no-standalone-expect
> 177 |           expect(featureUsageEvents).toEqual(
      |                                      ^
  178 |             expect.arrayContaining([
  179 |               {
  180 |                 featureName: 'next/image',

  at Object.toEqual (integration/telemetry/test/config.test.ts:177:38)

@ijjk
Copy link
Member

ijjk commented Jul 23, 2025

Stats from current PR

Default Build (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary Netail/next.js fix/css-order-side-effect Change
buildDuration 17.8s 15.7s N/A
buildDurationCached 14.3s 11.6s N/A
nodeModulesSize 456 MB 457 MB ⚠️ +289 kB
nextStartRea..uration (ms) 707ms 717ms N/A
Client Bundles (main, webpack) Overall increase ⚠️
vercel/next.js canary Netail/next.js fix/css-order-side-effect Change
2086.HASH.js gzip 169 B N/A N/A
2161-HASH.js gzip 5.39 kB 5.4 kB N/A
2747-HASH.js gzip 4.48 kB 4.46 kB N/A
4322-HASH.js gzip 51.2 kB 50.9 kB N/A
ec793fe8-HASH.js gzip 62.3 kB 62.3 kB N/A
framework-HASH.js gzip 59.8 kB 59.8 kB N/A
main-app-HASH.js gzip 251 B 250 B N/A
main-HASH.js gzip 38.3 kB 38.7 kB ⚠️ +357 B
webpack-HASH.js gzip 1.68 kB 1.69 kB N/A
1596.HASH.js gzip N/A 163 B N/A
Overall change 38.3 kB 38.7 kB ⚠️ +357 B
Legacy Client Bundles (polyfills)
vercel/next.js canary Netail/next.js fix/css-order-side-effect 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 Netail/next.js fix/css-order-side-effect Change
_app-HASH.js gzip 194 B 191 B N/A
_error-HASH.js gzip 182 B 180 B N/A
css-HASH.js gzip 336 B 334 B N/A
dynamic-HASH.js gzip 1.8 kB 1.79 kB N/A
edge-ssr-HASH.js gzip 256 B 254 B N/A
head-HASH.js gzip 352 B 349 B N/A
hooks-HASH.js gzip 385 B 382 B N/A
image-HASH.js gzip 580 B 578 B N/A
index-HASH.js gzip 259 B 256 B N/A
link-HASH.js gzip 2.5 kB 2.5 kB N/A
routerDirect..HASH.js gzip 319 B 316 B N/A
script-HASH.js gzip 385 B 386 B N/A
withRouter-HASH.js gzip 316 B 314 B N/A
1afbb74e6ecf..834.css gzip 106 B 106 B
Overall change 106 B 106 B
Client Build Manifests
vercel/next.js canary Netail/next.js fix/css-order-side-effect Change
_buildManifest.js gzip 738 B 739 B N/A
Overall change 0 B 0 B
Rendered Page Sizes
vercel/next.js canary Netail/next.js fix/css-order-side-effect Change
index.html gzip 523 B 523 B
link.html gzip 537 B 537 B
withRouter.html gzip 519 B 519 B
Overall change 1.58 kB 1.58 kB
Edge SSR bundle Size Overall increase ⚠️
vercel/next.js canary Netail/next.js fix/css-order-side-effect Change
edge-ssr.js gzip 124 kB 124 kB N/A
page.js gzip 237 kB 238 kB ⚠️ +543 B
Overall change 237 kB 238 kB ⚠️ +543 B
Middleware size Overall increase ⚠️
vercel/next.js canary Netail/next.js fix/css-order-side-effect Change
middleware-b..fest.js gzip 652 B 655 B N/A
middleware-r..fest.js gzip 155 B 156 B N/A
middleware.js gzip 32.6 kB 32.9 kB ⚠️ +331 B
edge-runtime..pack.js gzip 846 B 846 B
Overall change 33.4 kB 33.7 kB ⚠️ +331 B
Next Runtimes
vercel/next.js canary Netail/next.js fix/css-order-side-effect Change
app-page-exp...dev.js gzip 301 kB 301 kB N/A
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.4 kB 47.4 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.6 kB 50.6 kB
pages-turbo...prod.js gzip 38.1 kB 38.1 kB
pages.runtim...dev.js gzip 50.6 kB 50.6 kB
pages.runtim..prod.js gzip 38.1 kB 38.1 kB
server.runti..prod.js gzip 59.8 kB 59.8 kB
Overall change 1.47 MB 1.47 MB
build cache Overall increase ⚠️
vercel/next.js canary Netail/next.js fix/css-order-side-effect Change
0.pack gzip 3.61 MB 3.61 MB ⚠️ +8.61 kB
index.pack gzip 99.7 kB 98.3 kB N/A
Overall change 3.61 MB 3.61 MB ⚠️ +8.61 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-dda7d8b64d4ba15c.js"],
+    "/": ["static\u002Fchunks\u002Fpages\u002Findex-c50796dac5b5f634.js"],
     "/_error": [
-      "static\u002Fchunks\u002Fpages\u002F_error-6ef44d3954f25711.js",
+      "static\u002Fchunks\u002Fpages\u002F_error-dbcfd2b5922536db.js",
     ],
     "/css": [
       "static\u002Fcss\u002Fded6b86ab9cc0a1f.css",
-      "static\u002Fchunks\u002Fpages\u002Fcss-c8aaa7211416a045.js",
+      "static\u002Fchunks\u002Fpages\u002Fcss-82ec6161ac9b0e74.js",
     ],
     "/dynamic": [
-      "static\u002Fchunks\u002Fpages\u002Fdynamic-d53bb7f318f342c2.js",
+      "static\u002Fchunks\u002Fpages\u002Fdynamic-bfebf8276df190f6.js",
     ],
     "/edge-ssr": [
-      "static\u002Fchunks\u002Fpages\u002Fedge-ssr-1383106d4a3e7d72.js",
+      "static\u002Fchunks\u002Fpages\u002Fedge-ssr-511da76a9f10d9d6.js",
     ],
-    "/head": ["static\u002Fchunks\u002Fpages\u002Fhead-1db1c4be1a45662f.js"],
-    "/hooks": ["static\u002Fchunks\u002Fpages\u002Fhooks-e6deee5b72a5b112.js"],
+    "/head": ["static\u002Fchunks\u002Fpages\u002Fhead-8fcc6f5c8eddb002.js"],
+    "/hooks": ["static\u002Fchunks\u002Fpages\u002Fhooks-803f02d9c5cdacd2.js"],
     "/image": [
-      "static\u002Fchunks\u002F2747-90c828280005c0c3.js",
-      "static\u002Fchunks\u002Fpages\u002Fimage-868472cd5e84efc9.js",
+      "static\u002Fchunks\u002F6349-aef2e0dccc3f2a39.js",
+      "static\u002Fchunks\u002Fpages\u002Fimage-016d21c3ed2169fc.js",
     ],
-    "/link": ["static\u002Fchunks\u002Fpages\u002Flink-0ec374e48b2ce5d9.js"],
+    "/link": ["static\u002Fchunks\u002Fpages\u002Flink-3117370e10c3bd3a.js"],
     "/routerDirect": [
-      "static\u002Fchunks\u002Fpages\u002FrouterDirect-1a34bfadbc088491.js",
+      "static\u002Fchunks\u002Fpages\u002FrouterDirect-1f10335241905347.js",
     ],
     "/script": [
-      "static\u002Fchunks\u002Fpages\u002Fscript-52320f59afbd096d.js",
+      "static\u002Fchunks\u002Fpages\u002Fscript-9277c32acc1c0016.js",
     ],
     "/withRouter": [
-      "static\u002Fchunks\u002Fpages\u002FwithRouter-3b1a16d3dfa21c16.js",
+      "static\u002Fchunks\u002Fpages\u002FwithRouter-dcaca94a5a1b9e05.js",
     ],
     sortedPages: [
       "\u002F",
Diff for _app-HASH.js
@@ -1,18 +1,19 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [636],
   {
-    /***/ 1574: /***/ (
+    /***/ 7160(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
-    ) => {
+    ) {
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/_app",
         function () {
-          return __webpack_require__(2846);
+          return __webpack_require__(1082);
         },
       ]);
       if (false) {
+        // removed by dead control flow
       }
 
       /***/
@@ -25,7 +26,7 @@
     /******/ __webpack_require__.O(
       0,
       [6593, 8792],
-      () => (__webpack_exec__(1574), __webpack_exec__(9864))
+      () => (__webpack_exec__(7160), __webpack_exec__(9700))
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for _error-HASH.js
@@ -1,18 +1,19 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [2731],
   {
-    /***/ 7844: /***/ (
+    /***/ 4982(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
-    ) => {
+    ) {
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/_error",
         function () {
-          return __webpack_require__(9976);
+          return __webpack_require__(6359);
         },
       ]);
       if (false) {
+        // removed by dead control flow
       }
 
       /***/
@@ -23,7 +24,7 @@
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(7844)
+      __webpack_exec__(4982)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for css-HASH.js
@@ -1,11 +1,11 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [9813],
   {
-    /***/ 5423: /***/ (
+    /***/ 4585(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
-    ) => {
+    ) {
       "use strict";
       __webpack_require__.r(__webpack_exports__);
       /* harmony export */ __webpack_require__.d(__webpack_exports__, {
@@ -15,7 +15,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(3108);
       /* harmony import */ var _css_module_css__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(5876);
+        __webpack_require__(5706);
       /* harmony import */ var _css_module_css__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           _css_module_css__WEBPACK_IMPORTED_MODULE_1__
@@ -35,25 +35,26 @@
       /***/
     },
 
-    /***/ 5876: /***/ (module) => {
+    /***/ 5706(module) {
       // extracted by mini-css-extract-plugin
       module.exports = { helloWorld: "css_helloWorld__aUdUq" };
 
       /***/
     },
 
-    /***/ 9918: /***/ (
+    /***/ 9216(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
-    ) => {
+    ) {
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/css",
         function () {
-          return __webpack_require__(5423);
+          return __webpack_require__(4585);
         },
       ]);
       if (false) {
+        // removed by dead control flow
       }
 
       /***/
@@ -64,7 +65,7 @@
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(9918)
+      __webpack_exec__(9216)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for dynamic-HASH.js
@@ -1,21 +1,25 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [2291],
   {
-    /***/ 1231: /***/ (
-      module,
+    /***/ 2604(
+      __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
-    ) => {
-      module.exports = __webpack_require__(4464);
+    ) {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/dynamic",
+        function () {
+          return __webpack_require__(3643);
+        },
+      ]);
+      if (false) {
+        // removed by dead control flow
+      }
 
       /***/
     },
 
-    /***/ 2101: /***/ (
-      __unused_webpack_module,
-      exports,
-      __webpack_require__
-    ) => {
+    /***/ 3401(__unused_webpack_module, exports, __webpack_require__) {
       "use strict";
       /* __next_internal_client_entry_do_not_use__  cjs */
       Object.defineProperty(exports, "__esModule", {
@@ -33,29 +37,69 @@
       );
       const LoadableContext = _react.default.createContext(null);
       if (false) {
+        // removed by dead control flow
       } //# sourceMappingURL=loadable-context.shared-runtime.js.map
 
       /***/
     },
 
-    /***/ 3458: /***/ (
+    /***/ 3643(
       __unused_webpack_module,
-      __unused_webpack_exports,
+      __webpack_exports__,
       __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/dynamic",
-        function () {
-          return __webpack_require__(9381);
-        },
-      ]);
-      if (false) {
-      }
+    ) {
+      "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__(3108);
+      /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ =
+        __webpack_require__(3973);
+      /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1___default =
+        /*#__PURE__*/ __webpack_require__.n(
+          next_dynamic__WEBPACK_IMPORTED_MODULE_1__
+        );
+
+      const DynamicHello = next_dynamic__WEBPACK_IMPORTED_MODULE_1___default()(
+        () =>
+          __webpack_require__
+            .e(/* import() */ 1596)
+            .then(__webpack_require__.bind(__webpack_require__, 1596))
+            .then((mod) => mod.Hello),
+        {
+          loadableGenerated: {
+            webpack: () => [/*require.resolve*/ 1596],
+          },
+        }
+      );
+      const Page = () =>
+        /*#__PURE__*/ (0, react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(
+          react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment,
+          {
+            children: [
+              /*#__PURE__*/ (0,
+              react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", {
+                children: "testing next/dynamic size",
+              }),
+              /*#__PURE__*/ (0,
+              react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(
+                DynamicHello,
+                {}
+              ),
+            ],
+          }
+        );
+      var __N_SSP = true;
+      /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = Page;
 
       /***/
     },
 
-    /***/ 4464: /***/ (module, exports, __webpack_require__) => {
+    /***/ 3660(module, exports, __webpack_require__) {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -88,7 +132,7 @@
         __webpack_require__(4312)
       );
       const _loadablesharedruntime = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(9799)
+        __webpack_require__(4539)
       );
       const isServerSide = "object" === "undefined";
       // Normalize loader to return the module as form { default: Component } for `React.lazy`.
@@ -124,6 +168,7 @@
           loading: ({ error, isLoading, pastDelay }) => {
             if (!pastDelay) return null;
             if (false) {
+              // removed by dead control flow
             }
             return null;
           },
@@ -188,67 +233,13 @@
       /***/
     },
 
-    /***/ 9381: /***/ (
-      __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__(3108);
-      /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(1231);
-      /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1___default =
-        /*#__PURE__*/ __webpack_require__.n(
-          next_dynamic__WEBPACK_IMPORTED_MODULE_1__
-        );
-
-      const DynamicHello = next_dynamic__WEBPACK_IMPORTED_MODULE_1___default()(
-        () =>
-          __webpack_require__
-            .e(/* import() */ 2086)
-            .then(__webpack_require__.bind(__webpack_require__, 2086))
-            .then((mod) => mod.Hello),
-        {
-          loadableGenerated: {
-            webpack: () => [/*require.resolve*/ 2086],
-          },
-        }
-      );
-      const Page = () =>
-        /*#__PURE__*/ (0, react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(
-          react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment,
-          {
-            children: [
-              /*#__PURE__*/ (0,
-              react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", {
-                children: "testing next/dynamic size",
-              }),
-              /*#__PURE__*/ (0,
-              react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(
-                DynamicHello,
-                {}
-              ),
-            ],
-          }
-        );
-      var __N_SSP = true;
-      /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = Page;
+    /***/ 3973(module, __unused_webpack_exports, __webpack_require__) {
+      module.exports = __webpack_require__(3660);
 
       /***/
     },
 
-    /***/ 9799: /***/ (
-      __unused_webpack_module,
-      exports,
-      __webpack_require__
-    ) => {
+    /***/ 4539(__unused_webpack_module, exports, __webpack_require__) {
       "use strict";
       // TODO: Remove use of `any` type.
       /**
@@ -286,7 +277,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
       const _react = /*#__PURE__*/ _interop_require_default._(
         __webpack_require__(4312)
       );
-      const _loadablecontextsharedruntime = __webpack_require__(2101);
+      const _loadablecontextsharedruntime = __webpack_require__(3401);
       function resolve(obj) {
         return obj && obj.default ? obj.default : obj;
       }
@@ -340,6 +331,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
         }
         // Server only
         if (false) {
+          // removed by dead control flow
         }
         // Client only
         if (!initialized && "object" !== "undefined") {
@@ -524,7 +516,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(3458)
+      __webpack_exec__(2604)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for edge-ssr-HASH.js
@@ -1,11 +1,29 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [676],
   {
-    /***/ 1564: /***/ (
+    /***/ 7046(
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/edge-ssr",
+        function () {
+          return __webpack_require__(7142);
+        },
+      ]);
+      if (false) {
+        // removed by dead control flow
+      }
+
+      /***/
+    },
+
+    /***/ 7142(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
-    ) => {
+    ) {
       "use strict";
       __webpack_require__.r(__webpack_exports__);
       /* harmony export */ __webpack_require__.d(__webpack_exports__, {
@@ -20,30 +38,13 @@
 
       /***/
     },
-
-    /***/ 4300: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/edge-ssr",
-        function () {
-          return __webpack_require__(1564);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(4300)
+      __webpack_exec__(7046)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for head-HASH.js
@@ -1,38 +1,17 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [5350],
   {
-    /***/ 1548: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/head",
-        function () {
-          return __webpack_require__(4282);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
-
-    /***/ 3952: /***/ (
-      module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      module.exports = __webpack_require__(1653);
+    /***/ 3770(module, __unused_webpack_exports, __webpack_require__) {
+      module.exports = __webpack_require__(9025);
 
       /***/
     },
 
-    /***/ 4282: /***/ (
+    /***/ 6236(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
-    ) => {
+    ) {
       "use strict";
       __webpack_require__.r(__webpack_exports__);
       /* harmony export */ __webpack_require__.d(__webpack_exports__, {
@@ -43,7 +22,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(3108);
       /* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(3952);
+        __webpack_require__(3770);
       /* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           next_head__WEBPACK_IMPORTED_MODULE_1__
@@ -76,13 +55,31 @@
 
       /***/
     },
+
+    /***/ 6510(
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/head",
+        function () {
+          return __webpack_require__(6236);
+        },
+      ]);
+      if (false) {
+        // removed by dead control flow
+      }
+
+      /***/
+    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(1548)
+      __webpack_exec__(6510)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for hooks-HASH.js
@@ -1,11 +1,11 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [9804],
   {
-    /***/ 2944: /***/ (
+    /***/ 622(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
-    ) => {
+    ) {
       "use strict";
       __webpack_require__.r(__webpack_exports__);
       /* harmony export */ __webpack_require__.d(__webpack_exports__, {
@@ -60,18 +60,19 @@
       /***/
     },
 
-    /***/ 9167: /***/ (
+    /***/ 2945(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
-    ) => {
+    ) {
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/hooks",
         function () {
-          return __webpack_require__(2944);
+          return __webpack_require__(622);
         },
       ]);
       if (false) {
+        // removed by dead control flow
       }
 
       /***/
@@ -82,7 +83,7 @@
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(9167)
+      __webpack_exec__(2945)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for image-HASH.js
@@ -1,11 +1,11 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [2983],
   {
-    /***/ 337: /***/ (
+    /***/ 915(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
-    ) => {
+    ) {
       "use strict";
       // ESM COMPAT FLAG
       __webpack_require__.r(__webpack_exports__);
@@ -18,8 +18,8 @@
 
       // EXTERNAL MODULE: ./node_modules/.pnpm/react@19.2.3/node_modules/react/jsx-runtime.js
       var jsx_runtime = __webpack_require__(3108);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+main-repo+packages+next+next-packed.tgz_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/image.js
-      var next_image = __webpack_require__(2747);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@file+..+diff-repo+packages+next+next-packed.tgz_react-dom@19.2.3_react@19.2.3__react@19.2.3/node_modules/next/image.js
+      var next_image = __webpack_require__(6349);
       var image_default = /*#__PURE__*/ __webpack_require__.n(next_image); // ./pages/nextjs.png
       /* harmony default export */ const nextjs = {
         src: "/_next/static/media/nextjs.cae0b805.png",
@@ -49,18 +49,19 @@
       /***/
     },
 
-    /***/ 9826: /***/ (
+    /***/ 7156(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
-    ) => {
+    ) {
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/image",
         function () {
-          return __webpack_require__(337);
+          return __webpack_require__(915);
         },
       ]);
       if (false) {
+        // removed by dead control flow
       }
 
       /***/
@@ -70,8 +71,8 @@
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
-    /******/ __webpack_require__.O(0, [2747, 636, 6593, 8792], () =>
-      __webpack_exec__(9826)
+    /******/ __webpack_require__.O(0, [636, 6593, 8792, 6349], () =>
+      __webpack_exec__(7156)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for index-HASH.js
@@ -1,28 +1,11 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [3332],
   {
-    /***/ 6376: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/",
-        function () {
-          return __webpack_require__(8460);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
-
-    /***/ 8460: /***/ (
+    /***/ 830(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
-    ) => {
+    ) {
       "use strict";
       __webpack_require__.r(__webpack_exports__);
       /* harmony export */ __webpack_require__.d(__webpack_exports__, {
@@ -36,13 +19,31 @@
 
       /***/
     },
+
+    /***/ 1938(
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/",
+        function () {
+          return __webpack_require__(830);
+        },
+      ]);
+      if (false) {
+        // removed by dead control flow
+      }
+
+      /***/
+    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(6376)
+      __webpack_exec__(1938)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for link-HASH.js
@@ -1,7 +1,216 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [4672],
   {
-    /***/ 857: /***/ (module, exports, __webpack_require__) => {
+    /***/ 2774(module, exports, __webpack_require__) {
+      "use strict";
+
+      Object.defineProperty(exports, "__esModule", {
+        value: true,
+      });
+      Object.defineProperty(exports, "useIntersection", {
+        enumerable: true,
+        get: function () {
+          return useIntersection;
+        },
+      });
+      const _react = __webpack_require__(4312);
+      const _requestidlecallback = __webpack_require__(9413);
+      const hasIntersectionObserver =
+        typeof IntersectionObserver === "function";
+      const observers = new Map();
+      const idList = [];
+      function createObserver(options) {
+        const id = {
+          root: options.root || null,
+          margin: options.rootMargin || "",
+        };
+        const existing = idList.find(
+          (obj) => obj.root === id.root && obj.margin === id.margin
+        );
+        let instance;
+        if (existing) {
+          instance = observers.get(existing);
+          if (instance) {
+            return instance;
+          }
+        }
+        const elements = new Map();
+        const observer = new IntersectionObserver((entries) => {
+          entries.forEach((entry) => {
+            const callback = elements.get(entry.target);
+            const isVisible =
+              entry.isIntersecting || entry.intersectionRatio > 0;
+            if (callback && isVisible) {
+              callback(isVisible);
+            }
+          });
+        }, options);
+        instance = {
+          id,
+          observer,
+          elements,
+        };
+        idList.push(id);
+        observers.set(id, instance);
+        return instance;
+      }
+      function observe(element, callback, options) {
+        const { id, observer, elements } = createObserver(options);
+        elements.set(element, callback);
+        observer.observe(element);
+        return function unobserve() {
+          elements.delete(element);
+          observer.unobserve(element);
+          // Destroy observer when there's nothing left to watch:
+          if (elements.size === 0) {
+            observer.disconnect();
+            observers.delete(id);
+            const index = idList.findIndex(
+              (obj) => obj.root === id.root && obj.margin === id.margin
+            );
+            if (index > -1) {
+              idList.splice(index, 1);
+            }
+          }
+        };
+      }
+      function useIntersection({ rootRef, rootMargin, disabled }) {
+        const isDisabled = disabled || !hasIntersectionObserver;
+        const [visible, setVisible] = (0, _react.useState)(false);
+        const elementRef = (0, _react.useRef)(null);
+        const setElement = (0, _react.useCallback)((element) => {
+          elementRef.current = element;
+        }, []);
+        (0, _react.useEffect)(() => {
+          if (hasIntersectionObserver) {
+            if (isDisabled || visible) return;
+            const element = elementRef.current;
+            if (element && element.tagName) {
+              const unobserve = observe(
+                element,
+                (isVisible) => isVisible && setVisible(isVisible),
+                {
+                  root: rootRef?.current,
+                  rootMargin,
+                }
+              );
+              return unobserve;
+            }
+          } else {
+            if (!visible) {
+              const idleCallback = (0,
+              _requestidlecallback.requestIdleCallback)(() => setVisible(true));
+              return () =>
+                (0, _requestidlecallback.cancelIdleCallback)(idleCallback);
+            }
+          }
+          // eslint-disable-next-line react-hooks/exhaustive-deps
+        }, [isDisabled, rootMargin, rootRef, visible, elementRef.current]);
+        const resetVisible = (0, _react.useCallback)(() => {
+          setVisible(false);
+        }, []);
+        return [setElement, visible, resetVisible];
+      }
+      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-intersection.js.map
+
+      /***/
+    },
+
+    /***/ 3351(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__(4312);
+      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
+
+      /***/
+    },
+
+    /***/ 3440(module, __unused_webpack_exports, __webpack_require__) {
+      module.exports = __webpack_require__(4757);
+
+      /***/
+    },
+
+    /***/ 4757(module, exports, __webpack_require__) {
       "use strict";
       /* __next_internal_client_entry_do_not_use__  cjs */
       Object.defineProperty(exports, "__esModule", {
@@ -23,25 +232,26 @@
           return useLinkStatus;
         },
       });
-      const _interop_require_wildcard = __webpack_require__(8781);
+      const _interop_require_wildcard = __webpack_require__(1162);
       const _jsxruntime = __webpack_require__(3108);
       const _react = /*#__PURE__*/ _interop_require_wildcard._(
         __webpack_require__(4312)
       );
-      const _resolvehref = __webpack_require__(4055);
-      const _islocalurl = __webpack_require__(7175);
-      const _formaturl = __webpack_require__(9674);
-      const _utils = __webpack_require__(7424);
-      const _addlocale = __webpack_require__(589);
-      const _routercontextsharedruntime = __webpack_require__(7010);
-      const _useintersection = __webpack_require__(2330);
-      const _getdomainlocale = __webpack_require__(7207);
-      const _addbasepath = __webpack_require__(9942);
-      const _usemergedref = __webpack_require__(8067);
-      const _erroronce = __webpack_require__(1945);
+      const _resolvehref = __webpack_require__(4691);
+      const _islocalurl = __webpack_require__(4763);
+      const _formaturl = __webpack_require__(3246);
+      const _utils = __webpack_require__(7372);
+      const _addlocale = __webpack_require__(1809);
+      const _routercontextsharedruntime = __webpack_require__(2254);
+      const _useintersection = __webpack_require__(2774);
+      const _getdomainlocale = __webpack_require__(8803);
+      const _addbasepath = __webpack_require__(5834);
+      const _usemergedref = __webpack_require__(3351);
+      const _erroronce = __webpack_require__(6021);
       const prefetched = new Set();
       function prefetch(router, href, as, options) {
         if (false) {
+          // removed by dead control flow
         }
         if (!(0, _islocalurl.isLocalURL)(href)) {
           return;
@@ -69,6 +279,7 @@
         // want to force navigation since this is only a prefetch
         router.prefetch(href, as, options).catch((err) => {
           if (false) {
+            // removed by dead control flow
           }
         });
       }
@@ -191,6 +402,7 @@
           );
           const prefetchEnabled = prefetchProp !== false;
           if (false) {
+            // removed by dead control flow
           }
           const { href, as } = _react.default.useMemo(() => {
             if (!router) {
@@ -218,11 +430,13 @@
           let child;
           if (legacyBehavior) {
             if (false) {
+              // removed by dead control flow
             } else {
               child = _react.default.Children.only(children);
             }
           } else {
             if (false) {
+              // removed by dead control flow
             }
           }
           const childRef = legacyBehavior
@@ -252,6 +466,7 @@
           _react.default.useEffect(() => {
             // in dev, we only prefetch on hover to avoid wasting resources as the prefetch will trigger compiling the page.
             if (false) {
+              // removed by dead control flow
             }
             if (!router) {
               return;
@@ -277,6 +492,7 @@
             ref: setRef,
             onClick(e) {
               if (false) {
+                // removed by dead control flow
               }
               if (!legacyBehavior && typeof onClick === "function") {
                 onClick(e);
@@ -382,6 +598,7 @@
           }
           if (legacyBehavior) {
             if (false) {
+              // removed by dead control flow
             }
             return /*#__PURE__*/ _react.default.cloneElement(child, childProps);
           }
@@ -417,168 +634,45 @@
       /***/
     },
 
-    /***/ 1945: /***/ (__unused_webpack_module, exports) => {
-      "use strict";
-
-      Object.defineProperty(exports, "__esModule", {
-        value: true,
-      });
-      Object.defineProperty(exports, "errorOnce", {
-        enumerable: true,
-        get: function () {
-          return errorOnce;
+    /***/ 5326(
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/link",
+        function () {
+          return __webpack_require__(9058);
         },
-      });
-      let errorOnce = (_) => {};
+      ]);
       if (false) {
-      } //# sourceMappingURL=error-once.js.map
+        // removed by dead control flow
+      }
 
       /***/
     },
 
-    /***/ 2330: /***/ (module, exports, __webpack_require__) => {
+    /***/ 6021(__unused_webpack_module, exports) {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
         value: true,
       });
-      Object.defineProperty(exports, "useIntersection", {
+      Object.defineProperty(exports, "errorOnce", {
         enumerable: true,
         get: function () {
-          return useIntersection;
+          return errorOnce;
         },
       });
-      const _react = __webpack_require__(4312);
-      const _requestidlecallback = __webpack_require__(601);
-      const hasIntersectionObserver =
-        typeof IntersectionObserver === "function";
-      const observers = new Map();
-      const idList = [];
-      function createObserver(options) {
-        const id = {
-          root: options.root || null,
-          margin: options.rootMargin || "",
-        };
-        const existing = idList.find(
-          (obj) => obj.root === id.root && obj.margin === id.margin
-        );
-        let instance;
-        if (existing) {
-          instance = observers.get(existing);
-          if (instance) {
-            return instance;
-          }
-        }
-        const elements = new Map();
-        const observer = new IntersectionObserver((entries) => {
-          entries.forEach((entry) => {
-            const callback = elements.get(entry.target);
-            const isVisible =
-              entry.isIntersecting || entry.intersectionRatio > 0;
-            if (callback && isVisible) {
-              callback(isVisible);
-            }
-          });
-        }, options);
-        instance = {
-          id,
-          observer,
-          elements,
-        };
-        idList.push(id);
-        observers.set(id, instance);
-        return instance;
-      }
-      function observe(element, callback, options) {
-        const { id, observer, elements } = createObserver(options);
-        elements.set(element, callback);
-        observer.observe(element);
-        return function unobserve() {
-          elements.delete(element);
-          observer.unobserve(element);
-          // Destroy observer when there's nothing left to watch:
-          if (elements.size === 0) {
-            observer.disconnect();
-            observers.delete(id);
-            const index = idList.findIndex(
-              (obj) => obj.root === id.root && obj.margin === id.margin
-            );
-            if (index > -1) {
-              idList.splice(index, 1);
-            }
-          }
-        };
-      }
-      function useIntersection({ rootRef, rootMargin, disabled }) {
-        const isDisabled = disabled || !hasIntersectionObserver;
-        const [visible, setVisible] = (0, _react.useState)(false);
-        const elementRef = (0, _react.useRef)(null);
-        const setElement = (0, _react.useCallback)((element) => {
-          elementRef.current = element;
-        }, []);
-        (0, _react.useEffect)(() => {
-          if (hasIntersectionObserver) {
-            if (isDisabled || visible) return;
-            const element = elementRef.current;
-            if (element && element.tagName) {
-              const unobserve = observe(
-                element,
-                (isVisible) => isVisible && setVisible(isVisible),
-                {
-                  root: rootRef?.current,
-                  rootMargin,
-                }
-              );
-              return unobserve;
-            }
-          } else {
-            if (!visible) {
-              const idleCallback = (0,
-              _requestidlecallback.requestIdleCallback)(() => setVisible(true));
-              return () =>
-                (0, _requestidlecallback.cancelIdleCallback)(idleCallback);
-            }
-          }
-          // eslint-disable-next-line react-hooks/exhaustive-deps
-        }, [isDisabled, rootMargin, rootRef, visible, elementRef.current]);
-        const resetVisible = (0, _react.useCallback)(() => {
-          setVisible(false);
-        }, []);
-        return [setElement, visible, resetVisible];
-      }
-      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-intersection.js.map
-
-      /***/
-    },
-
-    /***/ 4972: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/link",
-        function () {
-          return __webpack_require__(7600);
-        },
-      ]);
+      let errorOnce = (_) => {};
       if (false) {
-      }
+        // removed by dead control flow
+      } //# sourceMappingURL=error-once.js.map
 
       /***/
     },
 
-    /***/ 7207: /***/ (module, exports, __webpack_require__) => {
+    /***/ 8803(module, exports, __webpack_require__) {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -590,11 +684,12 @@
           return getDomainLocale;
         },
       });
-      const _normalizetrailingslash = __webpack_require__(151);
+      const _normalizetrailingslash = __webpack_require__(1315);
       const basePath =
         /* unused pure expression or super */ null && (false || "");
       function getDomainLocale(path, locale, locales, domainLocales) {
         if (false) {
+          // removed by dead control flow
         } else {
           return false;
         }
@@ -614,11 +709,11 @@
       /***/
     },
 
-    /***/ 7600: /***/ (
+    /***/ 9058(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
-    ) => {
+    ) {
       "use strict";
       __webpack_require__.r(__webpack_exports__);
       /* harmony export */ __webpack_require__.d(__webpack_exports__, {
@@ -629,7 +724,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(3108);
       /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(7830);
+        __webpack_require__(3440);
       /* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           next_link__WEBPACK_IMPORTED_MODULE_1__
@@ -659,101 +754,13 @@
 
       /***/
     },
-
-    /***/ 7830: /***/ (
-      module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      module.exports = __webpack_require__(857);
-
-      /***/
-    },
-
-    /***/ 8067: /***/ (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__(4312);
-      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
-
-      /***/
-    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(4972)
+      __webpack_exec__(5326)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for routerDirect-HASH.js
@@ -1,21 +1,11 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [188],
   {
-    /***/ 1179: /***/ (
-      module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      module.exports = __webpack_require__(9864);
-
-      /***/
-    },
-
-    /***/ 1640: /***/ (
+    /***/ 2014(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
-    ) => {
+    ) {
       "use strict";
       __webpack_require__.r(__webpack_exports__);
       /* harmony export */ __webpack_require__.d(__webpack_exports__, {
@@ -26,7 +16,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(3108);
       /* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(1179);
+        __webpack_require__(4169);
       /* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           next_router__WEBPACK_IMPORTED_MODULE_1__
@@ -46,18 +36,25 @@
       /***/
     },
 
-    /***/ 2172: /***/ (
+    /***/ 4169(module, __unused_webpack_exports, __webpack_require__) {
+      module.exports = __webpack_require__(9700);
+
+      /***/
+    },
+
+    /***/ 4414(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
-    ) => {
+    ) {
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/routerDirect",
         function () {
-          return __webpack_require__(1640);
+          return __webpack_require__(2014);
         },
       ]);
       if (false) {
+        // removed by dead control flow
       }
 
       /***/
@@ -68,7 +65,7 @@
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(2172)
+      __webpack_exec__(4414)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for script-HASH.js
@@ -1,21 +1,35 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [1209],
   {
-    /***/ 4977: /***/ (
-      module,
+    /***/ 2591(module, __unused_webpack_exports, __webpack_require__) {
+      module.exports = __webpack_require__(4634);
+
+      /***/
+    },
+
+    /***/ 5030(
+      __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
-    ) => {
-      module.exports = __webpack_require__(326);
+    ) {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/script",
+        function () {
+          return __webpack_require__(7557);
+        },
+      ]);
+      if (false) {
+        // removed by dead control flow
+      }
 
       /***/
     },
 
-    /***/ 5887: /***/ (
+    /***/ 7557(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
-    ) => {
+    ) {
       "use strict";
       __webpack_require__.r(__webpack_exports__);
       /* harmony export */ __webpack_require__.d(__webpack_exports__, {
@@ -26,7 +40,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(3108);
       /* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(4977);
+        __webpack_require__(2591);
       /* harmony import */ var next_script__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           next_script__WEBPACK_IMPORTED_MODULE_1__
@@ -58,30 +72,13 @@
 
       /***/
     },
-
-    /***/ 6268: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/script",
-        function () {
-          return __webpack_require__(5887);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(6268)
+      __webpack_exec__(5030)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for withRouter-HASH.js
@@ -1,38 +1,11 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [3263],
   {
-    /***/ 1179: /***/ (
-      module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      module.exports = __webpack_require__(9864);
-
-      /***/
-    },
-
-    /***/ 2028: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/withRouter",
-        function () {
-          return __webpack_require__(4501);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
-
-    /***/ 4501: /***/ (
+    /***/ 559(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
-    ) => {
+    ) {
       "use strict";
       __webpack_require__.r(__webpack_exports__);
       /* harmony export */ __webpack_require__.d(__webpack_exports__, {
@@ -43,7 +16,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(3108);
       /* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(1179);
+        __webpack_require__(4169);
       /* harmony import */ var next_router__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           next_router__WEBPACK_IMPORTED_MODULE_1__
@@ -61,13 +34,37 @@
 
       /***/
     },
+
+    /***/ 726(
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/withRouter",
+        function () {
+          return __webpack_require__(559);
+        },
+      ]);
+      if (false) {
+        // removed by dead control flow
+      }
+
+      /***/
+    },
+
+    /***/ 4169(module, __unused_webpack_exports, __webpack_require__) {
+      module.exports = __webpack_require__(9700);
+
+      /***/
+    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(2028)
+      __webpack_exec__(726)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for 2086.HASH.js
@@ -1,13 +1,12 @@
 "use strict";
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
-  [2086],
+  [1596],
   {
-    /***/ 2086: /***/ (
+    /***/ 1596(
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
-    ) => {
-      __webpack_require__.r(__webpack_exports__);
+    ) {
       /* harmony export */ __webpack_require__.d(__webpack_exports__, {
         /* harmony export */ Hello: () => /* binding */ Hello,
         /* harmony export */
Diff for 2161-HASH.js

Diff too large to display

Diff for 2747-HASH.js

Diff too large to display

Diff for 4322-HASH.js
failed to diff
Diff for ec793fe8-HASH.js
@@ -1,13 +1,9 @@
 "use strict";
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
-  [5639],
+  [8580],
   {
-    /***/ 5808: /***/ (
-      __unused_webpack_module,
-      exports,
-      __webpack_require__
-    ) => {
-      /* provided dependency */ var process = __webpack_require__(6075);
+    /***/ 2314(__unused_webpack_module, exports, __webpack_require__) {
+      /* provided dependency */ var process = __webpack_require__(2433);
       /**
        * @license React
        * react-dom-client.production.js
@@ -22,9 +18,9 @@
  Modernizr 3.0.0pre (Custom Build) | MIT
 */
 
-      var Scheduler = __webpack_require__(212),
-        React = __webpack_require__(8947),
-        ReactDOM = __webpack_require__(4629);
+      var Scheduler = __webpack_require__(9018),
+        React = __webpack_require__(6009),
+        ReactDOM = __webpack_require__(5932);
       function formatProdErrorMessage(code) {
         var url = "https://react.dev/errors/" + code;
         if (1 < arguments.length) {
Diff for framework-HASH.js
@@ -2,11 +2,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [6593],
   {
-    /***/ 2889: /***/ (
-      module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
+    /***/ 2889(module, __unused_webpack_exports, __webpack_require__) {
       function checkDCE() {
         /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */
         if (
@@ -16,6 +12,7 @@
           return;
         }
         if (false) {
+          // removed by dead control flow
         }
         try {
           // Verify that the code above has been dead code eliminated (DCE'd).
@@ -32,31 +29,25 @@
         // DevTools can report bad minification during injection.
         checkDCE();
         module.exports = __webpack_require__(6123);
-      } else {
+      } // removed by dead control flow
+      else {
       }
 
       /***/
     },
 
-    /***/ 3108: /***/ (
-      module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
+    /***/ 3108(module, __unused_webpack_exports, __webpack_require__) {
       if (true) {
         module.exports = __webpack_require__(5300);
-      } else {
+      } // removed by dead control flow
+      else {
       }
 
       /***/
     },
 
-    /***/ 3459: /***/ (
-      __unused_webpack_module,
-      exports,
-      __webpack_require__
-    ) => {
-      /* provided dependency */ var process = __webpack_require__(1444);
+    /***/ 3459(__unused_webpack_module, exports, __webpack_require__) {
+      /* provided dependency */ var process = __webpack_require__(7762);
       /**
        * @license React
        * react-dom-client.production.js
@@ -17118,11 +17109,7 @@
       /***/
     },
 
-    /***/ 4156: /***/ (
-      module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
+    /***/ 4156(module, __unused_webpack_exports, __webpack_require__) {
       function checkDCE() {
         /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */
         if (
@@ -17132,6 +17119,7 @@
           return;
         }
         if (false) {
+          // removed by dead control flow
         }
         try {
           // Verify that the code above has been dead code eliminated (DCE'd).
@@ -17148,26 +17136,24 @@
         // DevTools can report bad minification during injection.
         checkDCE();
         module.exports = __webpack_require__(3459);
-      } else {
+      } // removed by dead control flow
+      else {
       }
 
       /***/
     },
 
-    /***/ 4312: /***/ (
-      module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
+    /***/ 4312(module, __unused_webpack_exports, __webpack_require__) {
       if (true) {
         module.exports = __webpack_require__(9447);
-      } else {
+      } // removed by dead control flow
+      else {
       }
 
       /***/
     },
 
-    /***/ 5300: /***/ (__unused_webpack_module, exports) => {
+    /***/ 5300(__unused_webpack_module, exports) {
       /**
        * @license React
        * react-jsx-runtime.production.js
@@ -17205,11 +17191,7 @@
       /***/
     },
 
-    /***/ 6123: /***/ (
-      __unused_webpack_module,
-      exports,
-      __webpack_require__
-    ) => {
+    /***/ 6123(__unused_webpack_module, exports, __webpack_require__) {
       /**
        * @license React
        * react-dom.production.js
@@ -17451,7 +17433,7 @@
       /***/
     },
 
-    /***/ 7131: /***/ (__unused_webpack_module, exports) => {
+    /***/ 7131(__unused_webpack_module, exports) {
       /**
        * @license React
        * scheduler.production.js
@@ -17813,25 +17795,18 @@
       /***/
     },
 
-    /***/ 9366: /***/ (
-      module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
+    /***/ 9366(module, __unused_webpack_exports, __webpack_require__) {
       if (true) {
         module.exports = __webpack_require__(7131);
-      } else {
+      } // removed by dead control flow
+      else {
       }
 
       /***/
     },
 
-    /***/ 9447: /***/ (
-      __unused_webpack_module,
-      exports,
-      __webpack_require__
-    ) => {
-      /* provided dependency */ var process = __webpack_require__(1444);
+    /***/ 9447(__unused_webpack_module, exports, __webpack_require__) {
+      /* provided dependency */ var process = __webpack_require__(7762);
       /**
        * @license React
        * react.production.js
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],
   {
-    /***/ 341: /***/ () => {
-      /* (ignored) */
-      /***/
-    },
-
-    /***/ 3237: /***/ (
+    /***/ 1137(
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
-    ) => {
+    ) {
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 375, 23)
+        __webpack_require__.t.bind(__webpack_require__, 7413, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 2972, 23)
+        __webpack_require__.t.bind(__webpack_require__, 9898, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 7508, 23)
+        __webpack_require__.t.bind(__webpack_require__, 9854, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 6043, 23)
+        __webpack_require__.t.bind(__webpack_require__, 9261, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 9797, 23)
+        __webpack_require__.t.bind(__webpack_require__, 867, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 2933, 23)
+        __webpack_require__.t.bind(__webpack_require__, 2463, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 4220, 23)
+        __webpack_require__.t.bind(__webpack_require__, 1866, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 97, 23)
+        __webpack_require__.t.bind(__webpack_require__, 9667, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 464, 23)
+        __webpack_require__.t.bind(__webpack_require__, 8822, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 619, 23)
+        __webpack_require__.t.bind(__webpack_require__, 1717, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 1464, 23)
+        __webpack_require__.t.bind(__webpack_require__, 5366, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 5297)
+        __webpack_require__.bind(__webpack_require__, 1155)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 7937, 23)
+        __webpack_require__.t.bind(__webpack_require__, 391, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 7584, 23)
+        __webpack_require__.t.bind(__webpack_require__, 7346, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 6826, 23)
+        __webpack_require__.t.bind(__webpack_require__, 1340, 23)
       );
 
       /***/
     },
+
+    /***/ 2751() {
+      /* (ignored) */
+      /***/
+    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
@@ -66,8 +66,8 @@
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(
       0,
-      [5639, 4322],
-      () => (__webpack_exec__(2193), __webpack_exec__(3237))
+      [8580, 2658],
+      () => (__webpack_exec__(9851), __webpack_exec__(1137))
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for webpack-HASH.js
@@ -143,7 +143,8 @@
       ];
       /******/ for (
         var current = mode & 2 && value;
-        typeof current == "object" && !~leafPrototypes.indexOf(current);
+        (typeof current == "object" || typeof current == "function") &&
+        !~leafPrototypes.indexOf(current);
         current = getProto(current)
       ) {
         /******/ Object.getOwnPropertyNames(current).forEach(
@@ -205,7 +206,7 @@
     /******/ __webpack_require__.u = (chunkId) => {
       /******/ // return url for filenames based on template
       /******/ return (
-        "static/chunks/" + chunkId + "." + "9c9ddbde79ea2f29" + ".js"
+        "static/chunks/" + chunkId + "." + "3f635cb29ff960ff" + ".js"
       );
       /******/
     };
@@ -277,7 +278,6 @@
         /******/ script = document.createElement("script");
         /******/
         /******/ script.charset = "utf-8";
-        /******/ script.timeout = 120;
         /******/ if (__webpack_require__.nc) {
           /******/ script.setAttribute("nonce", __webpack_require__.nc);
           /******/
Commit: 9f042ef

@Netail
Copy link
Contributor Author

Netail commented Jul 23, 2025

Thanks for fixing the types @huozhi.

Interesting to see the client bundle being increased by quite a bit.

@Netail Netail force-pushed the fix/css-order-side-effect branch 6 times, most recently from b5e3cb4 to 97e91ff Compare July 30, 2025 22:47
@Netail Netail force-pushed the fix/css-order-side-effect branch 2 times, most recently from cde8c4c to 3f236ab Compare August 11, 2025 12:02
@Netail Netail force-pushed the fix/css-order-side-effect branch 3 times, most recently from cdaace3 to 90f2465 Compare August 11, 2025 12:41
@Netail
Copy link
Contributor Author

Netail commented Aug 11, 2025

Something's broken, but can't quite put my finger on it

@Netail Netail force-pushed the fix/css-order-side-effect branch 3 times, most recently from 125dff6 to f03bed9 Compare August 15, 2025 08:15
@alexander-akait
Copy link
Contributor

@Netail Do you need help here? If yes can you provide what exactly is broken and how to reproduce, we will look at this, thanks

@Netail
Copy link
Contributor Author

Netail commented Aug 18, 2025

@Netail Do you need help here? If yes can you provide what exactly is broken and how to reproduce, we will look at this, thanks

Oh hey Alexander! Well it's mainly about the tests not passing, with several different issues. E.g. "sass" or "css-loader" not being found and HMR or hydration not working. It's not one specific error that occurs for every test, so I assume it something over-arching. Could also be related to any of the NextJS webpack plugins, which is outside of my knowledge

@Netail Netail force-pushed the fix/css-order-side-effect branch 2 times, most recently from f6806d9 to 776eed3 Compare November 17, 2025 12:55
@Netail Netail changed the title bump webpack@5.102.0 (fix css sideEffects order) bump webpack@5.101.3 (fix css sideEffects order) Nov 17, 2025
@Netail Netail force-pushed the fix/css-order-side-effect branch 3 times, most recently from 3680449 to 590981e Compare November 18, 2025 21:51
@Netail Netail force-pushed the fix/css-order-side-effect branch 3 times, most recently from 47bd597 to ab83db9 Compare December 16, 2025 18:38
@Netail
Copy link
Contributor Author

Netail commented Dec 16, 2025

@huozhi A few new issues I haven't seen before since some last changes, not sure if they are Webpack related or NextJS

#81685 (comment)

@alexander-akait
Copy link
Contributor

@Netail Can you show me them?

@Netail Netail force-pushed the fix/css-order-side-effect branch from 34ef080 to 3a95055 Compare December 18, 2025 21:43
@Netail
Copy link
Contributor Author

Netail commented Dec 18, 2025

@Netail Can you show me them?

They are listed here: #81685 (comment)

4 rspack related issues (which I think are unrelated to this PR), 1 related to next/dynamic lazy compilation & 1 related to telemetry

@Netail Netail changed the title bump webpack@5.101.3 (fix css sideEffects order) bump webpack (fix css sideEffects order) Dec 18, 2025
@Netail Netail force-pushed the fix/css-order-side-effect branch from 3a95055 to 9f042ef Compare December 28, 2025 04:44
@Netail Netail force-pushed the fix/css-order-side-effect branch from 9f042ef to 838f5b2 Compare January 12, 2026 15:37
Copy link
Contributor

@vercel vercel bot left a comment

Choose a reason for hiding this comment

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

Additional Suggestion:

Missing null check for webpack compiler creation at line 1247 in hot-reloader-webpack.ts causes crash when accessing multiCompiler.compilers without validation

Fix on Vercel

@Netail Netail force-pushed the fix/css-order-side-effect branch from 838f5b2 to c852ca6 Compare January 22, 2026 10:21
@Netail Netail force-pushed the fix/css-order-side-effect branch from c852ca6 to 05f3662 Compare February 3, 2026 22:48
Netail and others added 3 commits February 7, 2026 00:59
@Netail Netail force-pushed the fix/css-order-side-effect branch from 05f3662 to cc223b6 Compare February 6, 2026 23:59
@alexander-akait
Copy link
Contributor

@Netail Is it our type regression?

.process(input, postcssOptions)
.then((res) => {
if (res.map) {
// @ts-expect-error of type 'RawSourceMap' version is not compatible, it's a small typing bug
Copy link
Contributor

Choose a reason for hiding this comment

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

Can you explain? We can fix it it

moduleFilenameTemplate: NonNullable<
EvalSourceMapDevToolPluginOptions['moduleFilenameTemplate']
>
moduleFilenameTemplate: string | ((context?: any) => string)
Copy link
Contributor

Choose a reason for hiding this comment

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

Looks like a bug

@Netail
Copy link
Contributor Author

Netail commented Feb 11, 2026

@Netail Is it our type regression?

Haven't dived deeper into the errors, I did see someone of the NextJS team picked it up: #89569

@alexander-akait
Copy link
Contributor

I will look at this types problem tomorrow, don't understand why tests failed... I think we need to spend time on it too

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

CI approved Approve running CI for fork Documentation Related to Next.js' official documentation. Rspack tests Turbopack Related to Turbopack with Next.js. type: next

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants