Skip to content

Conversation

lukesandberg
Copy link
Contributor

@lukesandberg lukesandberg commented Sep 3, 2025

In theory this is a memory optimization and development 'load performance' optimization but it comes at the cost of a slower time to first route and impacted HMR times

This exposed an issue where PagesData entrypoints were never collected into the whole_app_module_graph but they were collected into the per-page layout graphs. This wasn't a problem for production builds since we never create these entry points in those environments, but it is a problem now that we can use the whole_app_module_graph in dev.

This does not adopt production chunking behavior. That would harm development scenarios since simple changes could lead to a large number of chunks changing which would break fast refresh. Instead we need a way to improve the behavior of dynamic import chunks in development chunking mode.

Problems:

  • there is an issue with Issue reporting. Sometimes they are not reported and other times they are missing Import traces
  • I think there is a related issue with diagnostics
  • missing entries in the batched module graph. related to app-client vs client layers

=> Theory, now that every route is sharing the whole_app_module_graph task issues are being accepted and dropped too early.
* for issues that occur early -> they disapear
* for issues that occur later -> they cannot find the ImportTracer

@ijjk ijjk added created-by: Turbopack team PRs by the Turbopack team. Turbopack Related to Turbopack with Next.js. type: next labels Sep 3, 2025
Copy link
Contributor Author

lukesandberg commented Sep 3, 2025

@lukesandberg lukesandberg changed the title add an experimental feature to enable a whole app module graph [turbopack] add an experimental feature to enable a whole app module graph Sep 3, 2025
@ijjk
Copy link
Member

ijjk commented Sep 3, 2025

Failing test suites

Commit: 0096c7d | About building and testing Next.js

pnpm test test/integration/next-image-new/invalid-image-import/test/index.test.ts (turbopack)

  • Missing Import Image Tests > development mode > should show error (DD)
Expand output

● Missing Import Image Tests › development mode › should show error

expect(received).toMatchInlineSnapshot(snapshot)

Snapshot name: `Missing Import Image Tests development mode should show error 2`

- Snapshot  - 9
+ Received  + 0

@@ -2,14 +2,5 @@
  Processing image failed
  Failed to parse svg source code for image dimensions

  Caused by:
  - Source code does not contain a <svg> root element
-
- Import traces:
-   Browser:
-     ./test/integration/next-image-new/invalid-image-import/public/invalid.svg
-     ./test/integration/next-image-new/invalid-image-import/pages/index.js
-
-   SSR:
-     ./test/integration/next-image-new/invalid-image-import/public/invalid.svg
-     ./test/integration/next-image-new/invalid-image-import/pages/index.js

  38 |       const source = await getRedboxSource(browser)
  39 |       if (process.env.IS_TURBOPACK_TEST) {
> 40 |         expect(source).toMatchInlineSnapshot(`
     |                        ^
  41 |          "./test/integration/next-image-new/invalid-image-import/public/invalid.svg
  42 |          Processing image failed
  43 |          Failed to parse svg source code for image dimensions

  at Object.toMatchInlineSnapshot (integration/next-image-new/invalid-image-import/test/index.test.ts:40:24)

pnpm test-dev-turbo test/development/app-dir/build-error-logs/build-error-logs.test.ts (turbopack)

  • build-error-logs > should only log error a single time (DD)
Expand output

● build-error-logs › should only log error a single time

expect(received).toHaveLength(expected)

Expected length: 1
Received length: 2
Received array:  ["Module not found: Can't resolve '@/lib/data'", "Module not found: Can't resolve '@/lib/data'"]

  18 |
  19 |     if (isTurbopack) {
> 20 |       expect(moduleNotFoundLogs).toHaveLength(1)
     |                                  ^
  21 |     } else {
  22 |       // FIXME: next with webpack still logs the same error too many times
  23 |       expect(moduleNotFoundLogs).toHaveLength(3)

  at Object.toHaveLength (development/app-dir/build-error-logs/build-error-logs.test.ts:20:34)

pnpm test-dev-turbo test/development/app-dir/server-component-next-dynamic-ssr-false/server-component-next-dynamic-ssr-false.test.ts (turbopack)

  • app-dir - server-component-next-dynamic-ssr-false > should error when use dynamic ssr:false in server component (DD)
Expand output

● app-dir - server-component-next-dynamic-ssr-false › should error when use dynamic ssr:false in server component

Expected Redbox but found no visible one.

  13 |   it('should error when use dynamic ssr:false in server component', async () => {
  14 |     const browser = await next.browser('/')
> 15 |     await assertHasRedbox(browser)
     |     ^
  16 |     const redbox = {
  17 |       description: await getRedboxDescription(browser),
  18 |       source: await getRedboxSource(browser),

  at Object.<anonymous> (development/app-dir/server-component-next-dynamic-ssr-false/server-component-next-dynamic-ssr-false.test.ts:15:5)

pnpm test test/integration/client-navigation-a11y/test/index.test.js (turbopack)

  • Client Navigation accessibility > > should not have the initial route announced (DD)
  • Client Navigation accessibility > > has aria-live="assertive" and role="alert" (DD)
  • Client Navigation accessibility > > There is a title and a h1 tag > has the innerText equal to the value of h1 (DD)
  • Client Navigation accessibility > > There is a title but no h1 tag > has the innerText equal to the value of document.title (DD)
  • Client Navigation accessibility > > There is no title and no h1 tag > has the innerText equal to the value of the pathname (DD)
  • Client Navigation accessibility > > There is no title but a h1 tag > has the innerText equal to the value of h1 (DD)
Expand output

● Client Navigation accessibility › › should not have the initial route announced

FetchError: request to http://localhost:35659/page-with-h1-and-title,%20/page-with-h1,%20/page-with-title,%20/page-without-h1-or-title failed, reason: connect ECONNREFUSED 127.0.0.1:35659

  at ClientRequest.<anonymous> (../node_modules/.pnpm/[email protected][email protected]/node_modules/node-fetch/lib/index.js:1491:11)

● Client Navigation accessibility › › has aria-live="assertive" and role="alert"

FetchError: request to http://localhost:35659/page-with-h1-and-title,%20/page-with-h1,%20/page-with-title,%20/page-without-h1-or-title failed, reason: connect ECONNREFUSED 127.0.0.1:35659

  at ClientRequest.<anonymous> (../node_modules/.pnpm/[email protected][email protected]/node_modules/node-fetch/lib/index.js:1491:11)

● Client Navigation accessibility › › There is a title but no h1 tag › has the innerText equal to the value of document.title

FetchError: request to http://localhost:35659/page-with-h1-and-title,%20/page-with-h1,%20/page-with-title,%20/page-without-h1-or-title failed, reason: connect ECONNREFUSED 127.0.0.1:35659

  at ClientRequest.<anonymous> (../node_modules/.pnpm/[email protected][email protected]/node_modules/node-fetch/lib/index.js:1491:11)

● Client Navigation accessibility › › There is no title but a h1 tag › has the innerText equal to the value of h1

FetchError: request to http://localhost:35659/page-with-h1-and-title,%20/page-with-h1,%20/page-with-title,%20/page-without-h1-or-title failed, reason: connect ECONNREFUSED 127.0.0.1:35659

  at ClientRequest.<anonymous> (../node_modules/.pnpm/[email protected][email protected]/node_modules/node-fetch/lib/index.js:1491:11)

● Client Navigation accessibility › › There is a title and a h1 tag › has the innerText equal to the value of h1

FetchError: request to http://localhost:35659/page-with-h1-and-title,%20/page-with-h1,%20/page-with-title,%20/page-without-h1-or-title failed, reason: connect ECONNREFUSED 127.0.0.1:35659

  at ClientRequest.<anonymous> (../node_modules/.pnpm/[email protected][email protected]/node_modules/node-fetch/lib/index.js:1491:11)

● Client Navigation accessibility › › There is no title and no h1 tag › has the innerText equal to the value of the pathname

FetchError: request to http://localhost:35659/page-with-h1-and-title,%20/page-with-h1,%20/page-with-title,%20/page-without-h1-or-title failed, reason: connect ECONNREFUSED 127.0.0.1:35659

  at ClientRequest.<anonymous> (../node_modules/.pnpm/[email protected][email protected]/node_modules/node-fetch/lib/index.js:1491:11)

pnpm test-dev-turbo test/development/app-dir/next-after-app-invalid-usage/index.test.ts (turbopack)

  • after() - invalid usages > errors at compile time when used in a client module (DD)
Expand output

● after() - invalid usages › errors at compile time when used in a client module

Expected Redbox but found no visible one.

  26 |     const session = await next.browser('/invalid-in-client')
  27 |
> 28 |     await assertHasRedbox(session)
     |     ^
  29 |     expect(await getRedboxSource(session)).toMatch(
  30 |       /You're importing a component that needs "?after"?\. That only works in a Server Component but one of its parents is marked with "use client", so it's a Client Component\./
  31 |     )

  at Object.<anonymous> (development/app-dir/next-after-app-invalid-usage/index.test.ts:28:5)

pnpm test test/integration/empty-project/test/index.test.js (turbopack)

  • Empty Project > Should not time out and return 404 (DD)
Expand output

● Empty Project › Should not time out and return 404

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

Expected: 404
Received: 500

  19 |   it('Should not time out and return 404', async () => {
  20 |     const res = await fetch('/')
> 21 |     expect(res.status).toBe(404)
     |                        ^
  22 |   })
  23 |
  24 |   afterAll(async () => {

  at Object.toBe (integration/empty-project/test/index.test.js:21:24)

pnpm test test/integration/app-dir-export/test/dynamic-missing-gsp-dev.test.ts (turbopack)

  • app dir - with output export - dynamic missing gsp dev > development mode > should error when dynamic route is missing generateStaticParams (DD)
  • app dir - with output export - dynamic missing gsp dev > development mode > should error when dynamic route is set to true (DD)
  • app dir - with output export - dynamic missing gsp dev > development mode > should error when client component has generateStaticParams (DD)
Expand output

● app dir - with output export - dynamic missing gsp dev › development mode › should error when dynamic route is missing generateStaticParams

Expected Redbox but found no visible one.

  240 |         const url = dynamicPage ? '/another/first' : '/api/json'
  241 |         const browser = await webdriver(port, url)
> 242 |         await assertHasRedbox(browser)
      |         ^
  243 |         const header = await getRedboxHeader(browser)
  244 |         const source = await getRedboxSource(browser)
  245 |         if (expectedErrMsg instanceof RegExp) {

  at runTests (integration/app-dir-export/test/utils.ts:242:9)
  at Object.<anonymous> (integration/app-dir-export/test/dynamic-missing-gsp-dev.test.ts:8:9)

● app dir - with output export - dynamic missing gsp dev › development mode › should error when dynamic route is set to true

Expected Redbox but found no visible one.

  240 |         const url = dynamicPage ? '/another/first' : '/api/json'
  241 |         const browser = await webdriver(port, url)
> 242 |         await assertHasRedbox(browser)
      |         ^
  243 |         const header = await getRedboxHeader(browser)
  244 |         const source = await getRedboxSource(browser)
  245 |         if (expectedErrMsg instanceof RegExp) {

  at runTests (integration/app-dir-export/test/utils.ts:242:9)
  at Object.<anonymous> (integration/app-dir-export/test/dynamic-missing-gsp-dev.test.ts:18:9)

● app dir - with output export - dynamic missing gsp dev › development mode › should error when client component has generateStaticParams

Expected Redbox but found no visible one.

  240 |         const url = dynamicPage ? '/another/first' : '/api/json'
  241 |         const browser = await webdriver(port, url)
> 242 |         await assertHasRedbox(browser)
      |         ^
  243 |         const header = await getRedboxHeader(browser)
  244 |         const source = await getRedboxSource(browser)
  245 |         if (expectedErrMsg instanceof RegExp) {

  at runTests (integration/app-dir-export/test/utils.ts:242:9)
  at Object.<anonymous> (integration/app-dir-export/test/dynamic-missing-gsp-dev.test.ts:31:9)

pnpm test-dev-turbo test/development/acceptance-app/ReactRefreshLogBox-builtins.test.ts (turbopack)

  • ReactRefreshLogBox-builtins app > Module not found missing global CSS (DD)
Expand output

● ReactRefreshLogBox-builtins app › Module not found missing global CSS

expect(received).toMatchInlineSnapshot(snapshot)

Snapshot name: `ReactRefreshLogBox-builtins app Module not found missing global CSS 1`

- Snapshot  - 10
+ Received  +  1

- {
-   "description": "Module not found: Can't resolve './non-existent.css'",
-   "environmentLabel": null,
-   "label": "Build Error",
-   "source": "./app/page.js (2:1)
- Module not found: Can't resolve './non-existent.css'
- > 2 | import './non-existent.css'
-     | ^^^^^^^^^^^^^^^^^^^^^^^^^^^",
-   "stack": [],
- }
+ "Expected Redbox but found no visible one."

  251 |     const { browser, session } = sandbox
  252 |     if (isTurbopack) {
> 253 |       await expect(browser).toDisplayRedbox(`
      |                             ^
  254 |        {
  255 |          "description": "Module not found: Can't resolve './non-existent.css'",
  256 |          "environmentLabel": null,

  at Object.toDisplayRedbox (development/acceptance-app/ReactRefreshLogBox-builtins.test.ts:253:29)

pnpm test-dev-turbo test/e2e/app-dir/conflicting-page-segments/conflicting-page-segments.test.ts (turbopack)

  • conflicting-page-segments > should throw an error when a route groups causes a conflict with a parallel segment (DD)
Expand output

● conflicting-page-segments › should throw an error when a route groups causes a conflict with a parallel segment

expect(received).toContain(expected) // indexOf

Expected substring: "You cannot have two parallel pages that resolve to the same path."
Received string:    "Internal Server Error"

  20 |       const html = await next.render('/')
  21 |
> 22 |       expect(html).toContain(
     |                    ^
  23 |         'You cannot have two parallel pages that resolve to the same path.'
  24 |       )
  25 |     } else {

  at Object.toContain (e2e/app-dir/conflicting-page-segments/conflicting-page-segments.test.ts:22:20)

pnpm test-dev test/development/basic/next-rs-api.test.ts

  • next.rs api > should allow to write root page to disk (DD)
  • next.rs api > should allow to write pages edge api to disk (DD)
  • next.rs api > should allow to write pages Node.js api to disk (DD)
  • next.rs api > should allow to write app edge page to disk (DD)
  • next.rs api > should allow to write app Node.js page to disk (DD)
  • next.rs api > should allow to write pages edge page to disk (DD)
  • next.rs api > should allow to write pages Node.js page to disk (DD)
  • next.rs api > should allow to write app edge route to disk (DD)
  • next.rs api > should allow to write app Node.js route to disk (DD)
  • next.rs api > should have working HMR on client-side change on a page 0 (DD)
  • next.rs api > should have working HMR on client-side change on a page 1 (DD)
  • next.rs api > should have working HMR on client-side change on a page 2 (DD)
  • next.rs api > should have working HMR on server-side change on a page 0 (DD)
  • next.rs api > should have working HMR on server-side change on a page 1 (DD)
  • next.rs api > should have working HMR on server-side change on a page 2 (DD)
  • next.rs api > should have working HMR on client and server-side change on a page 0 (DD)
  • next.rs api > should have working HMR on client and server-side change on a page 1 (DD)
  • next.rs api > should have working HMR on client and server-side change on a page 2 (DD)
  • next.rs api > should have working HMR on client-side change on a app page 0 (DD)
  • next.rs api > should have working HMR on client-side change on a app page 1 (DD)
  • next.rs api > should have working HMR on client-side change on a app page 2 (DD)
  • next.rs api > should have working HMR on server-side change on a app page 0 (DD)
  • next.rs api > should have working HMR on server-side change on a app page 1 (DD)
  • next.rs api > should have working HMR on server-side change on a app page 2 (DD)
Expand output

● next.rs api › should allow to write root page to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write root page to disk: diagnostics 1`

- Snapshot  -  1
+ Received  + 86

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  495 |         await entrypointsSubscribtion.next()
  496 |       ).value
> 497 |       if (!('routes' in entrypoints)) {
      |                                                                          ^
  498 |         throw new Error('Entrypoints not available due to compilation errors')
  499 |       }
  500 |

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:497:74)

● next.rs api › should allow to write root page to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write root page to disk: data diagnostics 1`

- Snapshot  -  1
+ Received  + 86

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  500 |
  501 |       const route = entrypoints.routes.get(path)
> 502 |       entrypointsSubscribtion.return()
      |                                                           ^
  503 |
  504 |       expect(route.type).toBe(type)
  505 |

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:502:75)

● next.rs api › should allow to write pages edge api to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write pages edge api to disk: diagnostics 1`

- Snapshot  -  1
+ Received  + 86

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  486 |       runtime: 'nodejs',
  487 |       config: {},
> 488 |     },
      |                 ^
  489 |   ]
  490 |   for (const { name, path, type, runtime, config } of routes) {
  491 |     // eslint-disable-next-line no-loop-func

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:488:74)

● next.rs api › should allow to write pages Node.js api to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write pages Node.js api to disk: diagnostics 1`

- Snapshot  -  1
+ Received  + 86

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  486 |       runtime: 'nodejs',
  487 |       config: {},
> 488 |     },
      |                 ^
  489 |   ]
  490 |   for (const { name, path, type, runtime, config } of routes) {
  491 |     // eslint-disable-next-line no-loop-func

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:488:74)

● next.rs api › should allow to write app edge page to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write app edge page to disk: diagnostics 1`

- Snapshot  -  1
+ Received  + 86

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  509 |           const result = await route.endpoint.writeToDisk()
  510 |           expect(result.type).toBe(runtime)
> 511 |           expect(result.config).toEqual(config)
      |                                                                    ^
  512 |           expect(normalizeIssues(result.issues)).toMatchSnapshot('issues')
  513 |           expect(normalizeDiagnostics(result.diagnostics)).toMatchSnapshot(
  514 |             'diagnostics'

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:511:74)

● next.rs api › should allow to write app edge page to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write app edge page to disk: rsc diagnostics 1`

- Snapshot  -  1
+ Received  + 86

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  514 |             'diagnostics'
  515 |           )
> 516 |           break
      |                          ^
  517 |         }
  518 |         case 'page': {
  519 |           const result = await route.htmlEndpoint.writeToDisk()

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:516:75)

● next.rs api › should allow to write app Node.js page to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write app Node.js page to disk: diagnostics 1`

- Snapshot  -  1
+ Received  + 86

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  509 |           const result = await route.endpoint.writeToDisk()
  510 |           expect(result.type).toBe(runtime)
> 511 |           expect(result.config).toEqual(config)
      |                                                                    ^
  512 |           expect(normalizeIssues(result.issues)).toMatchSnapshot('issues')
  513 |           expect(normalizeDiagnostics(result.diagnostics)).toMatchSnapshot(
  514 |             'diagnostics'

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:511:74)

● next.rs api › should allow to write app Node.js page to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write app Node.js page to disk: rsc diagnostics 1`

- Snapshot  -  1
+ Received  + 86

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  514 |             'diagnostics'
  515 |           )
> 516 |           break
      |                          ^
  517 |         }
  518 |         case 'page': {
  519 |           const result = await route.htmlEndpoint.writeToDisk()

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:516:75)

● next.rs api › should allow to write pages edge page to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write pages edge page to disk: diagnostics 1`

- Snapshot  -  1
+ Received  + 86

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  495 |         await entrypointsSubscribtion.next()
  496 |       ).value
> 497 |       if (!('routes' in entrypoints)) {
      |                                                                          ^
  498 |         throw new Error('Entrypoints not available due to compilation errors')
  499 |       }
  500 |

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:497:74)

● next.rs api › should allow to write pages edge page to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write pages edge page to disk: data diagnostics 1`

- Snapshot  -  1
+ Received  + 86

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  500 |
  501 |       const route = entrypoints.routes.get(path)
> 502 |       entrypointsSubscribtion.return()
      |                                                           ^
  503 |
  504 |       expect(route.type).toBe(type)
  505 |

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:502:75)

● next.rs api › should allow to write pages Node.js page to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write pages Node.js page to disk: diagnostics 1`

- Snapshot  -  1
+ Received  + 86

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  495 |         await entrypointsSubscribtion.next()
  496 |       ).value
> 497 |       if (!('routes' in entrypoints)) {
      |                                                                          ^
  498 |         throw new Error('Entrypoints not available due to compilation errors')
  499 |       }
  500 |

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:497:74)

● next.rs api › should allow to write pages Node.js page to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write pages Node.js page to disk: data diagnostics 1`

- Snapshot  -  1
+ Received  + 86

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  500 |
  501 |       const route = entrypoints.routes.get(path)
> 502 |       entrypointsSubscribtion.return()
      |                                                           ^
  503 |
  504 |       expect(route.type).toBe(type)
  505 |

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:502:75)

● next.rs api › should allow to write app edge route to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write app edge route to disk: diagnostics 1`

- Snapshot  -  1
+ Received  + 86

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  486 |       runtime: 'nodejs',
  487 |       config: {},
> 488 |     },
      |                 ^
  489 |   ]
  490 |   for (const { name, path, type, runtime, config } of routes) {
  491 |     // eslint-disable-next-line no-loop-func

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:488:74)

● next.rs api › should allow to write app Node.js route to disk

expect(received).toMatchSnapshot(hint)

Snapshot name: `next.rs api should allow to write app Node.js route to disk: diagnostics 1`

- Snapshot  -  1
+ Received  + 86

- []
+ [
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "modularizeImports": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "persistentCaching": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "platform-triplet": "true",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipMiddlewareUrlNormalize": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "skipTrailingSlashRedirect": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcEmotion": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcReactRemoveProperties": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRelay": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcRemoveConsole": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "swcStyledComponents": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "transpilePackages": "false",
+     },
+   },
+   {
+     "category": "NextFeatureTelemetry_category_tbd",
+     "name": "EVENT_BUILD_FEATURE_USAGE",
+     "payload": {
+       "turbotrace": "false",
+     },
+   },
+ ]

  486 |       runtime: 'nodejs',
  487 |       config: {},
> 488 |     },
      |                 ^
  489 |   ]
  490 |   for (const { name, path, type, runtime, config } of routes) {
  491 |     // eslint-disable-next-line no-loop-func

  at Object.<anonymous> (development/basic/next-rs-api.test.ts:488:74)

● next.rs api › should have working HMR on client-side change on a page 0

expect(received).toHaveProperty(path, value)

Expected path: "diagnostics"

Expected value: toBeEmpty<>
Received value: [{"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"modularizeImports": "true"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"persistentCaching": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"skipMiddlewareUrlNormalize": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"skipTrailingSlashRedirect": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcEmotion": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcReactRemoveProperties": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcRelay": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcRemoveConsole": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcStyledComponents": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"transpilePackages": "false"}}, …]

  616 |   ]
  617 |
> 618 |   for (const {
      |                                   ^
  619 |     name,
  620 |     path,
  621 |     type,

  at development/basic/next-rs-api.test.ts:618:38
      at async Promise.all (index 56)
  at async Object.<anonymous> (development/basic/next-rs-api.test.ts:612:13)

● next.rs api › should have working HMR on client-side change on a page 1

expect(received).toHaveProperty(path, value)

Expected path: "diagnostics"

Expected value: toBeEmpty<>
Received value: [{"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"modularizeImports": "true"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"persistentCaching": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"skipMiddlewareUrlNormalize": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"skipTrailingSlashRedirect": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcEmotion": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcReactRemoveProperties": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcRelay": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcRemoveConsole": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcStyledComponents": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"transpilePackages": "false"}}, …]

  616 |   ]
  617 |
> 618 |   for (const {
      |                                   ^
  619 |     name,
  620 |     path,
  621 |     type,

  at development/basic/next-rs-api.test.ts:618:38
      at async Promise.all (index 0)
  at async Object.<anonymous> (development/basic/next-rs-api.test.ts:612:13)

● next.rs api › should have working HMR on client-side change on a page 2

expect(received).toHaveProperty(path, value)

Expected path: "diagnostics"

Expected value: toBeEmpty<>
Received value: [{"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"modularizeImports": "true"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"persistentCaching": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"skipMiddlewareUrlNormalize": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"skipTrailingSlashRedirect": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcEmotion": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcReactRemoveProperties": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcRelay": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcRemoveConsole": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcStyledComponents": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"transpilePackages": "false"}}, …]

  616 |   ]
  617 |
> 618 |   for (const {
      |                                   ^
  619 |     name,
  620 |     path,
  621 |     type,

  at development/basic/next-rs-api.test.ts:618:38
      at async Promise.all (index 0)
  at async Object.<anonymous> (development/basic/next-rs-api.test.ts:612:13)

● next.rs api › should have working HMR on server-side change on a page 0

expect(received).toHaveProperty(path, value)

Expected path: "diagnostics"

Expected value: toBeEmpty<>
Received value: [{"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"modularizeImports": "true"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"persistentCaching": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"skipMiddlewareUrlNormalize": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"skipTrailingSlashRedirect": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcEmotion": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcReactRemoveProperties": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcRelay": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcRemoveConsole": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcStyledComponents": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"transpilePackages": "false"}}, …]

  616 |   ]
  617 |
> 618 |   for (const {
      |                                   ^
  619 |     name,
  620 |     path,
  621 |     type,

  at development/basic/next-rs-api.test.ts:618:38
      at async Promise.all (index 0)
  at async Object.<anonymous> (development/basic/next-rs-api.test.ts:612:13)

● next.rs api › should have working HMR on server-side change on a page 1

expect(received).toHaveProperty(path, value)

Expected path: "diagnostics"

Expected value: toBeEmpty<>
Received value: [{"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"modularizeImports": "true"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"persistentCaching": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"skipMiddlewareUrlNormalize": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"skipTrailingSlashRedirect": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcEmotion": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcReactRemoveProperties": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcRelay": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcRemoveConsole": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcStyledComponents": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"transpilePackages": "false"}}, …]

  616 |   ]
  617 |
> 618 |   for (const {
      |                                   ^
  619 |     name,
  620 |     path,
  621 |     type,

  at development/basic/next-rs-api.test.ts:618:38
      at async Promise.all (index 1)
  at async Object.<anonymous> (development/basic/next-rs-api.test.ts:612:13)

● next.rs api › should have working HMR on server-side change on a page 2

expect(received).toHaveProperty(path, value)

Expected path: "diagnostics"

Expected value: toBeEmpty<>
Received value: [{"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"modularizeImports": "true"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"persistentCaching": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"skipMiddlewareUrlNormalize": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"skipTrailingSlashRedirect": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcEmotion": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcReactRemoveProperties": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcRelay": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcRemoveConsole": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcStyledComponents": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"transpilePackages": "false"}}, …]

  616 |   ]
  617 |
> 618 |   for (const {
      |                                   ^
  619 |     name,
  620 |     path,
  621 |     type,

  at development/basic/next-rs-api.test.ts:618:38
      at async Promise.all (index 3)
  at async Object.<anonymous> (development/basic/next-rs-api.test.ts:612:13)

● next.rs api › should have working HMR on client and server-side change on a page 0

expect(received).toHaveProperty(path, value)

Expected path: "diagnostics"

Expected value: toBeEmpty<>
Received value: [{"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"modularizeImports": "true"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"persistentCaching": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"skipMiddlewareUrlNormalize": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"skipTrailingSlashRedirect": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcEmotion": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcReactRemoveProperties": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcRelay": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcRemoveConsole": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcStyledComponents": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"transpilePackages": "false"}}, …]

  616 |   ]
  617 |
> 618 |   for (const {
      |                                   ^
  619 |     name,
  620 |     path,
  621 |     type,

  at development/basic/next-rs-api.test.ts:618:38
      at async Promise.all (index 0)
  at async Object.<anonymous> (development/basic/next-rs-api.test.ts:612:13)

● next.rs api › should have working HMR on client and server-side change on a page 1

expect(received).toHaveProperty(path, value)

Expected path: "diagnostics"

Expected value: toBeEmpty<>
Received value: [{"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"modularizeImports": "true"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"persistentCaching": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"skipMiddlewareUrlNormalize": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"skipTrailingSlashRedirect": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcEmotion": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcReactRemoveProperties": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcRelay": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcRemoveConsole": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcStyledComponents": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"transpilePackages": "false"}}, …]

  616 |   ]
  617 |
> 618 |   for (const {
      |                                   ^
  619 |     name,
  620 |     path,
  621 |     type,

  at development/basic/next-rs-api.test.ts:618:38
      at async Promise.all (index 1)
  at async Object.<anonymous> (development/basic/next-rs-api.test.ts:612:13)

● next.rs api › should have working HMR on client and server-side change on a page 2

expect(received).toHaveProperty(path, value)

Expected path: "diagnostics"

Expected value: toBeEmpty<>
Received value: [{"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"modularizeImports": "true"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"persistentCaching": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"skipMiddlewareUrlNormalize": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"skipTrailingSlashRedirect": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcEmotion": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcReactRemoveProperties": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcRelay": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcRemoveConsole": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcStyledComponents": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"transpilePackages": "false"}}, …]

  616 |   ]
  617 |
> 618 |   for (const {
      |                                   ^
  619 |     name,
  620 |     path,
  621 |     type,

  at development/basic/next-rs-api.test.ts:618:38
      at async Promise.all (index 0)
  at async Object.<anonymous> (development/basic/next-rs-api.test.ts:612:13)

● next.rs api › should have working HMR on client-side change on a app page 0

expect(received).toHaveProperty(path, value)

Expected path: "diagnostics"

Expected value: toBeEmpty<>
Received value: [{"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"modularizeImports": "true"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"persistentCaching": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"skipMiddlewareUrlNormalize": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"skipTrailingSlashRedirect": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcEmotion": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcReactRemoveProperties": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcRelay": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcRemoveConsole": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcStyledComponents": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"transpilePackages": "false"}}, …]

  616 |   ]
  617 |
> 618 |   for (const {
      |                                   ^
  619 |     name,
  620 |     path,
  621 |     type,

  at development/basic/next-rs-api.test.ts:618:38
      at async Promise.all (index 5)
  at async Object.<anonymous> (development/basic/next-rs-api.test.ts:612:13)

● next.rs api › should have working HMR on client-side change on a app page 1

expect(received).toHaveProperty(path, value)

Expected path: "diagnostics"

Expected value: toBeEmpty<>
Received value: [{"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"modularizeImports": "true"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"persistentCaching": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"skipMiddlewareUrlNormalize": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"skipTrailingSlashRedirect": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcEmotion": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcReactRemoveProperties": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcRelay": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcRemoveConsole": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcStyledComponents": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"transpilePackages": "false"}}, …]

  616 |   ]
  617 |
> 618 |   for (const {
      |                                   ^
  619 |     name,
  620 |     path,
  621 |     type,

  at development/basic/next-rs-api.test.ts:618:38
      at async Promise.all (index 0)
  at async Object.<anonymous> (development/basic/next-rs-api.test.ts:612:13)

● next.rs api › should have working HMR on client-side change on a app page 2

expect(received).toHaveProperty(path, value)

Expected path: "diagnostics"

Expected value: toBeEmpty<>
Received value: [{"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"modularizeImports": "true"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"persistentCaching": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"skipMiddlewareUrlNormalize": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"skipTrailingSlashRedirect": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcEmotion": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcReactRemoveProperties": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcRelay": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcRemoveConsole": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcStyledComponents": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"transpilePackages": "false"}}, …]

  616 |   ]
  617 |
> 618 |   for (const {
      |                                   ^
  619 |     name,
  620 |     path,
  621 |     type,

  at development/basic/next-rs-api.test.ts:618:38
      at async Promise.all (index 10)
  at async Object.<anonymous> (development/basic/next-rs-api.test.ts:612:13)

● next.rs api › should have working HMR on server-side change on a app page 0

expect(received).toHaveProperty(path, value)

Expected path: "diagnostics"

Expected value: toBeEmpty<>
Received value: [{"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"modularizeImports": "true"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"persistentCaching": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"skipMiddlewareUrlNormalize": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"skipTrailingSlashRedirect": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcEmotion": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcReactRemoveProperties": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcRelay": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcRemoveConsole": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcStyledComponents": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"transpilePackages": "false"}}, …]

  616 |   ]
  617 |
> 618 |   for (const {
      |                                   ^
  619 |     name,
  620 |     path,
  621 |     type,

  at development/basic/next-rs-api.test.ts:618:38
      at async Promise.all (index 0)
  at async Object.<anonymous> (development/basic/next-rs-api.test.ts:612:13)

● next.rs api › should have working HMR on server-side change on a app page 1

expect(received).toHaveProperty(path, value)

Expected path: "diagnostics"

Expected value: toBeEmpty<>
Received value: [{"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"modularizeImports": "true"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"persistentCaching": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"skipMiddlewareUrlNormalize": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"skipTrailingSlashRedirect": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcEmotion": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcReactRemoveProperties": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcRelay": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcRemoveConsole": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcStyledComponents": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"transpilePackages": "false"}}, …]

  616 |   ]
  617 |
> 618 |   for (const {
      |                                   ^
  619 |     name,
  620 |     path,
  621 |     type,

  at development/basic/next-rs-api.test.ts:618:38
      at async Promise.all (index 0)
  at async Object.<anonymous> (development/basic/next-rs-api.test.ts:612:13)

● next.rs api › should have working HMR on server-side change on a app page 2

expect(received).toHaveProperty(path, value)

Expected path: "diagnostics"

Expected value: toBeEmpty<>
Received value: [{"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"modularizeImports": "true"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"persistentCaching": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"skipMiddlewareUrlNormalize": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"skipTrailingSlashRedirect": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcEmotion": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcReactRemoveProperties": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcRelay": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcRemoveConsole": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"swcStyledComponents": "false"}}, {"category": "NextFeatureTelemetry_category_tbd", "name": "EVENT_BUILD_FEATURE_USAGE", "payload": {"transpilePackages": "false"}}, …]

  616 |   ]
  617 |
> 618 |   for (const {
      |                                   ^
  619 |     name,
  620 |     path,
  621 |     type,

  at development/basic/next-rs-api.test.ts:618:38
      at async Promise.all (index 1)
  at async Object.<anonymous> (development/basic/next-rs-api.test.ts:612:13)

pnpm test-start-turbo test/e2e/app-dir/ppr-partial-hydration/ppr-partial-hydration.test.ts (turbopack)

  • PPR - partial hydration > No static shell, streaming metadata > should hydrate the shell without waiting for slow suspense boundaries (DD)
Expand output

● PPR - partial hydration › No static shell, streaming metadata › should hydrate the shell without waiting for slow suspense boundaries

page.waitForSelector: Timeout 10ms exceeded.
Call log:
  - waiting for locator('#shell-hydrated') to be visible
  -   locator resolved to visible <div id="shell-hydrated" data-is-hydrated="true">🟢 Hydrated</div>

  511 |
  512 |     return this.startChain(async () => {
> 513 |       const el = await page.waitForSelector(selector, {
      |                             ^
  514 |         timeout,
  515 |         state,
  516 |       })

  at waitForSelector (lib/browsers/playwright.ts:513:29)
  at Playwright._chain (lib/browsers/playwright.ts:643:23)
  at Playwright._chain [as startChain] (lib/browsers/playwright.ts:624:17)
  at Playwright.startChain [as waitForElementByCss] (lib/browsers/playwright.ts:512:17)
  at Playwright.waitForElementByCss (lib/browsers/playwright.ts:405:17)
  at elementByCssInstant (e2e/app-dir/ppr-partial-hydration/ppr-partial-hydration.test.ts:54:16)
  at fn (lib/next-test-utils.ts:808:20)
  at Object.<anonymous> (e2e/app-dir/ppr-partial-hydration/ppr-partial-hydration.test.ts:48:7)
  at Proxy._chain (lib/browsers/playwright.ts:643:23)
  at Proxy._chain (lib/browsers/playwright.ts:619:17)
  at Proxy.continueChain (lib/browsers/playwright.ts:447:17)
  at getAttribute (e2e/app-dir/ppr-partial-hydration/ppr-partial-hydration.test.ts:55:16)
  at fn (lib/next-test-utils.ts:808:20)
  at Object.<anonymous> (e2e/app-dir/ppr-partial-hydration/ppr-partial-hydration.test.ts:48:7)

pnpm test-dev test/e2e/app-dir/cache-components-allow-otel-spans/cache-components-allow-otel-spans.test.ts

  • hello-world > should allow creating spans during cache component validation without triggering sync IO bailouts - inside a Cache Component - without prerendering the page (DD)
  • hello-world > should allow creating spans during cache component validation without triggering sync IO bailouts - inside a Cache Component - with prerendering the page (DD)
  • hello-world > should allow creating spans during cache component validation without triggering sync IO bailouts - inside a Server Component - without prerendering the page (DD)
  • hello-world > should allow creating spans during cache component validation without triggering sync IO bailouts - inside a Server Component - with prerendering the page (DD)
Expand output

● hello-world › should allow creating spans during cache component validation without triggering sync IO bailouts - inside a Cache Component - without prerendering the page

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

  445 |     return setTimeout(() => {
  446 |       reject(
> 447 |         new Error(
      |         ^
  448 |           `Failed to start server after ${ms}ms, waiting for this log pattern: ${this.serverReadyPattern}`
  449 |         )
  450 |       )

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

● hello-world › should allow creating spans during cache component validation without triggering sync IO bailouts - inside a Cache Component - with prerendering the page

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

  445 |     return setTimeout(() => {
  446 |       reject(
> 447 |         new Error(
      |         ^
  448 |           `Failed to start server after ${ms}ms, waiting for this log pattern: ${this.serverReadyPattern}`
  449 |         )
  450 |       )

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

● hello-world › should allow creating spans during cache component validation without triggering sync IO bailouts - inside a Server Component - without prerendering the page

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

  445 |     return setTimeout(() => {
  446 |       reject(
> 447 |         new Error(
      |         ^
  448 |           `Failed to start server after ${ms}ms, waiting for this log pattern: ${this.serverReadyPattern}`
  449 |         )
  450 |       )

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

● hello-world › should allow creating spans during cache component validation without triggering sync IO bailouts - inside a Server Component - with prerendering the page

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

  445 |     return setTimeout(() => {
  446 |       reject(
> 447 |         new Error(
      |         ^
  448 |           `Failed to start server after ${ms}ms, waiting for this log pattern: ${this.serverReadyPattern}`
  449 |         )
  450 |       )

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

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

  • app dir - prefetching (custom staleTime) > should not re-fetch cached data when navigating back to a route group (DD)
Expand output

● app dir - prefetching (custom staleTime) › should not re-fetch cached data when navigating back to a route group

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."

  132 |   })
  133 |
> 134 |   it('should not re-fetch cached data when navigating back to a route group', async () => {
      |   ^
  135 |     let act: ReturnType<typeof createRouterAct>
  136 |     const browser = await next.browser('/prefetch-auto-route-groups', {
  137 |       beforePageLoad(page) {

  at it (e2e/app-dir/app-prefetch/prefetching.stale-times.test.ts:134:3)
  at Object.describe (e2e/app-dir/app-prefetch/prefetching.stale-times.test.ts:6:1)

pnpm test-start-turbo test/e2e/app-dir/app-client-cache/client-cache.parallel-routes.test.ts (turbopack)

  • app dir client cache with parallel routes > prefetch={true} > should prefetch the full page (DD)
Expand output

● app dir client cache with parallel routes › prefetch={true} › should prefetch the full page

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."

  16 |
  17 |   describe('prefetch={true}', () => {
> 18 |     it('should prefetch the full page', async () => {
     |     ^
  19 |       let act: ReturnType<typeof createRouterAct>
  20 |       const browser = await next.browser('/', {
  21 |         beforePageLoad(page) {

  at it (e2e/app-dir/app-client-cache/client-cache.parallel-routes.test.ts:18:5)
  at describe (e2e/app-dir/app-client-cache/client-cache.parallel-routes.test.ts:17:3)
  at Object.describe (e2e/app-dir/app-client-cache/client-cache.parallel-routes.test.ts:6:1)

pnpm test-start-turbo test/e2e/app-dir/segment-cache/deployment-skew/deployment-skew.test.ts (turbopack)

  • segment cache (deployment skew) > does not crash when prefetching a dynamic, non-PPR page on a different deployment (DD)
Expand output

● segment cache (deployment skew) › does not crash when prefetching a dynamic, non-PPR page on a different deployment

thrown: "Exceeded timeout of 60000 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."

  37 |   })
  38 |
> 39 |   it(
     |   ^
  40 |     'does not crash when prefetching a dynamic, non-PPR page ' +
  41 |       'on a different deployment',
  42 |     async () => {

  at it (e2e/app-dir/segment-cache/deployment-skew/deployment-skew.test.ts:39:3)
  at Object.describe (e2e/app-dir/segment-cache/deployment-skew/deployment-skew.test.ts:8:1)

pnpm test-start test/e2e/app-dir/segment-cache/revalidation/segment-cache-revalidation.test.ts

  • segment cache (revalidation) > call router.prefetch(..., {onInvalidate}) after cache is revalidated (DD)
Expand output

● segment cache (revalidation) › call router.prefetch(..., {onInvalidate}) after cache is revalidated

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."

  150 |   })
  151 |
> 152 |   it('call router.prefetch(..., {onInvalidate}) after cache is revalidated', async () => {
      |   ^
  153 |     // This is the similar to the previous tests, but uses a custom Link
  154 |     // implementation that calls router.prefetch manually. It demonstrates it's
  155 |     // possible to simulate the revalidating behavior of Link using the manual

  at it (e2e/app-dir/segment-cache/revalidation/segment-cache-revalidation.test.ts:152:3)
  at Object.describe (e2e/app-dir/segment-cache/revalidation/segment-cache-revalidation.test.ts:7:1)

@ijjk
Copy link
Member

ijjk commented Sep 3, 2025

Stats from current PR

Default Build (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary vercel/next.js whole_app_module_graph Change
buildDuration 28s 25.5s N/A
buildDurationCached 24.8s 20.1s N/A
nodeModulesSize 449 MB 449 MB ⚠️ +2.42 kB
nextStartRea..uration (ms) 766ms 750ms N/A
Client Bundles (main, webpack)
vercel/next.js canary vercel/next.js whole_app_module_graph Change
1916.HASH.js gzip 169 B 169 B
4498-HASH.js gzip 54 kB 53.7 kB N/A
9225-HASH.js gzip 5.32 kB 5.32 kB N/A
c57d0559-HASH.js gzip 62 kB 62 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 37.1 kB 37 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 whole_app_module_graph 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 whole_app_module_graph 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 whole_app_module_graph 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 whole_app_module_graph Change
index.html gzip 523 B 524 B N/A
link.html gzip 536 B 538 B N/A
withRouter.html gzip 519 B 519 B
Overall change 519 B 519 B
Edge SSR bundle Size Overall increase ⚠️
vercel/next.js canary vercel/next.js whole_app_module_graph Change
edge-ssr.js gzip 126 kB 126 kB ⚠️ +146 B
page.js gzip 254 kB 255 kB ⚠️ +712 B
Overall change 380 kB 381 kB ⚠️ +858 B
Middleware size
vercel/next.js canary vercel/next.js whole_app_module_graph Change
middleware-b..fest.js gzip 637 B 641 B N/A
middleware-r..fest.js gzip 156 B 157 B N/A
middleware.js gzip 33.4 kB 33.2 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 whole_app_module_graph Change
app-page-exp...dev.js gzip 289 kB 289 kB N/A
app-page-exp..prod.js gzip 159 kB 159 kB
app-page-tur...dev.js gzip 289 kB 289 kB N/A
app-page-tur..prod.js gzip 159 kB 159 kB
app-page-tur...dev.js gzip 285 kB 285 kB N/A
app-page-tur..prod.js gzip 157 kB 157 kB
app-page.run...dev.js gzip 285 kB 285 kB
app-page.run..prod.js gzip 157 kB 157 kB
app-route-ex...dev.js gzip 67 kB 67 kB
app-route-ex..prod.js gzip 46.4 kB 46.4 kB
app-route-tu...dev.js gzip 67.1 kB 67.1 kB
app-route-tu..prod.js gzip 46.4 kB 46.4 kB
app-route-tu...dev.js gzip 66.6 kB 66.6 kB
app-route-tu..prod.js gzip 46.2 kB 46.2 kB
app-route.ru...dev.js gzip 66.6 kB 66.6 kB
app-route.ru..prod.js gzip 46.1 kB 46.1 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 39.6 kB 39.6 kB
pages-api-tu..prod.js gzip 29.9 kB 29.9 kB
pages-api.ru...dev.js gzip 39.6 kB 39.6 kB
pages-api.ru..prod.js gzip 29.8 kB 29.8 kB
pages-turbo....dev.js gzip 49.4 kB 49.4 kB
pages-turbo...prod.js gzip 37 kB 37 kB
pages.runtim...dev.js gzip 49.3 kB 49.3 kB
pages.runtim..prod.js gzip 37 kB 37 kB
server.runti..prod.js gzip 76.1 kB 76.1 kB
Overall change 1.76 MB 1.76 MB
build cache
vercel/next.js canary vercel/next.js whole_app_module_graph Change
0.pack gzip 3.1 MB 3.09 MB N/A
index.pack gzip 92.9 kB 91.9 kB N/A
Overall change 0 B 0 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],
   {
-    /***/ 1177: /***/ (
+    /***/ 2788: /***/ () => {
+      /* (ignored) */
+      /***/
+    },
+
+    /***/ 5693: /***/ (
       __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__(1177))
+      [2494, 6734],
+      () => (__webpack_exec__(9303), __webpack_exec__(5693))
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Commit: 0096c7d

Copy link

codspeed-hq bot commented Sep 3, 2025

CodSpeed Performance Report

Merging #83371 will not alter performance

Comparing whole_app_module_graph (0096c7d) with canary (0720d7c)

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.

@lukesandberg lukesandberg force-pushed the whole_app_module_graph branch from e465c50 to bb9d85e Compare September 8, 2025 23:03
@ijjk ijjk added the tests label Sep 9, 2025
@lukesandberg lukesandberg changed the base branch from canary to graphite-base/83371 September 10, 2025 15:49
@lukesandberg lukesandberg changed the base branch from graphite-base/83371 to ssr_data September 10, 2025 15:49
@lukesandberg lukesandberg force-pushed the whole_app_module_graph branch 3 times, most recently from 030cee5 to 46b5437 Compare September 10, 2025 22:52
@lukesandberg lukesandberg force-pushed the whole_app_module_graph branch 2 times, most recently from 5f47fa4 to a4ab2e4 Compare September 12, 2025 16:17
@lukesandberg lukesandberg changed the base branch from ssr_data to graphite-base/83371 September 12, 2025 17:09
@graphite-app graphite-app bot changed the base branch from graphite-base/83371 to canary September 12, 2025 17:11
@lukesandberg lukesandberg force-pushed the whole_app_module_graph branch 2 times, most recently from 2d8365e to 6710c81 Compare September 17, 2025 17:21
@lukesandberg lukesandberg changed the base branch from canary to graphite-base/83371 September 17, 2025 23:08
@lukesandberg lukesandberg changed the base branch from graphite-base/83371 to issue_path September 17, 2025 23:08
@lukesandberg lukesandberg force-pushed the whole_app_module_graph branch 2 times, most recently from 7d503ae to f6e50df Compare September 18, 2025 19:04
@lukesandberg lukesandberg changed the base branch from issue_path to graphite-base/83371 September 19, 2025 01:44
@graphite-app graphite-app bot changed the base branch from graphite-base/83371 to canary September 19, 2025 01:46
@lukesandberg lukesandberg force-pushed the whole_app_module_graph branch 2 times, most recently from 8370ba5 to ff91772 Compare September 23, 2025 22:01
@lukesandberg lukesandberg changed the base branch from canary to graphite-base/83371 September 24, 2025 17:12
@lukesandberg lukesandberg changed the base branch from graphite-base/83371 to data_endpoints September 24, 2025 17:13
@graphite-app graphite-app bot changed the base branch from data_endpoints to graphite-base/83371 September 25, 2025 06:59
@lukesandberg lukesandberg force-pushed the whole_app_module_graph branch from 06f11c3 to 0096c7d Compare October 13, 2025 05:43
@lukesandberg lukesandberg changed the base branch from graphite-base/83371 to canary October 13, 2025 05:43
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. tests Turbopack Related to Turbopack with Next.js. type: next

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants