Skip to content

Fix use cache prerender signal retention - #97476

Draft
gnoff wants to merge 4 commits into
canaryfrom
codex/fix-use-cache-abort-signal-retention
Draft

Fix use cache prerender signal retention#97476
gnoff wants to merge 4 commits into
canaryfrom
codex/fix-use-cache-abort-signal-retention

Conversation

@gnoff

@gnoff gnoff commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

Summary

After a fallback-shell cache prerender completes, snapshot whether its timeout fired and then abort the existing timeout controller when it participates in an AbortSignal.any() composite. This triggers the composite so React removes its abort listener; no additional controller or signal is needed. Cache prerenders without a dynamic-access source keep their existing direct timeout signal.

Node retains non-empty composite abort signals while they have abort listeners. React attaches such a listener during prerender() and removes it when the signal aborts, so aborting the already-owned timeout source releases the successful render. Snapshotting didTimeout first keeps cleanup aborts distinct from real timeouts.

This preserves the early aborted-prerender guard from #96426, which prevents a cache fill that starts after its outer prerender aborts from caching an empty React stream.

Fixes #97363
Related #97464
Alternative to #97391

Verification

  • pnpm --filter=next build
  • pnpm test-start-turbo test/e2e/app-dir/use-cache-after-uncached-io/use-cache-after-uncached-io.test.ts
  • pnpm test-start-turbo test/e2e/app-dir/use-cache-hanging/use-cache-hanging.test.ts
  • Actual vendored React prerender() GC probe on Node 20.19.5 and 22.20.0: valid preludes, no cleanup errors, and 0/100 composite signals retained while their source controllers remained reachable.

@github-actions

github-actions Bot commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

Failing test suites

Commit: 7cb0c7f | About building and testing Next.js

pnpm test-start test/production/next-image-legacy/basic/basic.test.ts (job)

  • Image Component Tests > Client-side Image Component Tests > should render an image tag (DD)
  • Image Component Tests > Client-side Image Component Tests > should support passing through arbitrary attributes (DD)
  • Image Component Tests > Client-side Image Component Tests > should modify src with the loader (DD)
  • Image Component Tests > Client-side Image Component Tests > should correctly generate src even if preceding slash is included in prop (DD)
  • Image Component Tests > Client-side Image Component Tests > should add a srcset based on the loader (DD)
  • Image Component Tests > Client-side Image Component Tests > should add a srcset even with preceding slash in prop (DD)
  • Image Component Tests > Client-side Image Component Tests > should use imageSizes when width matches, not deviceSizes from next.config.js (DD)
  • Image Component Tests > Client-side Image Component Tests > should support the unoptimized attribute (DD)
  • Image Component Tests > Client-side Image Component Tests > should not add a srcset if unoptimized attribute present (DD)
  • Image Component Tests > Client-side Image Component Tests > should keep auto parameter if already set (DD)
  • Image Component Tests > Client-side Image Component Tests > should keep width parameter if already set (DD)
  • Image Component Tests > Client-side Image Component Tests > should keep fit parameter if already set (DD)
  • Image Component Tests > Client-side Image Component Tests > should only be loaded once if sizes is set (DD)
  • Image Component Tests > Client-side Image Component Tests > Client-side Errors > Should not log an error when an unregistered host is used in production (DD)
  • Image Component Tests > SSR Image Component Tests > should render an image tag (DD)
  • Image Component Tests > SSR Image Component Tests > should support passing through arbitrary attributes (DD)
  • Image Component Tests > SSR Image Component Tests > should modify src with the loader (DD)
  • Image Component Tests > SSR Image Component Tests > should correctly generate src even if preceding slash is included in prop (DD)
  • Image Component Tests > SSR Image Component Tests > should add a srcset based on the loader (DD)
  • Image Component Tests > SSR Image Component Tests > should add a srcset even with preceding slash in prop (DD)
  • Image Component Tests > SSR Image Component Tests > should use imageSizes when width matches, not deviceSizes from next.config.js (DD)
  • Image Component Tests > SSR Image Component Tests > should support the unoptimized attribute (DD)
  • Image Component Tests > SSR Image Component Tests > should not add a srcset if unoptimized attribute present (DD)
  • Image Component Tests > SSR Image Component Tests > should keep auto parameter if already set (DD)
  • Image Component Tests > SSR Image Component Tests > should keep width parameter if already set (DD)
  • Image Component Tests > SSR Image Component Tests > should keep fit parameter if already set (DD)
  • Image Component Tests > SSR Image Component Tests > should add a preload tag for a priority image (DD)
  • Image Component Tests > SSR Image Component Tests > should add a preload tag for a priority image with preceding slash (DD)
  • Image Component Tests > SSR Image Component Tests > should add a preload tag for a priority image, with arbitrary host (DD)
  • Image Component Tests > SSR Image Component Tests > should add a preload tag for a priority image, with quality (DD)
  • Image Component Tests > SSR Image Component Tests > should not create any preload tags higher up the page than CSS preload tags (DD)
  • Image Component Tests > SSR Image Component Tests > should add data-nimg data attribute based on layout (DD)
  • Image Component Tests > SSR Image Component Tests > should not pass config to custom loader prop (DD)
Expand output

● Image Component Tests › SSR Image Component Tests › should render an image tag

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:45451/", waiting until "load"

  392 |     await opts?.beforePageLoad?.(page)
  393 |
> 394 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  395 |   }
  396 |
  397 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:394:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (production/next-image-legacy/basic/basic.test.ts:292:17)

● Image Component Tests › SSR Image Component Tests › should support passing through arbitrary attributes

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:45451/", waiting until "load"

  392 |     await opts?.beforePageLoad?.(page)
  393 |
> 394 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  395 |   }
  396 |
  397 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:394:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (production/next-image-legacy/basic/basic.test.ts:292:17)

● Image Component Tests › SSR Image Component Tests › should modify src with the loader

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:45451/", waiting until "load"

  392 |     await opts?.beforePageLoad?.(page)
  393 |
> 394 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  395 |   }
  396 |
  397 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:394:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (production/next-image-legacy/basic/basic.test.ts:292:17)

● Image Component Tests › SSR Image Component Tests › should correctly generate src even if preceding slash is included in prop

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:45451/", waiting until "load"

  392 |     await opts?.beforePageLoad?.(page)
  393 |
> 394 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  395 |   }
  396 |
  397 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:394:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (production/next-image-legacy/basic/basic.test.ts:292:17)

● Image Component Tests › SSR Image Component Tests › should add a srcset based on the loader

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:45451/", waiting until "load"

  392 |     await opts?.beforePageLoad?.(page)
  393 |
> 394 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  395 |   }
  396 |
  397 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:394:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (production/next-image-legacy/basic/basic.test.ts:292:17)

● Image Component Tests › SSR Image Component Tests › should add a srcset even with preceding slash in prop

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:45451/", waiting until "load"

  392 |     await opts?.beforePageLoad?.(page)
  393 |
> 394 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  395 |   }
  396 |
  397 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:394:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (production/next-image-legacy/basic/basic.test.ts:292:17)

● Image Component Tests › SSR Image Component Tests › should use imageSizes when width matches, not deviceSizes from next.config.js

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:45451/", waiting until "load"

  392 |     await opts?.beforePageLoad?.(page)
  393 |
> 394 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  395 |   }
  396 |
  397 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:394:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (production/next-image-legacy/basic/basic.test.ts:292:17)

● Image Component Tests › SSR Image Component Tests › should support the unoptimized attribute

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:45451/", waiting until "load"

  392 |     await opts?.beforePageLoad?.(page)
  393 |
> 394 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  395 |   }
  396 |
  397 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:394:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (production/next-image-legacy/basic/basic.test.ts:292:17)

● Image Component Tests › SSR Image Component Tests › should not add a srcset if unoptimized attribute present

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:45451/", waiting until "load"

  392 |     await opts?.beforePageLoad?.(page)
  393 |
> 394 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  395 |   }
  396 |
  397 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:394:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (production/next-image-legacy/basic/basic.test.ts:292:17)

● Image Component Tests › SSR Image Component Tests › should keep auto parameter if already set

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:45451/", waiting until "load"

  392 |     await opts?.beforePageLoad?.(page)
  393 |
> 394 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  395 |   }
  396 |
  397 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:394:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (production/next-image-legacy/basic/basic.test.ts:292:17)

● Image Component Tests › SSR Image Component Tests › should keep width parameter if already set

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:45451/", waiting until "load"

  392 |     await opts?.beforePageLoad?.(page)
  393 |
> 394 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  395 |   }
  396 |
  397 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:394:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (production/next-image-legacy/basic/basic.test.ts:292:17)

● Image Component Tests › SSR Image Component Tests › should keep fit parameter if already set

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:45451/", waiting until "load"

  392 |     await opts?.beforePageLoad?.(page)
  393 |
> 394 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  395 |   }
  396 |
  397 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:394:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (production/next-image-legacy/basic/basic.test.ts:292:17)

● Image Component Tests › SSR Image Component Tests › should add a preload tag for a priority image

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:45451/", waiting until "load"

  392 |     await opts?.beforePageLoad?.(page)
  393 |
> 394 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  395 |   }
  396 |
  397 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:394:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (production/next-image-legacy/basic/basic.test.ts:292:17)

● Image Component Tests › SSR Image Component Tests › should add a preload tag for a priority image with preceding slash

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:45451/", waiting until "load"

  392 |     await opts?.beforePageLoad?.(page)
  393 |
> 394 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  395 |   }
  396 |
  397 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:394:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (production/next-image-legacy/basic/basic.test.ts:292:17)

● Image Component Tests › SSR Image Component Tests › should add a preload tag for a priority image, with arbitrary host

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:45451/", waiting until "load"

  392 |     await opts?.beforePageLoad?.(page)
  393 |
> 394 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  395 |   }
  396 |
  397 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:394:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (production/next-image-legacy/basic/basic.test.ts:292:17)

● Image Component Tests › SSR Image Component Tests › should add a preload tag for a priority image, with quality

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:45451/", waiting until "load"

  392 |     await opts?.beforePageLoad?.(page)
  393 |
> 394 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  395 |   }
  396 |
  397 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:394:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (production/next-image-legacy/basic/basic.test.ts:292:17)

● Image Component Tests › SSR Image Component Tests › should not create any preload tags higher up the page than CSS preload tags

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:45451/", waiting until "load"

  392 |     await opts?.beforePageLoad?.(page)
  393 |
> 394 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  395 |   }
  396 |
  397 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:394:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (production/next-image-legacy/basic/basic.test.ts:292:17)

● Image Component Tests › SSR Image Component Tests › should add data-nimg data attribute based on layout

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "

... truncated ...

pnpm test-start test/production/next-image-legacy/custom-resolver/custom-resolver.test.ts (job)

  • Custom Resolver Tests > Client-side Custom Loader Tests > Should use a custom resolver for image URL (DD)
  • Custom Resolver Tests > Client-side Custom Loader Tests > should add a srcset based on the custom resolver (DD)
  • Custom Resolver Tests > Client-side Custom Loader Tests > should support the unoptimized attribute (DD)
  • Custom Resolver Tests > SSR Custom Loader Tests > Should use a custom resolver for image URL (DD)
  • Custom Resolver Tests > SSR Custom Loader Tests > should add a srcset based on the custom resolver (DD)
  • Custom Resolver Tests > SSR Custom Loader Tests > should support the unoptimized attribute (DD)
Expand output

● Custom Resolver Tests › SSR Custom Loader Tests › Should use a custom resolver for image URL

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:46541/", waiting until "load"

  392 |     await opts?.beforePageLoad?.(page)
  393 |
> 394 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  395 |   }
  396 |
  397 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:394:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (production/next-image-legacy/custom-resolver/custom-resolver.test.ts:32:17)

● Custom Resolver Tests › SSR Custom Loader Tests › should add a srcset based on the custom resolver

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:46541/", waiting until "load"

  392 |     await opts?.beforePageLoad?.(page)
  393 |
> 394 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  395 |   }
  396 |
  397 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:394:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (production/next-image-legacy/custom-resolver/custom-resolver.test.ts:32:17)

● Custom Resolver Tests › SSR Custom Loader Tests › should support the unoptimized attribute

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:46541/", waiting until "load"

  392 |     await opts?.beforePageLoad?.(page)
  393 |
> 394 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  395 |   }
  396 |
  397 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:394:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (production/next-image-legacy/custom-resolver/custom-resolver.test.ts:32:17)

● Custom Resolver Tests › Client-side Custom Loader Tests › Should use a custom resolver for image URL

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:46541/client-side", waiting until "load"

  392 |     await opts?.beforePageLoad?.(page)
  393 |
> 394 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  395 |   }
  396 |
  397 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:394:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (production/next-image-legacy/custom-resolver/custom-resolver.test.ts:40:17)

● Custom Resolver Tests › Client-side Custom Loader Tests › should add a srcset based on the custom resolver

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:46541/client-side", waiting until "load"

  392 |     await opts?.beforePageLoad?.(page)
  393 |
> 394 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  395 |   }
  396 |
  397 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:394:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (production/next-image-legacy/custom-resolver/custom-resolver.test.ts:40:17)

● Custom Resolver Tests › Client-side Custom Loader Tests › should support the unoptimized attribute

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:46541/client-side", waiting until "load"

  392 |     await opts?.beforePageLoad?.(page)
  393 |
> 394 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  395 |   }
  396 |
  397 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:394:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (production/next-image-legacy/custom-resolver/custom-resolver.test.ts:40:17)

pnpm test-start-turbo test/production/next-image-legacy/basic/basic.test.ts (turbopack) (job)

  • Image Component Tests > Client-side Image Component Tests > should render an image tag (DD)
  • Image Component Tests > Client-side Image Component Tests > should support passing through arbitrary attributes (DD)
  • Image Component Tests > Client-side Image Component Tests > should modify src with the loader (DD)
  • Image Component Tests > Client-side Image Component Tests > should correctly generate src even if preceding slash is included in prop (DD)
  • Image Component Tests > Client-side Image Component Tests > should add a srcset based on the loader (DD)
  • Image Component Tests > Client-side Image Component Tests > should add a srcset even with preceding slash in prop (DD)
  • Image Component Tests > Client-side Image Component Tests > should use imageSizes when width matches, not deviceSizes from next.config.js (DD)
  • Image Component Tests > Client-side Image Component Tests > should support the unoptimized attribute (DD)
  • Image Component Tests > Client-side Image Component Tests > should not add a srcset if unoptimized attribute present (DD)
  • Image Component Tests > Client-side Image Component Tests > should keep auto parameter if already set (DD)
  • Image Component Tests > Client-side Image Component Tests > should keep width parameter if already set (DD)
  • Image Component Tests > Client-side Image Component Tests > should keep fit parameter if already set (DD)
  • Image Component Tests > Client-side Image Component Tests > should only be loaded once if sizes is set (DD)
  • Image Component Tests > Client-side Image Component Tests > Client-side Errors > Should not log an error when an unregistered host is used in production (DD)
  • Image Component Tests > SSR Image Component Tests > should render an image tag (DD)
  • Image Component Tests > SSR Image Component Tests > should support passing through arbitrary attributes (DD)
  • Image Component Tests > SSR Image Component Tests > should modify src with the loader (DD)
  • Image Component Tests > SSR Image Component Tests > should correctly generate src even if preceding slash is included in prop (DD)
  • Image Component Tests > SSR Image Component Tests > should add a srcset based on the loader (DD)
  • Image Component Tests > SSR Image Component Tests > should add a srcset even with preceding slash in prop (DD)
  • Image Component Tests > SSR Image Component Tests > should use imageSizes when width matches, not deviceSizes from next.config.js (DD)
  • Image Component Tests > SSR Image Component Tests > should support the unoptimized attribute (DD)
  • Image Component Tests > SSR Image Component Tests > should not add a srcset if unoptimized attribute present (DD)
  • Image Component Tests > SSR Image Component Tests > should keep auto parameter if already set (DD)
  • Image Component Tests > SSR Image Component Tests > should keep width parameter if already set (DD)
  • Image Component Tests > SSR Image Component Tests > should keep fit parameter if already set (DD)
  • Image Component Tests > SSR Image Component Tests > should add a preload tag for a priority image (DD)
  • Image Component Tests > SSR Image Component Tests > should add a preload tag for a priority image with preceding slash (DD)
  • Image Component Tests > SSR Image Component Tests > should add a preload tag for a priority image, with arbitrary host (DD)
  • Image Component Tests > SSR Image Component Tests > should add a preload tag for a priority image, with quality (DD)
  • Image Component Tests > SSR Image Component Tests > should not create any preload tags higher up the page than CSS preload tags (DD)
  • Image Component Tests > SSR Image Component Tests > should add data-nimg data attribute based on layout (DD)
  • Image Component Tests > SSR Image Component Tests > should not pass config to custom loader prop (DD)
Expand output

● Image Component Tests › SSR Image Component Tests › should render an image tag

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:37365/", waiting until "load"

  392 |     await opts?.beforePageLoad?.(page)
  393 |
> 394 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  395 |   }
  396 |
  397 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:394:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (production/next-image-legacy/basic/basic.test.ts:292:17)

● Image Component Tests › SSR Image Component Tests › should support passing through arbitrary attributes

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:37365/", waiting until "load"

  392 |     await opts?.beforePageLoad?.(page)
  393 |
> 394 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  395 |   }
  396 |
  397 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:394:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (production/next-image-legacy/basic/basic.test.ts:292:17)

● Image Component Tests › SSR Image Component Tests › should modify src with the loader

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:37365/", waiting until "load"

  392 |     await opts?.beforePageLoad?.(page)
  393 |
> 394 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  395 |   }
  396 |
  397 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:394:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (production/next-image-legacy/basic/basic.test.ts:292:17)

● Image Component Tests › SSR Image Component Tests › should correctly generate src even if preceding slash is included in prop

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:37365/", waiting until "load"

  392 |     await opts?.beforePageLoad?.(page)
  393 |
> 394 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  395 |   }
  396 |
  397 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:394:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (production/next-image-legacy/basic/basic.test.ts:292:17)

● Image Component Tests › SSR Image Component Tests › should add a srcset based on the loader

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:37365/", waiting until "load"

  392 |     await opts?.beforePageLoad?.(page)
  393 |
> 394 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  395 |   }
  396 |
  397 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:394:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (production/next-image-legacy/basic/basic.test.ts:292:17)

● Image Component Tests › SSR Image Component Tests › should add a srcset even with preceding slash in prop

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:37365/", waiting until "load"

  392 |     await opts?.beforePageLoad?.(page)
  393 |
> 394 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  395 |   }
  396 |
  397 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:394:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (production/next-image-legacy/basic/basic.test.ts:292:17)

● Image Component Tests › SSR Image Component Tests › should use imageSizes when width matches, not deviceSizes from next.config.js

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:37365/", waiting until "load"

  392 |     await opts?.beforePageLoad?.(page)
  393 |
> 394 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  395 |   }
  396 |
  397 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:394:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (production/next-image-legacy/basic/basic.test.ts:292:17)

● Image Component Tests › SSR Image Component Tests › should support the unoptimized attribute

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:37365/", waiting until "load"

  392 |     await opts?.beforePageLoad?.(page)
  393 |
> 394 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  395 |   }
  396 |
  397 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:394:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (production/next-image-legacy/basic/basic.test.ts:292:17)

● Image Component Tests › SSR Image Component Tests › should not add a srcset if unoptimized attribute present

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:37365/", waiting until "load"

  392 |     await opts?.beforePageLoad?.(page)
  393 |
> 394 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  395 |   }
  396 |
  397 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:394:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (production/next-image-legacy/basic/basic.test.ts:292:17)

● Image Component Tests › SSR Image Component Tests › should keep auto parameter if already set

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:37365/", waiting until "load"

  392 |     await opts?.beforePageLoad?.(page)
  393 |
> 394 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  395 |   }
  396 |
  397 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:394:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (production/next-image-legacy/basic/basic.test.ts:292:17)

● Image Component Tests › SSR Image Component Tests › should keep width parameter if already set

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:37365/", waiting until "load"

  392 |     await opts?.beforePageLoad?.(page)
  393 |
> 394 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  395 |   }
  396 |
  397 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:394:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (production/next-image-legacy/basic/basic.test.ts:292:17)

● Image Component Tests › SSR Image Component Tests › should keep fit parameter if already set

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:37365/", waiting until "load"

  392 |     await opts?.beforePageLoad?.(page)
  393 |
> 394 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  395 |   }
  396 |
  397 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:394:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (production/next-image-legacy/basic/basic.test.ts:292:17)

● Image Component Tests › SSR Image Component Tests › should add a preload tag for a priority image

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:37365/", waiting until "load"

  392 |     await opts?.beforePageLoad?.(page)
  393 |
> 394 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  395 |   }
  396 |
  397 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:394:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (production/next-image-legacy/basic/basic.test.ts:292:17)

● Image Component Tests › SSR Image Component Tests › should add a preload tag for a priority image with preceding slash

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:37365/", waiting until "load"

  392 |     await opts?.beforePageLoad?.(page)
  393 |
> 394 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  395 |   }
  396 |
  397 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:394:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (production/next-image-legacy/basic/basic.test.ts:292:17)

● Image Component Tests › SSR Image Component Tests › should add a preload tag for a priority image, with arbitrary host

page.goto: Timeout 60000ms exceeded.
Call log:
  - navigating to "http://localhost:37365/", waiting until "load"

  392 |     await opts?.beforePageLoad?.(page)
  393 |
> 394 |     await page.goto(url, { waitUntil: opts?.waitUntil ?? 'load' })
      |                ^
  395 |   }
  396 |
  397 |   back(options?: Parameters<Page['goBack']>[0]) {

  at Playwright.goto (lib/browsers/playwright.ts:394:16)
  at webdriver (lib/next-webdriver.ts:151:3)
  at Object.<anonymous> (production/next-image-legacy/basic/basic.test.ts:292:17)

● Image Component Tests › SSR Image Component Tests › should add a preload tag for a priority image,

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

@github-actions

github-actions Bot commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

Stats from current PR

🔴 1 regression, 1 improvement

Metric Canary PR Change Trend
Cold (First Request) 1.326s 1.429s 🔴 +103ms (+8%) ▃▂▁▁▃
node_modules Size 554 MB 553 MB 🟢 1.1 MB (0%) ▁▁▁██
📊 All Metrics
📖 Metrics Glossary

Dev Server Metrics:

  • Listen = TCP port starts accepting connections
  • First Request = HTTP server returns successful response
  • Cold = Fresh build (no cache)
  • Warm = With cached build artifacts

Build Metrics:

  • Fresh = Clean build (no .next directory)
  • Cached = With existing .next directory

Change Thresholds:

  • Time: Changes < 50ms AND < 10%, OR < 2% are insignificant
  • Size: Changes < 1KB AND < 1% are insignificant
  • All other changes are flagged to catch regressions

⚡ Dev Server

Metric Canary PR Change Trend
Cold (Listen) 813ms 865ms ▁▁▁▁▁
Cold (Ready in log) 812ms 842ms ▂▁▁▁▂
Cold (First Request) 1.326s 1.429s 🔴 +103ms (+8%) ▃▂▁▁▃
Warm (Listen) 813ms 865ms ▁▁▁▁▂
Warm (Ready in log) 813ms 845ms ▁▁▁▁▂
Warm (First Request) 1.320s 1.416s ▅▄▄▅▆
📦 Dev Server (Webpack) (Legacy)

📦 Dev Server (Webpack)

Metric Canary PR Change Trend
Cold (Listen) 811ms 809ms ▅█▇▇▇
Cold (Ready in log) 778ms 767ms ▂█▂█▇
Cold (First Request) 3.235s 3.296s ▂█▂▆█
Warm (Listen) 811ms 761ms █████
Warm (Ready in log) 780ms 768ms ▃▇▄▇█
Warm (First Request) 3.205s 3.284s ▂▇▃▆█

⚡ Production Builds

Metric Canary PR Change Trend
Fresh Build 6.347s 6.600s ▃▁▁▁▄
Cached Build 3.216s 3.323s ▃▂▁▁▄
📦 Production Builds (Webpack) (Legacy)

📦 Production Builds (Webpack)

Metric Canary PR Change Trend
Fresh Build 23.392s 23.679s ▁▆▃▆▆
Cached Build 23.764s 23.676s ▃█▅▆█
node_modules Size 554 MB 553 MB 🟢 1.1 MB (0%) ▁▁▁██
📦 Bundle Sizes

Bundle Sizes

⚡ Turbopack

Client

Main Bundles
Canary PR Change
03w7r9j3lejb_.js gzip 154 B N/A -
050icza-xjz0i.js gzip 5.73 kB N/A -
07jdby0ue616s.js gzip 450 B N/A -
0bjdc8muo74n5.js gzip 8.71 kB N/A -
0cz1d0mv5g_q7.js gzip 39.4 kB 39.4 kB
0rci1f3or1a19.js gzip 13.3 kB N/A -
1_2x714--ii1i.js gzip 8.76 kB N/A -
1-3y752pkth5-.js gzip 10 kB N/A -
19gb-1_5udxfb.js gzip 13.2 kB N/A -
1cz3ginsmcle0.js gzip 154 B N/A -
1elt1qium-r2m.css gzip 115 B 115 B
1tf1phijqlx9j.js gzip 220 B 220 B
1uzabyd1120a1.js gzip 8.71 kB N/A -
1x38nkal_v7pc.js gzip 155 B N/A -
2_ln1vao-rk0y.js gzip 157 B N/A -
2-ufv8lc-g7gg.js gzip 10.6 kB N/A -
21kmjy_10x14f.js gzip 8.81 kB N/A -
22ayitm_chlxg.js gzip 156 B N/A -
28dhc6t85q1_p.js gzip 8.78 kB N/A -
2f-ilvczue-tp.js gzip 9.46 kB N/A -
2f1u17u5c8iny.js gzip 8.79 kB N/A -
2ikltg_8iegxw.js gzip 10.3 kB N/A -
2ixp3xn2_vz0r.js gzip 3.57 kB N/A -
2jsj5c-k8e_ic.js gzip 167 B N/A -
2pflec0m3q9fw.js gzip 154 B N/A -
2u-ye52h91kww.js gzip 157 B N/A -
2vmba87tvhgta.js gzip 151 B N/A -
2vxi673cz1-t4.js gzip 8.79 kB N/A -
2we2d4xaeyh0g.js gzip 159 B N/A -
2xejdu2qay51r.js gzip 71.6 kB N/A -
38-q43pzktqhs.js gzip 1.46 kB N/A -
3f977fytahn5a.js gzip 7.53 kB N/A -
3lh70vgwg4fu0.js gzip 157 B N/A -
3lrfocd661skw.js gzip 65.6 kB N/A -
3nbojhxiy1qv_.js gzip 13.7 kB N/A -
3r9mg09sag_yr.js gzip 47 kB N/A -
3wvoy-0kg4nyj.js gzip 155 B N/A -
41u5s3oe2-erp.js gzip 2.29 kB N/A -
443fsfu98ohj2.js gzip 154 B N/A -
445s_9hf8o7ao.js gzip 8.76 kB N/A -
turbopack-0d..9ejy.js gzip 3.74 kB N/A -
0-6bcj16ji2wf.js gzip N/A 10.6 kB -
05bc8af8ar0hm.js gzip N/A 157 B -
07ryk0jced-sc.js gzip N/A 8.78 kB -
0ehfrsq4t9oxv.js gzip N/A 157 B -
0fcqiazz8rrj6.js gzip N/A 169 B -
0jwho9fkrb_t3.js gzip N/A 2.29 kB -
0kggekbduqh7_.js gzip N/A 46.6 kB -
0roh390ijzxa5.js gzip N/A 8.75 kB -
0ryyb26nk8l4-.js gzip N/A 65.6 kB -
0vex9w55ursqj.js gzip N/A 8.79 kB -
17oe55cu76cd7.js gzip N/A 450 B -
1drww5xikb-c-.js gzip N/A 9.46 kB -
1f0sbbzbtb8-d.js gzip N/A 156 B -
1g60xde_dv17t.js gzip N/A 8.79 kB -
1hfawbaxawa1b.js gzip N/A 156 B -
1uzv47btzam64.js gzip N/A 5.73 kB -
1vy7n7wxv_rh5.js gzip N/A 8.81 kB -
2-0i7pl900-ou.js gzip N/A 8.71 kB -
2-kcbngm7ik7y.js gzip N/A 8.75 kB -
24xppfz7hzt_u.js gzip N/A 161 B -
29p5-xa4jmdhg.js gzip N/A 13.7 kB -
2kgg_yiaz8rd6.js gzip N/A 155 B -
2lpk5_hknut8q.js gzip N/A 13.1 kB -
2o4cibp3awtbw.js gzip N/A 3.56 kB -
2ugc69z0t0ypz.js gzip N/A 1.46 kB -
2ysmo6k0h552j.js gzip N/A 156 B -
31v10264sxw__.js gzip N/A 150 B -
36dn8i-_3dnq5.js gzip N/A 10 kB -
37nj9nluvb6lr.js gzip N/A 157 B -
3a9sn6l54cidw.js gzip N/A 156 B -
3be3-77wi4dm2.js gzip N/A 156 B -
3fljpmwcjxqhx.js gzip N/A 10.3 kB -
3g7d_qk0nyha6.js gzip N/A 158 B -
3gz44skqdlsrb.js gzip N/A 8.71 kB -
3oslhuq9luvp2.js gzip N/A 7.55 kB -
3rsl6m-zn6t_o.js gzip N/A 71.5 kB -
3y9tus7kb5su0.js gzip N/A 13.3 kB -
turbopack-1l..-5yv.js gzip N/A 3.73 kB -
Total 401 kB 401 kB ✅ -499 B

Server

Middleware
Canary PR Change
middleware-b..fest.js gzip 1.05 kB 1.06 kB
Total 1.05 kB 1.06 kB ⚠️ +2 B
Build Details
Build Manifests
Canary PR Change
_buildManifest.js gzip 879 B 876 B
Total 879 B 876 B ✅ -3 B
Build Cache
Canary PR Change
00000001.sst gzip 12.9 MB 12.7 MB 🟢 162 kB (-1%)
00000002.sst gzip 16.3 MB 14.3 MB 🟢 2.02 MB (-12%)
00000003.sst gzip 13.7 MB 13.4 MB 🟢 320 kB (-2%)
00000004.sst gzip 12.6 MB 14.8 MB 🔴 +2.13 MB (+17%)
00000005.sst gzip 10.2 MB 10.2 MB 🟢 16.4 kB (0%)
00000006.sst gzip 2.8 MB 2.81 MB 🔴 +5.9 kB (+0%)
00000007.sst gzip 59 B 59 B
00000008.meta gzip 89 B 89 B
00000009.meta gzip 298 kB 298 kB
00000010.meta gzip 298 kB 298 kB
00000011.meta gzip 298 kB 298 kB
00000012.sst gzip 52.6 kB 52.1 kB
00000013.sst gzip 1.85 MB 1.82 MB 🟢 29.4 kB (-2%)
00000014.sst gzip 59 B 59 B
00000015.meta gzip 116 B 116 B
00000016.meta gzip 327 kB 325 kB 🟢 2.86 kB (-1%)
00000017.meta gzip 408 kB 405 kB 🟢 2.8 kB (-1%)
00000018.sst gzip 53.4 kB 53.1 kB
00000019.sst gzip 1.42 MB 1.39 MB 🟢 28.1 kB (-2%)
00000020.sst gzip 59 B 59 B
00000021.meta gzip 116 B 116 B
00000022.meta gzip 327 kB 325 kB 🟢 2.86 kB (-1%)
00000023.meta gzip 373 kB 371 kB 🟢 2.23 kB (-1%)
00000024.sst gzip 53.4 kB 53.2 kB
00000025.sst gzip 1.42 MB 1.39 MB 🟢 25.9 kB (-2%)
00000026.sst gzip 59 B 59 B
00000027.meta gzip 116 B 116 B
00000028.meta gzip 327 kB 325 kB 🟢 2.86 kB (-1%)
00000029.meta gzip 373 kB 371 kB 🟢 2.23 kB (-1%)
00000030.sst gzip 52.7 kB 1.39 MB 🔴 +1.34 MB (+2548%)
00000031.sst gzip 1.42 MB 52.2 kB 🟢 1.37 MB (-96%)
00000032.sst gzip 59 B 59 B
00000033.meta gzip 116 B 116 B
00000034.meta gzip 327 kB 325 kB 🟢 2.86 kB (-1%)
00000035.meta gzip 373 kB 371 kB 🟢 2.23 kB (-1%)
00000036.sst gzip 53.1 kB 52.9 kB
00000037.sst gzip 1.42 MB 1.39 MB 🟢 25.9 kB (-2%)
00000038.sst gzip 59 B 59 B
00000039.meta gzip 116 B 116 B
00000040.meta gzip 327 kB 325 kB 🟢 2.86 kB (-1%)
00000041.meta gzip 373 kB 371 kB 🟢 2.23 kB (-1%)
CURRENT gzip 94 B 24 B 🟢 70 B (-74%)
LOG gzip 676 B 678 B
Total 80.8 MB 80.3 MB ✅ -543 kB

📦 Webpack

Client

Main Bundles
Canary PR Change
3322-HASH.js gzip 66.1 kB N/A -
4191.HASH.js gzip 169 B N/A -
7920-HASH.js gzip 4.67 kB N/A -
9784-HASH.js gzip 5.63 kB N/A -
b1ad9f4c-HASH.js gzip 63.5 kB N/A -
framework-HASH.js gzip 59.7 kB 59.7 kB
main-app-HASH.js gzip 253 B 253 B
main-HASH.js gzip 40.2 kB 40.1 kB
webpack-HASH.js gzip 1.68 kB 1.68 kB
3577.HASH.js gzip N/A 168 B -
578-HASH.js gzip N/A 66.4 kB -
8590-HASH.js gzip N/A 5.61 kB -
9750-HASH.js gzip N/A 4.68 kB -
a8984546-HASH.js gzip N/A 63.2 kB -
Total 242 kB 242 kB ✅ -208 B
Polyfills
Canary PR Change
polyfills-HASH.js gzip 39.4 kB 39.4 kB
Total 39.4 kB 39.4 kB
Pages
Canary PR Change
_app-HASH.js gzip 194 B 193 B
_error-HASH.js gzip 181 B 182 B
css-HASH.js gzip 334 B 331 B
dynamic-HASH.js gzip 1.81 kB 1.81 kB
edge-ssr-HASH.js gzip 255 B 253 B
head-HASH.js gzip 349 B 351 B
hooks-HASH.js gzip 382 B 384 B
image-HASH.js gzip 581 B 582 B
index-HASH.js gzip 260 B 259 B
link-HASH.js gzip 2.48 kB 2.48 kB
routerDirect..HASH.js gzip 317 B 318 B
script-HASH.js gzip 384 B 386 B
withRouter-HASH.js gzip 316 B 315 B
1afbb74e6ecf..834.css gzip 106 B 106 B
Total 7.95 kB 7.96 kB ⚠️ +4 B

Server

Edge SSR
Canary PR Change
edge-ssr.js gzip 129 kB 129 kB
page.js gzip 294 kB 295 kB
Total 423 kB 424 kB ⚠️ +291 B
Middleware
Canary PR Change
middleware-b..fest.js gzip 618 B 616 B
middleware-r..fest.js gzip 156 B 156 B
middleware.js gzip 46 kB 45.4 kB 🟢 603 B (-1%)
edge-runtime..pack.js gzip 842 B 842 B
Total 47.6 kB 47 kB ✅ -605 B
Build Details
Build Manifests
Canary PR Change
_buildManifest.js gzip 717 B 718 B
Total 717 B 718 B ⚠️ +1 B
Build Cache
Canary PR Change
0.pack gzip 4.83 MB 4.8 MB 🟢 29.7 kB (-1%)
index.pack gzip 124 kB 123 kB
index.pack.old gzip 122 kB 124 kB 🔴 +1.45 kB (+1%)
Total 5.08 MB 5.05 MB ✅ -28.8 kB

🔄 Shared (bundler-independent)

Runtimes
Canary PR Change
app-page-exp...dev.js gzip 376 kB 375 kB
app-page-exp..prod.js gzip 207 kB 207 kB
app-page-tur...dev.js gzip 375 kB 375 kB
app-page-tur..prod.js gzip 206 kB 207 kB
app-page-tur...dev.js gzip 372 kB 371 kB
app-page-tur..prod.js gzip 204 kB 205 kB
app-page.run...dev.js gzip 372 kB 371 kB
app-page.run..prod.js gzip 204 kB 205 kB
app-route-ex...dev.js gzip 83.2 kB 83.4 kB
app-route-ex..prod.js gzip 56.2 kB 56.4 kB
app-route-tu...dev.js gzip 83.2 kB 83.4 kB
app-route-tu..prod.js gzip 56.2 kB 56.4 kB
app-route-tu...dev.js gzip 82.8 kB 83 kB
app-route-tu..prod.js gzip 56 kB 56.2 kB
app-route.ru...dev.js gzip 82.8 kB 82.9 kB
app-route.ru..prod.js gzip 55.9 kB 56.2 kB
dev-validati...dev.js gzip 134 kB 133 kB
dev-validati...dev.js gzip 134 kB 133 kB
dev-validati...dev.js gzip 132 kB 131 kB
dev-validati...dev.js gzip 132 kB 131 kB
dist_client_...dev.js gzip 324 B 324 B
dist_client_...dev.js gzip 326 B 326 B
dist_client_...dev.js gzip 318 B 318 B
dist_client_...dev.js gzip 317 B 317 B
pages-api-tu...dev.js gzip 46.5 kB 46.1 kB
pages-api-tu..prod.js gzip 34.7 kB 34.3 kB 🟢 349 B (-1%)
pages-api.ru...dev.js gzip 46.5 kB 46.1 kB
pages-api.ru..prod.js gzip 34.7 kB 34.3 kB 🟢 351 B (-1%)
pages-turbo....dev.js gzip 55.3 kB 54.9 kB
pages-turbo...prod.js gzip 40.2 kB 39.9 kB
pages.runtim...dev.js gzip 55.3 kB 54.9 kB
pages.runtim..prod.js gzip 40.2 kB 39.9 kB
server.runti..prod.js gzip 66.6 kB 67 kB
use-cache-pr...dev.js gzip 72.7 kB 72.5 kB
use-cache-pr...dev.js gzip 72.7 kB 72.5 kB
use-cache-pr...dev.js gzip 70.9 kB 70.7 kB
use-cache-pr...dev.js gzip 70.9 kB 70.7 kB
Total 4.11 MB 4.11 MB ✅ -6.84 kB
📝 Changed Files (33 files)

Files with changes:

  • app-page-exp..ntime.dev.js
  • app-page-exp..time.prod.js
  • app-page-tur..ntime.dev.js
  • app-page-tur..time.prod.js
  • app-page-tur..ntime.dev.js
  • app-page-tur..time.prod.js
  • app-page.runtime.dev.js
  • app-page.runtime.prod.js
  • app-route-ex..ntime.dev.js
  • app-route-ex..time.prod.js
  • app-route-tu..ntime.dev.js
  • app-route-tu..time.prod.js
  • app-route-tu..ntime.dev.js
  • app-route-tu..time.prod.js
  • app-route.runtime.dev.js
  • app-route.ru..time.prod.js
  • dev-validati..ntime.dev.js
  • dev-validati..ntime.dev.js
  • dev-validati..ntime.dev.js
  • dev-validati..ntime.dev.js
  • ... and 13 more
View diffs
app-page-exp..ntime.dev.js
failed to diff
app-page-exp..time.prod.js
failed to diff
app-page-tur..ntime.dev.js
failed to diff
app-page-tur..time.prod.js
failed to diff
app-page-tur..ntime.dev.js
failed to diff
app-page-tur..time.prod.js
failed to diff
app-page.runtime.dev.js
failed to diff
app-page.runtime.prod.js
failed to diff
app-route-ex..ntime.dev.js

Diff too large to display

app-route-ex..time.prod.js

Diff too large to display

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

Diff too large to display

app-route-tu..time.prod.js

Diff too large to display

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

Diff too large to display

app-route-tu..time.prod.js

Diff too large to display

app-route.runtime.dev.js

Diff too large to display

app-route.ru..time.prod.js

Diff too large to display

dev-validati..ntime.dev.js
failed to diff
dev-validati..ntime.dev.js
failed to diff
dev-validati..ntime.dev.js
failed to diff
dev-validati..ntime.dev.js
failed to diff
pages-api-tu..ntime.dev.js

Diff too large to display

pages-api-tu..time.prod.js

Diff too large to display

pages-api.runtime.dev.js

Diff too large to display

pages-api.ru..time.prod.js

Diff too large to display

pages-turbo...ntime.dev.js

Diff too large to display

pages-turbo...time.prod.js

Diff too large to display

pages.runtime.dev.js

Diff too large to display

pages.runtime.prod.js

Diff too large to display

server.runtime.prod.js

Diff too large to display

use-cache-pr..ntime.dev.js

Diff too large to display

use-cache-pr..ntime.dev.js

Diff too large to display

use-cache-pr..ntime.dev.js

Diff too large to display

use-cache-pr..ntime.dev.js

Diff too large to display

📎 Tarball URL
https://vercel-packages.vercel.app/next/commits/7cb0c7f9d0f13071f0cc276fa5f26a0a9e43b2fd/next

Commit: 7cb0c7f

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

use cache wrapper never releases its AbortSignal.any composite, retaining every cached render

1 participant