Skip to content

Conversation

@lubieowoce
Copy link
Member

No description provided.

@ijjk ijjk added created-by: Next.js team PRs by the Next.js team. Documentation Related to Next.js' official documentation. tests type: next labels Nov 11, 2025
@lubieowoce lubieowoce force-pushed the lubieowoce/discriminated-dynamic-errors-debug-2 branch 2 times, most recently from 2056abc to e78d1e9 Compare November 11, 2025 20:48
gnoff and others added 4 commits November 11, 2025 22:11
Prior to this change any "hole" in a prerender that would block the shell was considered an error and you would be presented with a very generic message explaining all the different ways you could have failed this validation check.

With this change we use a new technique to validate the static shell which can now tell the difference between waiting on uncached data or runtime data. It also improves the heuristics around generateMetadata and generateViewport errors.

I added new error pages for runtime sync IO and ensure we only validate sync IO after runtime data if the page will be validating runtime prefetches.

I restored the validation on HMR update so you can get feedback after saving a new file.
Comment on lines +89 to +105
console.log(
'========= initial render: abandoning due to sync IO ========='
)
console.log(
`current stage: ${RenderStage[this.currentStage]}, error: ${reason.message}`
)
return this.abandonRenderImpl()
}

// If we're in the final render, we cannot abandon it. We need to advance to the Dynamic stage
// and capture the interruption reason.
console.log(
'========= final render: advancing stage to Dynamic due to sync IO ========='
)
console.log(
`current stage: ${RenderStage[this.currentStage]}, error: ${reason.message}`
)
Copy link
Contributor

Choose a reason for hiding this comment

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

There are multiple console.log statements throughout the file that output debug information unconditionally to stdout. These should be removed or wrapped in a debug condition before production use.

View Details
📝 Patch Details
diff --git a/packages/next/src/server/app-render/staged-rendering.ts b/packages/next/src/server/app-render/staged-rendering.ts
index 5fd28ab8ec..d707663694 100644
--- a/packages/next/src/server/app-render/staged-rendering.ts
+++ b/packages/next/src/server/app-render/staged-rendering.ts
@@ -86,23 +86,27 @@ export class StagedRenderingController {
     // so we want a slightly different flow.
     // See the implementation of `abandonRenderImpl` for more explanation.
     if (this.mayAbandon) {
+      if (process.env.NEXT_DEBUG_BUILD || process.env.__NEXT_VERBOSE_LOGGING) {
+        console.log(
+          '========= initial render: abandoning due to sync IO ========='
+        )
+        console.log(
+          `current stage: ${RenderStage[this.currentStage]}, error: ${reason.message}`
+        )
+      }
+      return this.abandonRenderImpl()
+    }
+
+    // If we're in the final render, we cannot abandon it. We need to advance to the Dynamic stage
+    // and capture the interruption reason.
+    if (process.env.NEXT_DEBUG_BUILD || process.env.__NEXT_VERBOSE_LOGGING) {
       console.log(
-        '========= initial render: abandoning due to sync IO ========='
+        '========= final render: advancing stage to Dynamic due to sync IO ========='
       )
       console.log(
         `current stage: ${RenderStage[this.currentStage]}, error: ${reason.message}`
       )
-      return this.abandonRenderImpl()
     }
-
-    // If we're in the final render, we cannot abandon it. We need to advance to the Dynamic stage
-    // and capture the interruption reason.
-    console.log(
-      '========= final render: advancing stage to Dynamic due to sync IO ========='
-    )
-    console.log(
-      `current stage: ${RenderStage[this.currentStage]}, error: ${reason.message}`
-    )
     switch (this.currentStage) {
       case RenderStage.Static: {
         this.staticInterruptReason = reason
@@ -210,7 +214,9 @@ export class StagedRenderingController {
 
   /** Fire the `onStage` listeners for the runtime stage and unblock any promises waiting for it. */
   private resolveRuntimeStage() {
-    console.log('[staged-rendering] resolving runtime stage')
+    if (process.env.NEXT_DEBUG_BUILD || process.env.__NEXT_VERBOSE_LOGGING) {
+      console.log('[staged-rendering] resolving runtime stage')
+    }
     const runtimeListeners = this.runtimeStageListeners
     for (let i = 0; i < runtimeListeners.length; i++) {
       runtimeListeners[i]()
@@ -221,7 +227,9 @@ export class StagedRenderingController {
 
   /** Fire the `onStage` listeners for the dynamic stage and unblock any promises waiting for it. */
   private resolveDynamicStage() {
-    console.log('[staged-rendering] resolving dynamic stage')
+    if (process.env.NEXT_DEBUG_BUILD || process.env.__NEXT_VERBOSE_LOGGING) {
+      console.log('[staged-rendering] resolving dynamic stage')
+    }
     const dynamicListeners = this.dynamicStageListeners
     for (let i = 0; i < dynamicListeners.length; i++) {
       dynamicListeners[i]()

Analysis

Unconditional console.log statements in staged-rendering.ts cause debug output in production

What fails: StagedRenderingController class in packages/next/src/server/app-render/staged-rendering.ts contains 4 unconditional console.log statements that execute in production:

  • Lines 89-94: Logs when abandoning initial render due to sync IO
  • Lines 100-105: Logs when advancing to Dynamic stage in final render due to sync IO
  • Line 213: Logs [staged-rendering] resolving runtime stage
  • Line 224: Logs [staged-rendering] resolving dynamic stage

How to reproduce: Run any Next.js app in production mode. When the staged rendering flow executes (which occurs during normal request handling in App Router), these console.log statements will output directly to stdout unconditionally.

Result: Debug messages print to stdout on every render cycle, including in production builds, polluting logs and violating production best practices.

Expected: Debug output should only appear when explicitly enabled via environment variables like NEXT_DEBUG_BUILD or __NEXT_VERBOSE_LOGGING, matching the pattern used throughout the codebase (e.g., in packages/next/src/server/app-render/app-render.tsx). Per Next.js debug patterns, debug logs are wrapped with if (process.env.NEXT_DEBUG_BUILD || process.env.__NEXT_VERBOSE_LOGGING) conditions.

Fix: Wrapped all 4 console.log statements in conditional checks for process.env.NEXT_DEBUG_BUILD || process.env.__NEXT_VERBOSE_LOGGING to match the established debug logging pattern in the codebase.

@lubieowoce lubieowoce force-pushed the lubieowoce/discriminated-dynamic-errors-debug-2 branch from 959249c to 31d86e6 Compare November 11, 2025 21:13
@ijjk
Copy link
Member

ijjk commented Nov 11, 2025

Failing test suites

Commit: ea453ea | About building and testing Next.js

pnpm test-dev test/e2e/app-dir/log-file/log-file.test.ts (job)

  • log-file > should capture RSC logging in log file (DD)
  • log-file > should capture client logging in log file (DD)
Expand output

● log-file › should capture RSC logging in log file

expect(received).toMatchInlineSnapshot(snapshot)

Snapshot name: `log-file should capture RSC logging in log file 1`

- Snapshot  -  3
+ Received  + 13

- [xx:xx:xx.xxx] Server  LOG     RSC: This is a log message from server component
- [xx:xx:xx.xxx] Server  ERROR   RSC: This is an error message from server component
- [xx:xx:xx.xxx] Server  WARN    RSC: This is a warning message from server component
+ [xx:xx:xx.xxx] Server  LOG     
+
+ ##########################################################
+ [xx:xx:xx.xxx] Server  LOG     [app-render] :: rendering /server (/server)
+
+ [xx:xx:xx.xxx] Server  LOG     =================== [initial] Static ===================
+ [xx:xx:xx.xxx] Server  LOG     RSC: This is a log message from server component
+ [xx:xx:xx.xxx] Server  ERROR   RSC: This is an error message from server component
+ [xx:xx:xx.xxx] Server  WARN    RSC: This is a warning message from server component
+ [xx:xx:xx.xxx] Server  LOG     =================== [initial] Runtime ===================
+ [xx:xx:xx.xxx] Server  LOG     [staged-rendering] resolving runtime stage
+ [xx:xx:xx.xxx] Server  LOG     =================== [initial] Dynamic ===================
+ [xx:xx:xx.xxx] Server  LOG     [staged-rendering] resolving dynamic stage
  ↵

  82 |       await retry(async () => {
  83 |         const newLogContent = getNewLogContent()
> 84 |         expect(newLogContent).toMatchInlineSnapshot(`
     |                               ^
  85 |          "[xx:xx:xx.xxx] Server  LOG     RSC: This is a log message from server component
  86 |          [xx:xx:xx.xxx] Server  ERROR   RSC: This is an error message from server component
  87 |          [xx:xx:xx.xxx] Server  WARN    RSC: This is a warning message from server component

  at toMatchInlineSnapshot (e2e/app-dir/log-file/log-file.test.ts:84:31)
  at fn (lib/next-test-utils.ts:797:20)
  at Object.<anonymous> (e2e/app-dir/log-file/log-file.test.ts:82:18)

● log-file › should capture client logging in log file

expect(received).toMatchInlineSnapshot(snapshot)

Snapshot name: `log-file should capture client logging in log file 1`

- Snapshot  -  1
+ Received  + 11

- "[xx:xx:xx.xxx] Browser LOG     Client: Complex circular object: {"data":{"nested":{"items":[1,2,3],"value":42},"parent":"[Circular]"},"metadata":{"name":"safe stringify","version":"1.0.0"},"name":"test"}
+ "[xx:xx:xx.xxx] Server  LOG     
+
+ ##########################################################
+ [xx:xx:xx.xxx] Server  LOG     [app-render] :: rendering /client (/client)
+
+ [xx:xx:xx.xxx] Server  LOG     =================== [initial] Static ===================
+ [xx:xx:xx.xxx] Server  LOG     =================== [initial] Runtime ===================
+ [xx:xx:xx.xxx] Server  LOG     [staged-rendering] resolving runtime stage
+ [xx:xx:xx.xxx] Server  LOG     =================== [initial] Dynamic ===================
+ [xx:xx:xx.xxx] Server  LOG     [staged-rendering] resolving dynamic stage
+ [xx:xx:xx.xxx] Browser LOG     Client: Complex circular object: {"data":{"nested":{"items":[1,2,3],"value":42},"parent":"[Circular]"},"metadata":{"name":"safe stringify","version":"1.0.0"},"name":"test"}
  [xx:xx:xx.xxx] Browser ERROR   Client: This is an error message from client component
  [xx:xx:xx.xxx] Browser WARN    Client: This is a warning message from client component
  "

  119 |       await retry(async () => {
  120 |         const newLogContent = getNewLogContent()
> 121 |         expect(newLogContent).toMatchInlineSnapshot(`
      |                               ^
  122 |          "[xx:xx:xx.xxx] Browser LOG     Client: Complex circular object: {"data":{"nested":{"items":[1,2,3],"value":42},"parent":"[Circular]"},"metadata":{"name":"safe stringify","version":"1.0.0"},"name":"test"}
  123 |          [xx:xx:xx.xxx] Browser ERROR   Client: This is an error message from client component
  124 |          [xx:xx:xx.xxx] Browser WARN    Client: This is a warning message from client component

  at toMatchInlineSnapshot (e2e/app-dir/log-file/log-file.test.ts:121:31)
  at fn (lib/next-test-utils.ts:797:20)
  at Object.<anonymous> (e2e/app-dir/log-file/log-file.test.ts:119:18)

pnpm test-dev-turbo test/e2e/app-dir/cache-components-errors/cache-components-console-patch.test.ts (turbopack) (job)

  • Cache Components Errors > Sync IO in console methods > Console Patching > does not warn about sync IO if console.log is patched to call new Date() internally (DD)
Expand output

● Cache Components Errors › Sync IO in console methods › Console Patching › does not warn about sync IO if console.log is patched to call new Date() internally

expect(received).toMatchInlineSnapshot(snapshot)

Snapshot name: `Cache Components Errors Sync IO in console methods Console Patching does not warn about sync IO if console.log is patched to call new Date() internally 1`

- Snapshot  -   1
+ Received  + 143

- "[<timestamp>] This is a console log from a server component page"
+ "[<timestamp>] 
+
+ ##########################################################
+ [<timestamp>] [app-render] :: rendering / (/)
+
+ [<timestamp>] =================== [initial] Static ===================
+ [<timestamp>] This is a console log from a server component page
+ [<timestamp>] =================== [initial] Runtime ===================
+ [<timestamp>] [staged-rendering] resolving runtime stage
+ [<timestamp>] =================== [initial] Dynamic ===================
+ [<timestamp>] [staged-rendering] resolving dynamic stage
+ [<timestamp>] Static chunks (8)
+ [<timestamp>] ------------------------
+ [<timestamp>] 4:I["[project]/node_modules/.pnpm/file+..+next-repo-38c29c76e96dae71499a763c9ffd3034b167a79976e208417bb64ab4e08f7d3e+packages+n_deqxedfxwgxa4oujt73ls7vnty/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js [app-client] (ecmascript)",["/_next/static/chunks/c7275_next_dist_9ed6c02c._.js","/_next/static/chunks/c7275_next_dist_client_components_builtin_global-error_38985f9f.js"],"SegmentViewNode"]
+ 6:"$Sreact.fragment"
+ 15:I["[project]/node_modules/.pnpm/file+..+next-repo-38c29c76e96dae71499a763c9ffd3034b167a79976e208417bb64ab4e08f7d3e+packages+n_deqxedfxwgxa4oujt73ls7vnty/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)",["/_next/static/chunks/c7275_next_dist_9ed6c02c._.js","/_next/static/chunks/c7275_next_dist_client_components_builtin_global-error_38985f9f.js"],"default"]
+ 17:I["[project]/node_modules/.pnpm/file+..+next-repo-38c29c76e96dae71499a763c9ffd3034b167a79976e208417bb64ab4e08f7d3e+packages+n_deqxedfxwgxa4oujt73ls7vnty/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)",["/_next/static/chunks/c7275_next_dist_9ed6c02c._.js","/_next/static/chunks/c7275_next_dist_client_components_builtin_global-error_38985f9f.js"],"default"]
+ 2f:I["[project]/node_modules/.pnpm/file+..+next-repo-38c29c76e96dae71499a763c9ffd3034b167a79976e208417bb64ab4e08f7d3e+packages+n_deqxedfxwgxa4oujt73ls7vnty/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)",["/_next/static/chunks/c7275_next_dist_9ed6c02c._.js","/_next/static/chunks/c7275_next_dist_client_components_builtin_global-error_38985f9f.js"],"OutletBoundary"]
+ 31:"$Sreact.suspense"
+ 3a:I["[project]/node_modules/.pnpm/file+..+next-repo-38c29c76e96dae71499a763c9ffd3034b167a79976e208417bb64ab4e08f7d3e+packages+n_deqxedfxwgxa4oujt73ls7vnty/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)",["/_next/static/chunks/c7275_next_dist_9ed6c02c._.js","/_next/static/chunks/c7275_next_dist_client_components_builtin_global-error_38985f9f.js"],"ViewportBoundary"]
+ 41:I["[project]/node_modules/.pnpm/file+..+next-repo-38c29c76e96dae71499a763c9ffd3034b167a79976e208417bb64ab4e08f7d3e+packages+n_deqxedfxwgxa4oujt73ls7vnty/node_modules/next/dist/lib/framework/boundary-components.js [app-client] (ecmascript)",["/_next/static/chunks/c7275_next_dist_9ed6c02c._.js","/_next/static/chunks/c7275_next_dist_client_components_builtin_global-error_38985f9f.js"],"MetadataBoundary"]
+ 46:I["[project]/node_modules/.pnpm/file+..+next-repo-38c29c76e96dae71499a763c9ffd3034b167a79976e208417bb64ab4e08f7d3e+packages+n_deqxedfxwgxa4oujt73ls7vnty/node_modules/next/dist/client/components/builtin/global-error.js [app-client] (ecmascript)",["/_next/static/chunks/c7275_next_dist_9ed6c02c._.js","/_next/static/chunks/c7275_next_dist_client_components_builtin_global-error_38985f9f.js"],"default"]
+ :N1762905945571.974
+ 2:{"name":"Preloads","key":null,"env":"Prerender","stack":[],"props":{"preloadCallbacks":[]}}
+ 3:[]
+ 5:[]
+ 9:I["[project]/node_modules/.pnpm/file+..+next-repo-38c29c76e96dae71499a763c9ffd3034b167a79976e208417bb64ab4e08f7d3e+packages+n_deqxedfxwgxa4oujt73ls7vnty/node_modules/next/dist/client/components/layout-router.js [app-client] (ecmascript)",["/_next/static/chunks/c7275_next_dist_9ed6c02c._.js","/_next/static/chunks/c7275_next_dist_client_components_builtin_global-error_38985f9f.js"],"default"]
+ c:I["[project]/node_modules/.pnpm/file+..+next-repo-38c29c76e96dae71499a763c9ffd3034b167a79976e208417bb64ab4e08f7d3e+packages+n_deqxedfxwgxa4oujt73ls7vnty/node_modules/next/dist/client/components/render-from-template-context.js [app-client] (ecmascript)",["/_next/static/chunks/c7275_next_dist_9ed6c02c._.js","/_next/static/chunks/c7275_next_dist_client_components_builtin_global-error_38985f9f.js"],"default"]
+ d:{}
+ e:[["Function.all","",0,0,0,0,true]]
+ b:{"children":["$","$Lc",null,"$d",null,"$e",1]}
+ f:[["Function.all","",0,0,0,0,true]]
+ a:{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$6",null,"
+ [<timestamp>] $b",null,"$f",0],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$Y","forbidden":"$undefined","unauthorized":"$undefined","segmentViewBoundaries":"$Y"}
+ 10:[["Function.all","",0,0,0,0,true]]
+ 8:{"name":"Root","key":null,"env":"Prerender","stack":[],"props":{"children":["$","$L9",null,"$a",null,"$10",1],"params":"$Y"}}
+ 11:[["Root","/tmp/next-install-fc0735b75331af2c917fd4a994bf26f48afb48f8c5617cdb375d7656d7ca3f55/.next/dev/server/chunks/ssr/_fc474441._.js",12,431,11,1,false]]
+ 12:[["Root","/tmp/next-install-fc0735b75331af2c917fd4a994bf26f48afb48f8c5617cdb375d7656d7ca3f55/.next/dev/server/chunks/ssr/_fc474441._.js",13,438,11,1,false]]
+ 13:[["Root","/tmp/next-install-fc0735b75331af2c917fd4a994bf26f48afb48f8c5617cdb375d7656d7ca3f55/.next/dev/server/chunks/ssr/_fc474441._.js",14,442,11,1,false]]
+ 14:[["Function.all","",0,0,0,0,true]]
+ 16:[["Function.all","",0,0,0,0,true]]
+ 18:[]
+ 1a:{"name":"NotFound","key":null,"env":"Prerender","stack":[],"props":{}}
+ 1b:{"name":"HTTPAccessErrorFallback","key":null,"env":"Prerender","owner":"$1a","stack":[],"props":{"status":404,"message":"This page could not be found."}}
+ 1c:[]
+ 1d:[]
+ 1e:[]
+ 1f:[]
+ 20:[]
+ 21:[]
+ 22:[]
+ 23:[["Function.all","",0,0,0,0,true]]
+ 24:[["Function.all","",0,0,0,0,true]]
+ 25:[["Function.all","",0,0,0,0,true]]
+ 26:[["Function.all","",0,0,0,0,true]]
+ 28:{"name":"Page","key":null,"env":"Prerender","stack":[["Function.all","",0,0,0,0,true]],"props":{"params":"$@29","searchParams":"$@2a"}}
+ 2b:[["Page","/tmp/next-install-fc0735b75331af2c917fd4a994bf26f48afb48f8c5617cdb375d7656d7ca3f55/.next/dev/server/chunks/ssr/[root-of-the-server]__f1627132._.js",22,13,21,1,false]]
+ :W["log","$2b","$28","Prerender","This is a console log from a server component page"]
+ 2d:{"name":"Next.MetadataOutlet","key":null,"env":"Prerender","stack":[["Function.all","",0,0,0,0,true]],"props":{}}
+ 2e:[]
+ 30:[]
+ 33:[]
+
+ [<timestamp>] 36:"$EObject.defineProperty(function(type,config,children){for(var propName,i=2;i<arguments.length;i++)validateChildKeys(arguments[i]);i={};var key=null;if(null!=config)for(propName in didWarnAboutOldJSXRuntime||!(\"__self\"in config)||\"key\"in config||(didWarnAboutOldJSXRuntime=!0,console.warn(\"Your app (or one of its dependencies) is using an outdated JSX transform. Update to the modern JSX transform for faster performance: https://react.dev/link/new-jsx-transform\")),hasValidKey(config)&&(checkKeyStringCoercion(config.key),key=\"\"+config.key),config)hasOwnProperty.call(config,propName)&&\"key\"!==propName&&\"__self\"!==propName&&\"__source\"!==propName&&(i[propName]=config[propName]);var childrenLength=arguments.length-2;if(1===childrenLength)i.children=children;else if(1<childrenLength){for(var childArray=Array(childrenLength),_i=0;_i<childrenLength;_i++)childArray[_i]=arguments[_i+2];Object.freeze&&Object.freeze(childArray),i.children=childArray}if(type&&type.defaultProps)for(propName in childrenLength=type.defaultProps)void 0===i[propName]&&(i[propName]=childrenLength[propName]);return key&&function(props,displayName){function warnAboutAccessingKey(){specialPropKeyWarningShown||(specialPropKeyWarningShown=!0,console.error(\"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\",displayName))}warnAboutAccessingKey.isReactWarning=!0,Object.defineProperty(props,\"key\",{get:warnAboutAccessingKey,configurable:!0})}(i,\"function\"==typeof type?type.displayName||type.name||\"Unknown\":type),(propName=1e4>ReactSharedInternals.recentlyCreatedOwnerStacks++)?(childArray=Error.stackTraceLimit,Error.stackTraceLimit=10,childrenLength=Error(\"react-stack-top-frame\"),Error.stackTraceLimit=childArray):childrenLength=unknownOwnerDebugStack,ReactElement(type,key,i,getOwner(),childrenLength,propName?createTask(getTaskName(type)):unknownOwnerDebugTask)},\"name\",{value:\"\"})"
+
+ [<timestamp>] 35:{"name":"NonIndex","key":null,"env":"Prerender","stack":[],"props":{"createElement":"$36","pagePath":"/","statusCode":200,"isPossibleServerAction":false}}
+ 38:{"name":"ViewportWrapper","key":null,"env":"Prerender","stack":[],"props":{}}
+ 39:[]
+ 3c:{"name":"Next.Viewport","key":null,"env":"Prerender","owner":"$38","stack":[],"props":{}}
+ 3e:{"name":"MetadataWrapper","key":null,"env":"Prerender","stack":[],"props":{}}
+ 3f:[]
+ 40:[]
+ 42:[]
+ 44:{"name":"Next.Metadata","key":null,"env":"Prerender","owner":"$3e","stack":[],"props":{}}
+ 47:[]
+ 1:D{"time":21.606773376464844}
+ 1:D"$2"
+ 1:D{"time":21.939403533935547}
+ 1:null
+ 7:D{"time":23.96634292602539}
+ 7:D"$8"
+ 7:D{"time":24.887699127197266}
+ 19:D{"time":25.813465118408203}
+ 19:D"$1a"
+ 19:D{"time":26.576330184936523}
+ 19:D"$1b"
+ 19:D{"time":27.03510284423828}
+ 19:[["$","title",null,{"children":"404: This page could not be found."},"$1b","$1c",1],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}},"$1b","$1f",1],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404},"$1b","$20",1],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."},"$1b","$22",1]},"$1b","$21",1]]},"$1b","$1e",1]},"$1b","$1d",1]]
+ 7:["$","html",null,{"children":["$","body",null,{"children":["$","main",null,{"children":["$","$L15",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L17",null,{},null,"$16",1],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":["$","$L4","c-not-found",{"type":"not-found","pagePath":"__next_builtin__not-found.js","children":["$19",[]]},null,"$18",0],"forbidden":"$undefined","unauthorized":"$undefined","segmentViewBoundaries":[["$","$L4",null,{"type":"boundary:not-found","pagePath":"__next_builtin__not-found.js@boundary"},null,"$23",1],"$undefined","$undefined",["$","$L4",null,{"type":"boundary:global-error","pagePath":"__next_builtin__global-error.js"},null,"$24",1]]},null,"$14",1]},"$8","$13",1]},"$8","$12",1]},"$8","$11",1]
+ 27:D{"time":29.641387939453125}
+ 27:D"$28"
+ 2c:D{"time":31.12105941772461}
+ 2c:D"$2d"
+ 2c:D{"time":72.10037612915039}
+ 2c:["$","$L2f",null,{"children":["$","$31",null,{"name":"Next.MetadataOutlet","children":"$@32"},"$2d","$30",1]},"$2d","$2e",1]
+ 34:D{"time":73.37322807312012}
+ 34:D"$35"
+ 34:D{"time":73.45930671691895}
+ 34:null
+ 37:D{"time":73.72872734069824}
+ 37:D"$38"
+ 37:D{"time":73.99258232116699}
+ 3b:D{"time":74.2641544342041}
+ 3b:D"$3c"
+ 37:["$","$L3a",null,{"children":"$L3b"},"$38","$39",1]
+ 3d:D{"time":75.14096450805664}
+ 3d:D"$3e"
+ 3d:D{"time":75.4743766784668}
+ 43:D{"time":75.7190933227539}
+ 43:D"$44"
+ 3d:["$","div",null,{"hidden":true,"children":["$","$L41",null,{"children":["$","$31",null,{"name":"Next.Metadata","children":"$L43"},"$3e","$42",1]},"$3e","$40",1]},"$3e","$3f",1]
+ 45:[]
+ 0:{"P":"$1","b":"development","c":["",""],"q":"","i":false,"f":[[["",{"children":["__PAGE__",{}]},"$undefined","$undefined",true],[["$","$L4","layout",{"type":"layout","pagePath":"layout.tsx","children":["$","$6","c",{"children":[null,"$7"]},null,"$5",1]},null,"$3",0],{"children":[["$","$6","c",{"children":[["$","$L4","c-page",{"type":"page","pagePath":"page.tsx","children":"$L27"},null,"$26",1],null,"$2c"]},null,"$25",0],{},null,false,false]},null,false,false],["$","$6","h",{"children":["$
+ [<timestamp>] 34","$37","$3d",null]},null,"$33",0],false]],"m":"$W45","G":["$46",["$","$L4","ge-svn",{"type":"global-error","pagePath":"__next_builtin__global-error.js","children":[]},null,"$47",0]],"S":false,"_validation":"$@48"}
+
+ [<timestamp>] 29:{}
+ 2a:
+ 49:[["Page","/tmp/next-install-fc0735b75331af2c917fd4a994bf26f48afb48f8c5617cdb375d7656d7ca3f55/.next/dev/server/chunks/ssr/[root-of-the-server]__f1627132._.js",23,431,21,1,false]]
+ 27:D{"time":80.4148063659668}
+ 27:["$","div",null,{"children":"This page uses a console.log that has been patched before Next.js runs to include a timestamp in the log line. It does not actually print the timestamp because we want the assertions to be stable but we are asserting that this sync IO does not interrupt the prerender when Cache Components are enabled"},"$28","$49",1]
+
+ [<timestamp>] 4a:[]
+ 4b:[]
+ 3b:D{"time":86.79178047180176}
+ 3b:[["$","meta","0",{"charSet":"utf-8"},"$2d","$4a",0],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"},"$2d","$4b",0]]
+
+ [<timestamp>] 32:D{"time":89.69767189025879}
+ 32:null
+ 43:D{"time":89.74506568908691}
+ 43:[]
+
+ [<timestamp>] ------------------------
+ [<timestamp>] 
+
+ [<timestamp>] Runtime chunks (0)
+ [<timestamp>] ------------------------
+ [<timestamp>] ------------------------
+ [<timestamp>] 
+
+ [<timestamp>] Dynamic chunks (0)
+ [<timestamp>] ------------------------
+ [<timestamp>] ------------------------
+ [<timestamp>]"

  46 |           const snapshot = output.slice(0, output.indexOf('GET / 200')).trim()
  47 |
> 48 |           expect(snapshot).toMatchInlineSnapshot(
     |                            ^
  49 |             `"[<timestamp>] This is a console log from a server component page"`
  50 |           )
  51 |         })

  at Object.toMatchInlineSnapshot (e2e/app-dir/cache-components-errors/cache-components-console-patch.test.ts:48:28)

pnpm test-dev-turbo test/e2e/app-dir/cache-components-errors/cache-components-dev-cache-bypass.test.ts (turbopack) (job)

  • Cache Components Errors > Warning for Bypassing Caches in Dev > warns if you render with cache-control: no-cache in dev on initial page load (DD)
  • Cache Components Errors > Warning for Bypassing Caches in Dev > warns if you render with cache-control: no-cache in dev on client navigation (DD)
  • Cache Components Errors > Warning for Bypassing Caches in Dev > does not warn if you render without cache-control: no-cache in dev on initial page load (DD)
  • Cache Components Errors > Warning for Bypassing Caches in Dev > does not warn if you render without cache-control: no-cache in dev on client navigation (DD)
Expand output

● Cache Components Errors › Warning for Bypassing Caches in Dev › warns if you render with cache-control: no-cache in dev on initial page load

expect(received).toMatchInlineSnapshot(snapshot)

Snapshot name: `Cache Components Errors Warning for Bypassing Caches in Dev warns if you render with cache-control: no-cache in dev on initial page load 1`

- Snapshot  - 1
+ Received  + 3

- Route / is rendering with server caches disabled. For this navigation, Component Metadata in React DevTools will not accurately reflect what is statically prerenderable and runtime prefetchable. See more info here: https://nextjs.org/docs/messages/cache-bypass-in-dev
+ Route / is rendering with server caches disabled. For this navigation, Component Metadata in React DevTools will not accurately reflect what is statically prerenderable and runtime prefetchable. See more info here: https://nextjs.org/docs/messages/cache-bypass-in-dev
+ [staged-rendering] resolving runtime stage
+ [staged-rendering] resolving dynamic stage
  ↵

  20 |
  21 |         expect(stripGetLines(next.cliOutput.slice(from)))
> 22 |           .toMatchInlineSnapshot(`
     |            ^
  23 |          "Route / is rendering with server caches disabled. For this navigation, Component Metadata in React DevTools will not accurately reflect what is statically prerenderable and runtime prefetchable. See more info here: https://nextjs.org/docs/messages/cache-bypass-in-dev
  24 |          "
  25 |         `)

  at Object.toMatchInlineSnapshot (e2e/app-dir/cache-components-errors/cache-components-dev-cache-bypass.test.ts:22:12)

● Cache Components Errors › Warning for Bypassing Caches in Dev › warns if you render with cache-control: no-cache in dev on client navigation

expect(received).toMatchInlineSnapshot(snapshot)

Snapshot name: `Cache Components Errors Warning for Bypassing Caches in Dev warns if you render with cache-control: no-cache in dev on client navigation 1`

- Snapshot  - 1
+ Received  + 3

- Route /other is rendering with server caches disabled. For this navigation, Component Metadata in React DevTools will not accurately reflect what is statically prerenderable and runtime prefetchable. See more info here: https://nextjs.org/docs/messages/cache-bypass-in-dev
+ Route /other is rendering with server caches disabled. For this navigation, Component Metadata in React DevTools will not accurately reflect what is statically prerenderable and runtime prefetchable. See more info here: https://nextjs.org/docs/messages/cache-bypass-in-dev
+ [staged-rendering] resolving runtime stage
+ [staged-rendering] resolving dynamic stage
  ↵

  34 |
  35 |         expect(stripGetLines(next.cliOutput.slice(from)))
> 36 |           .toMatchInlineSnapshot(`
     |            ^
  37 |          "Route /other is rendering with server caches disabled. For this navigation, Component Metadata in React DevTools will not accurately reflect what is statically prerenderable and runtime prefetchable. See more info here: https://nextjs.org/docs/messages/cache-bypass-in-dev
  38 |          "
  39 |         `)

  at Object.toMatchInlineSnapshot (e2e/app-dir/cache-components-errors/cache-components-dev-cache-bypass.test.ts:36:12)

● Cache Components Errors › Warning for Bypassing Caches in Dev › does not warn if you render without cache-control: no-cache in dev on initial page load

expect(received).toMatchInlineSnapshot(snapshot)

Snapshot name: `Cache Components Errors Warning for Bypassing Caches in Dev does not warn if you render without cache-control: no-cache in dev on initial page load 1`

- Snapshot  -  0
+ Received  + 15

+
+
+ ##########################################################
+ [app-render] :: rendering / (/)
+
+ =================== [initial] Static ===================
+ [app-render] abandoning initial render due to a cache miss in the static stage
+ [staged-rendering] resolving runtime stage
+ *********** restarting render ***********
+ =================== [final] Static ===================
+ =================== [final] Runtime ===================
+ [staged-rendering] resolving runtime stage
+ =================== [final] Dynamic ===================
+ [staged-rendering] resolving dynamic stage
+

  45 |         await next.fetch('/')
  46 |
> 47 |         expect(stripGetLines(next.cliOutput.slice(from))).toMatchInlineSnapshot(
     |                                                           ^
  48 |           `""`
  49 |         )
  50 |       })

  at Object.toMatchInlineSnapshot (e2e/app-dir/cache-components-errors/cache-components-dev-cache-bypass.test.ts:47:59)

● Cache Components Errors › Warning for Bypassing Caches in Dev › does not warn if you render without cache-control: no-cache in dev on client navigation

expect(received).toMatchInlineSnapshot(snapshot)

Snapshot name: `Cache Components Errors Warning for Bypassing Caches in Dev does not warn if you render without cache-control: no-cache in dev on client navigation 1`

- Snapshot  -  0
+ Received  + 11

+
+
+ ##########################################################
+ [app-render] :: rendering / (/)
+
+ =================== [initial] Static ===================
+ =================== [initial] Runtime ===================
+ [staged-rendering] resolving runtime stage
+ =================== [initial] Dynamic ===================
+ [staged-rendering] resolving dynamic stage
+

  57 |         })
  58 |
> 59 |         expect(stripGetLines(next.cliOutput.slice(from))).toMatchInlineSnapshot(
     |                                                           ^
  60 |           `""`
  61 |         )
  62 |       })

  at Object.toMatchInlineSnapshot (e2e/app-dir/cache-components-errors/cache-components-dev-cache-bypass.test.ts:59:59)

pnpm test-dev test/e2e/app-dir/cache-components-create-component-tree/cache-components-create-component-tree.test.ts (job)

  • hello-world > should not indicate there is an error when incidental math.random calls occur during component tree generation during dev (DD)
Expand output

● hello-world › should not indicate there is an error when incidental math.random calls occur during component tree generation during dev

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

Expected substring: not "Math.random()"
Received string:        "   ▲ Next.js 16.0.2-canary.16 (webpack, Cache Components)
   - Local:         http://localhost:40111
   - Network:       http://65.109.120.209:40111

 ✓ Starting...

   We detected TypeScript in your project and created a tsconfig.json file for you.
 ✓ Ready in 2.1s
 ○ Compiling / ...
patching


##########################################################
[app-render] :: rendering / (/)

=================== [initial] Static ===================
=================== [initial] Runtime ===================
[staged-rendering] resolving runtime stage
=================== [initial] Dynamic ===================
[staged-rendering] resolving dynamic stage
Static chunks (7)
------------------------
4:I[\"(app-pages-browser)/./node_modules/.pnpm/next@file+..+next-repo-a8c3692fe19366bebf423d07218e76baa4031b700c624f61a0dd57190972fba0_8f5f93f03039eb4dae221c3283aef9c7/node_modules/next/dist/next-devtools/userspace/app/segment-explorer-node.js\",[\"app-pages-internals\",\"static/chunks/app-pages-internals.js\"],\"SegmentViewNode\"]
6:\"$Sreact.fragment\"
14:I[\"(app-pages-browser)/./node_modules/.pnpm/next@file+..+next-repo-a8c3692fe19366bebf423d07218e76baa4031b700c624f61a0dd57190972fba0_8f5f93f03039eb4dae221c3283aef9c7/node_modules/next/dist/client/components/layout-router.js\",[\"app-pages-internals\",\"static/chunks/app-pages-internals.js\"],\"\"]
16:I[\"(app-pages-browser)/./node_modules/.pnpm/next@file+..+next-repo-a8c3692fe19366bebf423d07218e76baa4031b700c624f61a0dd57190972fba0_8f5f93f03039eb4dae221c3283aef9c7/node_modules/next/dist/client/components/render-from-template-context.js\",[\"app-pages-internals\",\"static/chunks/app-pages-internals.js\"],\"\"]
2f:I[\"(app-pages-browser)/./node_modules/.pnpm/next@file+..+next-repo-a8c3692fe19366bebf423d07218e76baa4031b700c624f61a0dd57190972fba0_8f5f93f03039eb4dae221c3283aef9c7/node_modules/next/dist/lib/framework/boundary-components.js\",[\"app-pages-internals\",\"static/chunks/app-pages-internals.js\"],\"OutletBoundary\"]
31:\"$Sreact.suspense\"
3a:I[\"(app-pages-browser)/./node_modules/.pnpm/next@file+..+next-repo-a8c3692fe19366bebf423d07218e76baa4031b700c624f61a0dd57190972fba0_8f5f93f03039eb4dae221c3283aef9c7/node_modules/next/dist/lib/framework/boundary-components.js\",[\"app-pages-internals\",\"static/chunks/app-pages-internals.js\"],\"ViewportBoundary\"]
41:I[\"(app-pages-browser)/./node_modules/.pnpm/next@file+..+next-repo-a8c3692fe19366bebf423d07218e76baa4031b700c624f61a0dd57190972fba0_8f5f93f03039eb4dae221c3283aef9c7/node_modules/next/dist/lib/framework/boundary-components.js\",[\"app-pages-internals\",\"static/chunks/app-pages-internals.js\"],\"MetadataBoundary\"]
46:I[\"(app-pages-browser)/./node_modules/.pnpm/next@file+..+next-repo-a8c3692fe19366bebf423d07218e76baa4031b700c624f61a0dd57190972fba0_8f5f93f03039eb4dae221c3283aef9c7/node_modules/next/dist/client/components/builtin/global-error.js\",[\"app-pages-internals\",\"static/chunks/app-pages-internals.js\"],\"\"]
:N1762906046098.2495
2:{\"name\":\"Preloads\",\"key\":null,\"env\":\"Prerender\",\"stack\":[],\"props\":{\"preloadCallbacks\":[]}}
3:[]
5:[]
9:I[\"(app-pages-browser)/./node_modules/.pnpm/next@file+..+next-repo-a8c3692fe19366bebf423d07218e76baa4031b700c624f61a0dd57190972fba0_8f5f93f03039eb4dae221c3283aef9c7/node_modules/next/dist/client/components/layout-router.js\",[\"app-pages-internals\",\"static/chunks/app-pages-internals.js\"],\"\"]
c:I[\"(app-pages-browser)/./node_modules/.pnpm/next@file+..+next-repo-a8c3692fe19366bebf423d07218e76baa4031b700c624f61a0dd57190972fba0_8f5f93f03039eb4dae221c3283aef9c7/node_modules/next/dist/client/components/render-from-template-context.js\",[\"app-pages-internals\",\"static/chunks/app-pages-internals.js\"],\"\"]
d:{}
e:[[\"Function.all\",\"\",0,0,0,0,true]]
b:{\"children\":[\"$\",\"$Lc\",null,\"$d\",null,\"$e\",1]}
f:[[\"Function.all\",\"\",0,0,0,0,true]]
a:{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$6\",null,\"$b\",null,\"$f\",0],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$Y\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\",\"segmentViewBoundaries\":\"$Y\"}
10:[[\"Function.all\",\"\",0,0,0,0,true]]
8:{\"name\":\"Root\",\"key\":null,\"env\":\"Prerender\",\"stack\":[],\"props\":{\"children\":[\"$\",\"$L9\",null,\"$a\",null,\"$10\",1],\"params\":\"$Y\"}}
11:[[\"Root\",\"webpack-internal:///(rsc)/./app/layout.tsx\",35,87,34,1,false]]
12:[[\"Root\",\"webpack-internal:///(rsc)/./app/layout.tsx\",36,94,34,1,false]]
13:[[\"Function.all\",\"\",0,0,0,0,true]]
15:[[\"Function.all\",\"\",0,0,0,0,true]]
17:[]
19:{\"name\":\"NotFound\",\"key\":null,\"env\":\"Prerender\",\"stack\":[],\"props\":{}}
1a:{\"name\":\"HTTPAccessErrorFallback\",\"key\":null,\"env\":\"Prerender\",\"owner\":\"$19\",\"stack\":[],\"props\":{\"status\":404,\"message\":\"This page could not be found.\"}}
1b:[]
1c:[]
1d:[]
1e:[]
1f:[]
20:[]
21:[]
22:[[\"Function.all\",\"\",0,0,0,0,true]]
23:[[\"Func
tion.all\",\"\",0,0,0,0,true]]
24:[[\"Function.all\",\"\",0,0,0,0,true]]
25:[[\"Function.all\",\"\",0,0,0,0,true]]
27:{\"name\":\"Page\",\"key\":null,\"env\":\"Prerender\",\"stack\":[[\"Function.all\",\"\",0,0,0,0,true]],\"props\":{\"params\":\"$@28\",\"searchParams\":\"$@29\"}}
2a:[[\"Page\",\"webpack-internal:///(rsc)/./app/page.tsx\",11,88,8,1,false]]
2b:[[\"Page\",\"webpack-internal:///(rsc)/./app/page.tsx\",18,88,8,1,false]]
2d:{\"name\":\"Next.MetadataOutlet\",\"key\":null,\"env\":\"Prerender\",\"stack\":[[\"Function.all\",\"\",0,0,0,0,true]],\"props\":{}}
2e:[]
30:[]
33:[]

36:\"$EObject.defineProperty(function(type,config,children){for(var propName,i=2;i<arguments.length;i++)validateChildKeys(arguments[i]);i={};var key=null;if(null!=config)for(propName in didWarnAboutOldJSXRuntime||!(\\\"__self\\\"in config)||\\\"key\\\"in config||(didWarnAboutOldJSXRuntime=!0,console.warn(\\\"Your app (or one of its dependencies) is using an outdated JSX transform. Update to the modern JSX transform for faster performance: https://react.dev/link/new-jsx-transform\\\")),hasValidKey(config)&&(checkKeyStringCoercion(config.key),key=\\\"\\\"+config.key),config)hasOwnProperty.call(config,propName)&&\\\"key\\\"!==propName&&\\\"__self\\\"!==propName&&\\\"__source\\\"!==propName&&(i[propName]=config[propName]);var childrenLength=arguments.length-2;if(1===childrenLength)i.children=children;else if(1<childrenLength){for(var childArray=Array(childrenLength),_i=0;_i<childrenLength;_i++)childArray[_i]=arguments[_i+2];Object.freeze&&Object.freeze(childArray),i.children=childArray}if(type&&type.defaultProps)for(propName in childrenLength=type.defaultProps)void 0===i[propName]&&(i[propName]=childrenLength[propName]);return key&&function(props,displayName){function warnAboutAccessingKey(){specialPropKeyWarningShown||(specialPropKeyWarningShown=!0,console.error(\\\"%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)\\\",displayName))}warnAboutAccessingKey.isReactWarning=!0,Object.defineProperty(props,\\\"key\\\",{get:warnAboutAccessingKey,configurable:!0})}(i,\\\"function\\\"==typeof type?type.displayName||type.name||\\\"Unknown\\\":type),(propName=1e4>ReactSharedInternals.recentlyCreatedOwnerStacks++)?(childArray=Error.stackTraceLimit,Error.stackTraceLimit=10,childrenLength=Error(\\\"react-stack-top-frame\\\"),Error.stackTraceLimit=childArray):childrenLength=unknownOwnerDebugStack,ReactElement(type,key,i,getOwner(),childrenLength,propName?createTask(getTaskName(type)):unknownOwnerDebugTask)},\\\"name\\\",{value:\\\"\\\"})\"

35:{\"name\":\"NonIndex\",\"key\":null,\"env\":\"Prerender\",\"stack\":[],\"props\":{\"createElement\":\"$36\",\"pagePath\":\"/\",\"statusCode\":200,\"isPossibleServerAction\":false}}
38:{\"name\":\"ViewportWrapper\",\"key\":null,\"env\":\"Prerender\",\"stack\":[],\"props\":{}}
39:[]
3c:{\"name\":\"Next.Viewport\",\"key\":null,\"env\":\"Prerender\",\"owner\":\"$38\",\"stack\":[],\"props\":{}}
3e:{\"name\":\"MetadataWrapper\",\"key\":null,\"env\":\"Prerender\",\"stack\":[],\"props\":{}}
3f:[]
40:[]
42:[]
44:{\"name\":\"Next.Metadata\",\"key\":null,\"env\":\"Prerender\",\"owner\":\"$3e\",\"stack\":[],\"props\":{}}
47:[]
1:D{\"time\":4.557315826416016}
1:D\"$2\"
1:D{\"time\":4.919401168823242}
1:null
7:D{\"time\":6.853858947753906}
7:D\"$8\"
7:D{\"time\":8.800403594970703}
18:D{\"time\":9.462554931640625}
18:D\"$19\"
18:D{\"time\":9.964874267578125}
18:D\"$1a\"
18:D{\"time\":10.492565155029297}
18:[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"},\"$1a\",\"$1b\",1],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}},\"$1a\",\"$1e\",1],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404},\"$1a\",\"$1f\",1],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"},\"$1a\",\"$21\",1]},\"$1a\",\"$20\",1]]},\"$1a\",\"$1d\",1]},\"$1a\",\"$1c\",1]]
7:[\"$\",\"html\",null,{\"children\":[\"$\",\"body\",null,{\"children\":[\"$\",\"$L14\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L16\",null,{},null,\"$15\",1],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":[\"$\",\"$L4\",\"c-not-found\",{\"type\":\"not-found\",\"pagePath\":\"__next_builtin__not-found.js\",\"children\":[\"$18\",[]]},null,\"$17\",0],\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\",\"segmentViewBoundaries\":[[\"$\",\"$L4\",null,{\"type\":\"boundary:not-found\",\"pagePath\":\"__next_builtin__not-found.js@boundary\"},null,\"$22\",1],\"$undefined\",\"$undefined\",[\"$\",\"$L4\",null,{\"type\":\"boundary:global-error\",\"pagePath\":\"__next_builtin__global-error.js\"},null,\"$23\",1]]},null,\"$13\",1]},\"$8\",\"$12\",1]},\"$8\",\"$11\",1]
26:D{\"time\":13.205982208251953}
26:D\"$27\"
26:D{\"time\":13.429605484008789}
26:[[\"$\",\"p\",null,{\"children\":\"This test does some hacky stuff to cause a `Math.random()` call to happen during the component tree creation which happens before the RSC render. Before the fix that this test accompanied landed this kind of sync IO was reported as a problem in Dev and in runtime during start. In practice this would be because of an OTEL span generation during create-component-tree. With this fix in place the create-component-tree function will not leak any sync IO results into the final prerender.\"},\"$27\",\"$2a\",1],[\"$\",\"p\",null,{\"children\":\"In the long run we ought to move create-component-tree into the render itself and ensure the tree structure comports with CacheComponent rules. This test can be deleted at that time.\"},\"$27\",\"$2b\",1]]
2c:D{\"time\":14.000839233398438}
2c:D\"$2d\"
2c:D{\"time\":18.076831817626953}
2c:[\"$\",\"$L2f\",null,{\"children\":[\"$\",\"$31\",null,{\"name\":\"Next.MetadataOutlet\",\"children\":\"$@32\"},\"$2d\",\"$30\",1]},\"$2d\",\"$2e\",1]
34:D{\"time\":19.287532806396484}
34:D\"$35\"
34:D{\"time\":19.384309768676758}
34:null
37:D{\"time\":19.552902221679688}
37:D\"$38\"
37:D{\"time\":19.79496192932129}
3b:D{\"time\":20.140579223632812}
3b:D\"$3c\"
37:[\"$\",\"$L3a\",null,{\"children\":\"$L3b\"},\"$38\",\"$39\",1]
3d:D{\"time\":21.171375274658203}
3d:D\"$
3e\"
3d:D{\"time\":21.514854431152344}
43:D{\"time\":21.86370086669922}
43:D\"$44\"
3d:[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$L41\",null,{\"children\":[\"$\",\"$31\",null,{\"name\":\"Next.Metadata\",\"children\":\"$L43\"},\"$3e\",\"$42\",1]},\"$3e\",\"$40\",1]},\"$3e\",\"$3f\",1]
45:[]
0:{\"P\":\"$1\",\"b\":\"development\",\"c\":[\"\",\"\"],\"q\":\"\",\"i\":false,\"f\":[[[\"\",{\"children\":[\"__PAGE__\",{}]},\"$undefined\",\"$undefined\",true],[[\"$\",\"$L4\",\"layout\",{\"type\":\"layout\",\"pagePath\":\"layout.tsx\",\"children\":[\"$\",\"$6\",\"c\",{\"children\":[null,\"$7\"]},null,\"$5\",1]},null,\"$3\",0],{\"children\":[[\"$\",\"$6\",\"c\",{\"children\":[[\"$\",\"$L4\",\"c-page\",{\"type\":\"page\",\"pagePath\":\"page.tsx\",\"children\":\"$26\"},null,\"$25\",1],null,\"$2c\"]},null,\"$24\",0],{},null,false,false]},null,false,false],[\"$\",\"$6\",\"h\",{\"children\":[\"$34\",\"$37\",\"$3d\",null]},null,\"$33\",0],false]],\"m\":\"$W45\",\"G\":[\"$46\",[\"$\",\"$L4\",\"ge-svn\",{\"type\":\"global-error\",\"pagePath\":\"__next_builtin__global-error.js\",\"children\":[]},null,\"$47\",0]],\"S\":false,\"_validation\":\"$@48\"}

28:{}
29:
49:[]
4a:[]
3b:D{\"time\":42.03776550292969}
3b:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"},\"$2d\",\"$49\",0],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"},\"$2d\",\"$4a\",0]]

4d:I[\"(app-pages-browser)/./node_modules/.pnpm/next@file+..+next-repo-a8c3692fe19366bebf423d07218e76baa4031b700c624f61a0dd57190972fba0_8f5f93f03039eb4dae221c3283aef9c7/node_modules/next/dist/lib/metadata/generate/icon-mark.js\",[\"app-pages-internals\",\"static/chunks/app-pages-internals.js\"],\"IconMark\"]
4b:[[\"Array.map\",\"\",0,0,0,0,false]]
4c:[]
32:D{\"time\":49.24108123779297}
32:null
43:D{\"time\":49.28242301940918}
43:[[\"$\",\"link\",\"0\",{\"rel\":\"icon\",\"href\":\"/favicon.ico?35749ea079272401\",\"type\":\"image/x-icon\",\"sizes\":\"16x16\"},\"$2d\",\"$4b\",0],[\"$\",\"$L4d\",\"1\",{},\"$2d\",\"$4c\",0]]

------------------------


Runtime chunks (0)
------------------------
------------------------


Dynamic chunks (0)
------------------------
------------------------



 GET / 200 in 13.2s (compile: 11.0s, render: 2.2s)
"

  15 |
  16 |       // The redbox assertion is currently unreliable in this test and so this is an additional check to ensure the CLI didn't print anything with `Math.random()` in it.
> 17 |       expect(next.cliOutput).not.toContain('Math.random()')
     |                                  ^
  18 |     })
  19 |   } else {
  20 |     it('should not indicate there is an error when incidental math.random calls occur during component tree generation during build', async () => {

  at Object.toContain (e2e/app-dir/cache-components-create-component-tree/cache-components-create-component-tree.test.ts:17:34)

pnpm test-dev test/e2e/app-dir/server-source-maps/server-source-maps.test.ts (job)

  • app-dir - server source maps > handles invalid sourcemaps gracefully (DD)
Expand output

● app-dir - server source maps › handles invalid sourcemaps gracefully

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

Expected: 3
Received: 5

  416 |             'Invalid source map.'
  417 |           ).length - 1
> 418 |         ).toEqual(3)
      |           ^
  419 |       }
  420 |     } else {
  421 |       // Bundlers silently drop invalid sourcemaps.

  at Object.toEqual (e2e/app-dir/server-source-maps/server-source-maps.test.ts:418:11)

pnpm test-start-turbo test/production/next-server-nft/next-server-nft.test.ts (turbopack) (job)

  • next-server-nft > should not trace too many files in next-minimal-server.js.nft.json (DD)
Expand output

● next-server-nft › should not trace too many files in next-minimal-server.js.nft.json

expect(received).toMatchInlineSnapshot(snapshot)

Snapshot name: `next-server-nft should not trace too many files in next-minimal-server.js.nft.json 1`

- Snapshot  - 0
+ Received  + 1

@@ -20,10 +20,11 @@
    "/node_modules/next/dist/server/app-render/after-task-async-storage-instance.js",
    "/node_modules/next/dist/server/app-render/after-task-async-storage.external.js",
    "/node_modules/next/dist/server/app-render/async-local-storage.js",
    "/node_modules/next/dist/server/app-render/console-async-storage-instance.js",
    "/node_modules/next/dist/server/app-render/console-async-storage.external.js",
+   "/node_modules/next/dist/server/app-render/fast-set-immediate.external.js",
    "/node_modules/next/dist/server/app-render/work-async-storage-instance.js",
    "/node_modules/next/dist/server/app-render/work-async-storage.external.js",
    "/node_modules/next/dist/server/app-render/work-unit-async-storage-instance.js",
    "/node_modules/next/dist/server/app-render/work-unit-async-storage.external.js",
    "/node_modules/next/dist/server/lib/incremental-cache/memory-cache.external.js",

  263 |         '.next/next-minimal-server.js.nft.json'
  264 |       )
> 265 |       expect(trace).toMatchInlineSnapshot(`
      |                     ^
  266 |        [
  267 |          "/node_modules/client-only/index.js",
  268 |          "/node_modules/next/dist/client/components/app-router-headers.js",

  at Object.toMatchInlineSnapshot (production/next-server-nft/next-server-nft.test.ts:265:21)

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

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

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

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

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

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

pnpm test-dev test/e2e/app-dir/use-cache/use-cache.test.ts (job)

  • use-cache > can resume a cached generateMetadata function (DD)
  • use-cache > can serialize parent metadata as generateMetadata argument (DD)
  • use-cache > should not read nor write cached data when draft mode is enabled > js disabled, without cookies (DD)
Expand output

● use-cache › should not read nor write cached data when draft mode is enabled › js disabled, without cookies

page.waitForLoadState: Timeout 60000ms exceeded.

  526 |         // it seems selenium waits longer and tests rely on this behavior
  527 |         // so we wait for the load event fire before returning
> 528 |         await page.waitForLoadState(waitUntil)
      |                    ^
  529 |       }
  530 |       return this.wrapElement(
  531 |         // Playwright has `null` as a possible return type in case `state` is `detached`,

  at waitForLoadState (lib/browsers/playwright.ts:528:20)
  at e2e/app-dir/use-cache/use-cache.test.ts:879:7
  at Playwright._chain (lib/browsers/playwright.ts:651:23)
  at Playwright._chain [as startChain] (lib/browsers/playwright.ts:632:17)
  at Playwright.startChain [as waitForElementByCss] (lib/browsers/playwright.ts:520:17)
  at waitForElementByCss (e2e/app-dir/use-cache/use-cache.test.ts:879:21)

● use-cache › can resume a cached generateMetadata function

page.waitForSelector: Timeout 5000ms exceeded.
Call log:
  - waiting for locator('head title')

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

  at waitForSelector (lib/browsers/playwright.ts:521:29)
  at Playwright._chain (lib/browsers/playwright.ts:651:23)
  at Playwright._chain [as startChain] (lib/browsers/playwright.ts:632:17)
  at Playwright.startChain [as waitForElementByCss] (lib/browsers/playwright.ts:520:17)
  at Playwright.waitForElementByCss [as elementByCss] (lib/browsers/playwright.ts:405:17)
  at Object.elementByCss (e2e/app-dir/use-cache/use-cache.test.ts:1084:10)
  at Proxy._chain (lib/browsers/playwright.ts:651:23)
  at Proxy._chain (lib/browsers/playwright.ts:627:17)
  at Proxy.continueChain (lib/browsers/playwright.ts:433:17)
  at Object.text (e2e/app-dir/use-cache/use-cache.test.ts:1085:10)

● use-cache › can serialize parent metadata as generateMetadata argument

page.waitForSelector: Timeout 5000ms exceeded.
Call log:
  - waiting for locator('head link[rel="canonical"]')

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

  at waitForSelector (lib/browsers/playwright.ts:521:29)
  at Playwright._chain (lib/browsers/playwright.ts:651:23)
  at Playwright._chain [as startChain] (lib/browsers/playwright.ts:632:17)
  at Playwright.startChain [as waitForElementByCss] (lib/browsers/playwright.ts:520:17)
  at Playwright.waitForElementByCss [as elementByCss] (lib/browsers/playwright.ts:405:17)
  at Object.elementByCss (e2e/app-dir/use-cache/use-cache.test.ts:1158:10)
  at Proxy._chain (lib/browsers/playwright.ts:651:23)
  at Proxy._chain (lib/browsers/playwright.ts:627:17)
  at Proxy.continueChain (lib/browsers/playwright.ts:455:17)
  at Object.getAttribute (e2e/app-dir/use-cache/use-cache.test.ts:1159:10)

pnpm test-start test/e2e/app-dir/segment-cache/search-params/segment-cache-search-params.test.ts (job)

  • segment cache (search params) > stores prefetched data by its rewritten search params, not the original ones (DD)
Expand output

● segment cache (search params) › stores prefetched data by its rewritten search params, not the original ones

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

  142 |   })
  143 |
> 144 |   it('stores prefetched data by its rewritten search params, not the original ones', async () => {
      |   ^
  145 |     let act: ReturnType<typeof createRouterAct>
  146 |     const browser = await next.browser('/search-params', {
  147 |       beforePageLoad(page) {

  at it (e2e/app-dir/segment-cache/search-params/segment-cache-search-params.test.ts:144:3)
  at Object.describe (e2e/app-dir/segment-cache/search-params/segment-cache-search-params.test.ts:5:1)

@ijjk
Copy link
Member

ijjk commented Nov 11, 2025

Stats from current PR

Default Build (Increase detected ⚠️)
General Overall increase ⚠️
vercel/next.js canary vercel/next.js lubieowoce/discriminated-dynamic-errors-debug-2 Change
buildDuration 25.9s 26.1s ⚠️ +251ms
buildDurationCached 22.7s 18.6s N/A
nodeModulesSize 453 MB 454 MB ⚠️ +1.17 MB
nextStartRea..uration (ms) 804ms 808ms N/A
Client Bundles (main, webpack) Overall increase ⚠️
vercel/next.js canary vercel/next.js lubieowoce/discriminated-dynamic-errors-debug-2 Change
436-HASH.js gzip 5.32 kB 5.32 kB N/A
4779.HASH.js gzip 169 B 169 B
9760-HASH.js gzip 54.7 kB 55 kB ⚠️ +325 B
c57d0559-HASH.js gzip 62.3 kB 62.3 kB N/A
framework-HASH.js gzip 59.8 kB 59.8 kB
main-app-HASH.js gzip 252 B 257 B N/A
main-HASH.js gzip 39.8 kB 39.9 kB N/A
webpack-HASH.js gzip 1.69 kB 1.69 kB
Overall change 116 kB 117 kB ⚠️ +325 B
Legacy Client Bundles (polyfills)
vercel/next.js canary vercel/next.js lubieowoce/discriminated-dynamic-errors-debug-2 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 lubieowoce/discriminated-dynamic-errors-debug-2 Change
_app-HASH.js gzip 193 B 194 B N/A
_error-HASH.js gzip 182 B 182 B
css-HASH.js gzip 334 B 334 B
dynamic-HASH.js gzip 1.81 kB 1.81 kB N/A
edge-ssr-HASH.js gzip 255 B 254 B N/A
head-HASH.js gzip 350 B 351 B N/A
hooks-HASH.js gzip 384 B 384 B
image-HASH.js gzip 4.78 kB 4.77 kB N/A
index-HASH.js gzip 260 B 259 B N/A
link-HASH.js gzip 2.5 kB 2.5 kB N/A
routerDirect..HASH.js gzip 316 B 320 B N/A
script-HASH.js gzip 388 B 388 B
withRouter-HASH.js gzip 316 B 314 B N/A
1afbb74e6ecf..834.css gzip 106 B 106 B
Overall change 1.39 kB 1.39 kB
Client Build Manifests
vercel/next.js canary vercel/next.js lubieowoce/discriminated-dynamic-errors-debug-2 Change
_buildManifest.js gzip 718 B 720 B N/A
Overall change 0 B 0 B
Rendered Page Sizes
vercel/next.js canary vercel/next.js lubieowoce/discriminated-dynamic-errors-debug-2 Change
index.html gzip 524 B 523 B N/A
link.html gzip 538 B 538 B
withRouter.html gzip 522 B 520 B N/A
Overall change 538 B 538 B
Edge SSR bundle Size Overall increase ⚠️
vercel/next.js canary vercel/next.js lubieowoce/discriminated-dynamic-errors-debug-2 Change
edge-ssr.js gzip 128 kB 128 kB ⚠️ +243 B
page.js gzip 256 kB 257 kB ⚠️ +1.21 kB
Overall change 384 kB 385 kB ⚠️ +1.46 kB
Middleware size Overall increase ⚠️
vercel/next.js canary vercel/next.js lubieowoce/discriminated-dynamic-errors-debug-2 Change
middleware-b..fest.js gzip 635 B 637 B N/A
middleware-r..fest.js gzip 156 B 156 B
middleware.js gzip 32.6 kB 33 kB ⚠️ +334 B
edge-runtime..pack.js gzip 846 B 846 B
Overall change 33.6 kB 34 kB ⚠️ +334 B
Next Runtimes Overall increase ⚠️
vercel/next.js canary vercel/next.js lubieowoce/discriminated-dynamic-errors-debug-2 Change
app-page-exp...dev.js gzip 296 kB 299 kB ⚠️ +3.05 kB
app-page-exp..prod.js gzip 155 kB 155 kB ⚠️ +155 B
app-page-tur...dev.js gzip 295 kB 299 kB ⚠️ +3.04 kB
app-page-tur..prod.js gzip 155 kB 155 kB ⚠️ +154 B
app-page-tur...dev.js gzip 292 kB 295 kB ⚠️ +3.04 kB
app-page-tur..prod.js gzip 153 kB 153 kB ⚠️ +156 B
app-page.run...dev.js gzip 293 kB 296 kB ⚠️ +3.04 kB
app-page.run..prod.js gzip 153 kB 153 kB ⚠️ +155 B
app-route-ex...dev.js gzip 70.7 kB 70.7 kB N/A
app-route-ex..prod.js gzip 49.4 kB 49.4 kB
app-route-tu...dev.js gzip 70.7 kB 70.8 kB N/A
app-route-tu..prod.js gzip 49.5 kB 49.5 kB
app-route-tu...dev.js gzip 70.4 kB 70.4 kB N/A
app-route-tu..prod.js gzip 49.3 kB 49.3 kB
app-route.ru...dev.js gzip 70.4 kB 70.4 kB N/A
app-route.ru..prod.js gzip 49.2 kB 49.2 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 43.2 kB 43.2 kB
pages-api-tu..prod.js gzip 33.1 kB 33.1 kB
pages-api.ru...dev.js gzip 43.2 kB 43.2 kB
pages-api.ru..prod.js gzip 33.1 kB 33.1 kB
pages-turbo....dev.js gzip 52.8 kB 52.8 kB
pages-turbo...prod.js gzip 40.1 kB 40.1 kB
pages.runtim...dev.js gzip 52.7 kB 52.7 kB
pages.runtim..prod.js gzip 40.1 kB 40.1 kB
server.runti..prod.js gzip 78.9 kB 79 kB N/A
Overall change 2.33 MB 2.34 MB ⚠️ +12.8 kB
build cache Overall increase ⚠️
vercel/next.js canary vercel/next.js lubieowoce/discriminated-dynamic-errors-debug-2 Change
0.pack gzip 3.25 MB 3.27 MB ⚠️ +23.2 kB
index.pack gzip 95.3 kB 95.1 kB N/A
Overall change 3.25 MB 3.27 MB ⚠️ +23.2 kB
Diff details
Diff for page.js

Diff too large to display

Diff for middleware.js

Diff too large to display

Diff for edge-ssr.js

Diff too large to display

Diff for dynamic-HASH.js
@@ -1,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [2291],
   {
-    /***/ 1033: /***/ (
+    /***/ 431: /***/ (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -9,7 +9,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/dynamic",
         function () {
-          return __webpack_require__(6490);
+          return __webpack_require__(8084);
         },
       ]);
       if (false) {
@@ -18,7 +18,7 @@
       /***/
     },
 
-    /***/ 5323: /***/ (
+    /***/ 2699: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -60,7 +60,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__(9289);
+      const _loadablecontextsharedruntime = __webpack_require__(3785);
       function resolve(obj) {
         return obj && obj.default ? obj.default : obj;
       }
@@ -293,73 +293,34 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
       /***/
     },
 
-    /***/ 6490: /***/ (
+    /***/ 3785: /***/ (
       __unused_webpack_module,
-      __webpack_exports__,
+      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 */
+      /* __next_internal_client_entry_do_not_use__  cjs */
+      Object.defineProperty(exports, "__esModule", {
+        value: true,
       });
-      /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
-        __webpack_require__(1503);
-      /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(7320);
-      /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1___default =
-        /*#__PURE__*/ __webpack_require__.n(
-          next_dynamic__WEBPACK_IMPORTED_MODULE_1__
-        );
-
-      const DynamicHello = next_dynamic__WEBPACK_IMPORTED_MODULE_1___default()(
-        () =>
-          __webpack_require__
-            .e(/* import() */ 4779)
-            .then(__webpack_require__.bind(__webpack_require__, 4779))
-            .then((mod) => mod.Hello),
-        {
-          loadableGenerated: {
-            webpack: () => [/*require.resolve*/ 4779],
-          },
-        }
+      Object.defineProperty(exports, "LoadableContext", {
+        enumerable: true,
+        get: function () {
+          return LoadableContext;
+        },
+      });
+      const _interop_require_default = __webpack_require__(1532);
+      const _react = /*#__PURE__*/ _interop_require_default._(
+        __webpack_require__(2223)
       );
-      const Page = () =>
-        /*#__PURE__*/ (0, react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(
-          react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment,
-          {
-            children: [
-              /*#__PURE__*/ (0,
-              react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", {
-                children: "testing next/dynamic size",
-              }),
-              /*#__PURE__*/ (0,
-              react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(
-                DynamicHello,
-                {}
-              ),
-            ],
-          }
-        );
-      var __N_SSP = true;
-      /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = Page;
-
-      /***/
-    },
-
-    /***/ 7320: /***/ (
-      module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      module.exports = __webpack_require__(7340);
+      const LoadableContext = _react.default.createContext(null);
+      if (false) {
+      } //# sourceMappingURL=loadable-context.shared-runtime.js.map
 
       /***/
     },
 
-    /***/ 7340: /***/ (module, exports, __webpack_require__) => {
+    /***/ 6828: /***/ (module, exports, __webpack_require__) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -392,7 +353,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
         __webpack_require__(2223)
       );
       const _loadablesharedruntime = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(5323)
+        __webpack_require__(2699)
       );
       const isServerSide = "object" === "undefined";
       // Normalize loader to return the module as form { default: Component } for `React.lazy`.
@@ -492,29 +453,68 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
       /***/
     },
 
-    /***/ 9289: /***/ (
+    /***/ 7514: /***/ (
+      module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      module.exports = __webpack_require__(6828);
+
+      /***/
+    },
+
+    /***/ 8084: /***/ (
       __unused_webpack_module,
-      exports,
+      __webpack_exports__,
       __webpack_require__
     ) => {
       "use strict";
-      /* __next_internal_client_entry_do_not_use__  cjs */
-      Object.defineProperty(exports, "__esModule", {
-        value: true,
-      });
-      Object.defineProperty(exports, "LoadableContext", {
-        enumerable: true,
-        get: function () {
-          return LoadableContext;
-        },
+      __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 */
       });
-      const _interop_require_default = __webpack_require__(1532);
-      const _react = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(2223)
+      /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
+        __webpack_require__(1503);
+      /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1__ =
+        __webpack_require__(7514);
+      /* harmony import */ var next_dynamic__WEBPACK_IMPORTED_MODULE_1___default =
+        /*#__PURE__*/ __webpack_require__.n(
+          next_dynamic__WEBPACK_IMPORTED_MODULE_1__
+        );
+
+      const DynamicHello = next_dynamic__WEBPACK_IMPORTED_MODULE_1___default()(
+        () =>
+          __webpack_require__
+            .e(/* import() */ 9573)
+            .then(__webpack_require__.bind(__webpack_require__, 9573))
+            .then((mod) => mod.Hello),
+        {
+          loadableGenerated: {
+            webpack: () => [/*require.resolve*/ 9573],
+          },
+        }
       );
-      const LoadableContext = _react.default.createContext(null);
-      if (false) {
-      } //# sourceMappingURL=loadable-context.shared-runtime.js.map
+      const Page = () =>
+        /*#__PURE__*/ (0, react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxs)(
+          react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment,
+          {
+            children: [
+              /*#__PURE__*/ (0,
+              react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)("p", {
+                children: "testing next/dynamic size",
+              }),
+              /*#__PURE__*/ (0,
+              react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__.jsx)(
+                DynamicHello,
+                {}
+              ),
+            ],
+          }
+        );
+      var __N_SSP = true;
+      /* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = Page;
 
       /***/
     },
@@ -524,7 +524,7 @@ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(1033)
+      __webpack_exec__(431)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for edge-ssr-HASH.js
@@ -1,24 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [676],
   {
-    /***/ 1819: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/edge-ssr",
-        function () {
-          return __webpack_require__(7521);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
-
-    /***/ 7521: /***/ (
+    /***/ 983: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -37,13 +20,30 @@
 
       /***/
     },
+
+    /***/ 985: /***/ (
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/edge-ssr",
+        function () {
+          return __webpack_require__(983);
+        },
+      ]);
+      if (false) {
+      }
+
+      /***/
+    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(1819)
+      __webpack_exec__(985)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for head-HASH.js
@@ -1,34 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [5350],
   {
-    /***/ 619: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/head",
-        function () {
-          return __webpack_require__(9891);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
-
-    /***/ 7997: /***/ (
-      module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      module.exports = __webpack_require__(6705);
-
-      /***/
-    },
-
-    /***/ 9891: /***/ (
+    /***/ 1417: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -43,7 +16,7 @@
       /* harmony import */ var react_jsx_runtime__WEBPACK_IMPORTED_MODULE_0__ =
         __webpack_require__(1503);
       /* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1__ =
-        __webpack_require__(7997);
+        __webpack_require__(5171);
       /* harmony import */ var next_head__WEBPACK_IMPORTED_MODULE_1___default =
         /*#__PURE__*/ __webpack_require__.n(
           next_head__WEBPACK_IMPORTED_MODULE_1__
@@ -76,13 +49,40 @@
 
       /***/
     },
+
+    /***/ 1937: /***/ (
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/head",
+        function () {
+          return __webpack_require__(1417);
+        },
+      ]);
+      if (false) {
+      }
+
+      /***/
+    },
+
+    /***/ 5171: /***/ (
+      module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      module.exports = __webpack_require__(7505);
+
+      /***/
+    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(619)
+      __webpack_exec__(1937)
     );
     /******/ 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__(4655);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
-
-    /***/ 4655: /***/ (
+    /***/ 1598: /***/ (
       __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__(1598);
+        },
+      ]);
+      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
@@ -1,24 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [2983],
   {
-    /***/ 797: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/image",
-        function () {
-          return __webpack_require__(5999);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
-
-    /***/ 1713: /***/ (__unused_webpack_module, exports) => {
+    /***/ 881: /***/ (__unused_webpack_module, exports) => {
       "use strict";
       /**
        * A shared function, used on both client and server, to generate a SVG blur placeholder.
@@ -58,7 +41,7 @@
       /***/
     },
 
-    /***/ 2263: /***/ (module, exports, __webpack_require__) => {
+    /***/ 1511: /***/ (module, exports, __webpack_require__) => {
       "use strict";
 
       Object.defineProperty(exports, "__esModule", {
@@ -136,7 +119,137 @@
       /***/
     },
 
-    /***/ 2728: /***/ (module, exports, __webpack_require__) => {
+    /***/ 1744: /***/ (
+      __unused_webpack_module,
+      exports,
+      __webpack_require__
+    ) => {
+      "use strict";
+
+      Object.defineProperty(exports, "__esModule", {
+        value: true,
+      });
+      Object.defineProperty(exports, "default", {
+        enumerable: true,
+        get: function () {
+          return _default;
+        },
+      });
+      const _findclosestquality = __webpack_require__(7054);
+      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
+
+      /***/
+    },
+
+    /***/ 2388: /***/ (
+      __unused_webpack_module,
+      __webpack_exports__,
+      __webpack_require__
+    ) => {
+      "use strict";
+      // ESM COMPAT FLAG
+      __webpack_require__.r(__webpack_exports__);
+
+      // EXPORTS
+      __webpack_require__.d(__webpack_exports__, {
+        __N_SSP: () => /* binding */ __N_SSP,
+        default: () => /* binding */ pages_image,
+      });
+
+      // EXTERNAL MODULE: ./node_modules/.pnpm/[email protected]/node_modules/react/jsx-runtime.js
+      var jsx_runtime = __webpack_require__(1503);
+      // EXTERNAL MODULE: ./node_modules/.pnpm/next@[email protected][email protected][email protected]/node_modules/next/image.js
+      var next_image = __webpack_require__(3866);
+      var image_default = /*#__PURE__*/ __webpack_require__.n(next_image); // ./pages/nextjs.png
+      /* harmony default export */ const nextjs = {
+        src: "/_next/static/media/nextjs.cae0b805.png",
+        height: 1347,
+        width: 1626,
+        blurDataURL:
+          "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAMAAAACh/xsAAAAD1BMVEX////x8fH6+vrb29vo6Oh8o70bAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAH0lEQVR4nGNgwARMjIyMjCAGCzMzMwsTRISJCcRABwAEcAAkLCQfgAAAAABJRU5ErkJggg==",
+        blurWidth: 8,
+        blurHeight: 7,
+      }; // ./pages/image.js
+      function ImagePage(props) {
+        return /*#__PURE__*/ (0, jsx_runtime.jsxs)(jsx_runtime.Fragment, {
+          children: [
+            /*#__PURE__*/ (0, jsx_runtime.jsx)("h1", {
+              children: "next/image example",
+            }),
+            /*#__PURE__*/ (0, jsx_runtime.jsx)(image_default(), {
+              src: nextjs,
+              placeholder: "blur",
+            }),
+          ],
+        });
+      }
+      var __N_SSP = true;
+      /* harmony default export */ const pages_image = ImagePage;
+
+      /***/
+    },
+
+    /***/ 3866: /***/ (
+      module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      module.exports = __webpack_require__(6888);
+
+      /***/
+    },
+
+    /***/ 4483: /***/ (
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/image",
+        function () {
+          return __webpack_require__(2388);
+        },
+      ]);
+      if (false) {
+      }
+
+      /***/
+    },
+
+    /***/ 6600: /***/ (module, exports, __webpack_require__) => {
       "use strict";
       /* __next_internal_client_entry_do_not_use__  cjs */
       Object.defineProperty(exports, "__esModule", {
@@ -158,17 +271,17 @@
         __webpack_require__(9507)
       );
       const _head = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(6705)
+        __webpack_require__(7505)
       );
-      const _getimgprops = __webpack_require__(3556);
-      const _imageconfig = __webpack_require__(3157);
-      const _imageconfigcontextsharedruntime = __webpack_require__(9323);
-      const _warnonce = __webpack_require__(6173);
-      const _routercontextsharedruntime = __webpack_require__(6046);
+      const _getimgprops = __webpack_require__(9588);
+      const _imageconfig = __webpack_require__(2645);
+      const _imageconfigcontextsharedruntime = __webpack_require__(5451);
+      const _warnonce = __webpack_require__(7549);
+      const _routercontextsharedruntime = __webpack_require__(5470);
       const _imageloader = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(3744)
+        __webpack_require__(1744)
       );
-      const _usemergedref = __webpack_require__(2263);
+      const _usemergedref = __webpack_require__(1511);
       // This is replaced by webpack define plugin
       const configEnv = {
         deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
@@ -495,7 +608,96 @@
       /***/
     },
 
-    /***/ 3556: /***/ (
+    /***/ 6888: /***/ (
+      __unused_webpack_module,
+      exports,
+      __webpack_require__
+    ) => {
+      "use strict";
+
+      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;
+        },
+        getImageProps: function () {
+          return getImageProps;
+        },
+      });
+      const _interop_require_default = __webpack_require__(1532);
+      const _getimgprops = __webpack_require__(9588);
+      const _imagecomponent = __webpack_require__(6600);
+      const _imageloader = /*#__PURE__*/ _interop_require_default._(
+        __webpack_require__(1744)
+      );
+      function getImageProps(imgProps) {
+        const { props } = (0, _getimgprops.getImgProps)(imgProps, {
+          defaultLoader: _imageloader.default,
+          // This is replaced by webpack define plugin
+          imgConf: {
+            deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
+            imageSizes: [32, 48, 64, 96, 128, 256, 384],
+            qualities: [75],
+            path: "/_next/image",
+            loader: "default",
+            dangerouslyAllowSVG: false,
+            unoptimized: false,
+          },
+        });
+        // Normally we don't care about undefined props because we pass to JSX,
+        // but this exported function could be used by the end user for anything
+        // so we delete undefined props to clean it up a little.
+        for (const [key, value] of Object.entries(props)) {
+          if (value === undefined) {
+            delete props[key];
+          }
+        }
+        return {
+          props,
+        };
+      }
+      const _default = _imagecomponent.Image; //# sourceMappingURL=image-external.js.map
+
+      /***/
+    },
+
+    /***/ 7054: /***/ (__unused_webpack_module, exports) => {
+      "use strict";
+
+      Object.defineProperty(exports, "__esModule", {
+        value: true,
+      });
+      Object.defineProperty(exports, "findClosestQuality", {
+        enumerable: true,
+        get: function () {
+          return findClosestQuality;
+        },
+      });
+      function findClosestQuality(quality, config) {
+        const q = quality || 75;
+        if (!config?.qualities?.length) {
+          return q;
+        }
+        return config.qualities.reduce(
+          (prev, cur) => (Math.abs(cur - q) < Math.abs(prev - q) ? cur : prev),
+          0
+        );
+      } //# sourceMappingURL=find-closest-quality.js.map
+
+      /***/
+    },
+
+    /***/ 9588: /***/ (
       __unused_webpack_module,
       exports,
       __webpack_require__
@@ -511,9 +713,9 @@
           return getImgProps;
         },
       });
-      const _warnonce = __webpack_require__(6173);
-      const _imageblursvg = __webpack_require__(1713);
-      const _imageconfig = __webpack_require__(3157);
+      const _warnonce = __webpack_require__(7549);
+      const _imageblursvg = __webpack_require__(881);
+      const _imageconfig = __webpack_require__(2645);
       const VALID_LOADING_VALUES =
         /* unused pure expression or super */ null && [
           "lazy",
@@ -943,215 +1145,13 @@
 
       /***/
     },
-
-    /***/ 3744: /***/ (
-      __unused_webpack_module,
-      exports,
-      __webpack_require__
-    ) => {
-      "use strict";
-
-      Object.defineProperty(exports, "__esModule", {
-        value: true,
-      });
-      Object.defineProperty(exports, "default", {
-        enumerable: true,
-        get: function () {
-          return _default;
-        },
-      });
-      const _findclosestquality = __webpack_require__(8494);
-      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
-
-      /***/
-    },
-
-    /***/ 4292: /***/ (
-      module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      module.exports = __webpack_require__(7896);
-
-      /***/
-    },
-
-    /***/ 5999: /***/ (
-      __unused_webpack_module,
-      __webpack_exports__,
-      __webpack_require__
-    ) => {
-      "use strict";
-      // ESM COMPAT FLAG
-      __webpack_require__.r(__webpack_exports__);
-
-      // EXPORTS
-      __webpack_require__.d(__webpack_exports__, {
-        __N_SSP: () => /* binding */ __N_SSP,
-        default: () => /* binding */ pages_image,
-      });
-
-      // EXTERNAL MODULE: ./node_modules/.pnpm/[email protected]/node_modules/react/jsx-runtime.js
-      var jsx_runtime = __webpack_require__(1503);
-      // EXTERNAL MODULE: ./node_modules/.pnpm/next@[email protected][email protected][email protected]/node_modules/next/image.js
-      var next_image = __webpack_require__(4292);
-      var image_default = /*#__PURE__*/ __webpack_require__.n(next_image); // ./pages/nextjs.png
-      /* harmony default export */ const nextjs = {
-        src: "/_next/static/media/nextjs.cae0b805.png",
-        height: 1347,
-        width: 1626,
-        blurDataURL:
-          "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAHCAMAAAACh/xsAAAAD1BMVEX////x8fH6+vrb29vo6Oh8o70bAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAH0lEQVR4nGNgwARMjIyMjCAGCzMzMwsTRISJCcRABwAEcAAkLCQfgAAAAABJRU5ErkJggg==",
-        blurWidth: 8,
-        blurHeight: 7,
-      }; // ./pages/image.js
-      function ImagePage(props) {
-        return /*#__PURE__*/ (0, jsx_runtime.jsxs)(jsx_runtime.Fragment, {
-          children: [
-            /*#__PURE__*/ (0, jsx_runtime.jsx)("h1", {
-              children: "next/image example",
-            }),
-            /*#__PURE__*/ (0, jsx_runtime.jsx)(image_default(), {
-              src: nextjs,
-              placeholder: "blur",
-            }),
-          ],
-        });
-      }
-      var __N_SSP = true;
-      /* harmony default export */ const pages_image = ImagePage;
-
-      /***/
-    },
-
-    /***/ 7896: /***/ (
-      __unused_webpack_module,
-      exports,
-      __webpack_require__
-    ) => {
-      "use strict";
-
-      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;
-        },
-        getImageProps: function () {
-          return getImageProps;
-        },
-      });
-      const _interop_require_default = __webpack_require__(1532);
-      const _getimgprops = __webpack_require__(3556);
-      const _imagecomponent = __webpack_require__(2728);
-      const _imageloader = /*#__PURE__*/ _interop_require_default._(
-        __webpack_require__(3744)
-      );
-      function getImageProps(imgProps) {
-        const { props } = (0, _getimgprops.getImgProps)(imgProps, {
-          defaultLoader: _imageloader.default,
-          // This is replaced by webpack define plugin
-          imgConf: {
-            deviceSizes: [640, 750, 828, 1080, 1200, 1920, 2048, 3840],
-            imageSizes: [32, 48, 64, 96, 128, 256, 384],
-            qualities: [75],
-            path: "/_next/image",
-            loader: "default",
-            dangerouslyAllowSVG: false,
-            unoptimized: false,
-          },
-        });
-        // Normally we don't care about undefined props because we pass to JSX,
-        // but this exported function could be used by the end user for anything
-        // so we delete undefined props to clean it up a little.
-        for (const [key, value] of Object.entries(props)) {
-          if (value === undefined) {
-            delete props[key];
-          }
-        }
-        return {
-          props,
-        };
-      }
-      const _default = _imagecomponent.Image; //# sourceMappingURL=image-external.js.map
-
-      /***/
-    },
-
-    /***/ 8494: /***/ (__unused_webpack_module, exports) => {
-      "use strict";
-
-      Object.defineProperty(exports, "__esModule", {
-        value: true,
-      });
-      Object.defineProperty(exports, "findClosestQuality", {
-        enumerable: true,
-        get: function () {
-          return findClosestQuality;
-        },
-      });
-      function findClosestQuality(quality, config) {
-        const q = quality || 75;
-        if (!config?.qualities?.length) {
-          return q;
-        }
-        return config.qualities.reduce(
-          (prev, cur) => (Math.abs(cur - q) < Math.abs(prev - q) ? cur : prev),
-          0
-        );
-      } //# sourceMappingURL=find-closest-quality.js.map
-
-      /***/
-    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ var __webpack_exec__ = (moduleId) =>
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(0, [636, 6593, 8792], () =>
-      __webpack_exec__(797)
+      __webpack_exec__(4483)
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for link-HASH.js
@@ -1,7 +1,338 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [4672],
   {
-    /***/ 69: /***/ (module, exports, __webpack_require__) => {
+    /***/ 1511: /***/ (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
+
+      /***/
+    },
+
+    /***/ 2025: /***/ (
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/link",
+        function () {
+          return __webpack_require__(4591);
+        },
+      ]);
+      if (false) {
+      }
+
+      /***/
+    },
+
+    /***/ 3267: /***/ (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__(2371);
+      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
+
+      /***/
+    },
+
+    /***/ 4591: /***/ (
+      __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;
+
+      /***/
+    },
+
+    /***/ 6929: /***/ (
+      module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      module.exports = __webpack_require__(8885);
+
+      /***/
+    },
+
+    /***/ 7686: /***/ (module, exports, __webpack_require__) => {
+      "use strict";
+
+      Object.defineProperty(exports, "__esModule", {
+        value: true,
+      });
+      Object.defineProperty(exports, "useIntersection", {
+        enumerable: true,
+        get: function () {
+          return useIntersection;
+        },
+      });
+      const _react = __webpack_require__(2223);
+      const _requestidlecallback = __webpack_require__(901);
+      const hasIntersectionObserver =
+        typeof IntersectionObserver === "function";
+      const observers = new Map();
+      const idList = [];
+      function createObserver(options) {
+        const id = {
+          root: options.root || null,
+          margin: options.rootMargin || "",
+        };
+        const existing = idList.find(
+          (obj) => obj.root === id.root && obj.margin === id.margin
+        );
+        let instance;
+        if (existing) {
+          instance = observers.get(existing);
+          if (instance) {
+            return instance;
+          }
+        }
+        const elements = new Map();
+        const observer = new IntersectionObserver((entries) => {
+          entries.forEach((entry) => {
+            const callback = elements.get(entry.target);
+            const isVisible =
+              entry.isIntersecting || entry.intersectionRatio > 0;
+            if (callback && isVisible) {
+              callback(isVisible);
+            }
+          });
+        }, options);
+        instance = {
+          id,
+          observer,
+          elements,
+        };
+        idList.push(id);
+        observers.set(id, instance);
+        return instance;
+      }
+      function observe(element, callback, options) {
+        const { id, observer, elements } = createObserver(options);
+        elements.set(element, callback);
+        observer.observe(element);
+        return function unobserve() {
+          elements.delete(element);
+          observer.unobserve(element);
+          // Destroy observer when there's nothing left to watch:
+          if (elements.size === 0) {
+            observer.disconnect();
+            observers.delete(id);
+            const index = idList.findIndex(
+              (obj) => obj.root === id.root && obj.margin === id.margin
+            );
+            if (index > -1) {
+              idList.splice(index, 1);
+            }
+          }
+        };
+      }
+      function useIntersection({ rootRef, rootMargin, disabled }) {
+        const isDisabled = disabled || !hasIntersectionObserver;
+        const [visible, setVisible] = (0, _react.useState)(false);
+        const elementRef = (0, _react.useRef)(null);
+        const setElement = (0, _react.useCallback)((element) => {
+          elementRef.current = element;
+        }, []);
+        (0, _react.useEffect)(() => {
+          if (hasIntersectionObserver) {
+            if (isDisabled || visible) return;
+            const element = elementRef.current;
+            if (element && element.tagName) {
+              const unobserve = observe(
+                element,
+                (isVisible) => isVisible && setVisible(isVisible),
+                {
+                  root: rootRef?.current,
+                  rootMargin,
+                }
+              );
+              return unobserve;
+            }
+          } else {
+            if (!visible) {
+              const idleCallback = (0,
+              _requestidlecallback.requestIdleCallback)(() => setVisible(true));
+              return () =>
+                (0, _requestidlecallback.cancelIdleCallback)(idleCallback);
+            }
+          }
+          // eslint-disable-next-line react-hooks/exhaustive-deps
+        }, [isDisabled, rootMargin, rootRef, visible, elementRef.current]);
+        const resetVisible = (0, _react.useCallback)(() => {
+          setVisible(false);
+        }, []);
+        return [setElement, visible, resetVisible];
+      }
+      if (
+        (typeof exports.default === "function" ||
+          (typeof exports.default === "object" && exports.default !== null)) &&
+        typeof exports.default.__esModule === "undefined"
+      ) {
+        Object.defineProperty(exports.default, "__esModule", {
+          value: true,
+        });
+        Object.assign(exports.default, exports);
+        module.exports = exports.default;
+      } //# sourceMappingURL=use-intersection.js.map
+
+      /***/
+    },
+
+    /***/ 8101: /***/ (__unused_webpack_module, exports) => {
+      "use strict";
+
+      Object.defineProperty(exports, "__esModule", {
+        value: true,
+      });
+      Object.defineProperty(exports, "errorOnce", {
+        enumerable: true,
+        get: function () {
+          return errorOnce;
+        },
+      });
+      let errorOnce = (_) => {};
+      if (false) {
+      } //# sourceMappingURL=error-once.js.map
+
+      /***/
+    },
+
+    /***/ 8885: /***/ (module, exports, __webpack_require__) => {
       "use strict";
       /* __next_internal_client_entry_do_not_use__  cjs */
       Object.defineProperty(exports, "__esModule", {
@@ -28,17 +359,17 @@
       const _react = /*#__PURE__*/ _interop_require_wildcard._(
         __webpack_require__(2223)
       );
-      const _resolvehref = __webpack_require__(2275);
-      const _islocalurl = __webpack_require__(3179);
-      const _formaturl = __webpack_require__(5486);
-      const _utils = __webpack_require__(3708);
-      const _addlocale = __webpack_require__(8225);
-      const _routercontextsharedruntime = __webpack_require__(6046);
-      const _useintersection = __webpack_require__(2678);
-      const _getdomainlocale = __webpack_require__(4499);
-      const _addbasepath = __webpack_require__(7434);
-      const _usemergedref = __webpack_require__(2263);
-      const _erroronce = __webpack_require__(2197);
+      const _resolvehref = __webpack_require__(7379);
+      const _islocalurl = __webpack_require__(4843);
+      const _formaturl = __webpack_require__(9374);
+      const _utils = __webpack_require__(3116);
+      const _addlocale = __webpack_require__(8065);
+      const _routercontextsharedruntime = __webpack_require__(5470);
+      const _useintersection = __webpack_require__(7686);
+      const _getdomainlocale = __webpack_require__(3267);
+      const _addbasepath = __webpack_require__(1450);
+      const _usemergedref = __webpack_require__(1511);
+      const _erroronce = __webpack_require__(8101);
       const prefetched = new Set();
       function prefetch(router, href, as, options) {
         if (false) {
@@ -416,344 +747,13 @@
 
       /***/
     },
-
-    /***/ 2197: /***/ (__unused_webpack_module, exports) => {
-      "use strict";
-
-      Object.defineProperty(exports, "__esModule", {
-        value: true,
-      });
-      Object.defineProperty(exports, "errorOnce", {
-        enumerable: true,
-        get: function () {
-          return errorOnce;
-        },
-      });
-      let errorOnce = (_) => {};
-      if (false) {
-      } //# sourceMappingURL=error-once.js.map
-
-      /***/
-    },
-
-    /***/ 2263: /***/ (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
-
-      /***/
-    },
-
-    /***/ 2369: /***/ (
-      __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;
-
-      /***/
-    },
-
-    /***/ 2678: /***/ (module, exports, __webpack_require__) => {
-      "use strict";
-
-      Object.defineProperty(exports, "__esModule", {
-        value: true,
-      });
-      Object.defineProperty(exports, "useIntersection", {
-        enumerable: true,
-        get: function () {
-          return useIntersection;
-        },
-      });
-      const _react = __webpack_require__(2223);
-      const _requestidlecallback = __webpack_require__(4213);
-      const hasIntersectionObserver =
-        typeof IntersectionObserver === "function";
-      const observers = new Map();
-      const idList = [];
-      function createObserver(options) {
-        const id = {
-          root: options.root || null,
-          margin: options.rootMargin || "",
-        };
-        const existing = idList.find(
-          (obj) => obj.root === id.root && obj.margin === id.margin
-        );
-        let instance;
-        if (existing) {
-          instance = observers.get(existing);
-          if (instance) {
-            return instance;
-          }
-        }
-        const elements = new Map();
-        const observer = new IntersectionObserver((entries) => {
-          entries.forEach((entry) => {
-            const callback = elements.get(entry.target);
-            const isVisible =
-              entry.isIntersecting || entry.intersectionRatio > 0;
-            if (callback && isVisible) {
-              callback(isVisible);
-            }
-          });
-        }, options);
-        instance = {
-          id,
-          observer,
-          elements,
-        };
-        idList.push(id);
-        observers.set(id, instance);
-        return instance;
-      }
-      function observe(element, callback, options) {
-        const { id, observer, elements } = createObserver(options);
-        elements.set(element, callback);
-        observer.observe(element);
-        return function unobserve() {
-          elements.delete(element);
-          observer.unobserve(element);
-          // Destroy observer when there's nothing left to watch:
-          if (elements.size === 0) {
-            observer.disconnect();
-            observers.delete(id);
-            const index = idList.findIndex(
-              (obj) => obj.root === id.root && obj.margin === id.margin
-            );
-            if (index > -1) {
-              idList.splice(index, 1);
-            }
-          }
-        };
-      }
-      function useIntersection({ rootRef, rootMargin, disabled }) {
-        const isDisabled = disabled || !hasIntersectionObserver;
-        const [visible, setVisible] = (0, _react.useState)(false);
-        const elementRef = (0, _react.useRef)(null);
-        const setElement = (0, _react.useCallback)((element) => {
-          elementRef.current = element;
-        }, []);
-        (0, _react.useEffect)(() => {
-          if (hasIntersectionObserver) {
-            if (isDisabled || visible) return;
-            const element = elementRef.current;
-            if (element && element.tagName) {
-              const unobserve = observe(
-                element,
-                (isVisible) => isVisible && setVisible(isVisible),
-                {
-                  root: rootRef?.current,
-                  rootMargin,
-                }
-              );
-              return unobserve;
-            }
-          } else {
-            if (!visible) {
-              const idleCallback = (0,
-              _requestidlecallback.requestIdleCallback)(() => setVisible(true));
-              return () =>
-                (0, _requestidlecallback.cancelIdleCallback)(idleCallback);
-            }
-          }
-          // eslint-disable-next-line react-hooks/exhaustive-deps
-        }, [isDisabled, rootMargin, rootRef, visible, elementRef.current]);
-        const resetVisible = (0, _react.useCallback)(() => {
-          setVisible(false);
-        }, []);
-        return [setElement, visible, resetVisible];
-      }
-      if (
-        (typeof exports.default === "function" ||
-          (typeof exports.default === "object" && exports.default !== null)) &&
-        typeof exports.default.__esModule === "undefined"
-      ) {
-        Object.defineProperty(exports.default, "__esModule", {
-          value: true,
-        });
-        Object.assign(exports.default, exports);
-        module.exports = exports.default;
-      } //# sourceMappingURL=use-intersection.js.map
-
-      /***/
-    },
-
-    /***/ 4499: /***/ (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__(1379);
-      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: /***/ (
-      module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      module.exports = __webpack_require__(69);
-
-      /***/
-    },
-
-    /***/ 6771: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/link",
-        function () {
-          return __webpack_require__(2369);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ 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,34 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [188],
   {
-    /***/ 97: /***/ (
+    /***/ 417: /***/ (
+      __unused_webpack_module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      (window.__NEXT_P = window.__NEXT_P || []).push([
+        "/routerDirect",
+        function () {
+          return __webpack_require__(5491);
+        },
+      ]);
+      if (false) {
+      }
+
+      /***/
+    },
+
+    /***/ 1840: /***/ (
+      module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      module.exports = __webpack_require__(3252);
+
+      /***/
+    },
+
+    /***/ 5491: /***/ (
       __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_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__
@@ -35,40 +62,13 @@
 
       /***/
     },
-
-    /***/ 4283: /***/ (
-      __unused_webpack_module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      (window.__NEXT_P = window.__NEXT_P || []).push([
-        "/routerDirect",
-        function () {
-          return __webpack_require__(97);
-        },
-      ]);
-      if (false) {
-      }
-
-      /***/
-    },
-
-    /***/ 7798: /***/ (
-      module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      module.exports = __webpack_require__(9300);
-
-      /***/
-    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ 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,17 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [1209],
   {
-    /***/ 5964: /***/ (
-      module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      module.exports = __webpack_require__(2010);
-
-      /***/
-    },
-
-    /***/ 7758: /***/ (
+    /***/ 1312: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -26,7 +16,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__
@@ -59,7 +49,17 @@
       /***/
     },
 
-    /***/ 8803: /***/ (
+    /***/ 2398: /***/ (
+      module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      module.exports = __webpack_require__(8954);
+
+      /***/
+    },
+
+    /***/ 4305: /***/ (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -67,7 +67,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/script",
         function () {
-          return __webpack_require__(7758);
+          return __webpack_require__(1312);
         },
       ]);
       if (false) {
@@ -81,7 +81,7 @@
     /******/ 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,7 +1,7 @@
 (self["webpackChunk_N_E"] = self["webpackChunk_N_E"] || []).push([
   [3263],
   {
-    /***/ 184: /***/ (
+    /***/ 358: /***/ (
       __unused_webpack_module,
       __webpack_exports__,
       __webpack_require__
@@ -16,7 +16,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__
@@ -35,7 +35,17 @@
       /***/
     },
 
-    /***/ 3163: /***/ (
+    /***/ 1840: /***/ (
+      module,
+      __unused_webpack_exports,
+      __webpack_require__
+    ) => {
+      module.exports = __webpack_require__(3252);
+
+      /***/
+    },
+
+    /***/ 4041: /***/ (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
@@ -43,7 +53,7 @@
       (window.__NEXT_P = window.__NEXT_P || []).push([
         "/withRouter",
         function () {
-          return __webpack_require__(184);
+          return __webpack_require__(358);
         },
       ]);
       if (false) {
@@ -51,23 +61,13 @@
 
       /***/
     },
-
-    /***/ 7798: /***/ (
-      module,
-      __unused_webpack_exports,
-      __webpack_require__
-    ) => {
-      module.exports = __webpack_require__(9300);
-
-      /***/
-    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
     /******/ 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 436-HASH.js

Diff too large to display

Diff for 9760-HASH.js
failed to diff
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],
   {
-    /***/ 1630: /***/ (
+    /***/ 2788: /***/ () => {
+      /* (ignored) */
+      /***/
+    },
+
+    /***/ 2826: /***/ (
       __unused_webpack_module,
       __unused_webpack_exports,
       __webpack_require__
     ) => {
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 7126, 23)
+        __webpack_require__.t.bind(__webpack_require__, 844, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 4031, 23)
+        __webpack_require__.t.bind(__webpack_require__, 4365, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 1117, 23)
+        __webpack_require__.t.bind(__webpack_require__, 3903, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 1522, 23)
+        __webpack_require__.t.bind(__webpack_require__, 3100, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 1798, 23)
+        __webpack_require__.t.bind(__webpack_require__, 7364, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 8366, 23)
+        __webpack_require__.t.bind(__webpack_require__, 5632, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 6571, 23)
+        __webpack_require__.t.bind(__webpack_require__, 8889, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 596, 23)
+        __webpack_require__.t.bind(__webpack_require__, 9958, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 1321, 23)
+        __webpack_require__.t.bind(__webpack_require__, 7839, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 724, 23)
+        __webpack_require__.t.bind(__webpack_require__, 1270, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 6999, 23)
+        __webpack_require__.t.bind(__webpack_require__, 1885, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.bind(__webpack_require__, 854)
+        __webpack_require__.bind(__webpack_require__, 4088)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 7752, 23)
+        __webpack_require__.t.bind(__webpack_require__, 9622, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 1201, 23)
+        __webpack_require__.t.bind(__webpack_require__, 995, 23)
       );
       Promise.resolve(/* import() eager */).then(
-        __webpack_require__.t.bind(__webpack_require__, 7823, 23)
+        __webpack_require__.t.bind(__webpack_require__, 8577, 23)
       );
 
       /***/
     },
-
-    /***/ 7854: /***/ () => {
-      /* (ignored) */
-      /***/
-    },
   },
   /******/ (__webpack_require__) => {
     // webpackRuntimeModules
@@ -66,8 +66,8 @@
       __webpack_require__((__webpack_require__.s = moduleId));
     /******/ __webpack_require__.O(
       0,
-      [9137, 9760],
-      () => (__webpack_exec__(4730), __webpack_exec__(1630))
+      [2494, 4936],
+      () => (__webpack_exec__(204), __webpack_exec__(2826))
     );
     /******/ var __webpack_exports__ = __webpack_require__.O();
     /******/ _N_E = __webpack_exports__;
Diff for app-page-exp..ntime.dev.js
failed to diff
Diff for app-page-exp..time.prod.js

Diff too large to display

Diff for app-page-tur..ntime.dev.js
failed to diff
Diff for app-page-tur..time.prod.js

Diff too large to display

Diff for app-page-tur..ntime.dev.js
failed to diff
Diff for app-page-tur..time.prod.js

Diff too large to display

Diff for app-page.runtime.dev.js
failed to diff
Diff for app-page.runtime.prod.js

Diff too large to display

Diff for app-route-ex..ntime.dev.js

Diff too large to display

Diff for app-route-tu..ntime.dev.js

Diff too large to display

Diff for app-route-tu..ntime.dev.js

Diff too large to display

Diff for app-route.runtime.dev.js

Diff too large to display

Diff for server.runtime.prod.js

Diff too large to display

Commit: ea453ea

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

Labels

created-by: Next.js team PRs by the Next.js team. Documentation Related to Next.js' official documentation. tests type: next

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants