Skip to content

docs: add Designing loading UI guide - #95859

Closed
aurorascharff wants to merge 9 commits into
worktree-next-react-perf-track-dev-toolsfrom
aurorascharff/loading-ui-guide
Closed

aurorascharff wants to merge 9 commits into
worktree-next-react-perf-track-dev-toolsfrom
aurorascharff/loading-ui-guide

Conversation

@aurorascharff

@aurorascharff aurorascharff commented Jul 16, 2026 •

Copy link
Copy Markdown
Contributor

Adds the Designing loading UI guide (DOC-3272), built around the team directory demo (source):

  1. Choose between a fallback and a pending indicator (plus skeleton vs spinner, and determinate progress for long waits)
  2. Size the skeleton so the swap causes no layout shift, locked in with instant()
  3. Keep previous results visible while searching (transition + delayed spinner)
  4. Reveal variable-height sections top-down with nested Suspense
  5. Crossfade reveals with <ViewTransition>, keeping animations on the compositor

Also adds CLS cross-links to Building interactive apps.

Based on #95568 for the profiling-guide links; lands after it. The current lint failure is inherited from the base branch (alex warnings in skills/next-performance-profiling/SKILL.md).

Add a guide for designing loading states: choosing between a fallback
and a pending indicator, sizing skeletons to keep CLS at zero, holding
previous results during updates with transitions, revealing
variable-height sections top-down with nested Suspense, and
crossfading reveals with ViewTransition. Cross-links the profiling
guide for finding boundaries that gate too much, and adds CLS
cross-links to the interactive apps guide.
@github-actions

github-actions Bot commented Jul 16, 2026 •

Copy link
Copy Markdown
Contributor

Failing test suites

Commit: 39b996a | About building and testing Next.js

pnpm test-dev-experimental-turbo test/e2e/app-dir/types/types.test.ts (turbopack) (Experimental) (job)

  • app-dir types > should check types (DD)
Expand output

● app-dir types › should check types

Command failed: pnpm tsc

  15 |   it('should check types', async () => {
  16 |     execSync('pnpm next typegen', { cwd: next.testDir, stdio: 'inherit' })
> 17 |     execSync('pnpm tsc', { cwd: next.testDir, stdio: 'inherit' })
     |             ^
  18 |   })
  19 | })
  20 |

  at Object.<anonymous> (e2e/app-dir/types/types.test.ts:17:13)

pnpm test-dev-experimental-turbo test/e2e/app-dir/app-root-params-getters/typecheck.test.ts (turbopack) (Experimental) (job)

  • app-root-param-getters - typecheck (multiple-roots) > should pass typecheck with generated root-params types (DD)
  • app-root-param-getters - typecheck (simple) > should pass typecheck with generated root-params types (DD)
Expand output

● app-root-param-getters - typecheck (simple) › should pass typecheck with generated root-params types

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

- Expected  -  1
+ Received  + 19

  Object {
-   "stderr": "",
+   "stderr": "node:internal/errors:497
+     ErrorCaptureStackTrace(err);
+     ^
+
+ TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension \"\" for /tmp/next-install-37cbfe9438095d93979cee33bc1df8407aa8dd051c5766d32bcb8f5a657cd3b7/node_modules/.pnpm/typescript@7.0.2/node_modules/typescript/bin/tsc. Loading extensionless files is not supported inside of \"type\":\"module\" package.json contexts. The package.json file /tmp/next-install-37cbfe9438095d93979cee33bc1df8407aa8dd051c5766d32bcb8f5a657cd3b7/node_modules/.pnpm/typescript@7.0.2/node_modules/typescript/package.json caused this \"type\":\"module\" context. Try changing /tmp/next-install-37cbfe9438095d93979cee33bc1df8407aa8dd051c5766d32bcb8f5a657cd3b7/node_modules/.pnpm/typescript@7.0.2/node_modules/typescript/bin/tsc to have a file extension. Note the \"bin\" field of package.json can point to a file with an extension, for example {\"type\":\"module\",\"bin\":{\"tsc\":\"./bin/tsc.js\"}}
+     at new NodeError (node:internal/errors:406:5)
+     at Object.getFileProtocolModuleFormat [as file:] (node:internal/modules/esm/get_format:99:9)
+     at defaultGetFormat (node:internal/modules/esm/get_format:142:36)
+     at defaultLoad (node:internal/modules/esm/load:120:20)
+     at ModuleLoader.load (node:internal/modules/esm/loader:396:13)
+     at ModuleLoader.moduleProvider (node:internal/modules/esm/loader:278:56)
+     at new ModuleJob (node:internal/modules/esm/module_job:65:26)
+     at #createModuleJob (node:internal/modules/esm/loader:290:17)
+     at ModuleLoader.getJobFromResolveResult (node:internal/modules/esm/loader:248:34)
+     at ModuleLoader.getModuleJob (node:internal/modules/esm/loader:229:17) {
+   code: 'ERR_UNKNOWN_FILE_EXTENSION'
+ }
+
+ Node.js v20.9.0",
    "stdout": "",
  }

  33 |         })
  34 |
> 35 |         expect({ stdout, stderr }).toEqual({
     |                                    ^
  36 |           stdout: '',
  37 |           stderr: '',
  38 |         })

  at Object.toEqual (e2e/app-dir/app-root-params-getters/typecheck.test.ts:35:36)

● app-root-param-getters - typecheck (multiple-roots) › should pass typecheck with generated root-params types

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

- Expected  -  1
+ Received  + 19

  Object {
-   "stderr": "",
+   "stderr": "node:internal/errors:497
+     ErrorCaptureStackTrace(err);
+     ^
+
+ TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension \"\" for /tmp/next-install-3d3cf193fc615d5cca52d7b0b69d0fd2abf00583587609b886d371559205c37f/node_modules/.pnpm/typescript@7.0.2/node_modules/typescript/bin/tsc. Loading extensionless files is not supported inside of \"type\":\"module\" package.json contexts. The package.json file /tmp/next-install-3d3cf193fc615d5cca52d7b0b69d0fd2abf00583587609b886d371559205c37f/node_modules/.pnpm/typescript@7.0.2/node_modules/typescript/package.json caused this \"type\":\"module\" context. Try changing /tmp/next-install-3d3cf193fc615d5cca52d7b0b69d0fd2abf00583587609b886d371559205c37f/node_modules/.pnpm/typescript@7.0.2/node_modules/typescript/bin/tsc to have a file extension. Note the \"bin\" field of package.json can point to a file with an extension, for example {\"type\":\"module\",\"bin\":{\"tsc\":\"./bin/tsc.js\"}}
+     at new NodeError (node:internal/errors:406:5)
+     at Object.getFileProtocolModuleFormat [as file:] (node:internal/modules/esm/get_format:99:9)
+     at defaultGetFormat (node:internal/modules/esm/get_format:142:36)
+     at defaultLoad (node:internal/modules/esm/load:120:20)
+     at ModuleLoader.load (node:internal/modules/esm/loader:396:13)
+     at ModuleLoader.moduleProvider (node:internal/modules/esm/loader:278:56)
+     at new ModuleJob (node:internal/modules/esm/module_job:65:26)
+     at #createModuleJob (node:internal/modules/esm/loader:290:17)
+     at ModuleLoader.getJobFromResolveResult (node:internal/modules/esm/loader:248:34)
+     at ModuleLoader.getModuleJob (node:internal/modules/esm/loader:229:17) {
+   code: 'ERR_UNKNOWN_FILE_EXTENSION'
+ }
+
+ Node.js v20.9.0",
    "stdout": "",
  }

  33 |         })
  34 |
> 35 |         expect({ stdout, stderr }).toEqual({
     |                                    ^
  36 |           stdout: '',
  37 |           stderr: '',
  38 |         })

  at Object.toEqual (e2e/app-dir/app-root-params-getters/typecheck.test.ts:35:36)

pnpm test-dev-experimental-turbo test/e2e/app-dir/typed-routes/typed-routes.test.ts (turbopack) (Experimental) (job)

  • typed-routes > should have passing tsc after start (DD)
Expand output

● typed-routes › should have passing tsc after start

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

- Expected  -  1
+ Received  + 19

  Object {
-   "stderr": "",
+   "stderr": "node:internal/errors:497
+     ErrorCaptureStackTrace(err);
+     ^
+
+ TypeError [ERR_UNKNOWN_FILE_EXTENSION]: Unknown file extension \"\" for /tmp/next-install-90c5da4e024f98e8247dd27283181c291964034ba693841c62662a69ff876e04/node_modules/.pnpm/typescript@7.0.2/node_modules/typescript/bin/tsc. Loading extensionless files is not supported inside of \"type\":\"module\" package.json contexts. The package.json file /tmp/next-install-90c5da4e024f98e8247dd27283181c291964034ba693841c62662a69ff876e04/node_modules/.pnpm/typescript@7.0.2/node_modules/typescript/package.json caused this \"type\":\"module\" context. Try changing /tmp/next-install-90c5da4e024f98e8247dd27283181c291964034ba693841c62662a69ff876e04/node_modules/.pnpm/typescript@7.0.2/node_modules/typescript/bin/tsc to have a file extension. Note the \"bin\" field of package.json can point to a file with an extension, for example {\"type\":\"module\",\"bin\":{\"tsc\":\"./bin/tsc.js\"}}
+     at new NodeError (node:internal/errors:406:5)
+     at Object.getFileProtocolModuleFormat [as file:] (node:internal/modules/esm/get_format:99:9)
+     at defaultGetFormat (node:internal/modules/esm/get_format:142:36)
+     at defaultLoad (node:internal/modules/esm/load:120:20)
+     at ModuleLoader.load (node:internal/modules/esm/loader:396:13)
+     at ModuleLoader.moduleProvider (node:internal/modules/esm/loader:278:56)
+     at new ModuleJob (node:internal/modules/esm/module_job:65:26)
+     at #createModuleJob (node:internal/modules/esm/loader:290:17)
+     at ModuleLoader.getJobFromResolveResult (node:internal/modules/esm/loader:248:34)
+     at ModuleLoader.getModuleJob (node:internal/modules/esm/loader:229:17) {
+   code: 'ERR_UNKNOWN_FILE_EXTENSION'
+ }
+
+ Node.js v20.9.0",
    "stdout": "",
  }

  46 |       })
  47 |
> 48 |       expect({ stdout, stderr }).toEqual({
     |                                  ^
  49 |         stdout: '',
  50 |         stderr: '',
  51 |       })

  at Object.toEqual (e2e/app-dir/typed-routes/typed-routes.test.ts:48:34)

pnpm test-start-experimental-turbo test/e2e/app-dir/actions-streaming/actions-streaming.test.ts (turbopack) (Experimental) (job)

  • actions-streaming > actions returning a ReadableStream > should properly stream the response without buffering (DD)
Expand output

● actions-streaming › actions returning a ReadableStream › should properly stream the response without buffering

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

pnpm test-start-experimental-turbo test/e2e/app-dir/actions-unused-args/actions-unused-args.test.ts (turbopack) (Experimental) (job)

  • actions-unused-args > should not call server actions with unused arguments (DD)
Expand output

● actions-unused-args › should not call server actions with unused arguments

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

pnpm test-start-experimental-turbo test/e2e/app-dir/adapter-dynamic-metadata/adapter-dynamic-metadata.test.ts (turbopack) (Experimental) (job)

  • adapter-dynamic-metadata > should classify dynamic metadata routes as app routes in adapter outputs (DD)
  • adapter-dynamic-metadata > should serve dynamic metadata routes (DD)
Expand output

● adapter-dynamic-metadata › should classify dynamic metadata routes as app routes in adapter outputs

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

● adapter-dynamic-metadata › should serve dynamic metadata routes

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

pnpm test-start-experimental-turbo test/e2e/app-dir/app-root-params-getters/typecheck.test.ts (turbopack) (Experimental) (job)

  • app-root-param-getters - typecheck (multiple-roots) > should pass typecheck with generated root-params types (DD)
  • app-root-param-getters - typecheck (simple) > should pass typecheck with generated root-params types (DD)
Expand output

● app-root-param-getters - typecheck (simple) › should pass typecheck with generated root-params types

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

● app-root-param-getters - typecheck (multiple-roots) › should pass typecheck with generated root-params types

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

pnpm test-start-experimental-turbo test/e2e/app-dir/app-root-params-getters/use-cache.test.ts (turbopack) (Experimental) (job)

  • app-root-param-getters - cache - at build > should allow using root params within a "use cache" at build time (DD)
  • app-root-param-getters - cache - at runtime > should allow using root params within a "use cache" - start (DD)
  • app-root-param-getters - cache - at runtime > should create separate cache entries for different root params (DD)
  • app-root-param-getters - cache - at runtime > should resume with the same cached data that was prerendered (DD)
  • app-root-param-getters - cache - at runtime > should handle conditional root param reads based on arguments (DD)
  • app-root-param-getters - cache - at runtime > should handle root param reads introduced after revalidation (DD)
  • app-root-param-getters - cache - at runtime > should handle root param reads conditional on another root param value (DD)
  • app-root-param-getters - cache - at runtime > should error when using root params within unstable_cache - start (DD)
  • app-root-param-getters - cache - at runtime > should error when using root params in "use cache" nested inside unstable_cache - start (DD)
  • app-root-param-getters - cache dedup with root params > should dedupe same root params and isolate different root params (DD)
  • app-root-param-getters - cache dedup with root params > should dedupe same root params and isolate different root params for private caches (DD)
  • app-root-param-getters - private cache > should allow using root params within a "use cache: private" - start (DD)
Expand output

● app-root-param-getters - cache - at runtime › should allow using root params within a "use cache" - start

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

● app-root-param-getters - cache - at runtime › should create separate cache entries for different root params

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

● app-root-param-getters - cache - at runtime › should resume with the same cached data that was prerendered

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

● app-root-param-getters - cache - at runtime › should handle conditional root param reads based on arguments

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

● app-root-param-getters - cache - at runtime › should handle root param reads introduced after revalidation

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

● app-root-param-getters - cache - at runtime › should handle root param reads conditional on another root param value

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

● app-root-param-getters - cache - at runtime › should error when using root params within unstable_cache - start

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

● app-root-param-getters - cache - at runtime › should error when using root params in "use cache" nested inside unstable_cache - start

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

● app-root-param-getters - private cache › should allow using root params within a "use cache: private" - start

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

● app-root-param-getters - cache - at build › should allow using root params within a "use cache" at build time

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

● app-root-param-getters - cache dedup with root params › should dedupe same root params and isolate different root params

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

● app-root-param-getters - cache dedup with root params › should dedupe same root params and isolate different root params for private caches

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

pnpm test-start-experimental-turbo test/e2e/app-dir/client-reference-chunking/client-reference-chunking.test.ts (turbopack) (Experimental) (job)

  • client-reference-chunking > should use the same chunks for client references across routes (DD)
Expand output

● client-reference-chunking › should use the same chunks for client references across routes

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

pnpm test-start-experimental-turbo test/e2e/app-dir/css-media-query/css-media-query.test.ts (turbopack) (Experimental) (job)

  • css-media-query > should preserve max-width media query syntax instead of transpiling to range syntax (DD)
  • css-media-query > should apply the correct styles based on media query (DD)
Expand output

● css-media-query › should preserve max-width media query syntax instead of transpiling to range syntax

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

● css-media-query › should apply the correct styles based on media query

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

pnpm test-start-experimental-turbo test/e2e/app-dir/css-modules-pure-no-check/css-modules-pure-no-check.test.ts (turbopack) (Experimental) (job)

  • css-modules-pure-no-check > should apply styles correctly (DD)
  • css-modules-pure-no-check > should have emitted a CSS file (DD)
Expand output

● css-modules-pure-no-check › should apply styles correctly

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

● css-modules-pure-no-check › should have emitted a CSS file

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

pnpm test-start-experimental-turbo test/e2e/app-dir/global-not-found/basic/global-not-found-basic.test.ts (turbopack) (Experimental) (job)

  • global-not-found - basic > should render global-not-found for 404 (DD)
  • global-not-found - basic > should ssr global-not-found for 404 (DD)
  • global-not-found - basic > should render not-found boundary when calling notFound() in a page (DD)
Expand output

● global-not-found - basic › should render global-not-found for 404

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

● global-not-found - basic › should ssr global-not-found for 404

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

● global-not-found - basic › should render not-found boundary when calling notFound() in a page

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

pnpm test-start-experimental-turbo test/e2e/app-dir/hello-world/hello-world.test.ts (turbopack) (Experimental) (job)

  • hello-world > should work using cheerio (DD)
  • hello-world > should work using browser (DD)
  • hello-world > should work with html (DD)
  • hello-world > should work with fetch (DD)
Expand output

● hello-world › should work using cheerio

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

● hello-world › should work using browser

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

● hello-world › should work with html

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

● hello-world › should work with fetch

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

pnpm test-start-experimental-turbo test/e2e/app-dir/partial-prefetching-deep-propagation/partial-prefetching-deep-propagation.test.ts (turbopack) (Experimental) (job)

  • partial prefetching - deep subtree-hint propagation > downgrades a prefetch={true} to a partial prefetch when a deeply nested segment opts in (DD)
Expand output

● partial prefetching - deep subtree-hint propagation › downgrades a prefetch={true} to a partial prefetch when a deeply nested segment opts in

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

pnpm test-start-experimental-turbo test/e2e/app-dir/reexport-client-component-metadata/reexport-client-component-metadata.test.ts (turbopack) (Experimental) (job)

  • app-dir - reexport-client-component-metadata > should render the page metadata if override (DD)
  • app-dir - reexport-client-component-metadata > should render the layout metadata if not override (DD)
Expand output

● app-dir - reexport-client-component-metadata › should render the page metadata if override

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

● app-dir - reexport-client-component-metadata › should render the layout metadata if not override

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

pnpm test-start-experimental-turbo test/e2e/app-dir/root-layout-redirect/root-layout-redirect.test.ts (turbopack) (Experimental) (job)

  • root-layout-redirect > should work using browser (DD)
Expand output

● root-layout-redirect › should work using browser

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

pnpm test-start-experimental-turbo test/e2e/app-dir/scss/scss-mixins/scss-mixins.test.ts (turbopack) (Experimental) (job)

  • Scss Mixins > should work using browser (DD)
Expand output

● Scss Mixins › should work using browser

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

pnpm test-start-experimental-turbo test/e2e/app-dir/segment-cache/dynamic-on-hover/dynamic-on-hover.test.ts (turbopack) (Experimental) (job)

  • dynamic on hover > prefetches the dynamic data for a Link on hover (DD)
Expand output

● dynamic on hover › prefetches the dynamic data for a Link on hover

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

pnpm test-start-experimental-turbo test/e2e/app-dir/segment-cache/max-prefetch-inlining/max-prefetch-inlining.test.ts (turbopack) (Experimental) (job)

  • max prefetch inlining > bundles all segment data into a single request per route (DD)
  • max prefetch inlining > works with dynamic routes (DD)
  • max prefetch inlining > deduplicates inlined prefetch requests for the same route (DD)
Expand output

● max prefetch inlining › bundles all segment data into a single request per route

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

● max prefetch inlining › works with dynamic routes

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

● max prefetch inlining › deduplicates inlined prefetch requests for the same route

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

pnpm test-start-experimental-turbo test/e2e/app-dir/segment-cache/optimistic-routing-parallel-slot-catchall-regression/optimistic-routing-parallel-slot-catchall-regression.test.ts (turbopack) (Experimental) (job)

  • optimistic routing - parallel slot catch-all regression > does not match a parallel-slot catch-all for an unrelated sibling URL (DD)
Expand output

● optimistic routing - parallel slot catch-all regression › does not match a parallel-slot catch-all for an unrelated sibling URL

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

pnpm test-start-experimental-turbo test/e2e/app-dir/segment-cache/optimistic-routing-rewrite-detection-regression/optimistic-routing-rewrite-detection-regression.test.ts (turbopack) (Experimental) (job)

  • optimistic routing - rewrite detection regression > does not predict from a rewrite that shortens the URL (DD)
  • optimistic routing - rewrite detection regression > does not predict from a rewrite to a static-sibling URL (DD)
  • optimistic routing - rewrite detection regression > does not predict when the rewrite hides a deeper static segment (DD)
Expand output

● optimistic routing - rewrite detection regression › does not predict from a rewrite that shortens the URL

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

● optimistic routing - rewrite detection regression › does not predict from a rewrite to a static-sibling URL

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

● optimistic routing - rewrite detection regression › does not predict when the rewrite hides a deeper static segment

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

pnpm test-start-experimental-turbo test/e2e/app-dir/segment-cache/prefetch-fallback-retry/prefetch-fallback-retry.test.ts (turbopack) (Experimental) (job)

  • segment cache prefetch fallback retry > does not retry a prefetch that received a concrete (non-fallback) response (DD)
  • segment cache prefetch fallback retry > does not retry a fallback shell for a route that can never be upgraded (DD)
  • segment cache prefetch fallback retry > picks up the upgraded version on retry once the server regenerates the ISR entry (DD)
  • segment cache prefetch fallback retry > retries a static fallback prefetch a bounded number of times, then stops (DD)
Expand output

● segment cache prefetch fallback retry › does not retry a prefetch that received a concrete (non-fallback) response

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

● segment cache prefetch fallback retry › does not retry a fallback shell for a route that can never be upgraded

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/signal ${code || signal}`
  121 |                 )
  122 |               )

  at ChildProcess.<anonymous> (lib/next-modes/next-start.ts:119:17)

● segment cache prefetch fallback retry › picks up the upgraded version on retry once the server regenerates the ISR entry

next build failed with code/signal 1

  117 |             if (code || signal)
  118 |               reject(
> 119 |                 new Error(
      |                 ^
  120 |                   `next build failed with code/sign

... truncated to fit in one GitHub comment ...

@github-actions

github-actions Bot commented Jul 16, 2026 •

Copy link
Copy Markdown
Contributor

Stats skipped

Commit: ab07db4
View workflow run

An aria-hidden skeleton gains nothing from ul/li semantics (screen
readers skip the subtree); the geometry that prevents layout shift comes
from the classes. Switch to plain divs and note why.
@github-actions github-actions Bot locked as resolved and limited conversation to collaborators Sep 13, 2026
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant