From e519ede9696f266994df73182d441d0acd94ed89 Mon Sep 17 00:00:00 2001 From: Jude Gao Date: Wed, 13 May 2026 04:06:34 -0400 Subject: [PATCH 01/12] docs: less aggressive AI agent hint for an experimental API (#93811) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The "AI agent hint" comment on the docs landing page (`docs/index.mdx`) tells every agent reading the docs on every task to export `unstable_instant` to fix slow client-side navigations. That's too aggressive for an experimental API — `unstable_instant` is `version: draft` and still reshaping (`unstable_prefetch` just split off in #92754). The instant-navigation guide already covers the API in measured language; agents working on slow-navigation tasks will find it there. --- docs/index.mdx | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs/index.mdx b/docs/index.mdx index 3f3e137a6730..07b60481976d 100644 --- a/docs/index.mdx +++ b/docs/index.mdx @@ -8,8 +8,6 @@ related: - app/getting-started --- -{/* AI agent hint: If fixing slow client-side navigations, Suspense alone is not enough. You must also export `unstable_instant` from the route. Read docs/01-app/02-guides/instant-navigation.mdx before making changes. */} - Welcome to the Next.js documentation! ## What is Next.js? From 22fc63da725551e7a87be573a0c8fb22a397ff0b Mon Sep 17 00:00:00 2001 From: Ayodele Samuel Adebayo Date: Wed, 13 May 2026 09:25:23 +0100 Subject: [PATCH 02/12] docs: fix typos and links (#92541) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This PR cleans up small documentation and error-page issues: correct TypeScript spelling where it was written as “Typescript”, use the proper GitHub label in links, fix the MDN URL for `Map.prototype.values` in the middleware upgrade guide. No runtime or API behavior changes. --- docs/02-pages/02-guides/upgrading/version-12.mdx | 2 +- errors/import-esm-externals.mdx | 4 ++-- errors/middleware-upgrade-guide.mdx | 2 +- errors/next-prerender-sync-params.mdx | 2 +- errors/next-prerender-sync-request.mdx | 2 +- errors/swc-disabled.mdx | 2 +- 6 files changed, 7 insertions(+), 7 deletions(-) diff --git a/docs/02-pages/02-guides/upgrading/version-12.mdx b/docs/02-pages/02-guides/upgrading/version-12.mdx index 0dcbf3ed07ee..bba689b04371 100644 --- a/docs/02-pages/02-guides/upgrading/version-12.mdx +++ b/docs/02-pages/02-guides/upgrading/version-12.mdx @@ -50,7 +50,7 @@ Next.js now uses the Rust-based compiler [SWC](https://swc.rs/) to compile JavaS Next.js provides full backward compatibility with applications that have [custom Babel configuration](/docs/pages/guides/babel). All transformations that Next.js handles by default like styled-jsx and tree-shaking of `getStaticProps` / `getStaticPaths` / `getServerSideProps` have been ported to Rust. -When an application has a custom Babel configuration, Next.js will automatically opt-out of using SWC for compiling JavaScript/Typescript and will fall back to using Babel in the same way that it was used in Next.js 11. +When an application has a custom Babel configuration, Next.js will automatically opt-out of using SWC for compiling JavaScript/TypeScript and will fall back to using Babel in the same way that it was used in Next.js 11. Many of the integrations with external libraries that currently require custom Babel transformations will be ported to Rust-based SWC transforms in the near future. These include but are not limited to: diff --git a/errors/import-esm-externals.mdx b/errors/import-esm-externals.mdx index 93947e85af53..9a4199646ed1 100644 --- a/errors/import-esm-externals.mdx +++ b/errors/import-esm-externals.mdx @@ -4,9 +4,9 @@ title: ESM packages need to be imported ## Why This Error Occurred -Packages in node_modules that are published as EcmaScript Module, need to be `import`ed via `import ... from 'package'` or `import('package')`. +Packages in node_modules that are published as ECMAScript Module, need to be `import`ed via `import ... from 'package'` or `import('package')`. -You get this error when using a different way to reference the package, e. g. `require()`. +You get this error when using a different way to reference the package, e.g. `require()`. ## Possible Ways to Fix It diff --git a/errors/middleware-upgrade-guide.mdx b/errors/middleware-upgrade-guide.mdx index e81860f6c4f4..1e1d085aacdf 100644 --- a/errors/middleware-upgrade-guide.mdx +++ b/errors/middleware-upgrade-guide.mdx @@ -197,7 +197,7 @@ export default async function handler(req: NextRequest) { ### Explanation -Based on beta feedback, we are changing the Cookies API in `NextRequest` and `NextResponse` to align more to a `get`/`set` model. The `Cookies` API extends Map, including methods like [entries](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Map/entries) and [values](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Map/entries). +Based on beta feedback, we are changing the Cookies API in `NextRequest` and `NextResponse` to align more to a `get`/`set` model. The `Cookies` API extends Map, including methods like [entries](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Map/entries) and [values](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Map/values). ### How to upgrade diff --git a/errors/next-prerender-sync-params.mdx b/errors/next-prerender-sync-params.mdx index b0b529c46a5f..24999671ef5f 100644 --- a/errors/next-prerender-sync-params.mdx +++ b/errors/next-prerender-sync-params.mdx @@ -52,7 +52,7 @@ export default async function ComponentThatWillBeExportedAsPage({ params, search export * from '.../some-file' ``` -It is unexpected that you would run the codemod and not successfully convert all instances of `params` and `searchParams` to async or have a marker string to help you locate unconverted cases. If you do find yourself in this situation please report this to [Next.js on Github](https://github.com/vercel/next.js/issues). +It is unexpected that you would run the codemod and not successfully convert all instances of `params` and `searchParams` to async or have a marker string to help you locate unconverted cases. If you do find yourself in this situation please report this to [Next.js on GitHub](https://github.com/vercel/next.js/issues). ## Useful Links diff --git a/errors/next-prerender-sync-request.mdx b/errors/next-prerender-sync-request.mdx index cfebbed0f8d3..859810c30e4a 100644 --- a/errors/next-prerender-sync-request.mdx +++ b/errors/next-prerender-sync-request.mdx @@ -33,7 +33,7 @@ export default async function GET(request) { } ``` -It is unexpected that you would run the codemod and not successfully convert all instances of `params` and `searchParams` to async or have a marker string to help you locate unconverted cases. If you do find yourself in this situation please report this to [Next.js on Github](https://github.com/vercel/next.js/issues). +It is unexpected that you would run the codemod and not successfully convert all instances of `params` and `searchParams` to async or have a marker string to help you locate unconverted cases. If you do find yourself in this situation please report this to [Next.js on GitHub](https://github.com/vercel/next.js/issues). ## Useful Links diff --git a/errors/swc-disabled.mdx b/errors/swc-disabled.mdx index 495b1da44f33..ee0b3e4ef74e 100644 --- a/errors/swc-disabled.mdx +++ b/errors/swc-disabled.mdx @@ -8,7 +8,7 @@ Next.js now uses Rust-based compiler [SWC](https://swc.rs/) to compile JavaScrip Next.js provides full backwards compatibility with applications that have [custom Babel configuration](/docs/pages/guides/babel). All transformations that Next.js handles by default like styled-jsx and tree-shaking of `getStaticProps` / `getStaticPaths` / `getServerSideProps` have been ported to Rust. -When an application has custom Babel configuration Next.js will automatically opt-out of using SWC for compiling JavaScript/Typescript and will fall back to using Babel in the same way that it was used in Next.js 11. +When an application has custom Babel configuration Next.js will automatically opt-out of using SWC for compiling JavaScript/TypeScript and will fall back to using Babel in the same way that it was used in Next.js 11. Many of the integrations with external libraries that currently require custom Babel transformations will be ported to Rust-based SWC transforms in the near future. These include but are not limited to: From a937e1c7adc242b5f9066d1a4d90a2ad7da11636 Mon Sep 17 00:00:00 2001 From: Joseph Date: Wed, 13 May 2026 10:59:50 +0200 Subject: [PATCH 03/12] docs: less aggressive AI agent hint for an experimental API (#93814) Applying https://github.com/vercel/next.js/pull/93811 From 7c6f9e71f9b4bfb31278f805f3bb1863567d2ad1 Mon Sep 17 00:00:00 2001 From: Hendrik Liebau Date: Wed, 13 May 2026 13:46:53 +0200 Subject: [PATCH 04/12] Patch `playwright-core` to resolve `_finishedPromise` on `requestFailed` (#93802) --- package.json | 3 ++- patches/playwright-core@1.58.2.patch | 24 ++++++++++++++++++++++++ pnpm-lock.yaml | 9 ++++++--- 3 files changed, 32 insertions(+), 4 deletions(-) create mode 100644 patches/playwright-core@1.58.2.patch diff --git a/package.json b/package.json index d202dcd6c45c..b14702305a5c 100644 --- a/package.json +++ b/package.json @@ -345,7 +345,8 @@ "@rspack/core@1.6.7": "patches/@rspack__core@1.6.7.patch", "@modelcontextprotocol/sdk": "patches/@modelcontextprotocol__sdk.patch", "@vercel/blob": "patches/@vercel__blob.patch", - "postcss-scss": "patches/postcss-scss.patch" + "postcss-scss": "patches/postcss-scss.patch", + "playwright-core@1.58.2": "patches/playwright-core@1.58.2.patch" } } } diff --git a/patches/playwright-core@1.58.2.patch b/patches/playwright-core@1.58.2.patch new file mode 100644 index 000000000000..85c4a9e6cff0 --- /dev/null +++ b/patches/playwright-core@1.58.2.patch @@ -0,0 +1,24 @@ +diff --git a/lib/client/browserContext.js b/lib/client/browserContext.js +index 0b5cb3356cdc4917d9198a184f1a2cb391924453..3ad3d86bebde7a7e25af4f94b964d003e10d40a0 100644 +--- a/lib/client/browserContext.js ++++ b/lib/client/browserContext.js +@@ -183,6 +183,19 @@ class BrowserContext extends import_channelOwner.ChannelOwner { + _onRequestFailed(request, responseEndTiming, failureText, page) { + request._failureText = failureText || null; + request._setResponseEndTiming(responseEndTiming); ++ // PATCH (next.js): mirror what `_onRequestFinished` does for the ++ // response, so callers awaiting `response.finished()` don't hang on ++ // failed/canceled requests. The server side already resolves the ++ // server-side `_finishedPromise` from `_onLoadingFailed` (see ++ // chromium/crNetworkManager.js), but only the `requestFinished` IPC ++ // carries a response payload — `requestFailed` does not, so the ++ // client-side Response's `_finishedPromise` is otherwise never ++ // resolved. We look up the response via the existing async RPC and ++ // resolve it fire-and-forget; catch is a no-op so we never produce ++ // an unhandled rejection if the context tears down concurrently. ++ request.response().then((response) => { ++ if (response !== null) response._finishedPromise.resolve(null); ++ }).catch(() => {}); + this.emit(import_events.Events.BrowserContext.RequestFailed, request); + if (page) + page.emit(import_events.Events.Page.RequestFailed, request); diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 188650ad0bb6..8976b8e3a263 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -43,6 +43,9 @@ patchedDependencies: minizlib@3.1.0: hash: 587688821244aaee46680929cd869947377a284ac1b30c9ae8660a5ea7d2be67 path: patches/minizlib@3.1.0.patch + playwright-core@1.58.2: + hash: 064d5ffec38700c624b4c1a08fa7a1833aecdf196702f97d61f655385d18f886 + path: patches/playwright-core@1.58.2.patch postcss-scss: hash: 88893e632b3e099730dc0ffcc93cf3654b31c277da9e2796e822f6b5aeedc093 path: patches/postcss-scss.patch @@ -33734,15 +33737,15 @@ snapshots: playwright-chromium@1.58.2: dependencies: - playwright-core: 1.58.2 + playwright-core: 1.58.2(patch_hash=064d5ffec38700c624b4c1a08fa7a1833aecdf196702f97d61f655385d18f886) playwright-core@1.51.1: {} - playwright-core@1.58.2: {} + playwright-core@1.58.2(patch_hash=064d5ffec38700c624b4c1a08fa7a1833aecdf196702f97d61f655385d18f886): {} playwright@1.58.2: dependencies: - playwright-core: 1.58.2 + playwright-core: 1.58.2(patch_hash=064d5ffec38700c624b4c1a08fa7a1833aecdf196702f97d61f655385d18f886) optionalDependencies: fsevents: 2.3.2 From 5d6a234ec3e9c5547e3d28b69c901ad980443b74 Mon Sep 17 00:00:00 2001 From: Hendrik Liebau Date: Wed, 13 May 2026 13:48:50 +0200 Subject: [PATCH 05/12] Revert "[test] Skip flaky `cached-navigations` tests" (#93798) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Reverts vercel/next.js#92199. Depends on #93802, which patches `playwright-core` to fix the root cause: the client-side `Response._finishedPromise` was never resolved on `requestFailed`, causing `response.finished()` to hang indefinitely and surface as opaque 60s Jest timeouts in router-act-using tests. With that patch in place, the cached-navigations tests can be reinstated. This PR's CI is part of the verification path — the previously-flaky tests now run cleanly through the 3× flake-detection job. --- .../cached-navigations.test.ts | 27 +++++++------------ 1 file changed, 9 insertions(+), 18 deletions(-) diff --git a/test/e2e/app-dir/segment-cache/cached-navigations/cached-navigations.test.ts b/test/e2e/app-dir/segment-cache/cached-navigations/cached-navigations.test.ts index 3d6227bd844f..95c7e234bceb 100644 --- a/test/e2e/app-dir/segment-cache/cached-navigations/cached-navigations.test.ts +++ b/test/e2e/app-dir/segment-cache/cached-navigations/cached-navigations.test.ts @@ -13,8 +13,7 @@ describe('cached navigations', () => { return } - // TODO: flaky - it.skip('serves cached static segments instantly on the second navigation', async () => { + it('serves cached static segments instantly on the second navigation', async () => { let page: Playwright.Page const browser = await next.browser('/', { async beforePageLoad(p: Playwright.Page) { @@ -182,8 +181,7 @@ describe('cached navigations', () => { ) }) - // TODO: flaky - it.skip('caches static segments when navigating to a known route without a prefetch', async () => { + it('caches static segments when navigating to a known route without a prefetch', async () => { let page: Playwright.Page const browser = await next.browser('/', { async beforePageLoad(p: Playwright.Page) { @@ -276,8 +274,7 @@ describe('cached navigations', () => { ) }) - // TODO: flaky - it.skip('includes static params in the cached static stage', async () => { + it('includes static params in the cached static stage', async () => { let page: Playwright.Page const browser = await next.browser('/', { async beforePageLoad(p: Playwright.Page) { @@ -337,8 +334,7 @@ describe('cached navigations', () => { ) }) - // TODO: flaky - it.skip('defers fallback params to the runtime stage', async () => { + it('defers fallback params to the runtime stage', async () => { let page: Playwright.Page const browser = await next.browser('/', { async beforePageLoad(p: Playwright.Page) { @@ -407,8 +403,7 @@ describe('cached navigations', () => { ) }) - // TODO: flaky - it.skip('caches runtime-prefetchable content from a navigation for instant second visit', async () => { + it('caches runtime-prefetchable content from a navigation for instant second visit', async () => { let page: Playwright.Page const browser = await next.browser('/', { async beforePageLoad(p: Playwright.Page) { @@ -562,8 +557,7 @@ describe('cached navigations', () => { ) }) - // TODO: flaky - it.skip('caches runtime-prefetchable content from the initial HTML for subsequent navigations', async () => { + it('caches runtime-prefetchable content from the initial HTML for subsequent navigations', async () => { let page: Playwright.Page // Start directly at /runtime-prefetchable — full HTML load, not a // client-side navigation. The RSC payload is inlined in the HTML and @@ -757,8 +751,7 @@ describe('cached navigations', () => { ) }) - // TODO: flaky - it.skip('caches a partially static page from the initial HTML for subsequent navigations', async () => { + it('caches a partially static page from the initial HTML for subsequent navigations', async () => { let page: Playwright.Page // Start directly at /partially-static — full HTML load. The RSC payload // inlined in the HTML contains both cached and dynamic content. @@ -824,8 +817,7 @@ describe('cached navigations', () => { ) }) - // TODO: flaky - it.skip('reuses cached page segment across different fallback params after navigation', async () => { + it('reuses cached page segment across different fallback params after navigation', async () => { let page: Playwright.Page const browser = await next.browser('/', { async beforePageLoad(p: Playwright.Page) { @@ -886,8 +878,7 @@ describe('cached navigations', () => { ) }) - // TODO: flaky - it.skip('reuses cached page segment across different fallback params after initial HTML load', async () => { + it('reuses cached page segment across different fallback params after initial HTML load', async () => { let page: Playwright.Page // Start directly at /with-fallback-params/foo — full HTML load. The RSC // payload inlined in the HTML seeds the segment cache with the page From f8499307ed8d58ea7b7f0bd6311118041988a461 Mon Sep 17 00:00:00 2001 From: Hendrik Liebau Date: Wed, 13 May 2026 14:50:03 +0200 Subject: [PATCH 06/12] Fix catch-all `router.query` corruption with `basePath` + `rewrites` (#93294) In a Pages Router app that combines a `basePath`, `next.config.js` `rewrites`, middleware, and a catch-all dynamic route, a client-side `Link` navigation could land on the page with a corrupted `router.query`. Instead of holding the captured route segments, the catch-all param ended up holding the segments of the internal `_next/data//...` URL. Page code that builds further URLs from `router.query` then produced malformed paths and 404s in production. The corruption originated in `getMiddlewareData`, which was passing `nextConfig: undefined` to `getNextPathnameInfo` whenever `__NEXT_HAS_REWRITES` was true. With basePath set, that meant the basePath prefix was never stripped from the data-source URL, so the `/_next/data/` check never matched and the data prefix was left intact. The resulting pathname flowed back into `routeInfo.resolvedAs`, and on catch-all routes the route regex matched it and overwrote `router.query.` with the data-URL segments. The original ternary at this call site (added in #48753) was there to avoid stripping the locale prefix, since `resolveRewrites` needs `as` to keep its locale prefix to match locale-aware rewrite sources. Disabling all of `nextConfig` was too coarse and broke basePath stripping in the process. The fix passes a partial config with only `basePath` and `trailingSlash`, which keeps the locale prefix intact while still letting `getNextPathnameInfo` strip basePath before the data-prefix check. The new `test/e2e/middleware-dynamic-basepath-matcher-rewrites/` fixture is the catch-all + basePath + rewrites + middleware variant of `test/e2e/middleware-dynamic-basepath-matcher/` (#48753's regression test), and asserts that `router.query.path` is preserved across a client-side `Link` navigation. --- packages/next/src/shared/lib/router/router.ts | 11 ++++++++--- ...-dynamic-basepath-matcher-rewrites.test.ts | 19 +++++++++++++++++++ .../middleware.js | 9 +++++++++ .../next.config.js | 8 ++++++++ .../pages/[...path].tsx | 15 +++++++++++++++ .../pages/index.tsx | 9 +++++++++ 6 files changed, 68 insertions(+), 3 deletions(-) create mode 100644 test/e2e/middleware-dynamic-basepath-matcher-rewrites/middleware-dynamic-basepath-matcher-rewrites.test.ts create mode 100644 test/e2e/middleware-dynamic-basepath-matcher-rewrites/middleware.js create mode 100644 test/e2e/middleware-dynamic-basepath-matcher-rewrites/next.config.js create mode 100644 test/e2e/middleware-dynamic-basepath-matcher-rewrites/pages/[...path].tsx create mode 100644 test/e2e/middleware-dynamic-basepath-matcher-rewrites/pages/index.tsx diff --git a/packages/next/src/shared/lib/router/router.ts b/packages/next/src/shared/lib/router/router.ts index 088c34aa1d7a..a164d6c63d5f 100644 --- a/packages/next/src/shared/lib/router/router.ts +++ b/packages/next/src/shared/lib/router/router.ts @@ -227,9 +227,14 @@ function getMiddlewareData( const parsedSource = getNextPathnameInfo( parseRelativeUrl(source).pathname, { - nextConfig: process.env.__NEXT_HAS_REWRITES - ? undefined - : nextConfig, + // Pass basePath (and trailingSlash) so the basePath prefix is + // stripped before the `_next/data/` check, but omit `i18n` so the + // locale prefix is preserved here — the rewrite resolver below + // handles the locale-prefixed `as`. + nextConfig: { + basePath: nextConfig.basePath, + trailingSlash: nextConfig.trailingSlash, + }, parseData: true, } ) diff --git a/test/e2e/middleware-dynamic-basepath-matcher-rewrites/middleware-dynamic-basepath-matcher-rewrites.test.ts b/test/e2e/middleware-dynamic-basepath-matcher-rewrites/middleware-dynamic-basepath-matcher-rewrites.test.ts new file mode 100644 index 000000000000..93b0863623ea --- /dev/null +++ b/test/e2e/middleware-dynamic-basepath-matcher-rewrites/middleware-dynamic-basepath-matcher-rewrites.test.ts @@ -0,0 +1,19 @@ +import { nextTestSetup } from 'e2e-utils' +import { retry } from 'next-test-utils' + +describe('middleware-dynamic-basepath-matcher-rewrites', () => { + const { next } = nextTestSetup({ + files: __dirname, + }) + + it('preserves router.query on client-side navigation to a catch-all page', async () => { + const browser = await next.browser('/docs') + await browser.elementById('catchall-link').click() + + await retry(async () => { + expect(await browser.elementById('page-title').text()).toBe('CatchAll') + }) + + expect(await browser.elementById('query-path').text()).toBe('["first"]') + }) +}) diff --git a/test/e2e/middleware-dynamic-basepath-matcher-rewrites/middleware.js b/test/e2e/middleware-dynamic-basepath-matcher-rewrites/middleware.js new file mode 100644 index 000000000000..9702fc711463 --- /dev/null +++ b/test/e2e/middleware-dynamic-basepath-matcher-rewrites/middleware.js @@ -0,0 +1,9 @@ +import { NextResponse } from 'next/server' + +export default function middleware() { + return NextResponse.next() +} + +export const config = { + matcher: '/:path*', +} diff --git a/test/e2e/middleware-dynamic-basepath-matcher-rewrites/next.config.js b/test/e2e/middleware-dynamic-basepath-matcher-rewrites/next.config.js new file mode 100644 index 000000000000..74a5f22a11d9 --- /dev/null +++ b/test/e2e/middleware-dynamic-basepath-matcher-rewrites/next.config.js @@ -0,0 +1,8 @@ +module.exports = { + basePath: '/docs', + async rewrites() { + // Any non-empty rewrites array sets __NEXT_HAS_REWRITES=true; this entry + // only exists to flip that build flag, it isn't expected to match. + return [{ source: '/never-matched-rewrite', destination: '/never' }] + }, +} diff --git a/test/e2e/middleware-dynamic-basepath-matcher-rewrites/pages/[...path].tsx b/test/e2e/middleware-dynamic-basepath-matcher-rewrites/pages/[...path].tsx new file mode 100644 index 000000000000..3d25ccc901ff --- /dev/null +++ b/test/e2e/middleware-dynamic-basepath-matcher-rewrites/pages/[...path].tsx @@ -0,0 +1,15 @@ +import { useRouter } from 'next/router' + +export default function CatchAll() { + const router = useRouter() + return ( +
+

CatchAll

+

{JSON.stringify(router.query.path)}

+
+ ) +} + +export async function getServerSideProps() { + return { props: {} } +} diff --git a/test/e2e/middleware-dynamic-basepath-matcher-rewrites/pages/index.tsx b/test/e2e/middleware-dynamic-basepath-matcher-rewrites/pages/index.tsx new file mode 100644 index 000000000000..de044e9c8068 --- /dev/null +++ b/test/e2e/middleware-dynamic-basepath-matcher-rewrites/pages/index.tsx @@ -0,0 +1,9 @@ +import Link from 'next/link' + +export default function Home() { + return ( + + Go to catchall + + ) +} From f3458b86a69272120b9d6357450617ac7b635724 Mon Sep 17 00:00:00 2001 From: Janka Uryga Date: Wed, 13 May 2026 15:14:32 +0200 Subject: [PATCH 07/12] fix: GNU xargs warns about incompatible --replace/--max-args (#93821) we were invoking ``` xargs --null -n1 -I'{}' ... ``` to tell xargs that we want to: - use 1 argument per invocation (`-n1`) - `{}` is the placeholder (`-I'{}'`) but it seems like `-I'{}'` already implies `-n1`. BSD xargs doesn't care, but GNU xargs warns about it, so we get this in CI (e.g. [here](https://github.com/vercel/next.js/actions/runs/25789455488/job/75751231855?pr=93801#step:36:54)): ``` xargs: warning: options --max-args and --replace/-I/-i are mutually exclusive, ignoring previous --max-args value ``` seems like both GNU and BSD xargs are happy if we just drop the `-n1` and only use `-I{}`. --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index b14702305a5c..5fb5e1c05fcd 100644 --- a/package.json +++ b/package.json @@ -64,7 +64,7 @@ "lint-ast-grep": "ast-grep scan", "lint-no-typescript": "cross-env NODE_OPTIONS=\"--max-old-space-size=8192\" run-p prettier-check \"lint-eslint .\" lint-language", "types-and-precompiled": "run-p \"lint-typescript --log-order=stream\" check-compiler-fixtures types:test-lib && pnpm check-precompiled", - "check-compiler-fixtures": "find crates/next-custom-transforms/tests/fixture -type f -name 'tsconfig.json' -print0 | xargs --null -n1 -I'{}' pnpm tsc --noEmit --project '{}'", + "check-compiler-fixtures": "find crates/next-custom-transforms/tests/fixture -type f -name 'tsconfig.json' -print0 | xargs --null -I'{}' pnpm tsc --noEmit --project '{}'", "validate-externals-doc": "node ./scripts/validate-externals-doc.js", "check-unused-turbo-tasks": "node scripts/check-unused-turbo-tasks.mjs", "lint": "run-p test-types lint-typescript prettier-check \"lint-eslint .\" lint-ast-grep lint-language check-unused-turbo-tasks", From 23ccbaae2faa4a58edeb42f46adedf7026922880 Mon Sep 17 00:00:00 2001 From: Janka Uryga Date: Wed, 13 May 2026 15:24:11 +0200 Subject: [PATCH 08/12] fix: renumber non-sequential errors in errors.json (#93824) yesterday, PR #93399 introduced some non-sequential codes into `errors.json`, which seems to mess with `scripts/merge-errors-json`, the script responsible for automatically re-numbering error codes to fix conflicts. i can fix the script later but for now as a workaround let's just fix the error codes manually --- packages/next/errors.json | 22 ++++---- .../cache-components-dev-errors.test.ts | 4 +- .../cache-components-errors.test.ts | 52 +++++++++---------- .../instant-validation.test.ts | 10 ++-- 4 files changed, 44 insertions(+), 44 deletions(-) diff --git a/packages/next/errors.json b/packages/next/errors.json index fc31027235c6..bdad3454f4ec 100644 --- a/packages/next/errors.json +++ b/packages/next/errors.json @@ -1230,15 +1230,15 @@ "1229": "Route \"%s\": Next.js encountered uncached or runtime data in \\`generateMetadata()\\`.\\n\\nThis route's metadata is blocked, but the rest of its content can be prerendered.\\n\\nWays to fix this:\\n - Use a static metadata export instead of \\`generateMetadata()\\`\\n - Cache the metadata with \\`\"use cache\"\\` in \\`generateMetadata()\\`\\n - Add a dynamic data access (e.g. \\`await connection()\\`) to the page to render it at request time\\n\\nLearn more: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata", "1230": "Route \"%s\": Next.js encountered runtime data in \\`generateMetadata()\\`.\\n\\nThis route's metadata is blocked, but the rest of its content can be prerendered. \\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` accessed in \\`generateMetadata()\\` cause it to run dynamically.\\n\\nWays to fix this:\\n - Use a static metadata export instead of \\`generateMetadata()\\`\\n - Add a dynamic data access (e.g. \\`await connection()\\`) to the page to render it at request time\\n\\nLearn more: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata", "1231": "Route \"%s\": Next.js encountered uncached data in \\`generateMetadata()\\`.\\n\\nThis route's metadata is blocked, but the rest of its content can be prerendered. \\`fetch(...)\\` or \\`connection()\\` accessed in \\`generateMetadata()\\` cause it to run dynamically.\\n\\nWays to fix this:\\n - Cache the metadata with \\`\"use cache\"\\` in \\`generateMetadata()\\`\\n - Add a dynamic data access (e.g. \\`await connection()\\`) to the page to render it at request time\\n\\nLearn more: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata", - "1235": "unreachable sort key: %s", - "1236": "Expected '%s' after entry name in %s at offset %s, got %s.", - "1237": "Could not find 'globalThis.__RSC_MANIFEST[' in %s; client reference manifest format may have changed.", - "1238": "Unterminated entry-name string literal in %s.", - "1239": "Failed to parse JSON body of %s: %s", - "1240": "Expected '{' after 'globalThis.__RSC_MANIFEST[...] =' in %s at offset %s, got %s.", - "1241": "Expected string literal as entry name in %s at offset %s, got %s.", - "1242": "Unterminated JSON object in %s.", - "1244": "Route \"%s\": Next.js encountered %s during the initial render.\\n\\nThis value must either be prerendered or computed per request.\\n\\nWays to fix this:\\n - Render at request time by adding a dynamic data access (e.g. \\`await connection()\\`) before this call\\n - Prerender and cache the value with \\`\"use cache\"\\`\\n - Render the value on the client with \\`\"use client\"\\`\\n%s\\nLearn more: %s", - "1245": "Route \"%s\": Next.js encountered %s in a Client Component.\\n\\nThis value would be evaluated during the prerender and fixed at build time, instead of recomputed on each visit.\\n\\nWays to fix this:\\n - Wrap the Client Component in \\`\\`\\n - Move the read into a \\`useEffect\\` or event handler\\n\\nLearn more: %s", - "1247": "Route \"%s\": Next.js encountered %s without an explicit rendering intent.\\n\\nThis value can change between renders, so it must be either prerendered or computed later.\\n\\nWays to fix this:\\n - Render at request time by adding a dynamic data access (e.g. \\`await connection()\\`) before this call\\n - Prerender and cache the value with \\`\"use cache\"\\`\\n - Render the value on the client with \\`\"use client\"\\`\\n%s\\nLearn more: %s" + "1232": "unreachable sort key: %s", + "1233": "Expected '%s' after entry name in %s at offset %s, got %s.", + "1234": "Could not find 'globalThis.__RSC_MANIFEST[' in %s; client reference manifest format may have changed.", + "1235": "Unterminated entry-name string literal in %s.", + "1236": "Failed to parse JSON body of %s: %s", + "1237": "Expected '{' after 'globalThis.__RSC_MANIFEST[...] =' in %s at offset %s, got %s.", + "1238": "Expected string literal as entry name in %s at offset %s, got %s.", + "1239": "Unterminated JSON object in %s.", + "1240": "Route \"%s\": Next.js encountered %s during the initial render.\\n\\nThis value must either be prerendered or computed per request.\\n\\nWays to fix this:\\n - Render at request time by adding a dynamic data access (e.g. \\`await connection()\\`) before this call\\n - Prerender and cache the value with \\`\"use cache\"\\`\\n - Render the value on the client with \\`\"use client\"\\`\\n%s\\nLearn more: %s", + "1241": "Route \"%s\": Next.js encountered %s in a Client Component.\\n\\nThis value would be evaluated during the prerender and fixed at build time, instead of recomputed on each visit.\\n\\nWays to fix this:\\n - Wrap the Client Component in \\`\\`\\n - Move the read into a \\`useEffect\\` or event handler\\n\\nLearn more: %s", + "1242": "Route \"%s\": Next.js encountered %s without an explicit rendering intent.\\n\\nThis value can change between renders, so it must be either prerendered or computed later.\\n\\nWays to fix this:\\n - Render at request time by adding a dynamic data access (e.g. \\`await connection()\\`) before this call\\n - Prerender and cache the value with \\`\"use cache\"\\`\\n - Render the value on the client with \\`\"use client\"\\`\\n%s\\nLearn more: %s" } diff --git a/test/development/app-dir/cache-components-dev-errors/cache-components-dev-errors.test.ts b/test/development/app-dir/cache-components-dev-errors/cache-components-dev-errors.test.ts index 7de312c56f07..b5125ab89b32 100644 --- a/test/development/app-dir/cache-components-dev-errors/cache-components-dev-errors.test.ts +++ b/test/development/app-dir/cache-components-dev-errors/cache-components-dev-errors.test.ts @@ -21,7 +21,7 @@ describe('Cache Components Dev Errors', () => { // soft-navigating to the page (see test below). await expect(browser).toDisplayCollapsedRedbox(` { - "code": "E1247", + "code": "E1242", "description": "Next.js encountered Math.random() without an explicit rendering intent.", "environmentLabel": "Server", "label": "Instant", @@ -51,7 +51,7 @@ describe('Cache Components Dev Errors', () => { // TODO: React should not include the anon stack in the Owner Stack. await expect(browser).toDisplayCollapsedRedbox(` { - "code": "E1247", + "code": "E1242", "description": "Next.js encountered Math.random() without an explicit rendering intent.", "environmentLabel": "Server", "label": "Instant", diff --git a/test/e2e/app-dir/cache-components-errors/cache-components-errors.test.ts b/test/e2e/app-dir/cache-components-errors/cache-components-errors.test.ts index 7190fb64ccd6..6edbf8f95088 100644 --- a/test/e2e/app-dir/cache-components-errors/cache-components-errors.test.ts +++ b/test/e2e/app-dir/cache-components-errors/cache-components-errors.test.ts @@ -1093,7 +1093,7 @@ describe('Cache Components Errors', () => { await expect(browser).toDisplayCollapsedRedbox(` { - "code": "E1247", + "code": "E1242", "description": "Next.js encountered Math.random() without an explicit rendering intent.", "environmentLabel": "Server", "label": "Instant", @@ -1241,7 +1241,7 @@ describe('Cache Components Errors', () => { await expect(browser).toDisplayCollapsedRedbox(` { - "code": "E1247", + "code": "E1242", "description": "Next.js encountered Math.random() without an explicit rendering intent.", "environmentLabel": "Server", "label": "Instant", @@ -4841,7 +4841,7 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` await expect(browser).toDisplayCollapsedRedbox(` { - "code": "E1247", + "code": "E1242", "description": "Next.js encountered Date.now() without an explicit rendering intent.", "environmentLabel": "Server", "label": "Instant", @@ -4986,7 +4986,7 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` await expect(browser).toDisplayCollapsedRedbox(` { - "code": "E1247", + "code": "E1242", "description": "Next.js encountered Date.now() without an explicit rendering intent.", "environmentLabel": "Server", "label": "Instant", @@ -5131,7 +5131,7 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` await expect(browser).toDisplayCollapsedRedbox(` { - "code": "E1247", + "code": "E1242", "description": "Next.js encountered Date.now() without an explicit rendering intent.", "environmentLabel": "Server", "label": "Instant", @@ -5276,7 +5276,7 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` await expect(browser).toDisplayCollapsedRedbox(` { - "code": "E1247", + "code": "E1242", "description": "Next.js encountered Math.random() without an explicit rendering intent.", "environmentLabel": "Server", "label": "Instant", @@ -5417,7 +5417,7 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` await expect(browser).toDisplayCollapsedRedbox(` { - "code": "E1247", + "code": "E1242", "description": "Next.js encountered crypto.getRandomValues() without an explicit rendering intent.", "environmentLabel": "Server", "label": "Instant", @@ -5561,7 +5561,7 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` await expect(browser).toDisplayCollapsedRedbox(` { - "code": "E1247", + "code": "E1242", "description": "Next.js encountered crypto.randomUUID() without an explicit rendering intent.", "environmentLabel": "Server", "label": "Instant", @@ -5703,7 +5703,7 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` if (isTurbopack) { await expect(browser).toDisplayCollapsedRedbox(` { - "code": "E1247", + "code": "E1242", "description": "Next.js encountered require('node:crypto').generateKeyPairSync(...) without an explicit rendering intent.", "environmentLabel": "Server", "label": "Instant", @@ -5719,7 +5719,7 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` } else { await expect(browser).toDisplayCollapsedRedbox(` { - "code": "E1247", + "code": "E1242", "description": "Next.js encountered require('node:crypto').generateKeyPairSync(...) without an explicit rendering intent.", "environmentLabel": "Server", "label": "Instant", @@ -5865,7 +5865,7 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` if (isTurbopack) { await expect(browser).toDisplayCollapsedRedbox(` { - "code": "E1247", + "code": "E1242", "description": "Next.js encountered require('node:crypto').generateKeySync(...) without an explicit rendering intent.", "environmentLabel": "Server", "label": "Instant", @@ -5881,7 +5881,7 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` } else { await expect(browser).toDisplayCollapsedRedbox(` { - "code": "E1247", + "code": "E1242", "description": "Next.js encountered require('node:crypto').generateKeySync(...) without an explicit rendering intent.", "environmentLabel": "Server", "label": "Instant", @@ -6027,7 +6027,7 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` if (isTurbopack) { await expect(browser).toDisplayCollapsedRedbox(` { - "code": "E1247", + "code": "E1242", "description": "Next.js encountered require('node:crypto').generatePrimeSync(...) without an explicit rendering intent.", "environmentLabel": "Server", "label": "Instant", @@ -6043,7 +6043,7 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` } else { await expect(browser).toDisplayCollapsedRedbox(` { - "code": "E1247", + "code": "E1242", "description": "Next.js encountered require('node:crypto').generatePrimeSync(...) without an explicit rendering intent.", "environmentLabel": "Server", "label": "Instant", @@ -6189,7 +6189,7 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` if (isTurbopack) { await expect(browser).toDisplayCollapsedRedbox(` { - "code": "E1247", + "code": "E1242", "description": "Next.js encountered crypto.getRandomValues() without an explicit rendering intent.", "environmentLabel": "Server", "label": "Instant", @@ -6205,7 +6205,7 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` } else { await expect(browser).toDisplayCollapsedRedbox(` { - "code": "E1247", + "code": "E1242", "description": "Next.js encountered crypto.getRandomValues() without an explicit rendering intent.", "environmentLabel": "Server", "label": "Instant", @@ -6351,7 +6351,7 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` if (isTurbopack) { await expect(browser).toDisplayCollapsedRedbox(` { - "code": "E1247", + "code": "E1242", "description": "Next.js encountered require('node:crypto').randomBytes(size) without an explicit rendering intent.", "environmentLabel": "Server", "label": "Instant", @@ -6367,7 +6367,7 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` } else { await expect(browser).toDisplayCollapsedRedbox(` { - "code": "E1247", + "code": "E1242", "description": "Next.js encountered require('node:crypto').randomBytes(size) without an explicit rendering intent.", "environmentLabel": "Server", "label": "Instant", @@ -6513,7 +6513,7 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` if (isTurbopack) { await expect(browser).toDisplayCollapsedRedbox(` { - "code": "E1247", + "code": "E1242", "description": "Next.js encountered require('node:crypto').randomFillSync(...) without an explicit rendering intent.", "environmentLabel": "Server", "label": "Instant", @@ -6529,7 +6529,7 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` } else { await expect(browser).toDisplayCollapsedRedbox(` { - "code": "E1247", + "code": "E1242", "description": "Next.js encountered require('node:crypto').randomFillSync(...) without an explicit rendering intent.", "environmentLabel": "Server", "label": "Instant", @@ -6675,7 +6675,7 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` if (isTurbopack) { await expect(browser).toDisplayCollapsedRedbox(` { - "code": "E1247", + "code": "E1242", "description": "Next.js encountered require('node:crypto').randomInt(min, max) without an explicit rendering intent.", "environmentLabel": "Server", "label": "Instant", @@ -6691,7 +6691,7 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` } else { await expect(browser).toDisplayCollapsedRedbox(` { - "code": "E1247", + "code": "E1242", "description": "Next.js encountered require('node:crypto').randomInt(min, max) without an explicit rendering intent.", "environmentLabel": "Server", "label": "Instant", @@ -6837,7 +6837,7 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` if (isTurbopack) { await expect(browser).toDisplayCollapsedRedbox(` { - "code": "E1247", + "code": "E1242", "description": "Next.js encountered require('node:crypto').randomInt(min, max) without an explicit rendering intent.", "environmentLabel": "Server", "label": "Instant", @@ -6853,7 +6853,7 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` } else { await expect(browser).toDisplayCollapsedRedbox(` { - "code": "E1247", + "code": "E1242", "description": "Next.js encountered require('node:crypto').randomInt(min, max) without an explicit rendering intent.", "environmentLabel": "Server", "label": "Instant", @@ -6999,7 +6999,7 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` if (isTurbopack) { await expect(browser).toDisplayCollapsedRedbox(` { - "code": "E1247", + "code": "E1242", "description": "Next.js encountered require('node:crypto').randomUUID() without an explicit rendering intent.", "environmentLabel": "Server", "label": "Instant", @@ -7015,7 +7015,7 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` } else { await expect(browser).toDisplayCollapsedRedbox(` { - "code": "E1247", + "code": "E1242", "description": "Next.js encountered require('node:crypto').randomUUID() without an explicit rendering intent.", "environmentLabel": "Server", "label": "Instant", diff --git a/test/e2e/app-dir/instant-validation/instant-validation.test.ts b/test/e2e/app-dir/instant-validation/instant-validation.test.ts index 17ad0f77d8a2..ab37c9562d47 100644 --- a/test/e2e/app-dir/instant-validation/instant-validation.test.ts +++ b/test/e2e/app-dir/instant-validation/instant-validation.test.ts @@ -744,7 +744,7 @@ describe('instant validation', () => { ) await expect(browser).toDisplayCollapsedRedbox(` { - "code": "E1247", + "code": "E1242", "description": "Next.js encountered Date.now() without an explicit rendering intent.", "environmentLabel": "Server", "label": "Instant", @@ -822,7 +822,7 @@ describe('instant validation', () => { ) await expect(browser).toDisplayCollapsedRedbox(` { - "code": "E1247", + "code": "E1242", "description": "Next.js encountered Date.now() without an explicit rendering intent.", "environmentLabel": "Server", "label": "Instant", @@ -925,7 +925,7 @@ describe('instant validation', () => { ) await expect(browser).toDisplayCollapsedRedbox(` { - "code": "E1247", + "code": "E1242", "description": "Next.js encountered Date.now() without an explicit rendering intent.", "environmentLabel": "Server", "label": "Instant", @@ -993,7 +993,7 @@ describe('instant validation', () => { ) await expect(browser).toDisplayCollapsedRedbox(` { - "code": "E1247", + "code": "E1242", "description": "Next.js encountered Date.now() without an explicit rendering intent.", "environmentLabel": "Server", "label": "Instant", @@ -1089,7 +1089,7 @@ describe('instant validation', () => { ) await expect(browser).toDisplayCollapsedRedbox(` { - "code": "E1247", + "code": "E1242", "description": "Next.js encountered Date.now() without an explicit rendering intent.", "environmentLabel": "Server", "label": "Instant", From ee6cf0c54e20951fdb5ae84a9246f564ab3d9325 Mon Sep 17 00:00:00 2001 From: Luke Sandberg Date: Wed, 13 May 2026 07:25:22 -0700 Subject: [PATCH 09/12] simplify session dependent tasks (#91729) (#93227) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit ## Summary This is a re-application of #91729 without the TTL support (fetch `Cache-Control` and `TransientState` changes are excluded). ### Make `session_dependent` a function attribute Previously, tasks called `mark_session_dependent()` at runtime to flag themselves. This PR makes it a compile-time `#[turbo_tasks::function(session_dependent)]` attribute instead. Benefits: - **Enables eager aggregation number selection**: Session-dependent tasks change on every session restore, behaving like dirty leaf nodes. By knowing at task creation time (not mid-execution) that a task is session-dependent, the backend can assign a high initial aggregation number, preventing long dirty-propagation chains through intermediate aggregated nodes. - **Simpler API**: No runtime `mark_session_dependent()` call needed — the attribute is declarative and statically checked. - Removes `mark_session_dependent()`, `mark_own_task_as_session_dependent()`, and the `session_dependent` field from `InProgressStateInner`. The backend now reads `is_session_dependent` directly from the `NativeFunction` metadata via `TaskGuard::is_session_dependent()`. ## Test Plan - Existing tests continue to pass - `cargo check -p turbo-tasks -p turbo-tasks-backend -p turbo-tasks-fetch` ## Why was #91729 reverted? The original attempt seemed to be triggering OOMs on front. Through debugging there were no obvious ways in which it was tied to this change but rather due to invalidation races which motivated changes like #92389 to remove races from restore paths and #92814 which eliminated some expensive errors from eventually consistent executions. --- .../turbo-tasks-backend/src/backend/mod.rs | 120 ++++++------------ .../src/backend/operation/mod.rs | 1 + .../crates/turbo-tasks-backend/src/data.rs | 1 - .../tests/emptied_cells_session_dependent.rs | 5 +- .../turbo-tasks-env/src/command_line.rs | 5 +- .../crates/turbo-tasks-fetch/src/client.rs | 9 +- turbopack/crates/turbo-tasks-fs/src/lib.rs | 26 ++-- .../fail_attribute_invalid_args.stderr | 2 +- ...ttribute_invalid_args_inherent_impl.stderr | 2 +- .../crates/turbo-tasks-macros/src/func.rs | 12 +- .../turbo-tasks-macros/src/function_macro.rs | 2 + .../src/value_impl_macro.rs | 4 + .../src/value_trait_macro.rs | 5 +- .../crates/turbo-tasks-testing/src/lib.rs | 4 - turbopack/crates/turbo-tasks/function.md | 72 +++++++++++ turbopack/crates/turbo-tasks/src/backend.rs | 10 +- .../crates/turbo-tasks/src/completion.rs | 8 ++ .../crates/turbo-tasks/src/invalidation.rs | 4 +- turbopack/crates/turbo-tasks/src/lib.rs | 4 +- turbopack/crates/turbo-tasks/src/manager.rs | 12 -- .../crates/turbo-tasks/src/native_function.rs | 8 ++ .../crates/turbopack-node/src/evaluate.rs | 7 +- 22 files changed, 180 insertions(+), 143 deletions(-) diff --git a/turbopack/crates/turbo-tasks-backend/src/backend/mod.rs b/turbopack/crates/turbo-tasks-backend/src/backend/mod.rs index 1cf69b33bf8c..b940c7d4f418 100644 --- a/turbopack/crates/turbo-tasks-backend/src/backend/mod.rs +++ b/turbopack/crates/turbo-tasks-backend/src/backend/mod.rs @@ -60,7 +60,7 @@ use crate::{ operation::{ AggregationUpdateJob, AggregationUpdateQueue, ChildExecuteContext, CleanupOldEdgesOperation, ConnectChildOperation, ExecuteContext, ExecuteContextImpl, - LeafDistanceUpdateQueue, Operation, OutdatedEdge, TaskGuard, TaskType, + LeafDistanceUpdateQueue, Operation, OutdatedEdge, TaskGuard, TaskType, TaskTypeRef, connect_children, get_aggregation_number, get_uppers, make_task_dirty_internal, prepare_new_children, }, @@ -427,23 +427,11 @@ struct TaskExecutionCompletePrepareResult { pub new_output: Option, pub output_dependent_tasks: SmallVec<[TaskId; 4]>, pub is_recomputation: bool, + pub is_session_dependent: bool, } // Operations impl TurboTasksBackendInner { - fn connect_child( - &self, - parent_task: Option, - child_task: TaskId, - turbo_tasks: &dyn TurboTasksBackendApi>, - ) { - operation::ConnectChildOperation::run( - parent_task, - child_task, - self.execute_context(turbo_tasks), - ); - } - fn try_read_task_output( self: &Arc, task_id: TaskId, @@ -1491,6 +1479,7 @@ impl TurboTasksBackendInner { // memory lookup on the miss path). let shard = get_shard(&self.storage.task_cache, hash); + let mut ctx = self.execute_context(turbo_tasks); // Step 1: Fast read-only cache lookup (read lock, no allocation). // Use a read lock rather than a write lock to avoid contention. connect_child // may re-enter task_cache with a write lock, so we must not hold a write lock here. @@ -1498,14 +1487,11 @@ impl TurboTasksBackendInner { raw_get_in_shard(shard, hash, |k| k.eq_components(native_fn, this, arg_ref)) { self.track_cache_hit_by_fn(native_fn); - self.connect_child(parent_task, task_id, turbo_tasks); + operation::ConnectChildOperation::run(parent_task, task_id, ctx); return task_id; } // Step 2: Check backing storage using borrowed components (no box needed yet). - let mut ctx = self.execute_context(turbo_tasks); - - let mut is_new = false; // Task exists in backing storage. // We only need to insert it into the in-memory cache. @@ -1558,23 +1544,35 @@ impl TurboTasksBackendInner { // insert() consumes e, releasing the shard write lock. e.insert(task_type, task_id); self.track_cache_miss_by_fn(native_fn); - is_new = true; + // Update the aggregation number before connecting the child + // We don't need this on any of the task recovery paths above because the + // aggregation number will already be set. + if is_root { + AggregationUpdateQueue::run( + AggregationUpdateJob::UpdateAggregationNumber { + task_id, + base_aggregation_number: u32::MAX, + distance: None, + }, + &mut ctx, + ); + } else if native_fn.is_session_dependent && self.should_track_dependencies() { + const SESSION_DEPENDENT_AGGREGATION_NUMBER: u32 = u32::MAX >> 2; + AggregationUpdateQueue::run( + AggregationUpdateJob::UpdateAggregationNumber { + task_id, + base_aggregation_number: SESSION_DEPENDENT_AGGREGATION_NUMBER, + distance: None, + }, + &mut ctx, + ); + }; + task_id } } }; - if is_new && is_root { - AggregationUpdateQueue::run( - AggregationUpdateJob::UpdateAggregationNumber { - task_id, - base_aggregation_number: u32::MAX, - distance: None, - }, - &mut ctx, - ); - } - operation::ConnectChildOperation::run(parent_task, task_id, ctx); task_id @@ -1844,7 +1842,6 @@ impl TurboTasksBackendInner { stale: false, once_task, done_event, - session_dependent: false, marked_as_completed: false, new_children: Default::default(), }, @@ -1975,6 +1972,7 @@ impl TurboTasksBackendInner { new_output, output_dependent_tasks, is_recomputation, + is_session_dependent, } = match self.task_execution_completed_prepare( &mut ctx, #[cfg(feature = "trace_task_details")] @@ -2036,6 +2034,7 @@ impl TurboTasksBackendInner { no_output_set, new_output, is_now_immutable, + is_session_dependent, ); if let Some(stale_priority) = stale_priority { // Task was stale and has been rescheduled @@ -2071,6 +2070,10 @@ impl TurboTasksBackendInner { ) -> Result { let mut task = ctx.task(task_id, TaskDataCategory::All); let is_recomputation = task.is_dirty().is_none(); + // Without dependency tracking, the SessionDependent dirty state is never read (no session + // restore), so skip the work + let is_session_dependent = self.should_track_dependencies() + && matches!(task.get_task_type(), TaskTypeRef::Cached(tt) if tt.native_fn.is_session_dependent); let Some(in_progress) = task.get_in_progress_mut() else { panic!("Task execution completed, but task is not in progress: {task:#?}"); }; @@ -2083,12 +2086,12 @@ impl TurboTasksBackendInner { new_output: None, output_dependent_tasks: Default::default(), is_recomputation, + is_session_dependent, }); } let &mut InProgressState::InProgress(box InProgressStateInner { stale, ref mut new_children, - session_dependent, once_task: is_once_task, .. }) = in_progress @@ -2185,7 +2188,7 @@ impl TurboTasksBackendInner { // Task was previously marked as immutable if !is_immutable // Task is not session dependent (session dependent tasks can change between sessions) - && !session_dependent + && !is_session_dependent // Task has no invalidator && !task.invalidator() // Task has no dependencies on collectibles @@ -2332,6 +2335,7 @@ impl TurboTasksBackendInner { new_output, output_dependent_tasks, is_recomputation, + is_session_dependent, }) } @@ -2557,6 +2561,7 @@ impl TurboTasksBackendInner { #[cfg(feature = "verify_determinism")] no_output_set: bool, new_output: Option, is_now_immutable: bool, + is_session_dependent: bool, ) -> ( Option, Option< @@ -2575,7 +2580,6 @@ impl TurboTasksBackendInner { done_event, once_task: is_once_task, stale, - session_dependent, marked_as_completed: _, new_children, }) = in_progress @@ -2615,8 +2619,8 @@ impl TurboTasksBackendInner { } } - // Compute the new dirty state - let new_dirtyness = if session_dependent { + // Compute and apply the new dirty state, propagating to aggregating ancestors + let new_dirtyness = if is_session_dependent { Some(Dirtyness::SessionDependent) } else { None @@ -3066,42 +3070,6 @@ impl TurboTasksBackendInner { ); } - fn mark_own_task_as_session_dependent( - &self, - task_id: TaskId, - turbo_tasks: &dyn TurboTasksBackendApi>, - ) { - if !self.should_track_dependencies() { - // Without dependency tracking we don't need session dependent tasks - return; - } - const SESSION_DEPENDENT_AGGREGATION_NUMBER: u32 = u32::MAX >> 2; - let mut ctx = self.execute_context(turbo_tasks); - let mut task = ctx.task(task_id, TaskDataCategory::Meta); - let aggregation_number = get_aggregation_number(&task); - if aggregation_number < SESSION_DEPENDENT_AGGREGATION_NUMBER { - drop(task); - // We want to use a high aggregation number to avoid large aggregation chains for - // session dependent tasks (which change on every run) - AggregationUpdateQueue::run( - AggregationUpdateJob::UpdateAggregationNumber { - task_id, - base_aggregation_number: SESSION_DEPENDENT_AGGREGATION_NUMBER, - distance: None, - }, - &mut ctx, - ); - task = ctx.task(task_id, TaskDataCategory::Meta); - } - if let Some(InProgressState::InProgress(box InProgressStateInner { - session_dependent, - .. - })) = task.get_in_progress_mut() - { - *session_dependent = true; - } - } - fn mark_own_task_as_finished( &self, task: TaskId, @@ -3627,14 +3595,6 @@ impl Backend for TurboTasksBackend { self.0.mark_own_task_as_finished(task_id, turbo_tasks); } - fn mark_own_task_as_session_dependent( - &self, - task: TaskId, - turbo_tasks: &dyn TurboTasksBackendApi, - ) { - self.0.mark_own_task_as_session_dependent(task, turbo_tasks); - } - fn connect_task( &self, task: TaskId, diff --git a/turbopack/crates/turbo-tasks-backend/src/backend/operation/mod.rs b/turbopack/crates/turbo-tasks-backend/src/backend/operation/mod.rs index 88146497c21f..9f46eec53cb8 100644 --- a/turbopack/crates/turbo-tasks-backend/src/backend/operation/mod.rs +++ b/turbopack/crates/turbo-tasks-backend/src/backend/operation/mod.rs @@ -1299,6 +1299,7 @@ pub trait TaskGuard: Debug + TaskStorageAccessors { panic!("Every task must have a task type {self:?}"); } } + fn get_task_desc_fn(&self) -> impl Fn() -> String + Send + Sync + 'static { let task_type = self.get_task_type().to_owned(); let task_id = self.id(); diff --git a/turbopack/crates/turbo-tasks-backend/src/data.rs b/turbopack/crates/turbo-tasks-backend/src/data.rs index b50ffdb97edc..0332e0e559d5 100644 --- a/turbopack/crates/turbo-tasks-backend/src/data.rs +++ b/turbopack/crates/turbo-tasks-backend/src/data.rs @@ -238,7 +238,6 @@ pub struct InProgressStateInner { pub stale: bool, #[allow(dead_code)] pub once_task: bool, - pub session_dependent: bool, /// Early marking as completed. This is set before the output is available and will ignore full /// task completion of the task for strongly consistent reads. pub marked_as_completed: bool, diff --git a/turbopack/crates/turbo-tasks-backend/tests/emptied_cells_session_dependent.rs b/turbopack/crates/turbo-tasks-backend/tests/emptied_cells_session_dependent.rs index aa5266bff16c..3630de941c65 100644 --- a/turbopack/crates/turbo-tasks-backend/tests/emptied_cells_session_dependent.rs +++ b/turbopack/crates/turbo-tasks-backend/tests/emptied_cells_session_dependent.rs @@ -3,7 +3,7 @@ #![allow(clippy::needless_return)] // tokio macro-generated code doesn't respect this use anyhow::Result; -use turbo_tasks::{ResolvedVc, State, Vc, mark_session_dependent}; +use turbo_tasks::{ResolvedVc, State, Vc}; use turbo_tasks_testing::{Registration, register, run}; static REGISTRATION: Registration = register!(); @@ -76,9 +76,8 @@ async fn inner_compute(input: Vc) -> Result> { Ok(last.unwrap()) } -#[turbo_tasks::function] +#[turbo_tasks::function(session_dependent)] async fn compute2(input: Vc) -> Result> { - mark_session_dependent(); println!("compute2()"); let value = *input.await?; Ok(Vc::cell(value)) diff --git a/turbopack/crates/turbo-tasks-env/src/command_line.rs b/turbopack/crates/turbo-tasks-env/src/command_line.rs index 000018c329a4..7bb420c67673 100644 --- a/turbopack/crates/turbo-tasks-env/src/command_line.rs +++ b/turbopack/crates/turbo-tasks-env/src/command_line.rs @@ -1,5 +1,5 @@ use turbo_rcstr::RcStr; -use turbo_tasks::{FxIndexMap, Vc, mark_session_dependent}; +use turbo_tasks::{FxIndexMap, Vc}; use crate::{GLOBAL_ENV_LOCK, ProcessEnv, TransientEnvMap, sorted_env_vars}; @@ -23,9 +23,8 @@ fn env_snapshot() -> FxIndexMap { #[turbo_tasks::value_impl] impl ProcessEnv for CommandLineProcessEnv { - #[turbo_tasks::function] + #[turbo_tasks::function(session_dependent)] fn read_all(&self) -> Vc { - mark_session_dependent(); Vc::cell(env_snapshot()) } } diff --git a/turbopack/crates/turbo-tasks-fetch/src/client.rs b/turbopack/crates/turbo-tasks-fetch/src/client.rs index 6dafa4099ffe..1c374a301976 100644 --- a/turbopack/crates/turbo-tasks-fetch/src/client.rs +++ b/turbopack/crates/turbo-tasks-fetch/src/client.rs @@ -3,7 +3,7 @@ use std::{hash::Hash, sync::LazyLock}; use anyhow::Result; use quick_cache::sync::Cache; use turbo_rcstr::RcStr; -use turbo_tasks::{ReadRef, Vc, duration_span, mark_session_dependent}; +use turbo_tasks::{Completion, ReadRef, Vc, duration_span}; use crate::{FetchError, FetchResult, HttpResponse, HttpResponseBody}; @@ -34,7 +34,7 @@ impl FetchClientConfig { /// The reqwest client fails to construct if the TLS backend cannot be initialized, or the /// resolver cannot load the system configuration. These failures should be treated as /// cached for some amount of time, but ultimately transient (e.g. using - /// [`turbo_tasks::mark_session_dependent`]). + /// [`turbo_tasks::function(session_dependent)`]). pub fn try_get_cached_reqwest_client( self: ReadRef, ) -> reqwest::Result { @@ -121,7 +121,10 @@ impl FetchClientConfig { Ok(resp) => Ok(Vc::cell(Ok(resp.resolved_cell()))), Err(err) => { // the client failed to construct or the HTTP request failed - mark_session_dependent(); + // Mark session dependent so we get retried in the next sessions + // In dev our caller will keep going, but in prod builds this will fail the build + // anyway. + Completion::session_dependent().as_side_effect().await?; Ok(Vc::cell(Err( FetchError::from_reqwest_error(&err, &url).resolved_cell() ))) diff --git a/turbopack/crates/turbo-tasks-fs/src/lib.rs b/turbopack/crates/turbo-tasks-fs/src/lib.rs index 3cc2bfcceae7..573bd530c478 100644 --- a/turbopack/crates/turbo-tasks-fs/src/lib.rs +++ b/turbopack/crates/turbo-tasks-fs/src/lib.rs @@ -64,8 +64,7 @@ use turbo_rcstr::{RcStr, rcstr}; use turbo_tasks::{ Completion, Effect, EffectStateStorage, InvalidationReason, NonLocalValue, ReadRef, ResolvedVc, TaskInput, TurboTasksApi, ValueToString, ValueToStringRef, Vc, debug::ValueDebugFormat, - emit_effect, mark_session_dependent, parallel, trace::TraceRawVcs, turbo_tasks_weak, turbobail, - turbofmt, + emit_effect, parallel, trace::TraceRawVcs, turbo_tasks_weak, turbobail, turbofmt, }; use turbo_tasks_hash::{ DeterministicHash, DeterministicHasher, HashAlgorithm, deterministic_hash, hash_xxh3_hash64, @@ -712,10 +711,8 @@ impl Debug for DiskFileSystem { #[turbo_tasks::value_impl] impl FileSystem for DiskFileSystem { - #[turbo_tasks::function(fs)] + #[turbo_tasks::function(fs, session_dependent)] async fn read(&self, fs_path: FileSystemPath) -> Result> { - mark_session_dependent(); - // Check if path is denied - if so, treat as NotFound if self.inner.is_path_denied(&fs_path) { return Ok(FileContent::NotFound.cell()); @@ -740,10 +737,8 @@ impl FileSystem for DiskFileSystem { Ok(content.cell()) } - #[turbo_tasks::function(fs)] + #[turbo_tasks::function(fs, session_dependent)] async fn raw_read_dir(&self, fs_path: FileSystemPath) -> Result> { - mark_session_dependent(); - // Check if directory itself is denied - if so, treat as NotFound if self.inner.is_path_denied(&fs_path) { return Ok(RawDirectoryContent::not_found()); @@ -830,10 +825,8 @@ impl FileSystem for DiskFileSystem { Ok(RawDirectoryContent::new(entries)) } - #[turbo_tasks::function(fs)] + #[turbo_tasks::function(fs, session_dependent)] async fn read_link(&self, fs_path: FileSystemPath) -> Result> { - mark_session_dependent(); - // Check if path is denied - if so, treat as NotFound if self.inner.is_path_denied(&fs_path) { return Ok(LinkContent::NotFound.cell()); @@ -924,9 +917,9 @@ impl FileSystem for DiskFileSystem { #[turbo_tasks::function(fs)] async fn write(&self, fs_path: FileSystemPath, content: Vc) -> Result<()> { - // You might be tempted to use `mark_session_dependent` here, but - // `write` purely declares a side effect and does not need to be reexecuted in the next - // session. All side effects are reexecuted in general. + // You might be tempted to use `session_dependent` here, but `write` purely declares a side + // effect and does not need to be reexecuted in the next session. All side effects are + // reexecuted in general. // Check if path is denied - if so, return an error if self.inner.is_path_denied(&fs_path) { @@ -1104,7 +1097,7 @@ impl FileSystem for DiskFileSystem { #[turbo_tasks::function(fs)] async fn write_link(&self, fs_path: FileSystemPath, target: Vc) -> Result<()> { - // You might be tempted to use `mark_session_dependent` here, but we purely declare a side + // You might be tempted to use `session_dependent` here, but we purely declare a side // effect and does not need to be re-executed in the next session. All side effects are // re-executed in general. @@ -1382,9 +1375,8 @@ impl FileSystem for DiskFileSystem { Ok(()) } - #[turbo_tasks::function(fs)] + #[turbo_tasks::function(fs, session_dependent)] async fn metadata(&self, fs_path: FileSystemPath) -> Result> { - mark_session_dependent(); let full_path = self.to_sys_path(&fs_path); // Check if path is denied - if so, return an error (metadata shouldn't be readable) diff --git a/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_attribute_invalid_args.stderr b/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_attribute_invalid_args.stderr index c7c745e37ef6..63bf140473f3 100644 --- a/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_attribute_invalid_args.stderr +++ b/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_attribute_invalid_args.stderr @@ -1,4 +1,4 @@ -error: unexpected token, expected one of: "fs", "network", "operation", or "root" +error: unexpected token, expected one of: "fs", "network", "operation", "root", or "session_dependent" --> tests/function/fail_attribute_invalid_args.rs:10:25 | 10 | #[turbo_tasks::function(invalid_argument)] diff --git a/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_attribute_invalid_args_inherent_impl.stderr b/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_attribute_invalid_args_inherent_impl.stderr index b86572156432..835ae956f4b4 100644 --- a/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_attribute_invalid_args_inherent_impl.stderr +++ b/turbopack/crates/turbo-tasks-macros-tests/tests/function/fail_attribute_invalid_args_inherent_impl.stderr @@ -1,4 +1,4 @@ -error: unexpected token, expected one of: "fs", "network", "operation", or "root" +error: unexpected token, expected one of: "fs", "network", "operation", "root", or "session_dependent" --> tests/function/fail_attribute_invalid_args_inherent_impl.rs:15:29 | 15 | #[turbo_tasks::function(invalid_argument)] diff --git a/turbopack/crates/turbo-tasks-macros/src/func.rs b/turbopack/crates/turbo-tasks-macros/src/func.rs index f5bce5e2e39c..6f20780b194e 100644 --- a/turbopack/crates/turbo-tasks-macros/src/func.rs +++ b/turbopack/crates/turbo-tasks-macros/src/func.rs @@ -736,6 +736,10 @@ pub struct FunctionArguments { /// Should the task be marked as a root in the aggregation graph on initial creation? /// Root tasks start with aggregation number `u32::MAX`. pub root: Option, + /// Should the task be marked as session dependent? Session dependent tasks are re-executed + /// when restored from persistent cache because they depend on external state (filesystem, + /// environment, network) that may change between sessions. + pub session_dependent: Option, } impl Parse for FunctionArguments { @@ -763,11 +767,14 @@ impl Parse for FunctionArguments { ("root", Meta::Path(_)) => { parsed_args.root = Some(meta.span()); } + ("session_dependent", Meta::Path(_)) => { + parsed_args.session_dependent = Some(meta.span()); + } (_, meta) => { return Err(syn::Error::new_spanned( meta, "unexpected token, expected one of: \"fs\", \"network\", \"operation\", \ - or \"root\"", + \"root\", or \"session_dependent\"", )); } } @@ -1094,6 +1101,7 @@ pub struct NativeFn { pub is_self_used: bool, pub filter_trait_call_args: Option, pub is_root: bool, + pub is_session_dependent: bool, } impl NativeFn { @@ -1110,6 +1118,7 @@ impl NativeFn { is_self_used, filter_trait_call_args, is_root, + is_session_dependent, } = self; let task_fn = if *is_method && *is_self_used { @@ -1145,6 +1154,7 @@ impl NativeFn { #arg_meta, &#task_fn, #is_root, + #is_session_dependent, ) } } diff --git a/turbopack/crates/turbo-tasks-macros/src/function_macro.rs b/turbopack/crates/turbo-tasks-macros/src/function_macro.rs index fe0c2e87158c..255534ee6546 100644 --- a/turbopack/crates/turbo-tasks-macros/src/function_macro.rs +++ b/turbopack/crates/turbo-tasks-macros/src/function_macro.rs @@ -43,6 +43,7 @@ pub fn function(args: TokenStream, input: TokenStream) -> TokenStream { .unwrap_or_default(); let is_self_used = args.operation.is_some() || is_self_used(&block); let is_root = args.root.is_some(); + let is_session_dependent = args.session_dependent.is_some(); let Some(turbo_fn) = TurboFn::new(&sig, DefinitionContext::NakedFn, args, is_self_used) else { return quote! { @@ -66,6 +67,7 @@ pub fn function(args: TokenStream, input: TokenStream) -> TokenStream { is_self_used, filter_trait_call_args: None, // not a trait method is_root, + is_session_dependent, }; let native_function_ident = get_native_function_ident(ident); let native_function_ty = native_fn.ty(); diff --git a/turbopack/crates/turbo-tasks-macros/src/value_impl_macro.rs b/turbopack/crates/turbo-tasks-macros/src/value_impl_macro.rs index 5b8c5173aecd..ee6a14718d2f 100644 --- a/turbopack/crates/turbo-tasks-macros/src/value_impl_macro.rs +++ b/turbopack/crates/turbo-tasks-macros/src/value_impl_macro.rs @@ -102,6 +102,7 @@ pub fn value_impl(args: TokenStream, input: TokenStream) -> TokenStream { }; let is_self_used = func_args.operation.is_some() || is_self_used(block); let is_root = func_args.root.is_some(); + let is_session_dependent = func_args.session_dependent.is_some(); let Some(turbo_fn) = TurboFn::new( sig, @@ -124,6 +125,7 @@ pub fn value_impl(args: TokenStream, input: TokenStream) -> TokenStream { is_self_used, filter_trait_call_args: None, // not a trait method is_root, + is_session_dependent, }; let native_function_ident = get_inherent_impl_function_ident(ty_ident, ident); @@ -207,6 +209,7 @@ pub fn value_impl(args: TokenStream, input: TokenStream) -> TokenStream { // operations are not currently compatible with methods let is_self_used = func_args.operation.is_some() || is_self_used(block); let is_root = func_args.root.is_some(); + let is_session_dependent = func_args.session_dependent.is_some(); let Some(turbo_fn) = TurboFn::new( sig, @@ -240,6 +243,7 @@ pub fn value_impl(args: TokenStream, input: TokenStream) -> TokenStream { is_self_used, filter_trait_call_args: turbo_fn.filter_trait_call_args(), is_root, + is_session_dependent, }; let native_function_ident = diff --git a/turbopack/crates/turbo-tasks-macros/src/value_trait_macro.rs b/turbopack/crates/turbo-tasks-macros/src/value_trait_macro.rs index 76338497f600..04ffc7aa9837 100644 --- a/turbopack/crates/turbo-tasks-macros/src/value_trait_macro.rs +++ b/turbopack/crates/turbo-tasks-macros/src/value_trait_macro.rs @@ -148,7 +148,7 @@ pub fn value_trait(args: TokenStream, input: TokenStream) -> TokenStream { ) .emit(); } - // Add a dummy implementation that derefences the box and delegates to the + // Add a dummy implementation that dereferences the box and delegates to the // actual implementation. We need to conditionally add an await if it is async dynamic_trait_fns.push(if sig.asyncness.is_some() { quote! { @@ -217,7 +217,8 @@ pub fn value_trait(args: TokenStream, input: TokenStream) -> TokenStream { is_method: turbo_fn.is_method(), is_self_used, filter_trait_call_args: turbo_fn.filter_trait_call_args(), - is_root, + is_root: false, + is_session_dependent: false, }; let native_function_ident = get_trait_default_impl_function_ident(trait_ident, ident); diff --git a/turbopack/crates/turbo-tasks-testing/src/lib.rs b/turbopack/crates/turbo-tasks-testing/src/lib.rs index 5dcc9ec71a95..d2121d4720cb 100644 --- a/turbopack/crates/turbo-tasks-testing/src/lib.rs +++ b/turbopack/crates/turbo-tasks-testing/src/lib.rs @@ -294,10 +294,6 @@ impl TurboTasksApi for VcStorage { // no-op } - fn mark_own_task_as_session_dependent(&self, _task: TaskId) { - // no-op - } - fn spawn_detached_for_testing( &self, _f: std::pin::Pin + Send + 'static>>, diff --git a/turbopack/crates/turbo-tasks/function.md b/turbopack/crates/turbo-tasks/function.md index bff5dd9146a6..c64f01919161 100644 --- a/turbopack/crates/turbo-tasks/function.md +++ b/turbopack/crates/turbo-tasks/function.md @@ -71,6 +71,78 @@ fn foo( ) -> Vc; // was: impl Future>> ``` +## Attributes + +The `#[turbo_tasks::function]` macro accepts optional attributes that modify the behavior of the +task. Multiple attributes can be combined by separating them with commas. + +```rust +#[turbo_tasks::function(fs, session_dependent)] +async fn read_file(path: RcStr) -> Result> { + // ... +} +``` + +### `operation` + +Marks the task as an **operation**. The external signature will return an [`OperationVc`] instead +of a [`Vc`], and all arguments must implement `OperationValue`. Operation tasks serve as explicit +entry points into the task graph and can be used to connect non-reactive code to the reactive +computation graph. Mutually exclusive with `&self` receivers. + +### `root` + +Marks the task as a **root** in the aggregation graph. Root tasks start with the maximum aggregation +number (`u32::MAX`), which places them at the top of the aggregation tree. This is used for tasks +that represent top-level entry points into the computation. + +### `fs` + +An **I/O marker** indicating the task directly performs filesystem operations. This should only be +applied to the task that directly performs the I/O, not tasks that transitively call it. + +### `network` + +An **I/O marker** indicating the task directly performs network operations. Like `fs`, this should +only be applied to the task that directly performs the I/O. + +### `session_dependent` + +Marks the task as **session dependent**. Session-dependent tasks are re-executed when restored from +persistent cache because they depend on external state (filesystem, environment, network) that may +have changed between sessions. + +When a session-dependent task completes, it is not marked as fully clean — it retains a special +"session dependent" dirty state. If the task is later restored from persistent cache in a new +session, this state causes it to be re-executed rather than reusing the cached result. + +Typical use cases: + +- **Filesystem reads** — file contents may have changed on disk between sessions. +- **Environment variable reads** — process environment may differ between sessions. +- **Network requests** — remote resources may return different results. + +```rust +#[turbo_tasks::function(fs, session_dependent)] +async fn read(&self, path: FileSystemPath) -> Result> { + // File contents may have changed since the last session, + // so this task is always re-executed on cache restore. + // ... +} + +#[turbo_tasks::function(session_dependent)] +fn read_all_env(&self) -> Vc { + // Environment variables may differ between sessions. + Vc::cell(self.vars.clone()) +} +``` + +Note: `session_dependent` should be applied to the **leaf task** that directly reads external state. +Tasks that transitively depend on a session-dependent task do not need this attribute — they will +naturally re-execute when the session-dependent task they depend on produces a new result. + +[`OperationVc`]: crate::OperationVc + ## Methods and Self Tasks can be methods associated with a value or a trait implementation using the [`arbitrary_self_types` nightly compiler feature][self-types]. diff --git a/turbopack/crates/turbo-tasks/src/backend.rs b/turbopack/crates/turbo-tasks/src/backend.rs index b5ece097b9af..d9a1e12325c8 100644 --- a/turbopack/crates/turbo-tasks/src/backend.rs +++ b/turbopack/crates/turbo-tasks/src/backend.rs @@ -674,14 +674,6 @@ pub trait Backend: Sync + Send { // Do nothing by default } - fn mark_own_task_as_session_dependent( - &self, - _task: TaskId, - _turbo_tasks: &dyn TurboTasksBackendApi, - ) { - // Do nothing by default - } - fn create_transient_task( &self, task_type: TransientTaskType, @@ -723,6 +715,7 @@ mod cached_task_type_tests { ArgMeta::new::<(i32,)>(), &into_task_fn(dummy_fn_a), false, + false, ); static FN_B: NativeFunction = NativeFunction::new( @@ -731,6 +724,7 @@ mod cached_task_type_tests { ArgMeta::new::<(i32,)>(), &into_task_fn(dummy_fn_b), false, + false, ); /// Build a `u64` hash for a `CachedTaskType` using its `Hash` impl and a `RandomState`. diff --git a/turbopack/crates/turbo-tasks/src/completion.rs b/turbopack/crates/turbo-tasks/src/completion.rs index 821630af22f8..f6adc63b1745 100644 --- a/turbopack/crates/turbo-tasks/src/completion.rs +++ b/turbopack/crates/turbo-tasks/src/completion.rs @@ -21,6 +21,14 @@ impl Completion { pub fn immutable() -> Vc { Completion::cell(Completion) } + + /// Returns a completion from a session-dependent task. Awaiting this creates a dependency on + /// a session-dependent task, which will cause the calling task to be re-executed when + /// restored from persistent cache. + #[turbo_tasks::function(session_dependent)] + pub fn session_dependent() -> Vc { + Completion::cell(Completion) + } } // no #[turbo_tasks::value_impl] to inline new into the caller task diff --git a/turbopack/crates/turbo-tasks/src/invalidation.rs b/turbopack/crates/turbo-tasks/src/invalidation.rs index dd9ac01a0ea5..8dc999006016 100644 --- a/turbopack/crates/turbo-tasks/src/invalidation.rs +++ b/turbopack/crates/turbo-tasks/src/invalidation.rs @@ -55,8 +55,10 @@ impl TraceRawVcs for Invalidator { } } -unsafe impl NonLocalValue for Invalidator {} unsafe impl OperationValue for Invalidator {} +// Safety: Invalidator only contains a TaskId (a NonZero wrapper) and does not contain any +// local Vc references. +unsafe impl NonLocalValue for Invalidator {} /// A user-facing reason why a task was invalidated. This should only be used /// for invalidation that were triggered by the user. diff --git a/turbopack/crates/turbo-tasks/src/lib.rs b/turbopack/crates/turbo-tasks/src/lib.rs index d30673b17c46..a84f4c038924 100644 --- a/turbopack/crates/turbo-tasks/src/lib.rs +++ b/turbopack/crates/turbo-tasks/src/lib.rs @@ -91,8 +91,8 @@ pub use crate::{ CurrentCellRef, ReadCellTracking, ReadConsistency, ReadTracking, TaskPersistence, TaskPriority, TurboTasks, TurboTasksApi, TurboTasksBackendApi, TurboTasksCallApi, Unused, UpdateInfo, dynamic_call, emit, get_serialization_invalidator, mark_finished, - mark_session_dependent, mark_stateful, mark_top_level_task, prevent_gc, run, run_once, - run_once_with_reason, trait_call, turbo_tasks, turbo_tasks_scope, turbo_tasks_weak, + mark_stateful, mark_top_level_task, prevent_gc, run, run_once, run_once_with_reason, + trait_call, turbo_tasks, turbo_tasks_scope, turbo_tasks_weak, unmark_top_level_task_may_leak_eventually_consistent_state, with_turbo_tasks, }, mapped_read_ref::MappedReadRef, diff --git a/turbopack/crates/turbo-tasks/src/manager.rs b/turbopack/crates/turbo-tasks/src/manager.rs index 8bff50c85d1b..39564f1926cf 100644 --- a/turbopack/crates/turbo-tasks/src/manager.rs +++ b/turbopack/crates/turbo-tasks/src/manager.rs @@ -175,7 +175,6 @@ pub trait TurboTasksApi: TurboTasksCallApi + Sync + Send { verification_mode: VerificationMode, ); fn mark_own_task_as_finished(&self, task: TaskId); - fn mark_own_task_as_session_dependent(&self, task: TaskId); fn connect_task(&self, task: TaskId); @@ -1568,10 +1567,6 @@ impl TurboTasksApi for TurboTasks { self.backend.mark_own_task_as_finished(task, self); } - fn mark_own_task_as_session_dependent(&self, task: TaskId) { - self.backend.mark_own_task_as_session_dependent(task, self); - } - /// Creates a future that inherits the current task id and task state. The current global task /// will wait for this future to be dropped before exiting. fn spawn_detached_for_testing(&self, fut: Pin + Send + 'static>>) { @@ -1893,13 +1888,6 @@ pub fn current_task_for_testing() -> Option { CURRENT_TASK_STATE.with(|ts| ts.read().unwrap().task_id) } -/// Marks the current task as dirty when restored from filesystem cache. -pub fn mark_session_dependent() { - with_turbo_tasks(|tt| { - tt.mark_own_task_as_session_dependent(current_task("turbo_tasks::mark_session_dependent()")) - }); -} - /// Marks the current task as finished. This excludes it from waiting for /// strongly consistency. pub fn mark_finished() { diff --git a/turbopack/crates/turbo-tasks/src/native_function.rs b/turbopack/crates/turbo-tasks/src/native_function.rs index 73779889c2d8..fef40ad79c5a 100644 --- a/turbopack/crates/turbo-tasks/src/native_function.rs +++ b/turbopack/crates/turbo-tasks/src/native_function.rs @@ -215,6 +215,11 @@ pub struct NativeFunction { /// Whether this function's tasks should be treated as root nodes in the aggregation graph. /// Root tasks start with aggregation number `u32::MAX` on initial creation. pub is_root: bool, + + /// Whether this function's tasks are session dependent. Session dependent tasks are + /// re-executed when restored from persistent cache because they depend on external state + /// (filesystem, environment, network) that may change between sessions. + pub is_session_dependent: bool, } impl Debug for NativeFunction { @@ -241,6 +246,7 @@ impl NativeFunction { implementation: &into_task_fn(default_fn) as &dyn TaskFn, ty: RegistryType::new::<()>("", ""), is_root: false, + is_session_dependent: false, }; pub const fn new( @@ -249,12 +255,14 @@ impl NativeFunction { arg_meta: ArgMeta, implementation: &'static T, is_root: bool, + is_session_dependent: bool, ) -> Self { Self { ty: RegistryType::new::(name, global_name), arg_meta, implementation, is_root, + is_session_dependent, } } diff --git a/turbopack/crates/turbopack-node/src/evaluate.rs b/turbopack/crates/turbopack-node/src/evaluate.rs index 9eeec9876768..2258121301fd 100644 --- a/turbopack/crates/turbopack-node/src/evaluate.rs +++ b/turbopack/crates/turbopack-node/src/evaluate.rs @@ -10,8 +10,8 @@ use serde_json::Value as JsonValue; use turbo_rcstr::{RcStr, rcstr}; use turbo_tasks::{ Completion, FxIndexMap, NonLocalValue, OperationVc, PrettyPrintError, ResolvedVc, TaskInput, - TryJoinIterExt, ValueToString, Vc, duration_span, fxindexmap, mark_session_dependent, - mark_top_level_task, take_effects, trace::TraceRawVcs, + TryJoinIterExt, ValueToString, Vc, duration_span, fxindexmap, mark_top_level_task, + take_effects, trace::TraceRawVcs, }; use turbo_tasks_env::{EnvMap, ProcessEnv}; use turbo_tasks_fs::{File, FileContent, FileSystemPath, to_sys_path}; @@ -184,13 +184,12 @@ async fn emit_evaluate_pool_assets_operation( .cell()) } -#[turbo_tasks::function(operation, root)] +#[turbo_tasks::function(operation, root, session_dependent)] async fn create_evaluate_pool_assets_operation( entries: ResolvedVc, chunking_context: ResolvedVc>, module_graph: ResolvedVc, ) -> Result> { - mark_session_dependent(); let operation = emit_evaluate_pool_assets_operation(entries, chunking_context, module_graph); let assets = operation.resolve().strongly_consistent().await?; let effects = Arc::new(take_effects(operation).await?); From f9278fdf9281a6e6b5024d141c19ab6c7811a43a Mon Sep 17 00:00:00 2001 From: Hendrik Liebau Date: Wed, 13 May 2026 17:22:25 +0200 Subject: [PATCH 10/12] Surface invalid dynamic usage errors via Flight in dev (#93706) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When a `'use cache'` recorded an invalid dynamic usage error on the work store (for example a `cookies()` call inside `'use cache'`, a nested-dynamic `cacheLife`, or a `'use cache'` fill timeout), `renderToHTMLOrFlight` used to throw the recorded error right after `renderToStream` returned. The throw bubbled up through `base-server` and ended up rendering the Pages-Router `/_error` page, which felt out of place in an app-router context. This change removes that throw, so the error reaches the dev overlay through the same Flight channel that already surfaces static-shell-validation and instant-validation errors — `logMessagesAndSendErrorsToBrowser`, called from `spawnStaticShellValidationInDev` and from the validation-skipped fallback in `generateDynamicFlightRenderResultWithStagesInDev`. The original motivation for the throw was to avoid double-logging in the uncaught case. Without it, both React's `serverComponentsErrorHandler` (which stamps a digest and emits a Flight error chunk) and `logMessagesAndSendErrorsToBrowser` would forward the same error. We now dedupe by skipping the `logMessagesAndSendErrorsToBrowser` call whenever the recorded error already carries a `digest`, since that is exactly the signal that React has already seen it. Caught cases (no `digest`) continue to surface through `logMessagesAndSendErrorsToBrowser` as a collapsed dev-overlay entry; uncaught cases surface via React's Flight error chunk as an auto-opened redbox. This also sets us up for the upstack PR that attaches the inner cache call site as `cause` of the nested-dynamic prerender error. With errors now travelling uniformly over Flight — which preserves `cause` natively — the cause flows straight through to the dev overlay without needing to serialize it into the error page. --- .../next/src/server/app-render/app-render.tsx | 56 +++- .../src/server/use-cache/use-cache-errors.ts | 37 --- .../src/server/use-cache/use-cache-wrapper.ts | 11 +- .../cache-components-errors.test.ts | 51 ++-- .../use-cache-configured-timeout.test.ts | 2 +- .../use-cache-deadlock-probe.test.ts | 30 +-- .../use-cache-hanging.test.ts | 12 +- .../use-cache-search-params.test.ts | 240 ++++++++++++------ 8 files changed, 260 insertions(+), 179 deletions(-) diff --git a/packages/next/src/server/app-render/app-render.tsx b/packages/next/src/server/app-render/app-render.tsx index 047691cafd3c..f4153661c421 100644 --- a/packages/next/src/server/app-render/app-render.tsx +++ b/packages/next/src/server/app-render/app-render.tsx @@ -1593,11 +1593,17 @@ async function generateDynamicFlightRenderResultWithStagesInDev( // for the full stream to finish accumulating so we also catch errors from // the dynamic stage. void accumulatedChunksPromise.then(() => { - if (workStore.invalidDynamicUsageError) { - logMessagesAndSendErrorsToBrowser( - [workStore.invalidDynamicUsageError], - ctx - ) + const { invalidDynamicUsageError } = workStore + // Forward only if userland caught the rejection. If userland didn't + // catch, the rejection propagated into the React render and React's + // `serverComponentsErrorHandler` already stamped a digest on the error + // and emitted it as a Flight error chunk — surfacing it again here + // would duplicate the entry in the dev overlay. + if ( + invalidDynamicUsageError && + !(invalidDynamicUsageError as { digest?: unknown }).digest + ) { + logMessagesAndSendErrorsToBrowser([invalidDynamicUsageError], ctx) } }) } @@ -3061,11 +3067,27 @@ async function renderToHTMLOrFlightImpl( fallbackParams ) - // Invalid dynamic usages should only error the request in development. - // In production, it's better to produce a result. - // (the dynamic error will still be thrown inside the component tree, but it's catchable by error boundaries) - if (workStore.invalidDynamicUsageError && process.env.__NEXT_DEV_SERVER) { - throw workStore.invalidDynamicUsageError + // Forward an invalid-dynamic-usage error recorded by `'use cache'` only + // when userland caught it (try/catch around the cache call). If userland + // didn't catch, the rejection propagated into the React render, and React's + // `serverComponentsErrorHandler` already stamped a digest on the error and + // emitted it as a Flight error chunk — surfacing it again here would + // duplicate the entry in the dev overlay. + // + // The cacheComponents paths forward this themselves via + // `spawnStaticShellValidationInDev` and the validation-skipped fallback in + // `generateDynamicFlightRenderResultWithStagesInDev`. Here we cover the + // non-cacheComponents dev path where neither runs. + if ( + process.env.__NEXT_DEV_SERVER && + !cacheComponents && + workStore.invalidDynamicUsageError && + !(workStore.invalidDynamicUsageError as { digest?: unknown }).digest + ) { + void logMessagesAndSendErrorsToBrowser( + [workStore.invalidDynamicUsageError], + ctx + ) } // If we have pending revalidates, wait until they are all resolved. @@ -5592,11 +5614,19 @@ async function spawnStaticShellValidationInDevImpl( const hmrRefreshHash = getHmrRefreshHash(requestStore) - // We don't need to continue the prerender process if we already - // detected invalid dynamic usage in the initial prerender phase. const { invalidDynamicUsageError } = workStore if (invalidDynamicUsageError) { - return logMessagesAndSendErrorsToBrowser([invalidDynamicUsageError], ctx) + // We don't need to continue the prerender process if we already detected + // invalid dynamic usage in the initial prerender phase. Forward the error + // to the dev overlay only when userland caught the rejection. If userland + // didn't catch, the rejection propagated into the React render and React's + // `serverComponentsErrorHandler` already stamped a digest on the error and + // emitted it as a Flight error chunk — surfacing it again here would + // duplicate the entry in the dev overlay. + if (!(invalidDynamicUsageError as { digest?: unknown }).digest) { + return logMessagesAndSendErrorsToBrowser([invalidDynamicUsageError], ctx) + } + return } if (syncInterruptReason) { diff --git a/packages/next/src/server/use-cache/use-cache-errors.ts b/packages/next/src/server/use-cache/use-cache-errors.ts index e547e20eeaaf..1215ebb50d68 100644 --- a/packages/next/src/server/use-cache/use-cache-errors.ts +++ b/packages/next/src/server/use-cache/use-cache-errors.ts @@ -1,9 +1,4 @@ -const USE_CACHE_TIMEOUT_ERROR_CODE = 'USE_CACHE_TIMEOUT' -const USE_CACHE_DEADLOCK_ERROR_CODE = 'USE_CACHE_DEADLOCK' - export class UseCacheTimeoutError extends Error { - digest: typeof USE_CACHE_TIMEOUT_ERROR_CODE = USE_CACHE_TIMEOUT_ERROR_CODE - constructor() { super( 'Filling a cache during prerender timed out, likely because request-specific arguments such as params, searchParams, cookies() or dynamic data were used inside "use cache".' @@ -12,41 +7,9 @@ export class UseCacheTimeoutError extends Error { } export class UseCacheDeadlockError extends Error { - digest: typeof USE_CACHE_DEADLOCK_ERROR_CODE = USE_CACHE_DEADLOCK_ERROR_CODE - constructor() { super( 'Filling a "use cache" entry appears to be stuck on shared state from the outer render scope. The same function completed when run in isolation, which usually means a module-scoped value (for example a top-level Map used to dedupe fetches) is joining a promise created outside the cache. "use cache" already dedupes calls with the same arguments — within a request and across requests on the same server instance — so the surrounding dedupe layer is both unnecessary and the likely cause. Remove it and rely on "use cache" alone for deduping.' ) } } - -export function isUseCacheTimeoutError( - err: unknown -): err is UseCacheTimeoutError { - if ( - typeof err !== 'object' || - err === null || - !('digest' in err) || - typeof err.digest !== 'string' - ) { - return false - } - - return err.digest === USE_CACHE_TIMEOUT_ERROR_CODE -} - -export function isUseCacheDeadlockError( - err: unknown -): err is UseCacheDeadlockError { - if ( - typeof err !== 'object' || - err === null || - !('digest' in err) || - typeof err.digest !== 'string' - ) { - return false - } - - return err.digest === USE_CACHE_DEADLOCK_ERROR_CODE -} diff --git a/packages/next/src/server/use-cache/use-cache-wrapper.ts b/packages/next/src/server/use-cache/use-cache-wrapper.ts index ec190e23982f..ce8dc61112dd 100644 --- a/packages/next/src/server/use-cache/use-cache-wrapper.ts +++ b/packages/next/src/server/use-cache/use-cache-wrapper.ts @@ -1221,7 +1221,16 @@ async function generateCacheEntryImpl( filterStackFrame, signal: devRenderAbortController.signal, temporaryReferences, - onError: handleError, + onError(error) { + if ( + devRenderAbortController.signal.aborted && + devRenderAbortController.signal.reason === error + ) { + return undefined + } + + return handleError(error) + }, } ) diff --git a/test/e2e/app-dir/cache-components-errors/cache-components-errors.test.ts b/test/e2e/app-dir/cache-components-errors/cache-components-errors.test.ts index 6edbf8f95088..cb974bb0c576 100644 --- a/test/e2e/app-dir/cache-components-errors/cache-components-errors.test.ts +++ b/test/e2e/app-dir/cache-components-errors/cache-components-errors.test.ts @@ -2607,7 +2607,7 @@ describe('Cache Components Errors', () => { { "code": "E831", "description": "Route /use-cache-cookies used \`cookies()\` inside "use cache". Accessing Dynamic data sources inside a cache scope is not supported. If you need this data inside a cached function use \`cookies()\` outside of the cached function and pass the required dynamic data in as an argument. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache", - "environmentLabel": null, + "environmentLabel": "Prerender", "label": "Runtime Error", "source": "app/use-cache-cookies/page.tsx (22:18) @ CookiesReadingComponent > 22 | await cookies() @@ -2716,7 +2716,7 @@ describe('Cache Components Errors', () => { { "code": "E829", "description": "Route /use-cache-draft-mode used "draftMode().enable()" inside "use cache". The enabled status of \`draftMode()\` can be read in caches but you must not enable or disable \`draftMode()\` inside a cache. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache", - "environmentLabel": null, + "environmentLabel": "Prerender", "label": "Runtime Error", "source": "app/use-cache-draft-mode/page.tsx (20:26) @ DraftModeEnablingComponent > 20 | ;(await draftMode()).enable() @@ -2824,7 +2824,7 @@ describe('Cache Components Errors', () => { { "code": "E833", "description": "Route /use-cache-headers used \`headers()\` inside "use cache". Accessing Dynamic data sources inside a cache scope is not supported. If you need this data inside a cached function use \`headers()\` outside of the cached function and pass the required dynamic data in as an argument. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache", - "environmentLabel": null, + "environmentLabel": "Prerender", "label": "Runtime Error", "source": "app/use-cache-headers/page.tsx (21:18) @ HeadersReadingComponent > 21 | await headers() @@ -2931,7 +2931,7 @@ describe('Cache Components Errors', () => { { "code": "E841", "description": "Route /use-cache-connection used \`connection()\` inside "use cache". The \`connection()\` function is used to indicate the subsequent code must only run when there is an actual request, but caches must be able to be produced before a request, so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache", - "environmentLabel": null, + "environmentLabel": "Prerender", "label": "Runtime Error", "source": "app/use-cache-connection/page.tsx (21:21) @ ConnectionCallingComponent > 21 | await connection() @@ -3279,17 +3279,17 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` it('should show a redbox error', async () => { const browser = await next.browser('/use-cache-low-expire/nested') - await expect(browser).toDisplayRedbox(` + await expect(browser).toDisplayCollapsedRedbox(` { "code": "E1009", "description": "A "use cache" with short \`expire\` (under 5 minutes) is nested inside another "use cache" that has no explicit \`cacheLife\`, which is not allowed during prerendering. Add \`cacheLife()\` to the outer \`"use cache"\` to choose whether it should be prerendered (with longer \`expire\`) or remain dynamic (with short \`expire\`). Read more: https://nextjs.org/docs/messages/nested-use-cache-no-explicit-cachelife", - "environmentLabel": null, - "label": "Runtime Error", - "source": "app/use-cache-low-expire/nested/page.tsx (20:14) @ async Page + "environmentLabel": "Server", + "label": "Console Error", + "source": "app/use-cache-low-expire/nested/page.tsx (20:14) @ Page > 20 | result = await outerCache() | ^", "stack": [ - "async Page app/use-cache-low-expire/nested/page.tsx (20:14)", + "Page app/use-cache-low-expire/nested/page.tsx (20:14)", ], } `) @@ -3630,17 +3630,17 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` '/use-cache-revalidate-0/nested' ) - await expect(browser).toDisplayRedbox(` + await expect(browser).toDisplayCollapsedRedbox(` { "code": "E1000", "description": "A "use cache" with zero \`revalidate\` is nested inside another "use cache" that has no explicit \`cacheLife\`, which is not allowed during prerendering. Add \`cacheLife()\` to the outer \`"use cache"\` to choose whether it should be prerendered (with non-zero \`revalidate\`) or remain dynamic (with zero \`revalidate\`). Read more: https://nextjs.org/docs/messages/nested-use-cache-no-explicit-cachelife", - "environmentLabel": null, - "label": "Runtime Error", - "source": "app/use-cache-revalidate-0/nested/page.tsx (20:14) @ async Page + "environmentLabel": "Server", + "label": "Console Error", + "source": "app/use-cache-revalidate-0/nested/page.tsx (20:14) @ Page > 20 | result = await outerCache() | ^", "stack": [ - "async Page app/use-cache-revalidate-0/nested/page.tsx (20:14)", + "Page app/use-cache-revalidate-0/nested/page.tsx (20:14)", ], } `) @@ -3980,7 +3980,7 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` { "code": "E831", "description": "Route /use-cache-cookies-third-party used \`cookies()\` inside "use cache". Accessing Dynamic data sources inside a cache scope is not supported. If you need this data inside a cached function use \`cookies()\` outside of the cached function and pass the required dynamic data in as an argument. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache", - "environmentLabel": null, + "environmentLabel": "Prerender", "label": "Runtime Error", "source": "app/use-cache-cookies-third-party/page.tsx (10:7) @ Page > 10 | @@ -4079,7 +4079,7 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` { "code": "E829", "description": "Route /use-cache-draft-mode-third-party used "draftMode().enable()" inside "use cache". The enabled status of \`draftMode()\` can be read in caches but you must not enable or disable \`draftMode()\` inside a cache. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache", - "environmentLabel": null, + "environmentLabel": "Prerender", "label": "Runtime Error", "source": "app/use-cache-draft-mode-third-party/page.tsx (10:7) @ Page > 10 | @@ -4177,7 +4177,7 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` { "code": "E833", "description": "Route /use-cache-headers-third-party used \`headers()\` inside "use cache". Accessing Dynamic data sources inside a cache scope is not supported. If you need this data inside a cached function use \`headers()\` outside of the cached function and pass the required dynamic data in as an argument. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache", - "environmentLabel": null, + "environmentLabel": "Prerender", "label": "Runtime Error", "source": "app/use-cache-headers-third-party/page.tsx (10:7) @ Page > 10 | @@ -4276,7 +4276,7 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` { "code": "E841", "description": "Route /use-cache-connection-third-party used \`connection()\` inside "use cache". The \`connection()\` function is used to indicate the subsequent code must only run when there is an actual request, but caches must be able to be produced before a request, so this function is not allowed in this scope. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache", - "environmentLabel": null, + "environmentLabel": "Prerender", "label": "Runtime Error", "source": "app/use-cache-connection-third-party/page.tsx (10:7) @ Page > 10 | @@ -4379,14 +4379,14 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` { "code": "E1016", "description": ""use cache: private" must not be used within \`unstable_cache()\`.", - "environmentLabel": null, + "environmentLabel": "Server", "label": "Runtime Error", - "source": "app/use-cache-private-in-unstable-cache/page.tsx (21:38) @ + "source": "app/use-cache-private-in-unstable-cache/page.tsx (21:38) @ > 21 | const getCachedData = unstable_cache(async () => { | ^", "stack": [ - " app/use-cache-private-in-unstable-cache/page.tsx (21:38)", - "async ComponentWithCachedData app/use-cache-private-in-unstable-cache/page.tsx (16:16)", + " app/use-cache-private-in-unstable-cache/page.tsx (21:38)", + "ComponentWithCachedData app/use-cache-private-in-unstable-cache/page.tsx (16:16)", ], } `) @@ -4395,14 +4395,14 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` { "code": "E1016", "description": ""use cache: private" must not be used within \`unstable_cache()\`.", - "environmentLabel": null, + "environmentLabel": "Server", "label": "Runtime Error", "source": "app/use-cache-private-in-unstable-cache/page.tsx (21:38) @ eval > 21 | const getCachedData = unstable_cache(async () => { | ^", "stack": [ "eval app/use-cache-private-in-unstable-cache/page.tsx (21:38)", - "async ComponentWithCachedData app/use-cache-private-in-unstable-cache/page.tsx (16:16)", + "ComponentWithCachedData app/use-cache-private-in-unstable-cache/page.tsx (16:16)", ], } `) @@ -4507,14 +4507,13 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` { "code": "E1001", "description": ""use cache: private" must not be used within "use cache". It can only be nested inside of another "use cache: private".", - "environmentLabel": null, + "environmentLabel": "Prerender", "label": "Runtime Error", "source": "app/use-cache-private-in-use-cache/page.tsx (15:1) @ Private > 15 | async function Private() { | ^", "stack": [ "Private app/use-cache-private-in-use-cache/page.tsx (15:1)", - "stringify ", ], } `) diff --git a/test/e2e/app-dir/use-cache-configured-timeout/use-cache-configured-timeout.test.ts b/test/e2e/app-dir/use-cache-configured-timeout/use-cache-configured-timeout.test.ts index 66cd685d14c8..0a0885d1a8b5 100644 --- a/test/e2e/app-dir/use-cache-configured-timeout/use-cache-configured-timeout.test.ts +++ b/test/e2e/app-dir/use-cache-configured-timeout/use-cache-configured-timeout.test.ts @@ -40,7 +40,7 @@ describe('use-cache-configured-timeout', () => { { "code": "E236", "description": "Filling a cache during prerender timed out, likely because request-specific arguments such as params, searchParams, cookies() or dynamic data were used inside "use cache".", - "environmentLabel": null, + "environmentLabel": "Prerender", "label": "Runtime Error", "source": "app/above-dev-timeout/page.tsx (4:1) @ getCachedData > 4 | async function getCachedData(): Promise { diff --git a/test/e2e/app-dir/use-cache-deadlock-probe/use-cache-deadlock-probe.test.ts b/test/e2e/app-dir/use-cache-deadlock-probe/use-cache-deadlock-probe.test.ts index dcfb1366fcf5..40061aeeaafd 100644 --- a/test/e2e/app-dir/use-cache-deadlock-probe/use-cache-deadlock-probe.test.ts +++ b/test/e2e/app-dir/use-cache-deadlock-probe/use-cache-deadlock-probe.test.ts @@ -31,12 +31,12 @@ describe('use-cache-deadlock-probe', () => { const outputIndex = next.cliOutput.length const browser = await next.browser('/static') - await expect(browser).toDisplayRedbox(` + await expect(browser).toDisplayCollapsedRedbox(` { "code": "E1181", "description": "Filling a "use cache" entry appears to be stuck on shared state from the outer render scope. The same function completed when run in isolation, which usually means a module-scoped value (for example a top-level Map used to dedupe fetches) is joining a promise created outside the cache. "use cache" already dedupes calls with the same arguments — within a request and across requests on the same server instance — so the surrounding dedupe layer is both unnecessary and the likely cause. Remove it and rely on "use cache" alone for deduping.", - "environmentLabel": null, - "label": "Runtime Error", + "environmentLabel": "Server", + "label": "Console Error", "source": "app/static/page.tsx (6:1) @ getCachedData > 6 | async function getCachedData(): Promise { | ^", @@ -59,12 +59,12 @@ describe('use-cache-deadlock-probe', () => { const outputIndex = next.cliOutput.length const browser = await next.browser('/runtime') - await expect(browser).toDisplayRedbox(` + await expect(browser).toDisplayCollapsedRedbox(` { "code": "E1181", "description": "Filling a "use cache" entry appears to be stuck on shared state from the outer render scope. The same function completed when run in isolation, which usually means a module-scoped value (for example a top-level Map used to dedupe fetches) is joining a promise created outside the cache. "use cache" already dedupes calls with the same arguments — within a request and across requests on the same server instance — so the surrounding dedupe layer is both unnecessary and the likely cause. Remove it and rely on "use cache" alone for deduping.", - "environmentLabel": null, - "label": "Runtime Error", + "environmentLabel": "Server", + "label": "Console Error", "source": "app/runtime/page.tsx (8:1) @ getCachedData > 8 | async function getCachedData(): Promise { | ^", @@ -170,12 +170,12 @@ describe('use-cache-deadlock-probe', () => { // 30s default `page.goto` timeout. const browser = await next.browser('/also-hangs', { waitUntil: 'commit' }) - await expect(browser).toDisplayRedbox(` + await expect(browser).toDisplayCollapsedRedbox(` { "code": "E236", "description": "Filling a cache during prerender timed out, likely because request-specific arguments such as params, searchParams, cookies() or dynamic data were used inside "use cache".", - "environmentLabel": null, - "label": "Runtime Error", + "environmentLabel": "Server", + "label": "Console Error", "source": "app/also-hangs/page.tsx (5:1) @ getCachedData > 5 | async function getCachedData(): Promise { | ^", @@ -228,12 +228,12 @@ describe('use-cache-deadlock-probe', () => { waitUntil: 'commit', }) - await expect(browser).toDisplayRedbox(` + await expect(browser).toDisplayCollapsedRedbox(` { "code": "E1181", "description": "Filling a "use cache" entry appears to be stuck on shared state from the outer render scope. The same function completed when run in isolation, which usually means a module-scoped value (for example a top-level Map used to dedupe fetches) is joining a promise created outside the cache. "use cache" already dedupes calls with the same arguments — within a request and across requests on the same server instance — so the surrounding dedupe layer is both unnecessary and the likely cause. Remove it and rely on "use cache" alone for deduping.", - "environmentLabel": null, - "label": "Runtime Error", + "environmentLabel": "Server", + "label": "Console Error", "source": "app/recovery-stuck/page.tsx (24:1) @ getCachedData > 24 | async function getCachedData() { | ^", @@ -257,12 +257,12 @@ describe('use-cache-deadlock-probe', () => { const outputIndex = next.cliOutput.length const browser = await next.browser('/private-cookies') - await expect(browser).toDisplayRedbox(` + await expect(browser).toDisplayCollapsedRedbox(` { "code": "E1181", "description": "Filling a "use cache" entry appears to be stuck on shared state from the outer render scope. The same function completed when run in isolation, which usually means a module-scoped value (for example a top-level Map used to dedupe fetches) is joining a promise created outside the cache. "use cache" already dedupes calls with the same arguments — within a request and across requests on the same server instance — so the surrounding dedupe layer is both unnecessary and the likely cause. Remove it and rely on "use cache" alone for deduping.", - "environmentLabel": null, - "label": "Runtime Error", + "environmentLabel": "Server", + "label": "Console Error", "source": "app/private-cookies/page.tsx (20:1) @ getCachedData > 20 | async function getCachedData(): Promise { | ^", diff --git a/test/e2e/app-dir/use-cache-hanging/use-cache-hanging.test.ts b/test/e2e/app-dir/use-cache-hanging/use-cache-hanging.test.ts index d52767eef0f8..29d82e0d07b4 100644 --- a/test/e2e/app-dir/use-cache-hanging/use-cache-hanging.test.ts +++ b/test/e2e/app-dir/use-cache-hanging/use-cache-hanging.test.ts @@ -22,12 +22,12 @@ describe('use-cache-hanging', () => { const outputIndex = next.cliOutput.length const browser = await next.browser('/static') - await expect(browser).toDisplayRedbox(` + await expect(browser).toDisplayCollapsedRedbox(` { "code": "E236", "description": "Filling a cache during prerender timed out, likely because request-specific arguments such as params, searchParams, cookies() or dynamic data were used inside "use cache".", - "environmentLabel": null, - "label": "Runtime Error", + "environmentLabel": "Server", + "label": "Console Error", "source": "app/static/page.tsx (6:1) @ getCachedData > 6 | async function getCachedData(): Promise { | ^", @@ -51,12 +51,12 @@ describe('use-cache-hanging', () => { const outputIndex = next.cliOutput.length const browser = await next.browser('/runtime') - await expect(browser).toDisplayRedbox(` + await expect(browser).toDisplayCollapsedRedbox(` { "code": "E236", "description": "Filling a cache during prerender timed out, likely because request-specific arguments such as params, searchParams, cookies() or dynamic data were used inside "use cache".", - "environmentLabel": null, - "label": "Runtime Error", + "environmentLabel": "Server", + "label": "Console Error", "source": "app/runtime/page.tsx (8:1) @ getCachedData > 8 | async function getCachedData(): Promise { | ^", diff --git a/test/e2e/app-dir/use-cache-search-params/use-cache-search-params.test.ts b/test/e2e/app-dir/use-cache-search-params/use-cache-search-params.test.ts index 98c3bd5ff9db..b601d4dc7561 100644 --- a/test/e2e/app-dir/use-cache-search-params/use-cache-search-params.test.ts +++ b/test/e2e/app-dir/use-cache-search-params/use-cache-search-params.test.ts @@ -1,16 +1,12 @@ import { nextTestSetup } from 'e2e-utils' -import { - waitForRedbox, - assertNoConsoleErrors, - waitForNoRedbox, - getRedboxDescription, - getRedboxSource, -} from 'next-test-utils' +import { assertNoConsoleErrors, waitForNoRedbox } from 'next-test-utils' import stripAnsi from 'strip-ansi' const getExpectedErrorMessage = (route: string) => `Route ${route} used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache` +const isCacheComponentsEnabled = process.env.__NEXT_CACHE_COMPONENTS === 'true' + describe('use-cache-search-params', () => { const { next, isNextDev, skipped } = nextTestSetup({ files: __dirname, @@ -34,29 +30,41 @@ describe('use-cache-search-params', () => { const outputIndex = next.cliOutput.length const browser = await next.browser(`${route}?foo=1`) - await waitForRedbox(browser) - - const errorDescription = await getRedboxDescription(browser) - const errorSource = await getRedboxSource(browser) - const expectedErrorMessage = getExpectedErrorMessage(route) - - expect(errorDescription).toBe(expectedErrorMessage) + if (isCacheComponentsEnabled) { + await expect(browser).toDisplayRedbox(` + { + "code": "E842", + "description": "Route /search-params-used used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache", + "environmentLabel": "Prerender", + "label": "Runtime Error", + "source": "app/search-params-used/page.tsx (8:17) @ Page + > 8 | const param = (await searchParams).foo + | ^", + "stack": [ + "Page app/search-params-used/page.tsx (8:17)", + ], + } + `) + } else { + await expect(browser).toDisplayRedbox(` + { + "code": "E842", + "description": "Route /search-params-used used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache", + "environmentLabel": "Cache", + "label": "Runtime Error", + "source": "app/search-params-used/page.tsx (8:17) @ Page + > 8 | const param = (await searchParams).foo + | ^", + "stack": [ + "Page app/search-params-used/page.tsx (8:17)", + ], + } + `) + } const cliOutput = stripAnsi(next.cliOutput.slice(outputIndex)) - expect(errorSource).toMatchInlineSnapshot(` - "app/search-params-used/page.tsx (8:17) @ Page - - 6 | searchParams: Promise<{ [key: string]: string | string[] | undefined }> - 7 | }) { - > 8 | const param = (await searchParams).foo - | ^ - 9 | - 10 | return

param: {param}

- 11 | }" - `) - - expect(cliOutput).toContain(`Error: ${expectedErrorMessage} + expect(cliOutput).toContain(`Error: ${getExpectedErrorMessage(route)} at Page (app/search-params-used/page.tsx:8:17)`) }) }) @@ -70,29 +78,41 @@ describe('use-cache-search-params', () => { const outputIndex = next.cliOutput.length const browser = await next.browser(`${route}?foo=1`) - await waitForRedbox(browser) - - const errorDescription = await getRedboxDescription(browser) - const errorSource = await getRedboxSource(browser) - const expectedErrorMessage = getExpectedErrorMessage(route) - - expect(errorDescription).toBe(expectedErrorMessage) + if (isCacheComponentsEnabled) { + await expect(browser).toDisplayRedbox(` + { + "code": "E842", + "description": "Route /search-params-caught used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache", + "environmentLabel": "Prerender", + "label": "Runtime Error", + "source": "app/search-params-caught/page.tsx (11:5) @ Page + > 11 | param = (await searchParams).foo + | ^", + "stack": [ + "Page app/search-params-caught/page.tsx (11:5)", + ], + } + `) + } else { + await expect(browser).toDisplayCollapsedRedbox(` + { + "code": "E842", + "description": "Route /search-params-caught used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache", + "environmentLabel": "Server", + "label": "Console Error", + "source": "app/search-params-caught/page.tsx (11:5) @ Page + > 11 | param = (await searchParams).foo + | ^", + "stack": [ + "Page app/search-params-caught/page.tsx (11:5)", + ], + } + `) + } const cliOutput = stripAnsi(next.cliOutput.slice(outputIndex)) - expect(errorSource).toMatchInlineSnapshot(` - "app/search-params-caught/page.tsx (11:5) @ Page - - 9 | - 10 | try { - > 11 | param = (await searchParams).foo - | ^ - 12 | } catch {} - 13 | - 14 | return

param: {param}

" - `) - - expect(cliOutput).toContain(`Error: ${expectedErrorMessage} + expect(cliOutput).toContain(`Error: ${getExpectedErrorMessage(route)} at Page (app/search-params-caught/page.tsx:11:5)`) }) @@ -104,11 +124,37 @@ describe('use-cache-search-params', () => { await browser.refresh() await browser.refresh() - await waitForRedbox(browser) - - const errorDescription = await getRedboxDescription(browser) - - expect(errorDescription).toBe(getExpectedErrorMessage(route)) + if (isCacheComponentsEnabled) { + await expect(browser).toDisplayRedbox(` + { + "code": "E842", + "description": "Route /search-params-caught used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache", + "environmentLabel": "Prerender", + "label": "Runtime Error", + "source": "app/search-params-caught/page.tsx (11:5) @ Page + > 11 | param = (await searchParams).foo + | ^", + "stack": [ + "Page app/search-params-caught/page.tsx (11:5)", + ], + } + `) + } else { + await expect(browser).toDisplayCollapsedRedbox(` + { + "code": "E842", + "description": "Route /search-params-caught used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache", + "environmentLabel": "Server", + "label": "Console Error", + "source": "app/search-params-caught/page.tsx (11:5) @ Page + > 11 | param = (await searchParams).foo + | ^", + "stack": [ + "Page app/search-params-caught/page.tsx (11:5)", + ], + } + `) + } }) }) @@ -134,20 +180,37 @@ describe('use-cache-search-params', () => { '/search-params-used-generate-metadata?title=foo' ) - await expect(browser).toDisplayRedbox(` - { - "code": "E842", - "description": "Route /search-params-used-generate-metadata used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache", - "environmentLabel": null, - "label": "Runtime Error", - "source": "app/search-params-used-generate-metadata/page.tsx (9:17) @ generateMetadata - > 9 | const title = (await searchParams).title - | ^", - "stack": [ - "generateMetadata app/search-params-used-generate-metadata/page.tsx (9:17)", - ], - } - `) + if (isCacheComponentsEnabled) { + await expect(browser).toDisplayRedbox(` + { + "code": "E842", + "description": "Route /search-params-used-generate-metadata used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache", + "environmentLabel": "Prerender", + "label": "Runtime Error", + "source": "app/search-params-used-generate-metadata/page.tsx (9:17) @ generateMetadata + > 9 | const title = (await searchParams).title + | ^", + "stack": [ + "generateMetadata app/search-params-used-generate-metadata/page.tsx (9:17)", + ], + } + `) + } else { + await expect(browser).toDisplayRedbox(` + { + "code": "E842", + "description": "Route /search-params-used-generate-metadata used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache", + "environmentLabel": "Cache", + "label": "Runtime Error", + "source": "app/search-params-used-generate-metadata/page.tsx (9:17) @ generateMetadata + > 9 | const title = (await searchParams).title + | ^", + "stack": [ + "generateMetadata app/search-params-used-generate-metadata/page.tsx (9:17)", + ], + } + `) + } }) it('should show an error when searchParams are used inside of a cached generateViewport', async () => { @@ -155,20 +218,37 @@ describe('use-cache-search-params', () => { '/search-params-used-generate-viewport?color=red' ) - await expect(browser).toDisplayRedbox(` - { - "code": "E842", - "description": "Route /search-params-used-generate-viewport used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache", - "environmentLabel": null, - "label": "Runtime Error", - "source": "app/search-params-used-generate-viewport/page.tsx (9:17) @ generateViewport - > 9 | const color = (await searchParams).color - | ^", - "stack": [ - "generateViewport app/search-params-used-generate-viewport/page.tsx (9:17)", - ], - } - `) + if (isCacheComponentsEnabled) { + await expect(browser).toDisplayRedbox(` + { + "code": "E842", + "description": "Route /search-params-used-generate-viewport used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache", + "environmentLabel": "Prerender", + "label": "Runtime Error", + "source": "app/search-params-used-generate-viewport/page.tsx (9:17) @ generateViewport + > 9 | const color = (await searchParams).color + | ^", + "stack": [ + "generateViewport app/search-params-used-generate-viewport/page.tsx (9:17)", + ], + } + `) + } else { + await expect(browser).toDisplayRedbox(` + { + "code": "E842", + "description": "Route /search-params-used-generate-viewport used \`searchParams\` inside "use cache". Accessing dynamic request data inside a cache scope is not supported. If you need some search params inside a cached function await \`searchParams\` outside of the cached function and pass only the required search params as arguments to the cached function. See more info here: https://nextjs.org/docs/messages/next-request-in-use-cache", + "environmentLabel": "Cache", + "label": "Runtime Error", + "source": "app/search-params-used-generate-viewport/page.tsx (9:17) @ generateViewport + > 9 | const color = (await searchParams).color + | ^", + "stack": [ + "generateViewport app/search-params-used-generate-viewport/page.tsx (9:17)", + ], + } + `) + } }) } else { afterEach(async () => { From 51713ddca8991b7aaeec9b3e96c574e8dca5ff4e Mon Sep 17 00:00:00 2001 From: Vercel Release Bot <88769842+vercel-release-bot@users.noreply.github.com> Date: Wed, 13 May 2026 17:46:54 +0200 Subject: [PATCH 11/12] Upgrade React from `dd453071-20260506` to `d5736f09-20260507` (#93702) [diff facebook/react@dd453071...d5736f09](https://github.com/facebook/react/compare/dd453071...d5736f09)
React upstream changes - https://github.com/facebook/react/pull/36386
--------- Co-authored-by: next-js-bot[bot] <279046576+next-js-bot[bot]@users.noreply.github.com> --- package.json | 30 +- .../cjs/react-dom-client.development.js | 360 ++--- .../cjs/react-dom-client.production.js | 171 ++- .../cjs/react-dom-profiling.development.js | 360 ++--- .../cjs/react-dom-profiling.profiling.js | 171 ++- ...t-dom-server-legacy.browser.development.js | 2 +- ...ct-dom-server-legacy.browser.production.js | 2 +- ...eact-dom-server-legacy.node.development.js | 2 +- ...react-dom-server-legacy.node.production.js | 2 +- .../react-dom-server.browser.development.js | 6 +- .../react-dom-server.browser.production.js | 6 +- .../cjs/react-dom-server.bun.production.js | 6 +- .../cjs/react-dom-server.edge.development.js | 6 +- .../cjs/react-dom-server.edge.production.js | 6 +- .../cjs/react-dom-server.node.development.js | 6 +- .../cjs/react-dom-server.node.production.js | 6 +- .../react-dom-unstable_testing.development.js | 360 ++--- .../react-dom-unstable_testing.production.js | 171 ++- .../cjs/react-dom.development.js | 2 +- .../cjs/react-dom.production.js | 2 +- .../cjs/react-dom.react-server.development.js | 2 +- .../cjs/react-dom.react-server.production.js | 2 +- .../react-dom-experimental/package.json | 4 +- .../cjs/react-dom-client.development.js | 358 ++--- .../cjs/react-dom-client.production.js | 171 ++- .../cjs/react-dom-profiling.development.js | 358 ++--- .../cjs/react-dom-profiling.profiling.js | 171 ++- ...t-dom-server-legacy.browser.development.js | 2 +- ...ct-dom-server-legacy.browser.production.js | 2 +- ...eact-dom-server-legacy.node.development.js | 2 +- ...react-dom-server-legacy.node.production.js | 2 +- .../react-dom-server.browser.development.js | 6 +- .../react-dom-server.browser.production.js | 6 +- .../cjs/react-dom-server.bun.production.js | 6 +- .../cjs/react-dom-server.edge.development.js | 6 +- .../cjs/react-dom-server.edge.production.js | 6 +- .../cjs/react-dom-server.node.development.js | 6 +- .../cjs/react-dom-server.node.production.js | 6 +- .../react-dom/cjs/react-dom.development.js | 2 +- .../react-dom/cjs/react-dom.production.js | 2 +- .../cjs/react-dom.react-server.development.js | 2 +- .../cjs/react-dom.react-server.production.js | 2 +- .../next/src/compiled/react-dom/package.json | 4 +- .../cjs/react.development.js | 2 +- .../cjs/react.production.js | 2 +- .../cjs/react.react-server.development.js | 2 +- .../cjs/react.react-server.production.js | 2 +- .../next/src/compiled/react-is/package.json | 2 +- ...om-turbopack-client.browser.development.js | 4 +- .../package.json | 4 +- ...om-turbopack-client.browser.development.js | 4 +- .../react-server-dom-turbopack/package.json | 4 +- ...-dom-webpack-client.browser.development.js | 4 +- .../package.json | 4 +- ...-dom-webpack-client.browser.development.js | 4 +- .../react-server-dom-webpack/package.json | 4 +- .../compiled/react/cjs/react.development.js | 2 +- .../compiled/react/cjs/react.production.js | 2 +- .../cjs/react.react-server.development.js | 2 +- .../cjs/react.react-server.production.js | 2 +- .../next/src/compiled/unistore/unistore.js | 2 +- pnpm-lock.yaml | 1186 ++++++++--------- 62 files changed, 2134 insertions(+), 1909 deletions(-) diff --git a/package.json b/package.json index 5fb5e1c05fcd..21adb2404762 100644 --- a/package.json +++ b/package.json @@ -258,16 +258,16 @@ "pretty-ms": "7.0.0", "random-seed": "0.3.0", "react": "19.0.0", - "react-builtin": "npm:react@19.3.0-canary-dd453071-20260506", + "react-builtin": "npm:react@19.3.0-canary-d5736f09-20260507", "react-dom": "19.0.0", - "react-dom-builtin": "npm:react-dom@19.3.0-canary-dd453071-20260506", - "react-dom-experimental-builtin": "npm:react-dom@0.0.0-experimental-dd453071-20260506", - "react-experimental-builtin": "npm:react@0.0.0-experimental-dd453071-20260506", - "react-is-builtin": "npm:react-is@19.3.0-canary-dd453071-20260506", - "react-server-dom-turbopack": "npm:react-server-dom-turbopack@19.3.0-canary-dd453071-20260506", - "react-server-dom-turbopack-experimental": "npm:react-server-dom-turbopack@0.0.0-experimental-dd453071-20260506", - "react-server-dom-webpack": "npm:react-server-dom-webpack@19.3.0-canary-dd453071-20260506", - "react-server-dom-webpack-experimental": "npm:react-server-dom-webpack@0.0.0-experimental-dd453071-20260506", + "react-dom-builtin": "npm:react-dom@19.3.0-canary-d5736f09-20260507", + "react-dom-experimental-builtin": "npm:react-dom@0.0.0-experimental-d5736f09-20260507", + "react-experimental-builtin": "npm:react@0.0.0-experimental-d5736f09-20260507", + "react-is-builtin": "npm:react-is@19.3.0-canary-d5736f09-20260507", + "react-server-dom-turbopack": "npm:react-server-dom-turbopack@19.3.0-canary-d5736f09-20260507", + "react-server-dom-turbopack-experimental": "npm:react-server-dom-turbopack@0.0.0-experimental-d5736f09-20260507", + "react-server-dom-webpack": "npm:react-server-dom-webpack@19.3.0-canary-d5736f09-20260507", + "react-server-dom-webpack-experimental": "npm:react-server-dom-webpack@0.0.0-experimental-d5736f09-20260507", "react-ssr-prepass": "1.0.8", "react-virtualized": "9.22.3", "relay-compiler": "13.0.2", @@ -277,8 +277,8 @@ "resolve-from": "5.0.0", "sass": "1.54.0", "satori": "0.25.0", - "scheduler-builtin": "npm:scheduler@0.28.0-canary-dd453071-20260506", - "scheduler-experimental-builtin": "npm:scheduler@0.0.0-experimental-dd453071-20260506", + "scheduler-builtin": "npm:scheduler@0.28.0-canary-d5736f09-20260507", + "scheduler-experimental-builtin": "npm:scheduler@0.0.0-experimental-d5736f09-20260507", "seedrandom": "3.0.5", "semver": "7.3.7", "serve-handler": "6.1.6", @@ -322,10 +322,10 @@ "@types/react-dom": "19.2.3", "@types/retry": "0.12.0", "jest-snapshot": "30.0.0-alpha.6", - "react": "npm:react@19.3.0-canary-dd453071-20260506", - "react-dom": "npm:react-dom@19.3.0-canary-dd453071-20260506", - "react-is": "npm:react-is@19.3.0-canary-dd453071-20260506", - "scheduler": "npm:scheduler@0.28.0-canary-dd453071-20260506" + "react": "npm:react@19.3.0-canary-d5736f09-20260507", + "react-dom": "npm:react-dom@19.3.0-canary-d5736f09-20260507", + "react-is": "npm:react-is@19.3.0-canary-d5736f09-20260507", + "scheduler": "npm:scheduler@0.28.0-canary-d5736f09-20260507" }, "packageExtensions": { "eslint-plugin-react-hooks@0.0.0-experimental-6de32a5a-20250822": { diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-client.development.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-client.development.js index bb1d45e3251e..42acaac5b670 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-client.development.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-client.development.js @@ -1522,6 +1522,9 @@ function markNodeAsHoistable(node) { node[internalHoistableMarker] = !0; } + function clearPendingLoadOnNode(node) { + node[internalLoadPendingKey] = void 0; + } function registerTwoPhaseEvent(registrationName, dependencies) { registerDirectEvent(registrationName, dependencies); registerDirectEvent(registrationName + "Capture", dependencies); @@ -11369,24 +11372,24 @@ return current; } function updateSuspenseComponent(current, workInProgress, renderLanes) { - var JSCompiler_object_inline_digest_3223; - var JSCompiler_object_inline_stack_3224 = workInProgress.pendingProps; + var JSCompiler_object_inline_digest_3227; + var JSCompiler_object_inline_stack_3228 = workInProgress.pendingProps; shouldSuspendImpl(workInProgress) && (workInProgress.flags |= 128); - var JSCompiler_object_inline_message_3222 = !1; + var JSCompiler_object_inline_message_3226 = !1; var didSuspend = 0 !== (workInProgress.flags & 128); - (JSCompiler_object_inline_digest_3223 = didSuspend) || - (JSCompiler_object_inline_digest_3223 = + (JSCompiler_object_inline_digest_3227 = didSuspend) || + (JSCompiler_object_inline_digest_3227 = null !== current && null === current.memoizedState ? !1 : 0 !== (suspenseStackCursor.current & ForceSuspenseFallback)); - JSCompiler_object_inline_digest_3223 && - ((JSCompiler_object_inline_message_3222 = !0), + JSCompiler_object_inline_digest_3227 && + ((JSCompiler_object_inline_message_3226 = !0), (workInProgress.flags &= -129)); - JSCompiler_object_inline_digest_3223 = 0 !== (workInProgress.flags & 32); + JSCompiler_object_inline_digest_3227 = 0 !== (workInProgress.flags & 32); workInProgress.flags &= -33; if (null === current) { if (isHydrating) { - JSCompiler_object_inline_message_3222 + JSCompiler_object_inline_message_3226 ? pushPrimaryTreeSuspenseHandler(workInProgress) : reuseSuspenseHandlerOnStack(workInProgress); (current = nextHydratableInstance) @@ -11399,18 +11402,18 @@ ? renderLanes : null), null !== renderLanes && - ((JSCompiler_object_inline_digest_3223 = { + ((JSCompiler_object_inline_digest_3227 = { dehydrated: renderLanes, treeContext: getSuspendedTreeContext(), retryLane: 536870912, hydrationErrors: null }), (workInProgress.memoizedState = - JSCompiler_object_inline_digest_3223), - (JSCompiler_object_inline_digest_3223 = + JSCompiler_object_inline_digest_3227), + (JSCompiler_object_inline_digest_3227 = createFiberFromDehydratedFragment(renderLanes)), - (JSCompiler_object_inline_digest_3223.return = workInProgress), - (workInProgress.child = JSCompiler_object_inline_digest_3223), + (JSCompiler_object_inline_digest_3227.return = workInProgress), + (workInProgress.child = JSCompiler_object_inline_digest_3227), (hydrationParentFiber = workInProgress), (nextHydratableInstance = null))) : (renderLanes = null); @@ -11424,9 +11427,9 @@ : (workInProgress.lanes = 536870912); return null; } - var nextPrimaryChildren = JSCompiler_object_inline_stack_3224.children, - nextFallbackChildren = JSCompiler_object_inline_stack_3224.fallback; - if (JSCompiler_object_inline_message_3222) + var nextPrimaryChildren = JSCompiler_object_inline_stack_3228.children, + nextFallbackChildren = JSCompiler_object_inline_stack_3228.fallback; + if (JSCompiler_object_inline_message_3226) return ( reuseSuspenseHandlerOnStack(workInProgress), mountSuspenseFallbackChildren( @@ -11435,19 +11438,19 @@ nextFallbackChildren, renderLanes ), - (JSCompiler_object_inline_stack_3224 = workInProgress.child), - (JSCompiler_object_inline_stack_3224.memoizedState = + (JSCompiler_object_inline_stack_3228 = workInProgress.child), + (JSCompiler_object_inline_stack_3228.memoizedState = mountSuspenseOffscreenState(renderLanes)), - (JSCompiler_object_inline_stack_3224.childLanes = + (JSCompiler_object_inline_stack_3228.childLanes = getRemainingWorkInPrimaryTree( current, - JSCompiler_object_inline_digest_3223, + JSCompiler_object_inline_digest_3227, renderLanes )), (workInProgress.memoizedState = SUSPENDED_MARKER), - bailoutOffscreenComponent(null, JSCompiler_object_inline_stack_3224) + bailoutOffscreenComponent(null, JSCompiler_object_inline_stack_3228) ); - if (!0 === JSCompiler_object_inline_stack_3224.defer) + if (!0 === JSCompiler_object_inline_stack_3228.defer) return ( reuseSuspenseHandlerOnStack(workInProgress), mountSuspenseFallbackChildren( @@ -11456,18 +11459,18 @@ nextFallbackChildren, renderLanes ), - (JSCompiler_object_inline_stack_3224 = workInProgress.child), - (JSCompiler_object_inline_stack_3224.memoizedState = + (JSCompiler_object_inline_stack_3228 = workInProgress.child), + (JSCompiler_object_inline_stack_3228.memoizedState = mountSuspenseOffscreenState(renderLanes)), - (JSCompiler_object_inline_stack_3224.childLanes = + (JSCompiler_object_inline_stack_3228.childLanes = getRemainingWorkInPrimaryTree( current, - JSCompiler_object_inline_digest_3223, + JSCompiler_object_inline_digest_3227, renderLanes )), (workInProgress.memoizedState = SUSPENDED_MARKER), (workInProgress.lanes = 4194304), - bailoutOffscreenComponent(null, JSCompiler_object_inline_stack_3224) + bailoutOffscreenComponent(null, JSCompiler_object_inline_stack_3228) ); pushPrimaryTreeSuspenseHandler(workInProgress); return mountSuspensePrimaryChildren( @@ -11477,8 +11480,8 @@ } var prevState = current.memoizedState; if (null !== prevState) { - var JSCompiler_object_inline_componentStack_3225 = prevState.dehydrated; - if (null !== JSCompiler_object_inline_componentStack_3225) { + var JSCompiler_object_inline_componentStack_3229 = prevState.dehydrated; + if (null !== JSCompiler_object_inline_componentStack_3229) { if (didSuspend) workInProgress.flags & 256 ? (pushPrimaryTreeSuspenseHandler(workInProgress), @@ -11495,13 +11498,13 @@ (workInProgress = null)) : (reuseSuspenseHandlerOnStack(workInProgress), (nextPrimaryChildren = - JSCompiler_object_inline_stack_3224.fallback), + JSCompiler_object_inline_stack_3228.fallback), (nextFallbackChildren = workInProgress.mode), - (JSCompiler_object_inline_stack_3224 = + (JSCompiler_object_inline_stack_3228 = mountWorkInProgressOffscreenFiber( { mode: "visible", - children: JSCompiler_object_inline_stack_3224.children + children: JSCompiler_object_inline_stack_3228.children }, nextFallbackChildren )), @@ -11512,30 +11515,30 @@ null )), (nextPrimaryChildren.flags |= 2), - (JSCompiler_object_inline_stack_3224.return = workInProgress), + (JSCompiler_object_inline_stack_3228.return = workInProgress), (nextPrimaryChildren.return = workInProgress), - (JSCompiler_object_inline_stack_3224.sibling = + (JSCompiler_object_inline_stack_3228.sibling = nextPrimaryChildren), - (workInProgress.child = JSCompiler_object_inline_stack_3224), + (workInProgress.child = JSCompiler_object_inline_stack_3228), reconcileChildFibers( workInProgress, current.child, null, renderLanes ), - (JSCompiler_object_inline_stack_3224 = workInProgress.child), - (JSCompiler_object_inline_stack_3224.memoizedState = + (JSCompiler_object_inline_stack_3228 = workInProgress.child), + (JSCompiler_object_inline_stack_3228.memoizedState = mountSuspenseOffscreenState(renderLanes)), - (JSCompiler_object_inline_stack_3224.childLanes = + (JSCompiler_object_inline_stack_3228.childLanes = getRemainingWorkInPrimaryTree( current, - JSCompiler_object_inline_digest_3223, + JSCompiler_object_inline_digest_3227, renderLanes )), (workInProgress.memoizedState = SUSPENDED_MARKER), (workInProgress = bailoutOffscreenComponent( null, - JSCompiler_object_inline_stack_3224 + JSCompiler_object_inline_stack_3228 ))); else if ( (pushPrimaryTreeSuspenseHandler(workInProgress), @@ -11543,45 +11546,45 @@ 0 !== (renderLanes & 536870912) && markRenderDerivedCause(workInProgress), isSuspenseInstanceFallback( - JSCompiler_object_inline_componentStack_3225 + JSCompiler_object_inline_componentStack_3229 )) ) { - JSCompiler_object_inline_digest_3223 = - JSCompiler_object_inline_componentStack_3225.nextSibling && - JSCompiler_object_inline_componentStack_3225.nextSibling.dataset; - if (JSCompiler_object_inline_digest_3223) { - nextPrimaryChildren = JSCompiler_object_inline_digest_3223.dgst; - var message = JSCompiler_object_inline_digest_3223.msg; - nextFallbackChildren = JSCompiler_object_inline_digest_3223.stck; - var componentStack = JSCompiler_object_inline_digest_3223.cstck; + JSCompiler_object_inline_digest_3227 = + JSCompiler_object_inline_componentStack_3229.nextSibling && + JSCompiler_object_inline_componentStack_3229.nextSibling.dataset; + if (JSCompiler_object_inline_digest_3227) { + nextPrimaryChildren = JSCompiler_object_inline_digest_3227.dgst; + var message = JSCompiler_object_inline_digest_3227.msg; + nextFallbackChildren = JSCompiler_object_inline_digest_3227.stck; + var componentStack = JSCompiler_object_inline_digest_3227.cstck; } - JSCompiler_object_inline_message_3222 = message; - JSCompiler_object_inline_digest_3223 = nextPrimaryChildren; - JSCompiler_object_inline_stack_3224 = nextFallbackChildren; - JSCompiler_object_inline_componentStack_3225 = componentStack; - nextPrimaryChildren = JSCompiler_object_inline_message_3222; - nextFallbackChildren = JSCompiler_object_inline_componentStack_3225; + JSCompiler_object_inline_message_3226 = message; + JSCompiler_object_inline_digest_3227 = nextPrimaryChildren; + JSCompiler_object_inline_stack_3228 = nextFallbackChildren; + JSCompiler_object_inline_componentStack_3229 = componentStack; + nextPrimaryChildren = JSCompiler_object_inline_message_3226; + nextFallbackChildren = JSCompiler_object_inline_componentStack_3229; nextPrimaryChildren = nextPrimaryChildren ? Error(nextPrimaryChildren) : Error( "The server could not finish this Suspense boundary, likely due to an error during server rendering. Switched to client rendering." ); nextPrimaryChildren.stack = - JSCompiler_object_inline_stack_3224 || ""; - nextPrimaryChildren.digest = JSCompiler_object_inline_digest_3223; - JSCompiler_object_inline_digest_3223 = + JSCompiler_object_inline_stack_3228 || ""; + nextPrimaryChildren.digest = JSCompiler_object_inline_digest_3227; + JSCompiler_object_inline_digest_3227 = void 0 === nextFallbackChildren ? null : nextFallbackChildren; - JSCompiler_object_inline_stack_3224 = { + JSCompiler_object_inline_stack_3228 = { value: nextPrimaryChildren, source: null, - stack: JSCompiler_object_inline_digest_3223 + stack: JSCompiler_object_inline_digest_3227 }; - "string" === typeof JSCompiler_object_inline_digest_3223 && + "string" === typeof JSCompiler_object_inline_digest_3227 && CapturedStacks.set( nextPrimaryChildren, - JSCompiler_object_inline_stack_3224 + JSCompiler_object_inline_stack_3228 ); - queueHydrationError(JSCompiler_object_inline_stack_3224); + queueHydrationError(JSCompiler_object_inline_stack_3228); workInProgress = retrySuspenseComponentWithoutHydrating( current, workInProgress, @@ -11595,35 +11598,35 @@ renderLanes, !1 ), - (JSCompiler_object_inline_digest_3223 = + (JSCompiler_object_inline_digest_3227 = 0 !== (renderLanes & current.childLanes)), - didReceiveUpdate || JSCompiler_object_inline_digest_3223) + didReceiveUpdate || JSCompiler_object_inline_digest_3227) ) { - JSCompiler_object_inline_digest_3223 = workInProgressRoot; + JSCompiler_object_inline_digest_3227 = workInProgressRoot; if ( - null !== JSCompiler_object_inline_digest_3223 && - ((JSCompiler_object_inline_stack_3224 = getBumpedLaneForHydration( - JSCompiler_object_inline_digest_3223, + null !== JSCompiler_object_inline_digest_3227 && + ((JSCompiler_object_inline_stack_3228 = getBumpedLaneForHydration( + JSCompiler_object_inline_digest_3227, renderLanes )), - 0 !== JSCompiler_object_inline_stack_3224 && - JSCompiler_object_inline_stack_3224 !== prevState.retryLane) + 0 !== JSCompiler_object_inline_stack_3228 && + JSCompiler_object_inline_stack_3228 !== prevState.retryLane) ) throw ( - ((prevState.retryLane = JSCompiler_object_inline_stack_3224), + ((prevState.retryLane = JSCompiler_object_inline_stack_3228), enqueueConcurrentRenderForLane( current, - JSCompiler_object_inline_stack_3224 + JSCompiler_object_inline_stack_3228 ), scheduleUpdateOnFiber( - JSCompiler_object_inline_digest_3223, + JSCompiler_object_inline_digest_3227, current, - JSCompiler_object_inline_stack_3224 + JSCompiler_object_inline_stack_3228 ), SelectiveHydrationException) ); isSuspenseInstancePending( - JSCompiler_object_inline_componentStack_3225 + JSCompiler_object_inline_componentStack_3229 ) || renderDidSuspendDelayIfPossible(); workInProgress = retrySuspenseComponentWithoutHydrating( current, @@ -11632,14 +11635,14 @@ ); } else isSuspenseInstancePending( - JSCompiler_object_inline_componentStack_3225 + JSCompiler_object_inline_componentStack_3229 ) ? ((workInProgress.flags |= 192), (workInProgress.child = current.child), (workInProgress = null)) : ((current = prevState.treeContext), (nextHydratableInstance = getNextHydratable( - JSCompiler_object_inline_componentStack_3225.nextSibling + JSCompiler_object_inline_componentStack_3229.nextSibling )), (hydrationParentFiber = workInProgress), (isHydrating = !0), @@ -11651,32 +11654,32 @@ restoreSuspendedTreeContext(workInProgress, current), (workInProgress = mountSuspensePrimaryChildren( workInProgress, - JSCompiler_object_inline_stack_3224.children + JSCompiler_object_inline_stack_3228.children )), (workInProgress.flags |= 134221824)); return workInProgress; } } - if (JSCompiler_object_inline_message_3222) + if (JSCompiler_object_inline_message_3226) return ( reuseSuspenseHandlerOnStack(workInProgress), - (nextPrimaryChildren = JSCompiler_object_inline_stack_3224.fallback), + (nextPrimaryChildren = JSCompiler_object_inline_stack_3228.fallback), (nextFallbackChildren = workInProgress.mode), (componentStack = current.child), - (JSCompiler_object_inline_componentStack_3225 = + (JSCompiler_object_inline_componentStack_3229 = componentStack.sibling), - (JSCompiler_object_inline_stack_3224 = createWorkInProgress( + (JSCompiler_object_inline_stack_3228 = createWorkInProgress( componentStack, { mode: "hidden", - children: JSCompiler_object_inline_stack_3224.children + children: JSCompiler_object_inline_stack_3228.children } )), - (JSCompiler_object_inline_stack_3224.subtreeFlags = + (JSCompiler_object_inline_stack_3228.subtreeFlags = componentStack.subtreeFlags & 133169152), - null !== JSCompiler_object_inline_componentStack_3225 + null !== JSCompiler_object_inline_componentStack_3229 ? (nextPrimaryChildren = createWorkInProgress( - JSCompiler_object_inline_componentStack_3225, + JSCompiler_object_inline_componentStack_3229, nextPrimaryChildren )) : ((nextPrimaryChildren = createFiberFromFragment( @@ -11687,11 +11690,11 @@ )), (nextPrimaryChildren.flags |= 2)), (nextPrimaryChildren.return = workInProgress), - (JSCompiler_object_inline_stack_3224.return = workInProgress), - (JSCompiler_object_inline_stack_3224.sibling = nextPrimaryChildren), - (workInProgress.child = JSCompiler_object_inline_stack_3224), - bailoutOffscreenComponent(null, JSCompiler_object_inline_stack_3224), - (JSCompiler_object_inline_stack_3224 = workInProgress.child), + (JSCompiler_object_inline_stack_3228.return = workInProgress), + (JSCompiler_object_inline_stack_3228.sibling = nextPrimaryChildren), + (workInProgress.child = JSCompiler_object_inline_stack_3228), + bailoutOffscreenComponent(null, JSCompiler_object_inline_stack_3228), + (JSCompiler_object_inline_stack_3228 = workInProgress.child), (nextPrimaryChildren = current.child.memoizedState), null === nextPrimaryChildren ? (nextPrimaryChildren = mountSuspenseOffscreenState(renderLanes)) @@ -11707,18 +11710,18 @@ baseLanes: nextPrimaryChildren.baseLanes | renderLanes, cachePool: nextFallbackChildren })), - (JSCompiler_object_inline_stack_3224.memoizedState = + (JSCompiler_object_inline_stack_3228.memoizedState = nextPrimaryChildren), - (JSCompiler_object_inline_stack_3224.childLanes = + (JSCompiler_object_inline_stack_3228.childLanes = getRemainingWorkInPrimaryTree( current, - JSCompiler_object_inline_digest_3223, + JSCompiler_object_inline_digest_3227, renderLanes )), (workInProgress.memoizedState = SUSPENDED_MARKER), bailoutOffscreenComponent( current.child, - JSCompiler_object_inline_stack_3224 + JSCompiler_object_inline_stack_3228 ) ); null !== prevState && @@ -11730,16 +11733,16 @@ current = renderLanes.sibling; renderLanes = createWorkInProgress(renderLanes, { mode: "visible", - children: JSCompiler_object_inline_stack_3224.children + children: JSCompiler_object_inline_stack_3228.children }); renderLanes.return = workInProgress; renderLanes.sibling = null; null !== current && - ((JSCompiler_object_inline_digest_3223 = workInProgress.deletions), - null === JSCompiler_object_inline_digest_3223 + ((JSCompiler_object_inline_digest_3227 = workInProgress.deletions), + null === JSCompiler_object_inline_digest_3227 ? ((workInProgress.deletions = [current]), (workInProgress.flags |= 16)) - : JSCompiler_object_inline_digest_3223.push(current)); + : JSCompiler_object_inline_digest_3227.push(current)); workInProgress.child = renderLanes; workInProgress.memoizedState = null; return renderLanes; @@ -27121,8 +27124,7 @@ type = getStyleKey(pendingProps.href); var _styles = getResourcesFromRoot(resourceRoot).hoistableStyles, _resource = _styles.get(type); - if ( - !_resource && + _resource || ((resourceRoot = resourceRoot.ownerDocument || resourceRoot), (_resource = { type: "stylesheet", @@ -27133,31 +27135,29 @@ _styles.set(type, _resource), (_styles = resourceRoot.querySelector( getStylesheetSelectorFromKey(type) - )) && - !_styles._p && - ((_resource.instance = _styles), - (_resource.state.loading = Loaded | Inserted)), - !preloadPropsMap.has(type)) - ) { - var preloadProps = { - rel: "preload", - as: "style", - href: pendingProps.href, - crossOrigin: pendingProps.crossOrigin, - integrity: pendingProps.integrity, - media: pendingProps.media, - hrefLang: pendingProps.hrefLang, - referrerPolicy: pendingProps.referrerPolicy - }; - preloadPropsMap.set(type, preloadProps); - _styles || - preloadStylesheet( - resourceRoot, - type, - preloadProps, - _resource.state - ); - } + )) + ? _styles._p || + ((_resource.instance = _styles), + (_resource.state.loading = Loaded | Inserted)) + : ((_styles = preloadPropsMap.get(type)), + _styles || + ((_styles = { + rel: "preload", + as: "style", + href: pendingProps.href, + crossOrigin: pendingProps.crossOrigin, + integrity: pendingProps.integrity, + media: pendingProps.media, + hrefLang: pendingProps.hrefLang, + referrerPolicy: pendingProps.referrerPolicy + }), + preloadPropsMap.set(type, _styles)), + preloadStylesheet( + resourceRoot, + type, + _styles, + _resource.state + ))); if (currentProps && null === currentResource) throw ( ((pendingProps = @@ -27267,21 +27267,29 @@ }); } function preloadStylesheet(ownerDocument, key, preloadProps, state) { - ownerDocument.querySelector( - 'link[rel="preload"][as="style"][' + key + "]" - ) - ? (state.loading = Loaded) - : ((key = ownerDocument.createElement("link")), - (state.preload = key), - key.addEventListener("load", function () { - return (state.loading |= Loaded); - }), - key.addEventListener("error", function () { - return (state.loading |= Errored); - }), + if ( + (key = ownerDocument.querySelector( + 'link[rel="preload"][as="style"][' + key + "]" + )) + ) { + if (!0 !== key[internalLoadPendingKey]) { + state.loading = Loaded; + return; + } + } else + (key = ownerDocument.createElement("link")), + (key[internalLoadPendingKey] = !0), + (key.onload = key.onerror = clearPendingLoadOnNode.bind(null, key)), setInitialProperties(key, "link", preloadProps), markNodeAsHoistable(key), - ownerDocument.head.appendChild(key)); + ownerDocument.head.appendChild(key); + state.preload = key; + key.addEventListener("load", function () { + return (state.loading |= Loaded); + }); + key.addEventListener("error", function () { + return (state.loading |= Errored); + }); } function getScriptKey(src) { return ( @@ -28707,6 +28715,7 @@ internalRootNodeResourcesKey = "__reactResources$" + randomKey, internalHoistableMarker = "__reactMarker$" + randomKey, internalScrollTimer = "__reactScroll$" + randomKey, + internalLoadPendingKey = "__reactLoad$" + randomKey, allNativeEvents = new Set(), registrationNameDependencies = {}, possibleRegistrationNames = {}, @@ -32507,30 +32516,41 @@ case "script": key = getScriptKey(href); } - preloadPropsMap.has(key) || - ((href = assign( - { - rel: "preload", - href: - "image" === as && options && options.imageSrcSet - ? void 0 - : href, - as: as - }, - options - )), - preloadPropsMap.set(key, href), - null !== ownerDocument.querySelector(preloadSelector) || - ("style" === as && - ownerDocument.querySelector( - getStylesheetSelectorFromKey(key) - )) || - ("script" === as && - ownerDocument.querySelector(getScriptSelectorFromKey(key))) || - ((as = ownerDocument.createElement("link")), - setInitialProperties(as, "link", href), - markNodeAsHoistable(as), - ownerDocument.head.appendChild(as))); + if ( + !( + preloadPropsMap.has(key) || + ((href = assign( + { + rel: "preload", + href: + "image" === as && options && options.imageSrcSet + ? void 0 + : href, + as: as + }, + options + )), + preloadPropsMap.set(key, href), + null !== ownerDocument.querySelector(preloadSelector) || + ("style" === as && + ownerDocument.querySelector( + getStylesheetSelectorFromKey(key) + )) || + ("script" === as && + ownerDocument.querySelector(getScriptSelectorFromKey(key)))) + ) + ) { + var instance = ownerDocument.createElement("link"); + setInitialProperties(instance, "link", href); + "style" === as && + ((instance[internalLoadPendingKey] = !0), + (instance.onload = instance.onerror = + function () { + clearPendingLoadOnNode(instance); + })); + markNodeAsHoistable(instance); + ownerDocument.head.appendChild(instance); + } } }, m: function (href, options) { @@ -32865,11 +32885,11 @@ }; (function () { var isomorphicReactPackageVersion = React.version; - if ("19.3.0-experimental-dd453071-20260506" !== isomorphicReactPackageVersion) + if ("19.3.0-experimental-d5736f09-20260507" !== isomorphicReactPackageVersion) throw Error( 'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' + (isomorphicReactPackageVersion + - "\n - react-dom: 19.3.0-experimental-dd453071-20260506\nLearn more: https://react.dev/warnings/version-mismatch") + "\n - react-dom: 19.3.0-experimental-d5736f09-20260507\nLearn more: https://react.dev/warnings/version-mismatch") ); })(); ("function" === typeof Map && @@ -32906,10 +32926,10 @@ !(function () { var internals = { bundleType: 1, - version: "19.3.0-experimental-dd453071-20260506", + version: "19.3.0-experimental-d5736f09-20260507", rendererPackageName: "react-dom", currentDispatcherRef: ReactSharedInternals, - reconcilerVersion: "19.3.0-experimental-dd453071-20260506" + reconcilerVersion: "19.3.0-experimental-d5736f09-20260507" }; internals.overrideHookState = overrideHookState; internals.overrideHookStateDeletePath = overrideHookStateDeletePath; @@ -33057,7 +33077,7 @@ listenToAllSupportedEvents(container); return new ReactDOMHydrationRoot(initialChildren); }; - exports.version = "19.3.0-experimental-dd453071-20260506"; + exports.version = "19.3.0-experimental-d5736f09-20260507"; "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-client.production.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-client.production.js index f7c1c30eddd8..70562021dbf5 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-client.production.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-client.production.js @@ -970,7 +970,8 @@ var randomKey = Math.random().toString(36).slice(2), internalEventHandlesSetKey = "__reactHandles$" + randomKey, internalRootNodeResourcesKey = "__reactResources$" + randomKey, internalHoistableMarker = "__reactMarker$" + randomKey, - internalScrollTimer = "__reactScroll$" + randomKey; + internalScrollTimer = "__reactScroll$" + randomKey, + internalLoadPendingKey = "__reactLoad$" + randomKey; function detachDeletedInstance(node) { delete node[internalInstanceKey]; delete node[internalPropsKey]; @@ -1040,6 +1041,9 @@ function getResourcesFromRoot(root) { function markNodeAsHoistable(node) { node[internalHoistableMarker] = !0; } +function clearPendingLoadOnNode(node) { + node[internalLoadPendingKey] = void 0; +} var allNativeEvents = new Set(), registrationNameDependencies = {}; function registerTwoPhaseEvent(registrationName, dependencies) { @@ -18421,26 +18425,37 @@ function preload(href, as, options) { case "script": key = getScriptKey(href); } - preloadPropsMap.has(key) || - ((href = assign( - { - rel: "preload", - href: - "image" === as && options && options.imageSrcSet ? void 0 : href, - as: as - }, - options - )), - preloadPropsMap.set(key, href), - null !== ownerDocument.querySelector(preloadSelector) || - ("style" === as && - ownerDocument.querySelector(getStylesheetSelectorFromKey(key))) || - ("script" === as && - ownerDocument.querySelector(getScriptSelectorFromKey(key))) || - ((as = ownerDocument.createElement("link")), - setInitialProperties(as, "link", href), - markNodeAsHoistable(as), - ownerDocument.head.appendChild(as))); + if ( + !( + preloadPropsMap.has(key) || + ((href = assign( + { + rel: "preload", + href: + "image" === as && options && options.imageSrcSet ? void 0 : href, + as: as + }, + options + )), + preloadPropsMap.set(key, href), + null !== ownerDocument.querySelector(preloadSelector) || + ("style" === as && + ownerDocument.querySelector(getStylesheetSelectorFromKey(key))) || + ("script" === as && + ownerDocument.querySelector(getScriptSelectorFromKey(key)))) + ) + ) { + var instance = ownerDocument.createElement("link"); + setInitialProperties(instance, "link", href); + "style" === as && + ((instance[internalLoadPendingKey] = !0), + (instance.onload = instance.onerror = + function () { + clearPendingLoadOnNode(instance); + })); + markNodeAsHoistable(instance); + ownerDocument.head.appendChild(instance); + } } } function preloadModule(href, options) { @@ -18601,11 +18616,11 @@ function getResource(type, currentProps, pendingProps, currentResource) { case "style": return "string" === typeof pendingProps.precedence && "string" === typeof pendingProps.href - ? ((currentProps = getStyleKey(pendingProps.href)), - (pendingProps = getResourcesFromRoot( + ? ((pendingProps = getStyleKey(pendingProps.href)), + (currentProps = getResourcesFromRoot( JSCompiler_inline_result ).hoistableStyles), - (currentResource = pendingProps.get(currentProps)), + (currentResource = currentProps.get(pendingProps)), currentResource || ((currentResource = { type: "style", @@ -18613,7 +18628,7 @@ function getResource(type, currentProps, pendingProps, currentResource) { count: 0, state: null }), - pendingProps.set(currentProps, currentResource)), + currentProps.set(pendingProps, currentResource)), currentResource) : { type: "void", instance: null, count: 0, state: null }; case "link": @@ -18639,27 +18654,27 @@ function getResource(type, currentProps, pendingProps, currentResource) { styles$289.set(type, resource$290), (styles$289 = JSCompiler_inline_result.querySelector( getStylesheetSelectorFromKey(type) - )) && - !styles$289._p && - ((resource$290.instance = styles$289), - (resource$290.state.loading = 5)), - preloadPropsMap.has(type) || - ((pendingProps = { - rel: "preload", - as: "style", - href: pendingProps.href, - crossOrigin: pendingProps.crossOrigin, - integrity: pendingProps.integrity, - media: pendingProps.media, - hrefLang: pendingProps.hrefLang, - referrerPolicy: pendingProps.referrerPolicy - }), - preloadPropsMap.set(type, pendingProps), - styles$289 || + )) + ? styles$289._p || + ((resource$290.instance = styles$289), + (resource$290.state.loading = 5)) + : ((styles$289 = preloadPropsMap.get(type)), + styles$289 || + ((styles$289 = { + rel: "preload", + as: "style", + href: pendingProps.href, + crossOrigin: pendingProps.crossOrigin, + integrity: pendingProps.integrity, + media: pendingProps.media, + hrefLang: pendingProps.hrefLang, + referrerPolicy: pendingProps.referrerPolicy + }), + preloadPropsMap.set(type, styles$289)), preloadStylesheet( JSCompiler_inline_result, type, - pendingProps, + styles$289, resource$290.state ))); if (currentProps && null === currentResource) @@ -18677,11 +18692,11 @@ function getResource(type, currentProps, pendingProps, currentResource) { currentProps && "function" !== typeof currentProps && "symbol" !== typeof currentProps - ? ((currentProps = getScriptKey(pendingProps)), - (pendingProps = getResourcesFromRoot( + ? ((pendingProps = getScriptKey(pendingProps)), + (currentProps = getResourcesFromRoot( JSCompiler_inline_result ).hoistableScripts), - (currentResource = pendingProps.get(currentProps)), + (currentResource = currentProps.get(pendingProps)), currentResource || ((currentResource = { type: "script", @@ -18689,7 +18704,7 @@ function getResource(type, currentProps, pendingProps, currentResource) { count: 0, state: null }), - pendingProps.set(currentProps, currentResource)), + currentProps.set(pendingProps, currentResource)), currentResource) : { type: "void", instance: null, count: 0, state: null } ); @@ -18710,19 +18725,29 @@ function stylesheetPropsFromRawProps(rawProps) { }); } function preloadStylesheet(ownerDocument, key, preloadProps, state) { - ownerDocument.querySelector('link[rel="preload"][as="style"][' + key + "]") - ? (state.loading = 1) - : ((key = ownerDocument.createElement("link")), - (state.preload = key), - key.addEventListener("load", function () { - return (state.loading |= 1); - }), - key.addEventListener("error", function () { - return (state.loading |= 2); - }), + if ( + (key = ownerDocument.querySelector( + 'link[rel="preload"][as="style"][' + key + "]" + )) + ) { + if (!0 !== key[internalLoadPendingKey]) { + state.loading = 1; + return; + } + } else + (key = ownerDocument.createElement("link")), + (key[internalLoadPendingKey] = !0), + (key.onload = key.onerror = clearPendingLoadOnNode.bind(null, key)), setInitialProperties(key, "link", preloadProps), markNodeAsHoistable(key), - ownerDocument.head.appendChild(key)); + ownerDocument.head.appendChild(key); + state.preload = key; + key.addEventListener("load", function () { + return (state.loading |= 1); + }); + key.addEventListener("error", function () { + return (state.loading |= 2); + }); } function getScriptKey(src) { return '[src="' + escapeSelectorAttributeValueInsideDoubleQuotes(src) + '"]'; @@ -19924,16 +19949,16 @@ ReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) { 0 === i && attemptExplicitHydrationTarget(target); } }; -var isomorphicReactPackageVersion$jscomp$inline_2237 = React.version; +var isomorphicReactPackageVersion$jscomp$inline_2241 = React.version; if ( - "19.3.0-experimental-dd453071-20260506" !== - isomorphicReactPackageVersion$jscomp$inline_2237 + "19.3.0-experimental-d5736f09-20260507" !== + isomorphicReactPackageVersion$jscomp$inline_2241 ) throw Error( formatProdErrorMessage( 527, - isomorphicReactPackageVersion$jscomp$inline_2237, - "19.3.0-experimental-dd453071-20260506" + isomorphicReactPackageVersion$jscomp$inline_2241, + "19.3.0-experimental-d5736f09-20260507" ) ); ReactDOMSharedInternals.findDOMNode = function (componentOrElement) { @@ -19953,24 +19978,24 @@ ReactDOMSharedInternals.findDOMNode = function (componentOrElement) { null === componentOrElement ? null : componentOrElement.stateNode; return componentOrElement; }; -var internals$jscomp$inline_2922 = { +var internals$jscomp$inline_2926 = { bundleType: 0, - version: "19.3.0-experimental-dd453071-20260506", + version: "19.3.0-experimental-d5736f09-20260507", rendererPackageName: "react-dom", currentDispatcherRef: ReactSharedInternals, - reconcilerVersion: "19.3.0-experimental-dd453071-20260506" + reconcilerVersion: "19.3.0-experimental-d5736f09-20260507" }; if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) { - var hook$jscomp$inline_2923 = __REACT_DEVTOOLS_GLOBAL_HOOK__; + var hook$jscomp$inline_2927 = __REACT_DEVTOOLS_GLOBAL_HOOK__; if ( - !hook$jscomp$inline_2923.isDisabled && - hook$jscomp$inline_2923.supportsFiber + !hook$jscomp$inline_2927.isDisabled && + hook$jscomp$inline_2927.supportsFiber ) try { - (rendererID = hook$jscomp$inline_2923.inject( - internals$jscomp$inline_2922 + (rendererID = hook$jscomp$inline_2927.inject( + internals$jscomp$inline_2926 )), - (injectedHook = hook$jscomp$inline_2923); + (injectedHook = hook$jscomp$inline_2927); } catch (err) {} } exports.createRoot = function (container, options) { @@ -20065,4 +20090,4 @@ exports.hydrateRoot = function (container, initialChildren, options) { listenToAllSupportedEvents(container); return new ReactDOMHydrationRoot(initialChildren); }; -exports.version = "19.3.0-experimental-dd453071-20260506"; +exports.version = "19.3.0-experimental-d5736f09-20260507"; diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-profiling.development.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-profiling.development.js index e39e33bbf94b..765baed8adef 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-profiling.development.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-profiling.development.js @@ -1530,6 +1530,9 @@ function markNodeAsHoistable(node) { node[internalHoistableMarker] = !0; } + function clearPendingLoadOnNode(node) { + node[internalLoadPendingKey] = void 0; + } function registerTwoPhaseEvent(registrationName, dependencies) { registerDirectEvent(registrationName, dependencies); registerDirectEvent(registrationName + "Capture", dependencies); @@ -11377,24 +11380,24 @@ return current; } function updateSuspenseComponent(current, workInProgress, renderLanes) { - var JSCompiler_object_inline_digest_3228; - var JSCompiler_object_inline_stack_3229 = workInProgress.pendingProps; + var JSCompiler_object_inline_digest_3232; + var JSCompiler_object_inline_stack_3233 = workInProgress.pendingProps; shouldSuspendImpl(workInProgress) && (workInProgress.flags |= 128); - var JSCompiler_object_inline_message_3227 = !1; + var JSCompiler_object_inline_message_3231 = !1; var didSuspend = 0 !== (workInProgress.flags & 128); - (JSCompiler_object_inline_digest_3228 = didSuspend) || - (JSCompiler_object_inline_digest_3228 = + (JSCompiler_object_inline_digest_3232 = didSuspend) || + (JSCompiler_object_inline_digest_3232 = null !== current && null === current.memoizedState ? !1 : 0 !== (suspenseStackCursor.current & ForceSuspenseFallback)); - JSCompiler_object_inline_digest_3228 && - ((JSCompiler_object_inline_message_3227 = !0), + JSCompiler_object_inline_digest_3232 && + ((JSCompiler_object_inline_message_3231 = !0), (workInProgress.flags &= -129)); - JSCompiler_object_inline_digest_3228 = 0 !== (workInProgress.flags & 32); + JSCompiler_object_inline_digest_3232 = 0 !== (workInProgress.flags & 32); workInProgress.flags &= -33; if (null === current) { if (isHydrating) { - JSCompiler_object_inline_message_3227 + JSCompiler_object_inline_message_3231 ? pushPrimaryTreeSuspenseHandler(workInProgress) : reuseSuspenseHandlerOnStack(workInProgress); (current = nextHydratableInstance) @@ -11407,18 +11410,18 @@ ? renderLanes : null), null !== renderLanes && - ((JSCompiler_object_inline_digest_3228 = { + ((JSCompiler_object_inline_digest_3232 = { dehydrated: renderLanes, treeContext: getSuspendedTreeContext(), retryLane: 536870912, hydrationErrors: null }), (workInProgress.memoizedState = - JSCompiler_object_inline_digest_3228), - (JSCompiler_object_inline_digest_3228 = + JSCompiler_object_inline_digest_3232), + (JSCompiler_object_inline_digest_3232 = createFiberFromDehydratedFragment(renderLanes)), - (JSCompiler_object_inline_digest_3228.return = workInProgress), - (workInProgress.child = JSCompiler_object_inline_digest_3228), + (JSCompiler_object_inline_digest_3232.return = workInProgress), + (workInProgress.child = JSCompiler_object_inline_digest_3232), (hydrationParentFiber = workInProgress), (nextHydratableInstance = null))) : (renderLanes = null); @@ -11432,9 +11435,9 @@ : (workInProgress.lanes = 536870912); return null; } - var nextPrimaryChildren = JSCompiler_object_inline_stack_3229.children, - nextFallbackChildren = JSCompiler_object_inline_stack_3229.fallback; - if (JSCompiler_object_inline_message_3227) + var nextPrimaryChildren = JSCompiler_object_inline_stack_3233.children, + nextFallbackChildren = JSCompiler_object_inline_stack_3233.fallback; + if (JSCompiler_object_inline_message_3231) return ( reuseSuspenseHandlerOnStack(workInProgress), mountSuspenseFallbackChildren( @@ -11443,19 +11446,19 @@ nextFallbackChildren, renderLanes ), - (JSCompiler_object_inline_stack_3229 = workInProgress.child), - (JSCompiler_object_inline_stack_3229.memoizedState = + (JSCompiler_object_inline_stack_3233 = workInProgress.child), + (JSCompiler_object_inline_stack_3233.memoizedState = mountSuspenseOffscreenState(renderLanes)), - (JSCompiler_object_inline_stack_3229.childLanes = + (JSCompiler_object_inline_stack_3233.childLanes = getRemainingWorkInPrimaryTree( current, - JSCompiler_object_inline_digest_3228, + JSCompiler_object_inline_digest_3232, renderLanes )), (workInProgress.memoizedState = SUSPENDED_MARKER), - bailoutOffscreenComponent(null, JSCompiler_object_inline_stack_3229) + bailoutOffscreenComponent(null, JSCompiler_object_inline_stack_3233) ); - if (!0 === JSCompiler_object_inline_stack_3229.defer) + if (!0 === JSCompiler_object_inline_stack_3233.defer) return ( reuseSuspenseHandlerOnStack(workInProgress), mountSuspenseFallbackChildren( @@ -11464,18 +11467,18 @@ nextFallbackChildren, renderLanes ), - (JSCompiler_object_inline_stack_3229 = workInProgress.child), - (JSCompiler_object_inline_stack_3229.memoizedState = + (JSCompiler_object_inline_stack_3233 = workInProgress.child), + (JSCompiler_object_inline_stack_3233.memoizedState = mountSuspenseOffscreenState(renderLanes)), - (JSCompiler_object_inline_stack_3229.childLanes = + (JSCompiler_object_inline_stack_3233.childLanes = getRemainingWorkInPrimaryTree( current, - JSCompiler_object_inline_digest_3228, + JSCompiler_object_inline_digest_3232, renderLanes )), (workInProgress.memoizedState = SUSPENDED_MARKER), (workInProgress.lanes = 4194304), - bailoutOffscreenComponent(null, JSCompiler_object_inline_stack_3229) + bailoutOffscreenComponent(null, JSCompiler_object_inline_stack_3233) ); pushPrimaryTreeSuspenseHandler(workInProgress); return mountSuspensePrimaryChildren( @@ -11485,8 +11488,8 @@ } var prevState = current.memoizedState; if (null !== prevState) { - var JSCompiler_object_inline_componentStack_3230 = prevState.dehydrated; - if (null !== JSCompiler_object_inline_componentStack_3230) { + var JSCompiler_object_inline_componentStack_3234 = prevState.dehydrated; + if (null !== JSCompiler_object_inline_componentStack_3234) { if (didSuspend) workInProgress.flags & 256 ? (pushPrimaryTreeSuspenseHandler(workInProgress), @@ -11503,13 +11506,13 @@ (workInProgress = null)) : (reuseSuspenseHandlerOnStack(workInProgress), (nextPrimaryChildren = - JSCompiler_object_inline_stack_3229.fallback), + JSCompiler_object_inline_stack_3233.fallback), (nextFallbackChildren = workInProgress.mode), - (JSCompiler_object_inline_stack_3229 = + (JSCompiler_object_inline_stack_3233 = mountWorkInProgressOffscreenFiber( { mode: "visible", - children: JSCompiler_object_inline_stack_3229.children + children: JSCompiler_object_inline_stack_3233.children }, nextFallbackChildren )), @@ -11520,30 +11523,30 @@ null )), (nextPrimaryChildren.flags |= 2), - (JSCompiler_object_inline_stack_3229.return = workInProgress), + (JSCompiler_object_inline_stack_3233.return = workInProgress), (nextPrimaryChildren.return = workInProgress), - (JSCompiler_object_inline_stack_3229.sibling = + (JSCompiler_object_inline_stack_3233.sibling = nextPrimaryChildren), - (workInProgress.child = JSCompiler_object_inline_stack_3229), + (workInProgress.child = JSCompiler_object_inline_stack_3233), reconcileChildFibers( workInProgress, current.child, null, renderLanes ), - (JSCompiler_object_inline_stack_3229 = workInProgress.child), - (JSCompiler_object_inline_stack_3229.memoizedState = + (JSCompiler_object_inline_stack_3233 = workInProgress.child), + (JSCompiler_object_inline_stack_3233.memoizedState = mountSuspenseOffscreenState(renderLanes)), - (JSCompiler_object_inline_stack_3229.childLanes = + (JSCompiler_object_inline_stack_3233.childLanes = getRemainingWorkInPrimaryTree( current, - JSCompiler_object_inline_digest_3228, + JSCompiler_object_inline_digest_3232, renderLanes )), (workInProgress.memoizedState = SUSPENDED_MARKER), (workInProgress = bailoutOffscreenComponent( null, - JSCompiler_object_inline_stack_3229 + JSCompiler_object_inline_stack_3233 ))); else if ( (pushPrimaryTreeSuspenseHandler(workInProgress), @@ -11551,45 +11554,45 @@ 0 !== (renderLanes & 536870912) && markRenderDerivedCause(workInProgress), isSuspenseInstanceFallback( - JSCompiler_object_inline_componentStack_3230 + JSCompiler_object_inline_componentStack_3234 )) ) { - JSCompiler_object_inline_digest_3228 = - JSCompiler_object_inline_componentStack_3230.nextSibling && - JSCompiler_object_inline_componentStack_3230.nextSibling.dataset; - if (JSCompiler_object_inline_digest_3228) { - nextPrimaryChildren = JSCompiler_object_inline_digest_3228.dgst; - var message = JSCompiler_object_inline_digest_3228.msg; - nextFallbackChildren = JSCompiler_object_inline_digest_3228.stck; - var componentStack = JSCompiler_object_inline_digest_3228.cstck; + JSCompiler_object_inline_digest_3232 = + JSCompiler_object_inline_componentStack_3234.nextSibling && + JSCompiler_object_inline_componentStack_3234.nextSibling.dataset; + if (JSCompiler_object_inline_digest_3232) { + nextPrimaryChildren = JSCompiler_object_inline_digest_3232.dgst; + var message = JSCompiler_object_inline_digest_3232.msg; + nextFallbackChildren = JSCompiler_object_inline_digest_3232.stck; + var componentStack = JSCompiler_object_inline_digest_3232.cstck; } - JSCompiler_object_inline_message_3227 = message; - JSCompiler_object_inline_digest_3228 = nextPrimaryChildren; - JSCompiler_object_inline_stack_3229 = nextFallbackChildren; - JSCompiler_object_inline_componentStack_3230 = componentStack; - nextPrimaryChildren = JSCompiler_object_inline_message_3227; - nextFallbackChildren = JSCompiler_object_inline_componentStack_3230; + JSCompiler_object_inline_message_3231 = message; + JSCompiler_object_inline_digest_3232 = nextPrimaryChildren; + JSCompiler_object_inline_stack_3233 = nextFallbackChildren; + JSCompiler_object_inline_componentStack_3234 = componentStack; + nextPrimaryChildren = JSCompiler_object_inline_message_3231; + nextFallbackChildren = JSCompiler_object_inline_componentStack_3234; nextPrimaryChildren = nextPrimaryChildren ? Error(nextPrimaryChildren) : Error( "The server could not finish this Suspense boundary, likely due to an error during server rendering. Switched to client rendering." ); nextPrimaryChildren.stack = - JSCompiler_object_inline_stack_3229 || ""; - nextPrimaryChildren.digest = JSCompiler_object_inline_digest_3228; - JSCompiler_object_inline_digest_3228 = + JSCompiler_object_inline_stack_3233 || ""; + nextPrimaryChildren.digest = JSCompiler_object_inline_digest_3232; + JSCompiler_object_inline_digest_3232 = void 0 === nextFallbackChildren ? null : nextFallbackChildren; - JSCompiler_object_inline_stack_3229 = { + JSCompiler_object_inline_stack_3233 = { value: nextPrimaryChildren, source: null, - stack: JSCompiler_object_inline_digest_3228 + stack: JSCompiler_object_inline_digest_3232 }; - "string" === typeof JSCompiler_object_inline_digest_3228 && + "string" === typeof JSCompiler_object_inline_digest_3232 && CapturedStacks.set( nextPrimaryChildren, - JSCompiler_object_inline_stack_3229 + JSCompiler_object_inline_stack_3233 ); - queueHydrationError(JSCompiler_object_inline_stack_3229); + queueHydrationError(JSCompiler_object_inline_stack_3233); workInProgress = retrySuspenseComponentWithoutHydrating( current, workInProgress, @@ -11603,35 +11606,35 @@ renderLanes, !1 ), - (JSCompiler_object_inline_digest_3228 = + (JSCompiler_object_inline_digest_3232 = 0 !== (renderLanes & current.childLanes)), - didReceiveUpdate || JSCompiler_object_inline_digest_3228) + didReceiveUpdate || JSCompiler_object_inline_digest_3232) ) { - JSCompiler_object_inline_digest_3228 = workInProgressRoot; + JSCompiler_object_inline_digest_3232 = workInProgressRoot; if ( - null !== JSCompiler_object_inline_digest_3228 && - ((JSCompiler_object_inline_stack_3229 = getBumpedLaneForHydration( - JSCompiler_object_inline_digest_3228, + null !== JSCompiler_object_inline_digest_3232 && + ((JSCompiler_object_inline_stack_3233 = getBumpedLaneForHydration( + JSCompiler_object_inline_digest_3232, renderLanes )), - 0 !== JSCompiler_object_inline_stack_3229 && - JSCompiler_object_inline_stack_3229 !== prevState.retryLane) + 0 !== JSCompiler_object_inline_stack_3233 && + JSCompiler_object_inline_stack_3233 !== prevState.retryLane) ) throw ( - ((prevState.retryLane = JSCompiler_object_inline_stack_3229), + ((prevState.retryLane = JSCompiler_object_inline_stack_3233), enqueueConcurrentRenderForLane( current, - JSCompiler_object_inline_stack_3229 + JSCompiler_object_inline_stack_3233 ), scheduleUpdateOnFiber( - JSCompiler_object_inline_digest_3228, + JSCompiler_object_inline_digest_3232, current, - JSCompiler_object_inline_stack_3229 + JSCompiler_object_inline_stack_3233 ), SelectiveHydrationException) ); isSuspenseInstancePending( - JSCompiler_object_inline_componentStack_3230 + JSCompiler_object_inline_componentStack_3234 ) || renderDidSuspendDelayIfPossible(); workInProgress = retrySuspenseComponentWithoutHydrating( current, @@ -11640,14 +11643,14 @@ ); } else isSuspenseInstancePending( - JSCompiler_object_inline_componentStack_3230 + JSCompiler_object_inline_componentStack_3234 ) ? ((workInProgress.flags |= 192), (workInProgress.child = current.child), (workInProgress = null)) : ((current = prevState.treeContext), (nextHydratableInstance = getNextHydratable( - JSCompiler_object_inline_componentStack_3230.nextSibling + JSCompiler_object_inline_componentStack_3234.nextSibling )), (hydrationParentFiber = workInProgress), (isHydrating = !0), @@ -11659,32 +11662,32 @@ restoreSuspendedTreeContext(workInProgress, current), (workInProgress = mountSuspensePrimaryChildren( workInProgress, - JSCompiler_object_inline_stack_3229.children + JSCompiler_object_inline_stack_3233.children )), (workInProgress.flags |= 134221824)); return workInProgress; } } - if (JSCompiler_object_inline_message_3227) + if (JSCompiler_object_inline_message_3231) return ( reuseSuspenseHandlerOnStack(workInProgress), - (nextPrimaryChildren = JSCompiler_object_inline_stack_3229.fallback), + (nextPrimaryChildren = JSCompiler_object_inline_stack_3233.fallback), (nextFallbackChildren = workInProgress.mode), (componentStack = current.child), - (JSCompiler_object_inline_componentStack_3230 = + (JSCompiler_object_inline_componentStack_3234 = componentStack.sibling), - (JSCompiler_object_inline_stack_3229 = createWorkInProgress( + (JSCompiler_object_inline_stack_3233 = createWorkInProgress( componentStack, { mode: "hidden", - children: JSCompiler_object_inline_stack_3229.children + children: JSCompiler_object_inline_stack_3233.children } )), - (JSCompiler_object_inline_stack_3229.subtreeFlags = + (JSCompiler_object_inline_stack_3233.subtreeFlags = componentStack.subtreeFlags & 133169152), - null !== JSCompiler_object_inline_componentStack_3230 + null !== JSCompiler_object_inline_componentStack_3234 ? (nextPrimaryChildren = createWorkInProgress( - JSCompiler_object_inline_componentStack_3230, + JSCompiler_object_inline_componentStack_3234, nextPrimaryChildren )) : ((nextPrimaryChildren = createFiberFromFragment( @@ -11695,11 +11698,11 @@ )), (nextPrimaryChildren.flags |= 2)), (nextPrimaryChildren.return = workInProgress), - (JSCompiler_object_inline_stack_3229.return = workInProgress), - (JSCompiler_object_inline_stack_3229.sibling = nextPrimaryChildren), - (workInProgress.child = JSCompiler_object_inline_stack_3229), - bailoutOffscreenComponent(null, JSCompiler_object_inline_stack_3229), - (JSCompiler_object_inline_stack_3229 = workInProgress.child), + (JSCompiler_object_inline_stack_3233.return = workInProgress), + (JSCompiler_object_inline_stack_3233.sibling = nextPrimaryChildren), + (workInProgress.child = JSCompiler_object_inline_stack_3233), + bailoutOffscreenComponent(null, JSCompiler_object_inline_stack_3233), + (JSCompiler_object_inline_stack_3233 = workInProgress.child), (nextPrimaryChildren = current.child.memoizedState), null === nextPrimaryChildren ? (nextPrimaryChildren = mountSuspenseOffscreenState(renderLanes)) @@ -11715,18 +11718,18 @@ baseLanes: nextPrimaryChildren.baseLanes | renderLanes, cachePool: nextFallbackChildren })), - (JSCompiler_object_inline_stack_3229.memoizedState = + (JSCompiler_object_inline_stack_3233.memoizedState = nextPrimaryChildren), - (JSCompiler_object_inline_stack_3229.childLanes = + (JSCompiler_object_inline_stack_3233.childLanes = getRemainingWorkInPrimaryTree( current, - JSCompiler_object_inline_digest_3228, + JSCompiler_object_inline_digest_3232, renderLanes )), (workInProgress.memoizedState = SUSPENDED_MARKER), bailoutOffscreenComponent( current.child, - JSCompiler_object_inline_stack_3229 + JSCompiler_object_inline_stack_3233 ) ); null !== prevState && @@ -11738,16 +11741,16 @@ current = renderLanes.sibling; renderLanes = createWorkInProgress(renderLanes, { mode: "visible", - children: JSCompiler_object_inline_stack_3229.children + children: JSCompiler_object_inline_stack_3233.children }); renderLanes.return = workInProgress; renderLanes.sibling = null; null !== current && - ((JSCompiler_object_inline_digest_3228 = workInProgress.deletions), - null === JSCompiler_object_inline_digest_3228 + ((JSCompiler_object_inline_digest_3232 = workInProgress.deletions), + null === JSCompiler_object_inline_digest_3232 ? ((workInProgress.deletions = [current]), (workInProgress.flags |= 16)) - : JSCompiler_object_inline_digest_3228.push(current)); + : JSCompiler_object_inline_digest_3232.push(current)); workInProgress.child = renderLanes; workInProgress.memoizedState = null; return renderLanes; @@ -27129,8 +27132,7 @@ type = getStyleKey(pendingProps.href); var _styles = getResourcesFromRoot(resourceRoot).hoistableStyles, _resource = _styles.get(type); - if ( - !_resource && + _resource || ((resourceRoot = resourceRoot.ownerDocument || resourceRoot), (_resource = { type: "stylesheet", @@ -27141,31 +27143,29 @@ _styles.set(type, _resource), (_styles = resourceRoot.querySelector( getStylesheetSelectorFromKey(type) - )) && - !_styles._p && - ((_resource.instance = _styles), - (_resource.state.loading = Loaded | Inserted)), - !preloadPropsMap.has(type)) - ) { - var preloadProps = { - rel: "preload", - as: "style", - href: pendingProps.href, - crossOrigin: pendingProps.crossOrigin, - integrity: pendingProps.integrity, - media: pendingProps.media, - hrefLang: pendingProps.hrefLang, - referrerPolicy: pendingProps.referrerPolicy - }; - preloadPropsMap.set(type, preloadProps); - _styles || - preloadStylesheet( - resourceRoot, - type, - preloadProps, - _resource.state - ); - } + )) + ? _styles._p || + ((_resource.instance = _styles), + (_resource.state.loading = Loaded | Inserted)) + : ((_styles = preloadPropsMap.get(type)), + _styles || + ((_styles = { + rel: "preload", + as: "style", + href: pendingProps.href, + crossOrigin: pendingProps.crossOrigin, + integrity: pendingProps.integrity, + media: pendingProps.media, + hrefLang: pendingProps.hrefLang, + referrerPolicy: pendingProps.referrerPolicy + }), + preloadPropsMap.set(type, _styles)), + preloadStylesheet( + resourceRoot, + type, + _styles, + _resource.state + ))); if (currentProps && null === currentResource) throw ( ((pendingProps = @@ -27275,21 +27275,29 @@ }); } function preloadStylesheet(ownerDocument, key, preloadProps, state) { - ownerDocument.querySelector( - 'link[rel="preload"][as="style"][' + key + "]" - ) - ? (state.loading = Loaded) - : ((key = ownerDocument.createElement("link")), - (state.preload = key), - key.addEventListener("load", function () { - return (state.loading |= Loaded); - }), - key.addEventListener("error", function () { - return (state.loading |= Errored); - }), + if ( + (key = ownerDocument.querySelector( + 'link[rel="preload"][as="style"][' + key + "]" + )) + ) { + if (!0 !== key[internalLoadPendingKey]) { + state.loading = Loaded; + return; + } + } else + (key = ownerDocument.createElement("link")), + (key[internalLoadPendingKey] = !0), + (key.onload = key.onerror = clearPendingLoadOnNode.bind(null, key)), setInitialProperties(key, "link", preloadProps), markNodeAsHoistable(key), - ownerDocument.head.appendChild(key)); + ownerDocument.head.appendChild(key); + state.preload = key; + key.addEventListener("load", function () { + return (state.loading |= Loaded); + }); + key.addEventListener("error", function () { + return (state.loading |= Errored); + }); } function getScriptKey(src) { return ( @@ -28764,6 +28772,7 @@ internalRootNodeResourcesKey = "__reactResources$" + randomKey, internalHoistableMarker = "__reactMarker$" + randomKey, internalScrollTimer = "__reactScroll$" + randomKey, + internalLoadPendingKey = "__reactLoad$" + randomKey, allNativeEvents = new Set(), registrationNameDependencies = {}, possibleRegistrationNames = {}, @@ -32564,30 +32573,41 @@ case "script": key = getScriptKey(href); } - preloadPropsMap.has(key) || - ((href = assign( - { - rel: "preload", - href: - "image" === as && options && options.imageSrcSet - ? void 0 - : href, - as: as - }, - options - )), - preloadPropsMap.set(key, href), - null !== ownerDocument.querySelector(preloadSelector) || - ("style" === as && - ownerDocument.querySelector( - getStylesheetSelectorFromKey(key) - )) || - ("script" === as && - ownerDocument.querySelector(getScriptSelectorFromKey(key))) || - ((as = ownerDocument.createElement("link")), - setInitialProperties(as, "link", href), - markNodeAsHoistable(as), - ownerDocument.head.appendChild(as))); + if ( + !( + preloadPropsMap.has(key) || + ((href = assign( + { + rel: "preload", + href: + "image" === as && options && options.imageSrcSet + ? void 0 + : href, + as: as + }, + options + )), + preloadPropsMap.set(key, href), + null !== ownerDocument.querySelector(preloadSelector) || + ("style" === as && + ownerDocument.querySelector( + getStylesheetSelectorFromKey(key) + )) || + ("script" === as && + ownerDocument.querySelector(getScriptSelectorFromKey(key)))) + ) + ) { + var instance = ownerDocument.createElement("link"); + setInitialProperties(instance, "link", href); + "style" === as && + ((instance[internalLoadPendingKey] = !0), + (instance.onload = instance.onerror = + function () { + clearPendingLoadOnNode(instance); + })); + markNodeAsHoistable(instance); + ownerDocument.head.appendChild(instance); + } } }, m: function (href, options) { @@ -32922,11 +32942,11 @@ }; (function () { var isomorphicReactPackageVersion = React.version; - if ("19.3.0-experimental-dd453071-20260506" !== isomorphicReactPackageVersion) + if ("19.3.0-experimental-d5736f09-20260507" !== isomorphicReactPackageVersion) throw Error( 'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' + (isomorphicReactPackageVersion + - "\n - react-dom: 19.3.0-experimental-dd453071-20260506\nLearn more: https://react.dev/warnings/version-mismatch") + "\n - react-dom: 19.3.0-experimental-d5736f09-20260507\nLearn more: https://react.dev/warnings/version-mismatch") ); })(); ("function" === typeof Map && @@ -32963,10 +32983,10 @@ !(function () { var internals = { bundleType: 1, - version: "19.3.0-experimental-dd453071-20260506", + version: "19.3.0-experimental-d5736f09-20260507", rendererPackageName: "react-dom", currentDispatcherRef: ReactSharedInternals, - reconcilerVersion: "19.3.0-experimental-dd453071-20260506" + reconcilerVersion: "19.3.0-experimental-d5736f09-20260507" }; internals.overrideHookState = overrideHookState; internals.overrideHookStateDeletePath = overrideHookStateDeletePath; @@ -33444,7 +33464,7 @@ exports.useFormStatus = function () { return resolveDispatcher().useHostTransitionStatus(); }; - exports.version = "19.3.0-experimental-dd453071-20260506"; + exports.version = "19.3.0-experimental-d5736f09-20260507"; "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-profiling.profiling.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-profiling.profiling.js index e80f354fc93d..78599a23dde2 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-profiling.profiling.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-profiling.profiling.js @@ -1066,7 +1066,8 @@ var randomKey = Math.random().toString(36).slice(2), internalEventHandlesSetKey = "__reactHandles$" + randomKey, internalRootNodeResourcesKey = "__reactResources$" + randomKey, internalHoistableMarker = "__reactMarker$" + randomKey, - internalScrollTimer = "__reactScroll$" + randomKey; + internalScrollTimer = "__reactScroll$" + randomKey, + internalLoadPendingKey = "__reactLoad$" + randomKey; function detachDeletedInstance(node) { delete node[internalInstanceKey]; delete node[internalPropsKey]; @@ -1136,6 +1137,9 @@ function getResourcesFromRoot(root) { function markNodeAsHoistable(node) { node[internalHoistableMarker] = !0; } +function clearPendingLoadOnNode(node) { + node[internalLoadPendingKey] = void 0; +} var allNativeEvents = new Set(), registrationNameDependencies = {}; function registerTwoPhaseEvent(registrationName, dependencies) { @@ -20482,26 +20486,37 @@ function preload$1(href, as, options) { case "script": key = getScriptKey(href); } - preloadPropsMap.has(key) || - ((href = assign( - { - rel: "preload", - href: - "image" === as && options && options.imageSrcSet ? void 0 : href, - as: as - }, - options - )), - preloadPropsMap.set(key, href), - null !== ownerDocument.querySelector(preloadSelector) || - ("style" === as && - ownerDocument.querySelector(getStylesheetSelectorFromKey(key))) || - ("script" === as && - ownerDocument.querySelector(getScriptSelectorFromKey(key))) || - ((as = ownerDocument.createElement("link")), - setInitialProperties(as, "link", href), - markNodeAsHoistable(as), - ownerDocument.head.appendChild(as))); + if ( + !( + preloadPropsMap.has(key) || + ((href = assign( + { + rel: "preload", + href: + "image" === as && options && options.imageSrcSet ? void 0 : href, + as: as + }, + options + )), + preloadPropsMap.set(key, href), + null !== ownerDocument.querySelector(preloadSelector) || + ("style" === as && + ownerDocument.querySelector(getStylesheetSelectorFromKey(key))) || + ("script" === as && + ownerDocument.querySelector(getScriptSelectorFromKey(key)))) + ) + ) { + var instance = ownerDocument.createElement("link"); + setInitialProperties(instance, "link", href); + "style" === as && + ((instance[internalLoadPendingKey] = !0), + (instance.onload = instance.onerror = + function () { + clearPendingLoadOnNode(instance); + })); + markNodeAsHoistable(instance); + ownerDocument.head.appendChild(instance); + } } } function preloadModule$1(href, options) { @@ -20662,11 +20677,11 @@ function getResource(type, currentProps, pendingProps, currentResource) { case "style": return "string" === typeof pendingProps.precedence && "string" === typeof pendingProps.href - ? ((currentProps = getStyleKey(pendingProps.href)), - (pendingProps = getResourcesFromRoot( + ? ((pendingProps = getStyleKey(pendingProps.href)), + (currentProps = getResourcesFromRoot( JSCompiler_inline_result ).hoistableStyles), - (currentResource = pendingProps.get(currentProps)), + (currentResource = currentProps.get(pendingProps)), currentResource || ((currentResource = { type: "style", @@ -20674,7 +20689,7 @@ function getResource(type, currentProps, pendingProps, currentResource) { count: 0, state: null }), - pendingProps.set(currentProps, currentResource)), + currentProps.set(pendingProps, currentResource)), currentResource) : { type: "void", instance: null, count: 0, state: null }; case "link": @@ -20700,27 +20715,27 @@ function getResource(type, currentProps, pendingProps, currentResource) { styles$332.set(type, resource$333), (styles$332 = JSCompiler_inline_result.querySelector( getStylesheetSelectorFromKey(type) - )) && - !styles$332._p && - ((resource$333.instance = styles$332), - (resource$333.state.loading = 5)), - preloadPropsMap.has(type) || - ((pendingProps = { - rel: "preload", - as: "style", - href: pendingProps.href, - crossOrigin: pendingProps.crossOrigin, - integrity: pendingProps.integrity, - media: pendingProps.media, - hrefLang: pendingProps.hrefLang, - referrerPolicy: pendingProps.referrerPolicy - }), - preloadPropsMap.set(type, pendingProps), - styles$332 || + )) + ? styles$332._p || + ((resource$333.instance = styles$332), + (resource$333.state.loading = 5)) + : ((styles$332 = preloadPropsMap.get(type)), + styles$332 || + ((styles$332 = { + rel: "preload", + as: "style", + href: pendingProps.href, + crossOrigin: pendingProps.crossOrigin, + integrity: pendingProps.integrity, + media: pendingProps.media, + hrefLang: pendingProps.hrefLang, + referrerPolicy: pendingProps.referrerPolicy + }), + preloadPropsMap.set(type, styles$332)), preloadStylesheet( JSCompiler_inline_result, type, - pendingProps, + styles$332, resource$333.state ))); if (currentProps && null === currentResource) @@ -20738,11 +20753,11 @@ function getResource(type, currentProps, pendingProps, currentResource) { currentProps && "function" !== typeof currentProps && "symbol" !== typeof currentProps - ? ((currentProps = getScriptKey(pendingProps)), - (pendingProps = getResourcesFromRoot( + ? ((pendingProps = getScriptKey(pendingProps)), + (currentProps = getResourcesFromRoot( JSCompiler_inline_result ).hoistableScripts), - (currentResource = pendingProps.get(currentProps)), + (currentResource = currentProps.get(pendingProps)), currentResource || ((currentResource = { type: "script", @@ -20750,7 +20765,7 @@ function getResource(type, currentProps, pendingProps, currentResource) { count: 0, state: null }), - pendingProps.set(currentProps, currentResource)), + currentProps.set(pendingProps, currentResource)), currentResource) : { type: "void", instance: null, count: 0, state: null } ); @@ -20771,19 +20786,29 @@ function stylesheetPropsFromRawProps(rawProps) { }); } function preloadStylesheet(ownerDocument, key, preloadProps, state) { - ownerDocument.querySelector('link[rel="preload"][as="style"][' + key + "]") - ? (state.loading = 1) - : ((key = ownerDocument.createElement("link")), - (state.preload = key), - key.addEventListener("load", function () { - return (state.loading |= 1); - }), - key.addEventListener("error", function () { - return (state.loading |= 2); - }), + if ( + (key = ownerDocument.querySelector( + 'link[rel="preload"][as="style"][' + key + "]" + )) + ) { + if (!0 !== key[internalLoadPendingKey]) { + state.loading = 1; + return; + } + } else + (key = ownerDocument.createElement("link")), + (key[internalLoadPendingKey] = !0), + (key.onload = key.onerror = clearPendingLoadOnNode.bind(null, key)), setInitialProperties(key, "link", preloadProps), markNodeAsHoistable(key), - ownerDocument.head.appendChild(key)); + ownerDocument.head.appendChild(key); + state.preload = key; + key.addEventListener("load", function () { + return (state.loading |= 1); + }); + key.addEventListener("error", function () { + return (state.loading |= 2); + }); } function getScriptKey(src) { return '[src="' + escapeSelectorAttributeValueInsideDoubleQuotes(src) + '"]'; @@ -22007,16 +22032,16 @@ ReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) { 0 === i && attemptExplicitHydrationTarget(target); } }; -var isomorphicReactPackageVersion$jscomp$inline_2541 = React.version; +var isomorphicReactPackageVersion$jscomp$inline_2545 = React.version; if ( - "19.3.0-experimental-dd453071-20260506" !== - isomorphicReactPackageVersion$jscomp$inline_2541 + "19.3.0-experimental-d5736f09-20260507" !== + isomorphicReactPackageVersion$jscomp$inline_2545 ) throw Error( formatProdErrorMessage( 527, - isomorphicReactPackageVersion$jscomp$inline_2541, - "19.3.0-experimental-dd453071-20260506" + isomorphicReactPackageVersion$jscomp$inline_2545, + "19.3.0-experimental-d5736f09-20260507" ) ); ReactDOMSharedInternals.findDOMNode = function (componentOrElement) { @@ -22036,24 +22061,24 @@ ReactDOMSharedInternals.findDOMNode = function (componentOrElement) { null === componentOrElement ? null : componentOrElement.stateNode; return componentOrElement; }; -var internals$jscomp$inline_3243 = { +var internals$jscomp$inline_3247 = { bundleType: 0, - version: "19.3.0-experimental-dd453071-20260506", + version: "19.3.0-experimental-d5736f09-20260507", rendererPackageName: "react-dom", currentDispatcherRef: ReactSharedInternals, - reconcilerVersion: "19.3.0-experimental-dd453071-20260506" + reconcilerVersion: "19.3.0-experimental-d5736f09-20260507" }; if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) { - var hook$jscomp$inline_3244 = __REACT_DEVTOOLS_GLOBAL_HOOK__; + var hook$jscomp$inline_3248 = __REACT_DEVTOOLS_GLOBAL_HOOK__; if ( - !hook$jscomp$inline_3244.isDisabled && - hook$jscomp$inline_3244.supportsFiber + !hook$jscomp$inline_3248.isDisabled && + hook$jscomp$inline_3248.supportsFiber ) try { - (rendererID = hook$jscomp$inline_3244.inject( - internals$jscomp$inline_3243 + (rendererID = hook$jscomp$inline_3248.inject( + internals$jscomp$inline_3247 )), - (injectedHook = hook$jscomp$inline_3244); + (injectedHook = hook$jscomp$inline_3248); } catch (err) {} } function getCrossOriginStringAs(as, input) { @@ -22309,7 +22334,7 @@ exports.useFormState = function (action, initialState, permalink) { exports.useFormStatus = function () { return ReactSharedInternals.H.useHostTransitionStatus(); }; -exports.version = "19.3.0-experimental-dd453071-20260506"; +exports.version = "19.3.0-experimental-d5736f09-20260507"; "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.browser.development.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.browser.development.js index 115586545c6a..3c357dacb0ca 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.browser.development.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.browser.development.js @@ -10525,5 +10525,5 @@ 'The server used "renderToString" which does not support Suspense. If you intended for this Suspense boundary to render the fallback content on the server consider throwing an Error somewhere within the Suspense boundary. If you intended to have the server wait for the suspended component please switch to "renderToReadableStream" which supports Suspense on the server' ); }; - exports.version = "19.3.0-experimental-dd453071-20260506"; + exports.version = "19.3.0-experimental-d5736f09-20260507"; })(); diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.browser.production.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.browser.production.js index cf770158fdb1..af67ab837be3 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.browser.production.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.browser.production.js @@ -7043,4 +7043,4 @@ exports.renderToString = function (children, options) { 'The server used "renderToString" which does not support Suspense. If you intended for this Suspense boundary to render the fallback content on the server consider throwing an Error somewhere within the Suspense boundary. If you intended to have the server wait for the suspended component please switch to "renderToReadableStream" which supports Suspense on the server' ); }; -exports.version = "19.3.0-experimental-dd453071-20260506"; +exports.version = "19.3.0-experimental-d5736f09-20260507"; diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.node.development.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.node.development.js index 39d3b4a80c90..a7ef68a6f4df 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.node.development.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.node.development.js @@ -10525,5 +10525,5 @@ 'The server used "renderToString" which does not support Suspense. If you intended for this Suspense boundary to render the fallback content on the server consider throwing an Error somewhere within the Suspense boundary. If you intended to have the server wait for the suspended component please switch to "renderToPipeableStream" which supports Suspense on the server' ); }; - exports.version = "19.3.0-experimental-dd453071-20260506"; + exports.version = "19.3.0-experimental-d5736f09-20260507"; })(); diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.node.production.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.node.production.js index 68375beea0aa..d0681deeb54b 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.node.production.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server-legacy.node.production.js @@ -7146,4 +7146,4 @@ exports.renderToString = function (children, options) { 'The server used "renderToString" which does not support Suspense. If you intended for this Suspense boundary to render the fallback content on the server consider throwing an Error somewhere within the Suspense boundary. If you intended to have the server wait for the suspended component please switch to "renderToPipeableStream" which supports Suspense on the server' ); }; -exports.version = "19.3.0-experimental-dd453071-20260506"; +exports.version = "19.3.0-experimental-d5736f09-20260507"; diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.browser.development.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.browser.development.js index 7997b99cbe29..cad06df11b72 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.browser.development.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.browser.development.js @@ -9500,11 +9500,11 @@ } function ensureCorrectIsomorphicReactVersion() { var isomorphicReactPackageVersion = React.version; - if ("19.3.0-experimental-dd453071-20260506" !== isomorphicReactPackageVersion) + if ("19.3.0-experimental-d5736f09-20260507" !== isomorphicReactPackageVersion) throw Error( 'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' + (isomorphicReactPackageVersion + - "\n - react-dom: 19.3.0-experimental-dd453071-20260506\nLearn more: https://react.dev/warnings/version-mismatch") + "\n - react-dom: 19.3.0-experimental-d5736f09-20260507\nLearn more: https://react.dev/warnings/version-mismatch") ); } var React = require("next/dist/compiled/react-experimental"), @@ -11331,5 +11331,5 @@ startWork(request); }); }; - exports.version = "19.3.0-experimental-dd453071-20260506"; + exports.version = "19.3.0-experimental-d5736f09-20260507"; })(); diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.browser.production.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.browser.production.js index 67d015d63ad4..68385fc7ab18 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.browser.production.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.browser.production.js @@ -7701,12 +7701,12 @@ function getPostponedState(request) { } function ensureCorrectIsomorphicReactVersion() { var isomorphicReactPackageVersion = React.version; - if ("19.3.0-experimental-dd453071-20260506" !== isomorphicReactPackageVersion) + if ("19.3.0-experimental-d5736f09-20260507" !== isomorphicReactPackageVersion) throw Error( formatProdErrorMessage( 527, isomorphicReactPackageVersion, - "19.3.0-experimental-dd453071-20260506" + "19.3.0-experimental-d5736f09-20260507" ) ); } @@ -7957,4 +7957,4 @@ exports.resumeAndPrerender = function (children, postponedState, options) { startWork(request); }); }; -exports.version = "19.3.0-experimental-dd453071-20260506"; +exports.version = "19.3.0-experimental-d5736f09-20260507"; diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.bun.production.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.bun.production.js index 155f358045a1..3d7edbfe2498 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.bun.production.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.bun.production.js @@ -7396,11 +7396,11 @@ function getPostponedState(request) { } function ensureCorrectIsomorphicReactVersion() { var isomorphicReactPackageVersion = React.version; - if ("19.3.0-experimental-dd453071-20260506" !== isomorphicReactPackageVersion) + if ("19.3.0-experimental-d5736f09-20260507" !== isomorphicReactPackageVersion) throw Error( 'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' + (isomorphicReactPackageVersion + - "\n - react-dom: 19.3.0-experimental-dd453071-20260506\nLearn more: https://react.dev/warnings/version-mismatch") + "\n - react-dom: 19.3.0-experimental-d5736f09-20260507\nLearn more: https://react.dev/warnings/version-mismatch") ); } ensureCorrectIsomorphicReactVersion(); @@ -7945,4 +7945,4 @@ exports.resumeToPipeableStream = function (children, postponedState, options) { } }; }; -exports.version = "19.3.0-experimental-dd453071-20260506"; +exports.version = "19.3.0-experimental-d5736f09-20260507"; diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.edge.development.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.edge.development.js index 7eab219bbd66..bbf54371cc81 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.edge.development.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.edge.development.js @@ -9529,11 +9529,11 @@ } function ensureCorrectIsomorphicReactVersion() { var isomorphicReactPackageVersion = React.version; - if ("19.3.0-experimental-dd453071-20260506" !== isomorphicReactPackageVersion) + if ("19.3.0-experimental-d5736f09-20260507" !== isomorphicReactPackageVersion) throw Error( 'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' + (isomorphicReactPackageVersion + - "\n - react-dom: 19.3.0-experimental-dd453071-20260506\nLearn more: https://react.dev/warnings/version-mismatch") + "\n - react-dom: 19.3.0-experimental-d5736f09-20260507\nLearn more: https://react.dev/warnings/version-mismatch") ); } var React = require("next/dist/compiled/react-experimental"), @@ -11356,5 +11356,5 @@ startWork(request); }); }; - exports.version = "19.3.0-experimental-dd453071-20260506"; + exports.version = "19.3.0-experimental-d5736f09-20260507"; })(); diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.edge.production.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.edge.production.js index 03f43f6cd980..78d5457a8629 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.edge.production.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.edge.production.js @@ -7819,11 +7819,11 @@ function getPostponedState(request) { } function ensureCorrectIsomorphicReactVersion() { var isomorphicReactPackageVersion = React.version; - if ("19.3.0-experimental-dd453071-20260506" !== isomorphicReactPackageVersion) + if ("19.3.0-experimental-d5736f09-20260507" !== isomorphicReactPackageVersion) throw Error( 'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' + (isomorphicReactPackageVersion + - "\n - react-dom: 19.3.0-experimental-dd453071-20260506\nLearn more: https://react.dev/warnings/version-mismatch") + "\n - react-dom: 19.3.0-experimental-d5736f09-20260507\nLearn more: https://react.dev/warnings/version-mismatch") ); } ensureCorrectIsomorphicReactVersion(); @@ -8073,4 +8073,4 @@ exports.resumeAndPrerender = function (children, postponedState, options) { startWork(request); }); }; -exports.version = "19.3.0-experimental-dd453071-20260506"; +exports.version = "19.3.0-experimental-d5736f09-20260507"; diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.node.development.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.node.development.js index ca02b5736a1a..ba444f661721 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.node.development.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.node.development.js @@ -9389,11 +9389,11 @@ } function ensureCorrectIsomorphicReactVersion() { var isomorphicReactPackageVersion = React.version; - if ("19.3.0-experimental-dd453071-20260506" !== isomorphicReactPackageVersion) + if ("19.3.0-experimental-d5736f09-20260507" !== isomorphicReactPackageVersion) throw Error( 'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' + (isomorphicReactPackageVersion + - "\n - react-dom: 19.3.0-experimental-dd453071-20260506\nLearn more: https://react.dev/warnings/version-mismatch") + "\n - react-dom: 19.3.0-experimental-d5736f09-20260507\nLearn more: https://react.dev/warnings/version-mismatch") ); } function createDrainHandler(destination, request) { @@ -11522,5 +11522,5 @@ } }; }; - exports.version = "19.3.0-experimental-dd453071-20260506"; + exports.version = "19.3.0-experimental-d5736f09-20260507"; })(); diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.node.production.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.node.production.js index fbf63b85316f..6d6af59d6629 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.node.production.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-server.node.production.js @@ -7698,11 +7698,11 @@ function getPostponedState(request) { } function ensureCorrectIsomorphicReactVersion() { var isomorphicReactPackageVersion = React.version; - if ("19.3.0-experimental-dd453071-20260506" !== isomorphicReactPackageVersion) + if ("19.3.0-experimental-d5736f09-20260507" !== isomorphicReactPackageVersion) throw Error( 'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' + (isomorphicReactPackageVersion + - "\n - react-dom: 19.3.0-experimental-dd453071-20260506\nLearn more: https://react.dev/warnings/version-mismatch") + "\n - react-dom: 19.3.0-experimental-d5736f09-20260507\nLearn more: https://react.dev/warnings/version-mismatch") ); } ensureCorrectIsomorphicReactVersion(); @@ -8252,4 +8252,4 @@ exports.resumeToPipeableStream = function (children, postponedState, options) { } }; }; -exports.version = "19.3.0-experimental-dd453071-20260506"; +exports.version = "19.3.0-experimental-d5736f09-20260507"; diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-unstable_testing.development.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-unstable_testing.development.js index 0dd773a5fdb8..be0819ccaee3 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-unstable_testing.development.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-unstable_testing.development.js @@ -1522,6 +1522,9 @@ function markNodeAsHoistable(node) { node[internalHoistableMarker] = !0; } + function clearPendingLoadOnNode(node) { + node[internalLoadPendingKey] = void 0; + } function getImplicitRole(element) { var mappedByTag = tagToRoleMappings[element.tagName]; if (void 0 !== mappedByTag) return mappedByTag; @@ -11410,24 +11413,24 @@ return current; } function updateSuspenseComponent(current, workInProgress, renderLanes) { - var JSCompiler_object_inline_digest_3257; - var JSCompiler_object_inline_stack_3258 = workInProgress.pendingProps; + var JSCompiler_object_inline_digest_3261; + var JSCompiler_object_inline_stack_3262 = workInProgress.pendingProps; shouldSuspendImpl(workInProgress) && (workInProgress.flags |= 128); - var JSCompiler_object_inline_message_3256 = !1; + var JSCompiler_object_inline_message_3260 = !1; var didSuspend = 0 !== (workInProgress.flags & 128); - (JSCompiler_object_inline_digest_3257 = didSuspend) || - (JSCompiler_object_inline_digest_3257 = + (JSCompiler_object_inline_digest_3261 = didSuspend) || + (JSCompiler_object_inline_digest_3261 = null !== current && null === current.memoizedState ? !1 : 0 !== (suspenseStackCursor.current & ForceSuspenseFallback)); - JSCompiler_object_inline_digest_3257 && - ((JSCompiler_object_inline_message_3256 = !0), + JSCompiler_object_inline_digest_3261 && + ((JSCompiler_object_inline_message_3260 = !0), (workInProgress.flags &= -129)); - JSCompiler_object_inline_digest_3257 = 0 !== (workInProgress.flags & 32); + JSCompiler_object_inline_digest_3261 = 0 !== (workInProgress.flags & 32); workInProgress.flags &= -33; if (null === current) { if (isHydrating) { - JSCompiler_object_inline_message_3256 + JSCompiler_object_inline_message_3260 ? pushPrimaryTreeSuspenseHandler(workInProgress) : reuseSuspenseHandlerOnStack(workInProgress); (current = nextHydratableInstance) @@ -11440,18 +11443,18 @@ ? renderLanes : null), null !== renderLanes && - ((JSCompiler_object_inline_digest_3257 = { + ((JSCompiler_object_inline_digest_3261 = { dehydrated: renderLanes, treeContext: getSuspendedTreeContext(), retryLane: 536870912, hydrationErrors: null }), (workInProgress.memoizedState = - JSCompiler_object_inline_digest_3257), - (JSCompiler_object_inline_digest_3257 = + JSCompiler_object_inline_digest_3261), + (JSCompiler_object_inline_digest_3261 = createFiberFromDehydratedFragment(renderLanes)), - (JSCompiler_object_inline_digest_3257.return = workInProgress), - (workInProgress.child = JSCompiler_object_inline_digest_3257), + (JSCompiler_object_inline_digest_3261.return = workInProgress), + (workInProgress.child = JSCompiler_object_inline_digest_3261), (hydrationParentFiber = workInProgress), (nextHydratableInstance = null))) : (renderLanes = null); @@ -11465,9 +11468,9 @@ : (workInProgress.lanes = 536870912); return null; } - var nextPrimaryChildren = JSCompiler_object_inline_stack_3258.children, - nextFallbackChildren = JSCompiler_object_inline_stack_3258.fallback; - if (JSCompiler_object_inline_message_3256) + var nextPrimaryChildren = JSCompiler_object_inline_stack_3262.children, + nextFallbackChildren = JSCompiler_object_inline_stack_3262.fallback; + if (JSCompiler_object_inline_message_3260) return ( reuseSuspenseHandlerOnStack(workInProgress), mountSuspenseFallbackChildren( @@ -11476,19 +11479,19 @@ nextFallbackChildren, renderLanes ), - (JSCompiler_object_inline_stack_3258 = workInProgress.child), - (JSCompiler_object_inline_stack_3258.memoizedState = + (JSCompiler_object_inline_stack_3262 = workInProgress.child), + (JSCompiler_object_inline_stack_3262.memoizedState = mountSuspenseOffscreenState(renderLanes)), - (JSCompiler_object_inline_stack_3258.childLanes = + (JSCompiler_object_inline_stack_3262.childLanes = getRemainingWorkInPrimaryTree( current, - JSCompiler_object_inline_digest_3257, + JSCompiler_object_inline_digest_3261, renderLanes )), (workInProgress.memoizedState = SUSPENDED_MARKER), - bailoutOffscreenComponent(null, JSCompiler_object_inline_stack_3258) + bailoutOffscreenComponent(null, JSCompiler_object_inline_stack_3262) ); - if (!0 === JSCompiler_object_inline_stack_3258.defer) + if (!0 === JSCompiler_object_inline_stack_3262.defer) return ( reuseSuspenseHandlerOnStack(workInProgress), mountSuspenseFallbackChildren( @@ -11497,18 +11500,18 @@ nextFallbackChildren, renderLanes ), - (JSCompiler_object_inline_stack_3258 = workInProgress.child), - (JSCompiler_object_inline_stack_3258.memoizedState = + (JSCompiler_object_inline_stack_3262 = workInProgress.child), + (JSCompiler_object_inline_stack_3262.memoizedState = mountSuspenseOffscreenState(renderLanes)), - (JSCompiler_object_inline_stack_3258.childLanes = + (JSCompiler_object_inline_stack_3262.childLanes = getRemainingWorkInPrimaryTree( current, - JSCompiler_object_inline_digest_3257, + JSCompiler_object_inline_digest_3261, renderLanes )), (workInProgress.memoizedState = SUSPENDED_MARKER), (workInProgress.lanes = 4194304), - bailoutOffscreenComponent(null, JSCompiler_object_inline_stack_3258) + bailoutOffscreenComponent(null, JSCompiler_object_inline_stack_3262) ); pushPrimaryTreeSuspenseHandler(workInProgress); return mountSuspensePrimaryChildren( @@ -11518,8 +11521,8 @@ } var prevState = current.memoizedState; if (null !== prevState) { - var JSCompiler_object_inline_componentStack_3259 = prevState.dehydrated; - if (null !== JSCompiler_object_inline_componentStack_3259) { + var JSCompiler_object_inline_componentStack_3263 = prevState.dehydrated; + if (null !== JSCompiler_object_inline_componentStack_3263) { if (didSuspend) workInProgress.flags & 256 ? (pushPrimaryTreeSuspenseHandler(workInProgress), @@ -11536,13 +11539,13 @@ (workInProgress = null)) : (reuseSuspenseHandlerOnStack(workInProgress), (nextPrimaryChildren = - JSCompiler_object_inline_stack_3258.fallback), + JSCompiler_object_inline_stack_3262.fallback), (nextFallbackChildren = workInProgress.mode), - (JSCompiler_object_inline_stack_3258 = + (JSCompiler_object_inline_stack_3262 = mountWorkInProgressOffscreenFiber( { mode: "visible", - children: JSCompiler_object_inline_stack_3258.children + children: JSCompiler_object_inline_stack_3262.children }, nextFallbackChildren )), @@ -11553,30 +11556,30 @@ null )), (nextPrimaryChildren.flags |= 2), - (JSCompiler_object_inline_stack_3258.return = workInProgress), + (JSCompiler_object_inline_stack_3262.return = workInProgress), (nextPrimaryChildren.return = workInProgress), - (JSCompiler_object_inline_stack_3258.sibling = + (JSCompiler_object_inline_stack_3262.sibling = nextPrimaryChildren), - (workInProgress.child = JSCompiler_object_inline_stack_3258), + (workInProgress.child = JSCompiler_object_inline_stack_3262), reconcileChildFibers( workInProgress, current.child, null, renderLanes ), - (JSCompiler_object_inline_stack_3258 = workInProgress.child), - (JSCompiler_object_inline_stack_3258.memoizedState = + (JSCompiler_object_inline_stack_3262 = workInProgress.child), + (JSCompiler_object_inline_stack_3262.memoizedState = mountSuspenseOffscreenState(renderLanes)), - (JSCompiler_object_inline_stack_3258.childLanes = + (JSCompiler_object_inline_stack_3262.childLanes = getRemainingWorkInPrimaryTree( current, - JSCompiler_object_inline_digest_3257, + JSCompiler_object_inline_digest_3261, renderLanes )), (workInProgress.memoizedState = SUSPENDED_MARKER), (workInProgress = bailoutOffscreenComponent( null, - JSCompiler_object_inline_stack_3258 + JSCompiler_object_inline_stack_3262 ))); else if ( (pushPrimaryTreeSuspenseHandler(workInProgress), @@ -11584,45 +11587,45 @@ 0 !== (renderLanes & 536870912) && markRenderDerivedCause(workInProgress), isSuspenseInstanceFallback( - JSCompiler_object_inline_componentStack_3259 + JSCompiler_object_inline_componentStack_3263 )) ) { - JSCompiler_object_inline_digest_3257 = - JSCompiler_object_inline_componentStack_3259.nextSibling && - JSCompiler_object_inline_componentStack_3259.nextSibling.dataset; - if (JSCompiler_object_inline_digest_3257) { - nextPrimaryChildren = JSCompiler_object_inline_digest_3257.dgst; - var message = JSCompiler_object_inline_digest_3257.msg; - nextFallbackChildren = JSCompiler_object_inline_digest_3257.stck; - var componentStack = JSCompiler_object_inline_digest_3257.cstck; + JSCompiler_object_inline_digest_3261 = + JSCompiler_object_inline_componentStack_3263.nextSibling && + JSCompiler_object_inline_componentStack_3263.nextSibling.dataset; + if (JSCompiler_object_inline_digest_3261) { + nextPrimaryChildren = JSCompiler_object_inline_digest_3261.dgst; + var message = JSCompiler_object_inline_digest_3261.msg; + nextFallbackChildren = JSCompiler_object_inline_digest_3261.stck; + var componentStack = JSCompiler_object_inline_digest_3261.cstck; } - JSCompiler_object_inline_message_3256 = message; - JSCompiler_object_inline_digest_3257 = nextPrimaryChildren; - JSCompiler_object_inline_stack_3258 = nextFallbackChildren; - JSCompiler_object_inline_componentStack_3259 = componentStack; - nextPrimaryChildren = JSCompiler_object_inline_message_3256; - nextFallbackChildren = JSCompiler_object_inline_componentStack_3259; + JSCompiler_object_inline_message_3260 = message; + JSCompiler_object_inline_digest_3261 = nextPrimaryChildren; + JSCompiler_object_inline_stack_3262 = nextFallbackChildren; + JSCompiler_object_inline_componentStack_3263 = componentStack; + nextPrimaryChildren = JSCompiler_object_inline_message_3260; + nextFallbackChildren = JSCompiler_object_inline_componentStack_3263; nextPrimaryChildren = nextPrimaryChildren ? Error(nextPrimaryChildren) : Error( "The server could not finish this Suspense boundary, likely due to an error during server rendering. Switched to client rendering." ); nextPrimaryChildren.stack = - JSCompiler_object_inline_stack_3258 || ""; - nextPrimaryChildren.digest = JSCompiler_object_inline_digest_3257; - JSCompiler_object_inline_digest_3257 = + JSCompiler_object_inline_stack_3262 || ""; + nextPrimaryChildren.digest = JSCompiler_object_inline_digest_3261; + JSCompiler_object_inline_digest_3261 = void 0 === nextFallbackChildren ? null : nextFallbackChildren; - JSCompiler_object_inline_stack_3258 = { + JSCompiler_object_inline_stack_3262 = { value: nextPrimaryChildren, source: null, - stack: JSCompiler_object_inline_digest_3257 + stack: JSCompiler_object_inline_digest_3261 }; - "string" === typeof JSCompiler_object_inline_digest_3257 && + "string" === typeof JSCompiler_object_inline_digest_3261 && CapturedStacks.set( nextPrimaryChildren, - JSCompiler_object_inline_stack_3258 + JSCompiler_object_inline_stack_3262 ); - queueHydrationError(JSCompiler_object_inline_stack_3258); + queueHydrationError(JSCompiler_object_inline_stack_3262); workInProgress = retrySuspenseComponentWithoutHydrating( current, workInProgress, @@ -11636,35 +11639,35 @@ renderLanes, !1 ), - (JSCompiler_object_inline_digest_3257 = + (JSCompiler_object_inline_digest_3261 = 0 !== (renderLanes & current.childLanes)), - didReceiveUpdate || JSCompiler_object_inline_digest_3257) + didReceiveUpdate || JSCompiler_object_inline_digest_3261) ) { - JSCompiler_object_inline_digest_3257 = workInProgressRoot; + JSCompiler_object_inline_digest_3261 = workInProgressRoot; if ( - null !== JSCompiler_object_inline_digest_3257 && - ((JSCompiler_object_inline_stack_3258 = getBumpedLaneForHydration( - JSCompiler_object_inline_digest_3257, + null !== JSCompiler_object_inline_digest_3261 && + ((JSCompiler_object_inline_stack_3262 = getBumpedLaneForHydration( + JSCompiler_object_inline_digest_3261, renderLanes )), - 0 !== JSCompiler_object_inline_stack_3258 && - JSCompiler_object_inline_stack_3258 !== prevState.retryLane) + 0 !== JSCompiler_object_inline_stack_3262 && + JSCompiler_object_inline_stack_3262 !== prevState.retryLane) ) throw ( - ((prevState.retryLane = JSCompiler_object_inline_stack_3258), + ((prevState.retryLane = JSCompiler_object_inline_stack_3262), enqueueConcurrentRenderForLane( current, - JSCompiler_object_inline_stack_3258 + JSCompiler_object_inline_stack_3262 ), scheduleUpdateOnFiber( - JSCompiler_object_inline_digest_3257, + JSCompiler_object_inline_digest_3261, current, - JSCompiler_object_inline_stack_3258 + JSCompiler_object_inline_stack_3262 ), SelectiveHydrationException) ); isSuspenseInstancePending( - JSCompiler_object_inline_componentStack_3259 + JSCompiler_object_inline_componentStack_3263 ) || renderDidSuspendDelayIfPossible(); workInProgress = retrySuspenseComponentWithoutHydrating( current, @@ -11673,14 +11676,14 @@ ); } else isSuspenseInstancePending( - JSCompiler_object_inline_componentStack_3259 + JSCompiler_object_inline_componentStack_3263 ) ? ((workInProgress.flags |= 192), (workInProgress.child = current.child), (workInProgress = null)) : ((current = prevState.treeContext), (nextHydratableInstance = getNextHydratable( - JSCompiler_object_inline_componentStack_3259.nextSibling + JSCompiler_object_inline_componentStack_3263.nextSibling )), (hydrationParentFiber = workInProgress), (isHydrating = !0), @@ -11692,32 +11695,32 @@ restoreSuspendedTreeContext(workInProgress, current), (workInProgress = mountSuspensePrimaryChildren( workInProgress, - JSCompiler_object_inline_stack_3258.children + JSCompiler_object_inline_stack_3262.children )), (workInProgress.flags |= 134221824)); return workInProgress; } } - if (JSCompiler_object_inline_message_3256) + if (JSCompiler_object_inline_message_3260) return ( reuseSuspenseHandlerOnStack(workInProgress), - (nextPrimaryChildren = JSCompiler_object_inline_stack_3258.fallback), + (nextPrimaryChildren = JSCompiler_object_inline_stack_3262.fallback), (nextFallbackChildren = workInProgress.mode), (componentStack = current.child), - (JSCompiler_object_inline_componentStack_3259 = + (JSCompiler_object_inline_componentStack_3263 = componentStack.sibling), - (JSCompiler_object_inline_stack_3258 = createWorkInProgress( + (JSCompiler_object_inline_stack_3262 = createWorkInProgress( componentStack, { mode: "hidden", - children: JSCompiler_object_inline_stack_3258.children + children: JSCompiler_object_inline_stack_3262.children } )), - (JSCompiler_object_inline_stack_3258.subtreeFlags = + (JSCompiler_object_inline_stack_3262.subtreeFlags = componentStack.subtreeFlags & 133169152), - null !== JSCompiler_object_inline_componentStack_3259 + null !== JSCompiler_object_inline_componentStack_3263 ? (nextPrimaryChildren = createWorkInProgress( - JSCompiler_object_inline_componentStack_3259, + JSCompiler_object_inline_componentStack_3263, nextPrimaryChildren )) : ((nextPrimaryChildren = createFiberFromFragment( @@ -11728,11 +11731,11 @@ )), (nextPrimaryChildren.flags |= 2)), (nextPrimaryChildren.return = workInProgress), - (JSCompiler_object_inline_stack_3258.return = workInProgress), - (JSCompiler_object_inline_stack_3258.sibling = nextPrimaryChildren), - (workInProgress.child = JSCompiler_object_inline_stack_3258), - bailoutOffscreenComponent(null, JSCompiler_object_inline_stack_3258), - (JSCompiler_object_inline_stack_3258 = workInProgress.child), + (JSCompiler_object_inline_stack_3262.return = workInProgress), + (JSCompiler_object_inline_stack_3262.sibling = nextPrimaryChildren), + (workInProgress.child = JSCompiler_object_inline_stack_3262), + bailoutOffscreenComponent(null, JSCompiler_object_inline_stack_3262), + (JSCompiler_object_inline_stack_3262 = workInProgress.child), (nextPrimaryChildren = current.child.memoizedState), null === nextPrimaryChildren ? (nextPrimaryChildren = mountSuspenseOffscreenState(renderLanes)) @@ -11748,18 +11751,18 @@ baseLanes: nextPrimaryChildren.baseLanes | renderLanes, cachePool: nextFallbackChildren })), - (JSCompiler_object_inline_stack_3258.memoizedState = + (JSCompiler_object_inline_stack_3262.memoizedState = nextPrimaryChildren), - (JSCompiler_object_inline_stack_3258.childLanes = + (JSCompiler_object_inline_stack_3262.childLanes = getRemainingWorkInPrimaryTree( current, - JSCompiler_object_inline_digest_3257, + JSCompiler_object_inline_digest_3261, renderLanes )), (workInProgress.memoizedState = SUSPENDED_MARKER), bailoutOffscreenComponent( current.child, - JSCompiler_object_inline_stack_3258 + JSCompiler_object_inline_stack_3262 ) ); null !== prevState && @@ -11771,16 +11774,16 @@ current = renderLanes.sibling; renderLanes = createWorkInProgress(renderLanes, { mode: "visible", - children: JSCompiler_object_inline_stack_3258.children + children: JSCompiler_object_inline_stack_3262.children }); renderLanes.return = workInProgress; renderLanes.sibling = null; null !== current && - ((JSCompiler_object_inline_digest_3257 = workInProgress.deletions), - null === JSCompiler_object_inline_digest_3257 + ((JSCompiler_object_inline_digest_3261 = workInProgress.deletions), + null === JSCompiler_object_inline_digest_3261 ? ((workInProgress.deletions = [current]), (workInProgress.flags |= 16)) - : JSCompiler_object_inline_digest_3257.push(current)); + : JSCompiler_object_inline_digest_3261.push(current)); workInProgress.child = renderLanes; workInProgress.memoizedState = null; return renderLanes; @@ -27396,8 +27399,7 @@ type = getStyleKey(pendingProps.href); var _styles = getResourcesFromRoot(resourceRoot).hoistableStyles, _resource = _styles.get(type); - if ( - !_resource && + _resource || ((resourceRoot = resourceRoot.ownerDocument || resourceRoot), (_resource = { type: "stylesheet", @@ -27408,31 +27410,29 @@ _styles.set(type, _resource), (_styles = resourceRoot.querySelector( getStylesheetSelectorFromKey(type) - )) && - !_styles._p && - ((_resource.instance = _styles), - (_resource.state.loading = Loaded | Inserted)), - !preloadPropsMap.has(type)) - ) { - var preloadProps = { - rel: "preload", - as: "style", - href: pendingProps.href, - crossOrigin: pendingProps.crossOrigin, - integrity: pendingProps.integrity, - media: pendingProps.media, - hrefLang: pendingProps.hrefLang, - referrerPolicy: pendingProps.referrerPolicy - }; - preloadPropsMap.set(type, preloadProps); - _styles || - preloadStylesheet( - resourceRoot, - type, - preloadProps, - _resource.state - ); - } + )) + ? _styles._p || + ((_resource.instance = _styles), + (_resource.state.loading = Loaded | Inserted)) + : ((_styles = preloadPropsMap.get(type)), + _styles || + ((_styles = { + rel: "preload", + as: "style", + href: pendingProps.href, + crossOrigin: pendingProps.crossOrigin, + integrity: pendingProps.integrity, + media: pendingProps.media, + hrefLang: pendingProps.hrefLang, + referrerPolicy: pendingProps.referrerPolicy + }), + preloadPropsMap.set(type, _styles)), + preloadStylesheet( + resourceRoot, + type, + _styles, + _resource.state + ))); if (currentProps && null === currentResource) throw ( ((pendingProps = @@ -27542,21 +27542,29 @@ }); } function preloadStylesheet(ownerDocument, key, preloadProps, state) { - ownerDocument.querySelector( - 'link[rel="preload"][as="style"][' + key + "]" - ) - ? (state.loading = Loaded) - : ((key = ownerDocument.createElement("link")), - (state.preload = key), - key.addEventListener("load", function () { - return (state.loading |= Loaded); - }), - key.addEventListener("error", function () { - return (state.loading |= Errored); - }), + if ( + (key = ownerDocument.querySelector( + 'link[rel="preload"][as="style"][' + key + "]" + )) + ) { + if (!0 !== key[internalLoadPendingKey]) { + state.loading = Loaded; + return; + } + } else + (key = ownerDocument.createElement("link")), + (key[internalLoadPendingKey] = !0), + (key.onload = key.onerror = clearPendingLoadOnNode.bind(null, key)), setInitialProperties(key, "link", preloadProps), markNodeAsHoistable(key), - ownerDocument.head.appendChild(key)); + ownerDocument.head.appendChild(key); + state.preload = key; + key.addEventListener("load", function () { + return (state.loading |= Loaded); + }); + key.addEventListener("error", function () { + return (state.loading |= Errored); + }); } function getScriptKey(src) { return ( @@ -28978,6 +28986,7 @@ internalRootNodeResourcesKey = "__reactResources$" + randomKey, internalHoistableMarker = "__reactMarker$" + randomKey, internalScrollTimer = "__reactScroll$" + randomKey, + internalLoadPendingKey = "__reactLoad$" + randomKey, tagToRoleMappings = { ARTICLE: "article", ASIDE: "complementary", @@ -32828,30 +32837,41 @@ case "script": key = getScriptKey(href); } - preloadPropsMap.has(key) || - ((href = assign( - { - rel: "preload", - href: - "image" === as && options && options.imageSrcSet - ? void 0 - : href, - as: as - }, - options - )), - preloadPropsMap.set(key, href), - null !== ownerDocument.querySelector(preloadSelector) || - ("style" === as && - ownerDocument.querySelector( - getStylesheetSelectorFromKey(key) - )) || - ("script" === as && - ownerDocument.querySelector(getScriptSelectorFromKey(key))) || - ((as = ownerDocument.createElement("link")), - setInitialProperties(as, "link", href), - markNodeAsHoistable(as), - ownerDocument.head.appendChild(as))); + if ( + !( + preloadPropsMap.has(key) || + ((href = assign( + { + rel: "preload", + href: + "image" === as && options && options.imageSrcSet + ? void 0 + : href, + as: as + }, + options + )), + preloadPropsMap.set(key, href), + null !== ownerDocument.querySelector(preloadSelector) || + ("style" === as && + ownerDocument.querySelector( + getStylesheetSelectorFromKey(key) + )) || + ("script" === as && + ownerDocument.querySelector(getScriptSelectorFromKey(key)))) + ) + ) { + var instance = ownerDocument.createElement("link"); + setInitialProperties(instance, "link", href); + "style" === as && + ((instance[internalLoadPendingKey] = !0), + (instance.onload = instance.onerror = + function () { + clearPendingLoadOnNode(instance); + })); + markNodeAsHoistable(instance); + ownerDocument.head.appendChild(instance); + } } }, m: function (href, options) { @@ -33186,11 +33206,11 @@ }; (function () { var isomorphicReactPackageVersion = React.version; - if ("19.3.0-experimental-dd453071-20260506" !== isomorphicReactPackageVersion) + if ("19.3.0-experimental-d5736f09-20260507" !== isomorphicReactPackageVersion) throw Error( 'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' + (isomorphicReactPackageVersion + - "\n - react-dom: 19.3.0-experimental-dd453071-20260506\nLearn more: https://react.dev/warnings/version-mismatch") + "\n - react-dom: 19.3.0-experimental-d5736f09-20260507\nLearn more: https://react.dev/warnings/version-mismatch") ); })(); ("function" === typeof Map && @@ -33227,10 +33247,10 @@ !(function () { var internals = { bundleType: 1, - version: "19.3.0-experimental-dd453071-20260506", + version: "19.3.0-experimental-d5736f09-20260507", rendererPackageName: "react-dom", currentDispatcherRef: ReactSharedInternals, - reconcilerVersion: "19.3.0-experimental-dd453071-20260506" + reconcilerVersion: "19.3.0-experimental-d5736f09-20260507" }; internals.overrideHookState = overrideHookState; internals.overrideHookStateDeletePath = overrideHookStateDeletePath; @@ -33544,5 +33564,5 @@ } }; }; - exports.version = "19.3.0-experimental-dd453071-20260506"; + exports.version = "19.3.0-experimental-d5736f09-20260507"; })(); diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-unstable_testing.production.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-unstable_testing.production.js index 8971388f6f2d..aa74f3511352 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-unstable_testing.production.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom-unstable_testing.production.js @@ -970,7 +970,8 @@ var randomKey = Math.random().toString(36).slice(2), internalEventHandlesSetKey = "__reactHandles$" + randomKey, internalRootNodeResourcesKey = "__reactResources$" + randomKey, internalHoistableMarker = "__reactMarker$" + randomKey, - internalScrollTimer = "__reactScroll$" + randomKey; + internalScrollTimer = "__reactScroll$" + randomKey, + internalLoadPendingKey = "__reactLoad$" + randomKey; function detachDeletedInstance(node) { delete node[internalInstanceKey]; delete node[internalPropsKey]; @@ -1040,6 +1041,9 @@ function getResourcesFromRoot(root) { function markNodeAsHoistable(node) { node[internalHoistableMarker] = !0; } +function clearPendingLoadOnNode(node) { + node[internalLoadPendingKey] = void 0; +} var tagToRoleMappings = { ARTICLE: "article", ASIDE: "complementary", @@ -18737,26 +18741,37 @@ function preload(href, as, options) { case "script": key = getScriptKey(href); } - preloadPropsMap.has(key) || - ((href = assign( - { - rel: "preload", - href: - "image" === as && options && options.imageSrcSet ? void 0 : href, - as: as - }, - options - )), - preloadPropsMap.set(key, href), - null !== ownerDocument.querySelector(preloadSelector) || - ("style" === as && - ownerDocument.querySelector(getStylesheetSelectorFromKey(key))) || - ("script" === as && - ownerDocument.querySelector(getScriptSelectorFromKey(key))) || - ((as = ownerDocument.createElement("link")), - setInitialProperties(as, "link", href), - markNodeAsHoistable(as), - ownerDocument.head.appendChild(as))); + if ( + !( + preloadPropsMap.has(key) || + ((href = assign( + { + rel: "preload", + href: + "image" === as && options && options.imageSrcSet ? void 0 : href, + as: as + }, + options + )), + preloadPropsMap.set(key, href), + null !== ownerDocument.querySelector(preloadSelector) || + ("style" === as && + ownerDocument.querySelector(getStylesheetSelectorFromKey(key))) || + ("script" === as && + ownerDocument.querySelector(getScriptSelectorFromKey(key)))) + ) + ) { + var instance = ownerDocument.createElement("link"); + setInitialProperties(instance, "link", href); + "style" === as && + ((instance[internalLoadPendingKey] = !0), + (instance.onload = instance.onerror = + function () { + clearPendingLoadOnNode(instance); + })); + markNodeAsHoistable(instance); + ownerDocument.head.appendChild(instance); + } } } function preloadModule(href, options) { @@ -18917,11 +18932,11 @@ function getResource(type, currentProps, pendingProps, currentResource) { case "style": return "string" === typeof pendingProps.precedence && "string" === typeof pendingProps.href - ? ((currentProps = getStyleKey(pendingProps.href)), - (pendingProps = getResourcesFromRoot( + ? ((pendingProps = getStyleKey(pendingProps.href)), + (currentProps = getResourcesFromRoot( JSCompiler_inline_result ).hoistableStyles), - (currentResource = pendingProps.get(currentProps)), + (currentResource = currentProps.get(pendingProps)), currentResource || ((currentResource = { type: "style", @@ -18929,7 +18944,7 @@ function getResource(type, currentProps, pendingProps, currentResource) { count: 0, state: null }), - pendingProps.set(currentProps, currentResource)), + currentProps.set(pendingProps, currentResource)), currentResource) : { type: "void", instance: null, count: 0, state: null }; case "link": @@ -18955,27 +18970,27 @@ function getResource(type, currentProps, pendingProps, currentResource) { styles$290.set(type, resource$291), (styles$290 = JSCompiler_inline_result.querySelector( getStylesheetSelectorFromKey(type) - )) && - !styles$290._p && - ((resource$291.instance = styles$290), - (resource$291.state.loading = 5)), - preloadPropsMap.has(type) || - ((pendingProps = { - rel: "preload", - as: "style", - href: pendingProps.href, - crossOrigin: pendingProps.crossOrigin, - integrity: pendingProps.integrity, - media: pendingProps.media, - hrefLang: pendingProps.hrefLang, - referrerPolicy: pendingProps.referrerPolicy - }), - preloadPropsMap.set(type, pendingProps), - styles$290 || + )) + ? styles$290._p || + ((resource$291.instance = styles$290), + (resource$291.state.loading = 5)) + : ((styles$290 = preloadPropsMap.get(type)), + styles$290 || + ((styles$290 = { + rel: "preload", + as: "style", + href: pendingProps.href, + crossOrigin: pendingProps.crossOrigin, + integrity: pendingProps.integrity, + media: pendingProps.media, + hrefLang: pendingProps.hrefLang, + referrerPolicy: pendingProps.referrerPolicy + }), + preloadPropsMap.set(type, styles$290)), preloadStylesheet( JSCompiler_inline_result, type, - pendingProps, + styles$290, resource$291.state ))); if (currentProps && null === currentResource) @@ -18993,11 +19008,11 @@ function getResource(type, currentProps, pendingProps, currentResource) { currentProps && "function" !== typeof currentProps && "symbol" !== typeof currentProps - ? ((currentProps = getScriptKey(pendingProps)), - (pendingProps = getResourcesFromRoot( + ? ((pendingProps = getScriptKey(pendingProps)), + (currentProps = getResourcesFromRoot( JSCompiler_inline_result ).hoistableScripts), - (currentResource = pendingProps.get(currentProps)), + (currentResource = currentProps.get(pendingProps)), currentResource || ((currentResource = { type: "script", @@ -19005,7 +19020,7 @@ function getResource(type, currentProps, pendingProps, currentResource) { count: 0, state: null }), - pendingProps.set(currentProps, currentResource)), + currentProps.set(pendingProps, currentResource)), currentResource) : { type: "void", instance: null, count: 0, state: null } ); @@ -19026,19 +19041,29 @@ function stylesheetPropsFromRawProps(rawProps) { }); } function preloadStylesheet(ownerDocument, key, preloadProps, state) { - ownerDocument.querySelector('link[rel="preload"][as="style"][' + key + "]") - ? (state.loading = 1) - : ((key = ownerDocument.createElement("link")), - (state.preload = key), - key.addEventListener("load", function () { - return (state.loading |= 1); - }), - key.addEventListener("error", function () { - return (state.loading |= 2); - }), + if ( + (key = ownerDocument.querySelector( + 'link[rel="preload"][as="style"][' + key + "]" + )) + ) { + if (!0 !== key[internalLoadPendingKey]) { + state.loading = 1; + return; + } + } else + (key = ownerDocument.createElement("link")), + (key[internalLoadPendingKey] = !0), + (key.onload = key.onerror = clearPendingLoadOnNode.bind(null, key)), setInitialProperties(key, "link", preloadProps), markNodeAsHoistable(key), - ownerDocument.head.appendChild(key)); + ownerDocument.head.appendChild(key); + state.preload = key; + key.addEventListener("load", function () { + return (state.loading |= 1); + }); + key.addEventListener("error", function () { + return (state.loading |= 2); + }); } function getScriptKey(src) { return '[src="' + escapeSelectorAttributeValueInsideDoubleQuotes(src) + '"]'; @@ -20240,16 +20265,16 @@ ReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) { 0 === i && attemptExplicitHydrationTarget(target); } }; -var isomorphicReactPackageVersion$jscomp$inline_2266 = React.version; +var isomorphicReactPackageVersion$jscomp$inline_2270 = React.version; if ( - "19.3.0-experimental-dd453071-20260506" !== - isomorphicReactPackageVersion$jscomp$inline_2266 + "19.3.0-experimental-d5736f09-20260507" !== + isomorphicReactPackageVersion$jscomp$inline_2270 ) throw Error( formatProdErrorMessage( 527, - isomorphicReactPackageVersion$jscomp$inline_2266, - "19.3.0-experimental-dd453071-20260506" + isomorphicReactPackageVersion$jscomp$inline_2270, + "19.3.0-experimental-d5736f09-20260507" ) ); ReactDOMSharedInternals.findDOMNode = function (componentOrElement) { @@ -20269,24 +20294,24 @@ ReactDOMSharedInternals.findDOMNode = function (componentOrElement) { null === componentOrElement ? null : componentOrElement.stateNode; return componentOrElement; }; -var internals$jscomp$inline_2956 = { +var internals$jscomp$inline_2960 = { bundleType: 0, - version: "19.3.0-experimental-dd453071-20260506", + version: "19.3.0-experimental-d5736f09-20260507", rendererPackageName: "react-dom", currentDispatcherRef: ReactSharedInternals, - reconcilerVersion: "19.3.0-experimental-dd453071-20260506" + reconcilerVersion: "19.3.0-experimental-d5736f09-20260507" }; if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) { - var hook$jscomp$inline_2957 = __REACT_DEVTOOLS_GLOBAL_HOOK__; + var hook$jscomp$inline_2961 = __REACT_DEVTOOLS_GLOBAL_HOOK__; if ( - !hook$jscomp$inline_2957.isDisabled && - hook$jscomp$inline_2957.supportsFiber + !hook$jscomp$inline_2961.isDisabled && + hook$jscomp$inline_2961.supportsFiber ) try { - (rendererID = hook$jscomp$inline_2957.inject( - internals$jscomp$inline_2956 + (rendererID = hook$jscomp$inline_2961.inject( + internals$jscomp$inline_2960 )), - (injectedHook = hook$jscomp$inline_2957); + (injectedHook = hook$jscomp$inline_2961); } catch (err) {} } exports.createComponentSelector = function (component) { @@ -20532,4 +20557,4 @@ exports.observeVisibleRects = function ( } }; }; -exports.version = "19.3.0-experimental-dd453071-20260506"; +exports.version = "19.3.0-experimental-d5736f09-20260507"; diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom.development.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom.development.js index 96d5153b93b9..c31c6d33e762 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom.development.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom.development.js @@ -422,7 +422,7 @@ exports.useFormStatus = function () { return resolveDispatcher().useHostTransitionStatus(); }; - exports.version = "19.3.0-experimental-dd453071-20260506"; + exports.version = "19.3.0-experimental-d5736f09-20260507"; "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom.production.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom.production.js index 938711bcc3d5..2a1f75bebdd6 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom.production.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom.production.js @@ -213,4 +213,4 @@ exports.useFormState = function (action, initialState, permalink) { exports.useFormStatus = function () { return ReactSharedInternals.H.useHostTransitionStatus(); }; -exports.version = "19.3.0-experimental-dd453071-20260506"; +exports.version = "19.3.0-experimental-d5736f09-20260507"; diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom.react-server.development.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom.react-server.development.js index 9f88d6f47111..855026b58845 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom.react-server.development.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom.react-server.development.js @@ -336,5 +336,5 @@ })) : Internals.d.m(href)); }; - exports.version = "19.3.0-experimental-dd453071-20260506"; + exports.version = "19.3.0-experimental-d5736f09-20260507"; })(); diff --git a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom.react-server.production.js b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom.react-server.production.js index 2a380afb358d..65700d249bcf 100644 --- a/packages/next/src/compiled/react-dom-experimental/cjs/react-dom.react-server.production.js +++ b/packages/next/src/compiled/react-dom-experimental/cjs/react-dom.react-server.production.js @@ -149,4 +149,4 @@ exports.preloadModule = function (href, options) { }); } else Internals.d.m(href); }; -exports.version = "19.3.0-experimental-dd453071-20260506"; +exports.version = "19.3.0-experimental-d5736f09-20260507"; diff --git a/packages/next/src/compiled/react-dom-experimental/package.json b/packages/next/src/compiled/react-dom-experimental/package.json index 4f6f090180e3..1ea3aa41610a 100644 --- a/packages/next/src/compiled/react-dom-experimental/package.json +++ b/packages/next/src/compiled/react-dom-experimental/package.json @@ -72,10 +72,10 @@ "./package.json": "./package.json" }, "dependencies": { - "scheduler": "0.0.0-experimental-dd453071-20260506" + "scheduler": "0.0.0-experimental-d5736f09-20260507" }, "peerDependencies": { - "react": "0.0.0-experimental-dd453071-20260506" + "react": "0.0.0-experimental-d5736f09-20260507" }, "browser": { "./server.js": "./server.browser.js", diff --git a/packages/next/src/compiled/react-dom/cjs/react-dom-client.development.js b/packages/next/src/compiled/react-dom/cjs/react-dom-client.development.js index f103e84f165a..34b6b96ed748 100644 --- a/packages/next/src/compiled/react-dom/cjs/react-dom-client.development.js +++ b/packages/next/src/compiled/react-dom/cjs/react-dom-client.development.js @@ -1504,6 +1504,9 @@ function markNodeAsHoistable(node) { node[internalHoistableMarker] = !0; } + function clearPendingLoadOnNode(node) { + node[internalLoadPendingKey] = void 0; + } function registerTwoPhaseEvent(registrationName, dependencies) { registerDirectEvent(registrationName, dependencies); registerDirectEvent(registrationName + "Capture", dependencies); @@ -11089,24 +11092,24 @@ return current; } function updateSuspenseComponent(current, workInProgress, renderLanes) { - var JSCompiler_object_inline_digest_2896; - var JSCompiler_object_inline_stack_2897 = workInProgress.pendingProps; + var JSCompiler_object_inline_digest_2900; + var JSCompiler_object_inline_stack_2901 = workInProgress.pendingProps; shouldSuspendImpl(workInProgress) && (workInProgress.flags |= 128); - var JSCompiler_object_inline_message_2895 = !1; + var JSCompiler_object_inline_message_2899 = !1; var didSuspend = 0 !== (workInProgress.flags & 128); - (JSCompiler_object_inline_digest_2896 = didSuspend) || - (JSCompiler_object_inline_digest_2896 = + (JSCompiler_object_inline_digest_2900 = didSuspend) || + (JSCompiler_object_inline_digest_2900 = null !== current && null === current.memoizedState ? !1 : 0 !== (suspenseStackCursor.current & ForceSuspenseFallback)); - JSCompiler_object_inline_digest_2896 && - ((JSCompiler_object_inline_message_2895 = !0), + JSCompiler_object_inline_digest_2900 && + ((JSCompiler_object_inline_message_2899 = !0), (workInProgress.flags &= -129)); - JSCompiler_object_inline_digest_2896 = 0 !== (workInProgress.flags & 32); + JSCompiler_object_inline_digest_2900 = 0 !== (workInProgress.flags & 32); workInProgress.flags &= -33; if (null === current) { if (isHydrating) { - JSCompiler_object_inline_message_2895 + JSCompiler_object_inline_message_2899 ? pushPrimaryTreeSuspenseHandler(workInProgress) : reuseSuspenseHandlerOnStack(workInProgress); (current = nextHydratableInstance) @@ -11119,18 +11122,18 @@ ? renderLanes : null), null !== renderLanes && - ((JSCompiler_object_inline_digest_2896 = { + ((JSCompiler_object_inline_digest_2900 = { dehydrated: renderLanes, treeContext: getSuspendedTreeContext(), retryLane: 536870912, hydrationErrors: null }), (workInProgress.memoizedState = - JSCompiler_object_inline_digest_2896), - (JSCompiler_object_inline_digest_2896 = + JSCompiler_object_inline_digest_2900), + (JSCompiler_object_inline_digest_2900 = createFiberFromDehydratedFragment(renderLanes)), - (JSCompiler_object_inline_digest_2896.return = workInProgress), - (workInProgress.child = JSCompiler_object_inline_digest_2896), + (JSCompiler_object_inline_digest_2900.return = workInProgress), + (workInProgress.child = JSCompiler_object_inline_digest_2900), (hydrationParentFiber = workInProgress), (nextHydratableInstance = null))) : (renderLanes = null); @@ -11144,39 +11147,39 @@ : (workInProgress.lanes = 536870912); return null; } - var nextPrimaryChildren = JSCompiler_object_inline_stack_2897.children; - JSCompiler_object_inline_stack_2897 = - JSCompiler_object_inline_stack_2897.fallback; - if (JSCompiler_object_inline_message_2895) { + var nextPrimaryChildren = JSCompiler_object_inline_stack_2901.children; + JSCompiler_object_inline_stack_2901 = + JSCompiler_object_inline_stack_2901.fallback; + if (JSCompiler_object_inline_message_2899) { reuseSuspenseHandlerOnStack(workInProgress); var mode = workInProgress.mode; nextPrimaryChildren = mountWorkInProgressOffscreenFiber( { mode: "hidden", children: nextPrimaryChildren }, mode ); - JSCompiler_object_inline_stack_2897 = createFiberFromFragment( - JSCompiler_object_inline_stack_2897, + JSCompiler_object_inline_stack_2901 = createFiberFromFragment( + JSCompiler_object_inline_stack_2901, mode, renderLanes, null ); nextPrimaryChildren.return = workInProgress; - JSCompiler_object_inline_stack_2897.return = workInProgress; - nextPrimaryChildren.sibling = JSCompiler_object_inline_stack_2897; + JSCompiler_object_inline_stack_2901.return = workInProgress; + nextPrimaryChildren.sibling = JSCompiler_object_inline_stack_2901; workInProgress.child = nextPrimaryChildren; - JSCompiler_object_inline_stack_2897 = workInProgress.child; - JSCompiler_object_inline_stack_2897.memoizedState = + JSCompiler_object_inline_stack_2901 = workInProgress.child; + JSCompiler_object_inline_stack_2901.memoizedState = mountSuspenseOffscreenState(renderLanes); - JSCompiler_object_inline_stack_2897.childLanes = + JSCompiler_object_inline_stack_2901.childLanes = getRemainingWorkInPrimaryTree( current, - JSCompiler_object_inline_digest_2896, + JSCompiler_object_inline_digest_2900, renderLanes ); workInProgress.memoizedState = SUSPENDED_MARKER; return bailoutOffscreenComponent( null, - JSCompiler_object_inline_stack_2897 + JSCompiler_object_inline_stack_2901 ); } pushPrimaryTreeSuspenseHandler(workInProgress); @@ -11187,8 +11190,8 @@ } var prevState = current.memoizedState; if (null !== prevState) { - var JSCompiler_object_inline_componentStack_2898 = prevState.dehydrated; - if (null !== JSCompiler_object_inline_componentStack_2898) { + var JSCompiler_object_inline_componentStack_2902 = prevState.dehydrated; + if (null !== JSCompiler_object_inline_componentStack_2902) { if (didSuspend) workInProgress.flags & 256 ? (pushPrimaryTreeSuspenseHandler(workInProgress), @@ -11205,13 +11208,13 @@ (workInProgress = null)) : (reuseSuspenseHandlerOnStack(workInProgress), (nextPrimaryChildren = - JSCompiler_object_inline_stack_2897.fallback), + JSCompiler_object_inline_stack_2901.fallback), (mode = workInProgress.mode), - (JSCompiler_object_inline_stack_2897 = + (JSCompiler_object_inline_stack_2901 = mountWorkInProgressOffscreenFiber( { mode: "visible", - children: JSCompiler_object_inline_stack_2897.children + children: JSCompiler_object_inline_stack_2901.children }, mode )), @@ -11222,30 +11225,30 @@ null )), (nextPrimaryChildren.flags |= 2), - (JSCompiler_object_inline_stack_2897.return = workInProgress), + (JSCompiler_object_inline_stack_2901.return = workInProgress), (nextPrimaryChildren.return = workInProgress), - (JSCompiler_object_inline_stack_2897.sibling = + (JSCompiler_object_inline_stack_2901.sibling = nextPrimaryChildren), - (workInProgress.child = JSCompiler_object_inline_stack_2897), + (workInProgress.child = JSCompiler_object_inline_stack_2901), reconcileChildFibers( workInProgress, current.child, null, renderLanes ), - (JSCompiler_object_inline_stack_2897 = workInProgress.child), - (JSCompiler_object_inline_stack_2897.memoizedState = + (JSCompiler_object_inline_stack_2901 = workInProgress.child), + (JSCompiler_object_inline_stack_2901.memoizedState = mountSuspenseOffscreenState(renderLanes)), - (JSCompiler_object_inline_stack_2897.childLanes = + (JSCompiler_object_inline_stack_2901.childLanes = getRemainingWorkInPrimaryTree( current, - JSCompiler_object_inline_digest_2896, + JSCompiler_object_inline_digest_2900, renderLanes )), (workInProgress.memoizedState = SUSPENDED_MARKER), (workInProgress = bailoutOffscreenComponent( null, - JSCompiler_object_inline_stack_2897 + JSCompiler_object_inline_stack_2901 ))); else if ( (pushPrimaryTreeSuspenseHandler(workInProgress), @@ -11253,45 +11256,45 @@ 0 !== (renderLanes & 536870912) && markRenderDerivedCause(workInProgress), isSuspenseInstanceFallback( - JSCompiler_object_inline_componentStack_2898 + JSCompiler_object_inline_componentStack_2902 )) ) { - JSCompiler_object_inline_digest_2896 = - JSCompiler_object_inline_componentStack_2898.nextSibling && - JSCompiler_object_inline_componentStack_2898.nextSibling.dataset; - if (JSCompiler_object_inline_digest_2896) { - nextPrimaryChildren = JSCompiler_object_inline_digest_2896.dgst; - var message = JSCompiler_object_inline_digest_2896.msg; - mode = JSCompiler_object_inline_digest_2896.stck; - var componentStack = JSCompiler_object_inline_digest_2896.cstck; + JSCompiler_object_inline_digest_2900 = + JSCompiler_object_inline_componentStack_2902.nextSibling && + JSCompiler_object_inline_componentStack_2902.nextSibling.dataset; + if (JSCompiler_object_inline_digest_2900) { + nextPrimaryChildren = JSCompiler_object_inline_digest_2900.dgst; + var message = JSCompiler_object_inline_digest_2900.msg; + mode = JSCompiler_object_inline_digest_2900.stck; + var componentStack = JSCompiler_object_inline_digest_2900.cstck; } - JSCompiler_object_inline_message_2895 = message; - JSCompiler_object_inline_digest_2896 = nextPrimaryChildren; - JSCompiler_object_inline_stack_2897 = mode; - JSCompiler_object_inline_componentStack_2898 = componentStack; - nextPrimaryChildren = JSCompiler_object_inline_message_2895; - mode = JSCompiler_object_inline_componentStack_2898; + JSCompiler_object_inline_message_2899 = message; + JSCompiler_object_inline_digest_2900 = nextPrimaryChildren; + JSCompiler_object_inline_stack_2901 = mode; + JSCompiler_object_inline_componentStack_2902 = componentStack; + nextPrimaryChildren = JSCompiler_object_inline_message_2899; + mode = JSCompiler_object_inline_componentStack_2902; nextPrimaryChildren = nextPrimaryChildren ? Error(nextPrimaryChildren) : Error( "The server could not finish this Suspense boundary, likely due to an error during server rendering. Switched to client rendering." ); nextPrimaryChildren.stack = - JSCompiler_object_inline_stack_2897 || ""; - nextPrimaryChildren.digest = JSCompiler_object_inline_digest_2896; - JSCompiler_object_inline_digest_2896 = + JSCompiler_object_inline_stack_2901 || ""; + nextPrimaryChildren.digest = JSCompiler_object_inline_digest_2900; + JSCompiler_object_inline_digest_2900 = void 0 === mode ? null : mode; - JSCompiler_object_inline_stack_2897 = { + JSCompiler_object_inline_stack_2901 = { value: nextPrimaryChildren, source: null, - stack: JSCompiler_object_inline_digest_2896 + stack: JSCompiler_object_inline_digest_2900 }; - "string" === typeof JSCompiler_object_inline_digest_2896 && + "string" === typeof JSCompiler_object_inline_digest_2900 && CapturedStacks.set( nextPrimaryChildren, - JSCompiler_object_inline_stack_2897 + JSCompiler_object_inline_stack_2901 ); - queueHydrationError(JSCompiler_object_inline_stack_2897); + queueHydrationError(JSCompiler_object_inline_stack_2901); workInProgress = retrySuspenseComponentWithoutHydrating( current, workInProgress, @@ -11305,35 +11308,35 @@ renderLanes, !1 ), - (JSCompiler_object_inline_digest_2896 = + (JSCompiler_object_inline_digest_2900 = 0 !== (renderLanes & current.childLanes)), - didReceiveUpdate || JSCompiler_object_inline_digest_2896) + didReceiveUpdate || JSCompiler_object_inline_digest_2900) ) { - JSCompiler_object_inline_digest_2896 = workInProgressRoot; + JSCompiler_object_inline_digest_2900 = workInProgressRoot; if ( - null !== JSCompiler_object_inline_digest_2896 && - ((JSCompiler_object_inline_stack_2897 = getBumpedLaneForHydration( - JSCompiler_object_inline_digest_2896, + null !== JSCompiler_object_inline_digest_2900 && + ((JSCompiler_object_inline_stack_2901 = getBumpedLaneForHydration( + JSCompiler_object_inline_digest_2900, renderLanes )), - 0 !== JSCompiler_object_inline_stack_2897 && - JSCompiler_object_inline_stack_2897 !== prevState.retryLane) + 0 !== JSCompiler_object_inline_stack_2901 && + JSCompiler_object_inline_stack_2901 !== prevState.retryLane) ) throw ( - ((prevState.retryLane = JSCompiler_object_inline_stack_2897), + ((prevState.retryLane = JSCompiler_object_inline_stack_2901), enqueueConcurrentRenderForLane( current, - JSCompiler_object_inline_stack_2897 + JSCompiler_object_inline_stack_2901 ), scheduleUpdateOnFiber( - JSCompiler_object_inline_digest_2896, + JSCompiler_object_inline_digest_2900, current, - JSCompiler_object_inline_stack_2897 + JSCompiler_object_inline_stack_2901 ), SelectiveHydrationException) ); isSuspenseInstancePending( - JSCompiler_object_inline_componentStack_2898 + JSCompiler_object_inline_componentStack_2902 ) || renderDidSuspendDelayIfPossible(); workInProgress = retrySuspenseComponentWithoutHydrating( current, @@ -11342,14 +11345,14 @@ ); } else isSuspenseInstancePending( - JSCompiler_object_inline_componentStack_2898 + JSCompiler_object_inline_componentStack_2902 ) ? ((workInProgress.flags |= 192), (workInProgress.child = current.child), (workInProgress = null)) : ((current = prevState.treeContext), (nextHydratableInstance = getNextHydratable( - JSCompiler_object_inline_componentStack_2898.nextSibling + JSCompiler_object_inline_componentStack_2902.nextSibling )), (hydrationParentFiber = workInProgress), (isHydrating = !0), @@ -11361,32 +11364,32 @@ restoreSuspendedTreeContext(workInProgress, current), (workInProgress = mountSuspensePrimaryChildren( workInProgress, - JSCompiler_object_inline_stack_2897.children + JSCompiler_object_inline_stack_2901.children )), (workInProgress.flags |= 134221824)); return workInProgress; } } - if (JSCompiler_object_inline_message_2895) + if (JSCompiler_object_inline_message_2899) return ( reuseSuspenseHandlerOnStack(workInProgress), - (nextPrimaryChildren = JSCompiler_object_inline_stack_2897.fallback), + (nextPrimaryChildren = JSCompiler_object_inline_stack_2901.fallback), (mode = workInProgress.mode), (componentStack = current.child), - (JSCompiler_object_inline_componentStack_2898 = + (JSCompiler_object_inline_componentStack_2902 = componentStack.sibling), - (JSCompiler_object_inline_stack_2897 = createWorkInProgress( + (JSCompiler_object_inline_stack_2901 = createWorkInProgress( componentStack, { mode: "hidden", - children: JSCompiler_object_inline_stack_2897.children + children: JSCompiler_object_inline_stack_2901.children } )), - (JSCompiler_object_inline_stack_2897.subtreeFlags = + (JSCompiler_object_inline_stack_2901.subtreeFlags = componentStack.subtreeFlags & 133169152), - null !== JSCompiler_object_inline_componentStack_2898 + null !== JSCompiler_object_inline_componentStack_2902 ? (nextPrimaryChildren = createWorkInProgress( - JSCompiler_object_inline_componentStack_2898, + JSCompiler_object_inline_componentStack_2902, nextPrimaryChildren )) : ((nextPrimaryChildren = createFiberFromFragment( @@ -11397,11 +11400,11 @@ )), (nextPrimaryChildren.flags |= 2)), (nextPrimaryChildren.return = workInProgress), - (JSCompiler_object_inline_stack_2897.return = workInProgress), - (JSCompiler_object_inline_stack_2897.sibling = nextPrimaryChildren), - (workInProgress.child = JSCompiler_object_inline_stack_2897), - bailoutOffscreenComponent(null, JSCompiler_object_inline_stack_2897), - (JSCompiler_object_inline_stack_2897 = workInProgress.child), + (JSCompiler_object_inline_stack_2901.return = workInProgress), + (JSCompiler_object_inline_stack_2901.sibling = nextPrimaryChildren), + (workInProgress.child = JSCompiler_object_inline_stack_2901), + bailoutOffscreenComponent(null, JSCompiler_object_inline_stack_2901), + (JSCompiler_object_inline_stack_2901 = workInProgress.child), (nextPrimaryChildren = current.child.memoizedState), null === nextPrimaryChildren ? (nextPrimaryChildren = mountSuspenseOffscreenState(renderLanes)) @@ -11417,18 +11420,18 @@ baseLanes: nextPrimaryChildren.baseLanes | renderLanes, cachePool: mode })), - (JSCompiler_object_inline_stack_2897.memoizedState = + (JSCompiler_object_inline_stack_2901.memoizedState = nextPrimaryChildren), - (JSCompiler_object_inline_stack_2897.childLanes = + (JSCompiler_object_inline_stack_2901.childLanes = getRemainingWorkInPrimaryTree( current, - JSCompiler_object_inline_digest_2896, + JSCompiler_object_inline_digest_2900, renderLanes )), (workInProgress.memoizedState = SUSPENDED_MARKER), bailoutOffscreenComponent( current.child, - JSCompiler_object_inline_stack_2897 + JSCompiler_object_inline_stack_2901 ) ); null !== prevState && @@ -11440,16 +11443,16 @@ current = renderLanes.sibling; renderLanes = createWorkInProgress(renderLanes, { mode: "visible", - children: JSCompiler_object_inline_stack_2897.children + children: JSCompiler_object_inline_stack_2901.children }); renderLanes.return = workInProgress; renderLanes.sibling = null; null !== current && - ((JSCompiler_object_inline_digest_2896 = workInProgress.deletions), - null === JSCompiler_object_inline_digest_2896 + ((JSCompiler_object_inline_digest_2900 = workInProgress.deletions), + null === JSCompiler_object_inline_digest_2900 ? ((workInProgress.deletions = [current]), (workInProgress.flags |= 16)) - : JSCompiler_object_inline_digest_2896.push(current)); + : JSCompiler_object_inline_digest_2900.push(current)); workInProgress.child = renderLanes; workInProgress.memoizedState = null; return renderLanes; @@ -24925,8 +24928,7 @@ type = getStyleKey(pendingProps.href); var _styles = getResourcesFromRoot(resourceRoot).hoistableStyles, _resource = _styles.get(type); - if ( - !_resource && + _resource || ((resourceRoot = resourceRoot.ownerDocument || resourceRoot), (_resource = { type: "stylesheet", @@ -24937,31 +24939,29 @@ _styles.set(type, _resource), (_styles = resourceRoot.querySelector( getStylesheetSelectorFromKey(type) - )) && - !_styles._p && - ((_resource.instance = _styles), - (_resource.state.loading = Loaded | Inserted)), - !preloadPropsMap.has(type)) - ) { - var preloadProps = { - rel: "preload", - as: "style", - href: pendingProps.href, - crossOrigin: pendingProps.crossOrigin, - integrity: pendingProps.integrity, - media: pendingProps.media, - hrefLang: pendingProps.hrefLang, - referrerPolicy: pendingProps.referrerPolicy - }; - preloadPropsMap.set(type, preloadProps); - _styles || - preloadStylesheet( - resourceRoot, - type, - preloadProps, - _resource.state - ); - } + )) + ? _styles._p || + ((_resource.instance = _styles), + (_resource.state.loading = Loaded | Inserted)) + : ((_styles = preloadPropsMap.get(type)), + _styles || + ((_styles = { + rel: "preload", + as: "style", + href: pendingProps.href, + crossOrigin: pendingProps.crossOrigin, + integrity: pendingProps.integrity, + media: pendingProps.media, + hrefLang: pendingProps.hrefLang, + referrerPolicy: pendingProps.referrerPolicy + }), + preloadPropsMap.set(type, _styles)), + preloadStylesheet( + resourceRoot, + type, + _styles, + _resource.state + ))); if (currentProps && null === currentResource) throw ( ((pendingProps = @@ -25071,21 +25071,29 @@ }); } function preloadStylesheet(ownerDocument, key, preloadProps, state) { - ownerDocument.querySelector( - 'link[rel="preload"][as="style"][' + key + "]" - ) - ? (state.loading = Loaded) - : ((key = ownerDocument.createElement("link")), - (state.preload = key), - key.addEventListener("load", function () { - return (state.loading |= Loaded); - }), - key.addEventListener("error", function () { - return (state.loading |= Errored); - }), + if ( + (key = ownerDocument.querySelector( + 'link[rel="preload"][as="style"][' + key + "]" + )) + ) { + if (!0 !== key[internalLoadPendingKey]) { + state.loading = Loaded; + return; + } + } else + (key = ownerDocument.createElement("link")), + (key[internalLoadPendingKey] = !0), + (key.onload = key.onerror = clearPendingLoadOnNode.bind(null, key)), setInitialProperties(key, "link", preloadProps), markNodeAsHoistable(key), - ownerDocument.head.appendChild(key)); + ownerDocument.head.appendChild(key); + state.preload = key; + key.addEventListener("load", function () { + return (state.loading |= Loaded); + }); + key.addEventListener("error", function () { + return (state.loading |= Errored); + }); } function getScriptKey(src) { return ( @@ -26521,6 +26529,7 @@ internalEventHandlesSetKey = "__reactHandles$" + randomKey, internalRootNodeResourcesKey = "__reactResources$" + randomKey, internalHoistableMarker = "__reactMarker$" + randomKey, + internalLoadPendingKey = "__reactLoad$" + randomKey, allNativeEvents = new Set(), registrationNameDependencies = {}, possibleRegistrationNames = {}, @@ -30263,30 +30272,41 @@ case "script": key = getScriptKey(href); } - preloadPropsMap.has(key) || - ((href = assign( - { - rel: "preload", - href: - "image" === as && options && options.imageSrcSet - ? void 0 - : href, - as: as - }, - options - )), - preloadPropsMap.set(key, href), - null !== ownerDocument.querySelector(preloadSelector) || - ("style" === as && - ownerDocument.querySelector( - getStylesheetSelectorFromKey(key) - )) || - ("script" === as && - ownerDocument.querySelector(getScriptSelectorFromKey(key))) || - ((as = ownerDocument.createElement("link")), - setInitialProperties(as, "link", href), - markNodeAsHoistable(as), - ownerDocument.head.appendChild(as))); + if ( + !( + preloadPropsMap.has(key) || + ((href = assign( + { + rel: "preload", + href: + "image" === as && options && options.imageSrcSet + ? void 0 + : href, + as: as + }, + options + )), + preloadPropsMap.set(key, href), + null !== ownerDocument.querySelector(preloadSelector) || + ("style" === as && + ownerDocument.querySelector( + getStylesheetSelectorFromKey(key) + )) || + ("script" === as && + ownerDocument.querySelector(getScriptSelectorFromKey(key)))) + ) + ) { + var instance = ownerDocument.createElement("link"); + setInitialProperties(instance, "link", href); + "style" === as && + ((instance[internalLoadPendingKey] = !0), + (instance.onload = instance.onerror = + function () { + clearPendingLoadOnNode(instance); + })); + markNodeAsHoistable(instance); + ownerDocument.head.appendChild(instance); + } } }, m: function (href, options) { @@ -30620,11 +30640,11 @@ }; (function () { var isomorphicReactPackageVersion = React.version; - if ("19.3.0-canary-dd453071-20260506" !== isomorphicReactPackageVersion) + if ("19.3.0-canary-d5736f09-20260507" !== isomorphicReactPackageVersion) throw Error( 'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' + (isomorphicReactPackageVersion + - "\n - react-dom: 19.3.0-canary-dd453071-20260506\nLearn more: https://react.dev/warnings/version-mismatch") + "\n - react-dom: 19.3.0-canary-d5736f09-20260507\nLearn more: https://react.dev/warnings/version-mismatch") ); })(); ("function" === typeof Map && @@ -30661,10 +30681,10 @@ !(function () { var internals = { bundleType: 1, - version: "19.3.0-canary-dd453071-20260506", + version: "19.3.0-canary-d5736f09-20260507", rendererPackageName: "react-dom", currentDispatcherRef: ReactSharedInternals, - reconcilerVersion: "19.3.0-canary-dd453071-20260506" + reconcilerVersion: "19.3.0-canary-d5736f09-20260507" }; internals.overrideHookState = overrideHookState; internals.overrideHookStateDeletePath = overrideHookStateDeletePath; @@ -30802,7 +30822,7 @@ listenToAllSupportedEvents(container); return new ReactDOMHydrationRoot(initialChildren); }; - exports.version = "19.3.0-canary-dd453071-20260506"; + exports.version = "19.3.0-canary-d5736f09-20260507"; "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && diff --git a/packages/next/src/compiled/react-dom/cjs/react-dom-client.production.js b/packages/next/src/compiled/react-dom/cjs/react-dom-client.production.js index d40181b5bc94..210d158b653c 100644 --- a/packages/next/src/compiled/react-dom/cjs/react-dom-client.production.js +++ b/packages/next/src/compiled/react-dom/cjs/react-dom-client.production.js @@ -949,7 +949,8 @@ var randomKey = Math.random().toString(36).slice(2), internalEventHandlerListenersKey = "__reactListeners$" + randomKey, internalEventHandlesSetKey = "__reactHandles$" + randomKey, internalRootNodeResourcesKey = "__reactResources$" + randomKey, - internalHoistableMarker = "__reactMarker$" + randomKey; + internalHoistableMarker = "__reactMarker$" + randomKey, + internalLoadPendingKey = "__reactLoad$" + randomKey; function detachDeletedInstance(node) { delete node[internalInstanceKey]; delete node[internalPropsKey]; @@ -1019,6 +1020,9 @@ function getResourcesFromRoot(root) { function markNodeAsHoistable(node) { node[internalHoistableMarker] = !0; } +function clearPendingLoadOnNode(node) { + node[internalLoadPendingKey] = void 0; +} var allNativeEvents = new Set(), registrationNameDependencies = {}; function registerTwoPhaseEvent(registrationName, dependencies) { @@ -16612,26 +16616,37 @@ function preload(href, as, options) { case "script": key = getScriptKey(href); } - preloadPropsMap.has(key) || - ((href = assign( - { - rel: "preload", - href: - "image" === as && options && options.imageSrcSet ? void 0 : href, - as: as - }, - options - )), - preloadPropsMap.set(key, href), - null !== ownerDocument.querySelector(preloadSelector) || - ("style" === as && - ownerDocument.querySelector(getStylesheetSelectorFromKey(key))) || - ("script" === as && - ownerDocument.querySelector(getScriptSelectorFromKey(key))) || - ((as = ownerDocument.createElement("link")), - setInitialProperties(as, "link", href), - markNodeAsHoistable(as), - ownerDocument.head.appendChild(as))); + if ( + !( + preloadPropsMap.has(key) || + ((href = assign( + { + rel: "preload", + href: + "image" === as && options && options.imageSrcSet ? void 0 : href, + as: as + }, + options + )), + preloadPropsMap.set(key, href), + null !== ownerDocument.querySelector(preloadSelector) || + ("style" === as && + ownerDocument.querySelector(getStylesheetSelectorFromKey(key))) || + ("script" === as && + ownerDocument.querySelector(getScriptSelectorFromKey(key)))) + ) + ) { + var instance = ownerDocument.createElement("link"); + setInitialProperties(instance, "link", href); + "style" === as && + ((instance[internalLoadPendingKey] = !0), + (instance.onload = instance.onerror = + function () { + clearPendingLoadOnNode(instance); + })); + markNodeAsHoistable(instance); + ownerDocument.head.appendChild(instance); + } } } function preloadModule(href, options) { @@ -16792,11 +16807,11 @@ function getResource(type, currentProps, pendingProps, currentResource) { case "style": return "string" === typeof pendingProps.precedence && "string" === typeof pendingProps.href - ? ((currentProps = getStyleKey(pendingProps.href)), - (pendingProps = getResourcesFromRoot( + ? ((pendingProps = getStyleKey(pendingProps.href)), + (currentProps = getResourcesFromRoot( JSCompiler_inline_result ).hoistableStyles), - (currentResource = pendingProps.get(currentProps)), + (currentResource = currentProps.get(pendingProps)), currentResource || ((currentResource = { type: "style", @@ -16804,7 +16819,7 @@ function getResource(type, currentProps, pendingProps, currentResource) { count: 0, state: null }), - pendingProps.set(currentProps, currentResource)), + currentProps.set(pendingProps, currentResource)), currentResource) : { type: "void", instance: null, count: 0, state: null }; case "link": @@ -16830,27 +16845,27 @@ function getResource(type, currentProps, pendingProps, currentResource) { styles$262.set(type, resource$263), (styles$262 = JSCompiler_inline_result.querySelector( getStylesheetSelectorFromKey(type) - )) && - !styles$262._p && - ((resource$263.instance = styles$262), - (resource$263.state.loading = 5)), - preloadPropsMap.has(type) || - ((pendingProps = { - rel: "preload", - as: "style", - href: pendingProps.href, - crossOrigin: pendingProps.crossOrigin, - integrity: pendingProps.integrity, - media: pendingProps.media, - hrefLang: pendingProps.hrefLang, - referrerPolicy: pendingProps.referrerPolicy - }), - preloadPropsMap.set(type, pendingProps), - styles$262 || + )) + ? styles$262._p || + ((resource$263.instance = styles$262), + (resource$263.state.loading = 5)) + : ((styles$262 = preloadPropsMap.get(type)), + styles$262 || + ((styles$262 = { + rel: "preload", + as: "style", + href: pendingProps.href, + crossOrigin: pendingProps.crossOrigin, + integrity: pendingProps.integrity, + media: pendingProps.media, + hrefLang: pendingProps.hrefLang, + referrerPolicy: pendingProps.referrerPolicy + }), + preloadPropsMap.set(type, styles$262)), preloadStylesheet( JSCompiler_inline_result, type, - pendingProps, + styles$262, resource$263.state ))); if (currentProps && null === currentResource) @@ -16868,11 +16883,11 @@ function getResource(type, currentProps, pendingProps, currentResource) { currentProps && "function" !== typeof currentProps && "symbol" !== typeof currentProps - ? ((currentProps = getScriptKey(pendingProps)), - (pendingProps = getResourcesFromRoot( + ? ((pendingProps = getScriptKey(pendingProps)), + (currentProps = getResourcesFromRoot( JSCompiler_inline_result ).hoistableScripts), - (currentResource = pendingProps.get(currentProps)), + (currentResource = currentProps.get(pendingProps)), currentResource || ((currentResource = { type: "script", @@ -16880,7 +16895,7 @@ function getResource(type, currentProps, pendingProps, currentResource) { count: 0, state: null }), - pendingProps.set(currentProps, currentResource)), + currentProps.set(pendingProps, currentResource)), currentResource) : { type: "void", instance: null, count: 0, state: null } ); @@ -16901,19 +16916,29 @@ function stylesheetPropsFromRawProps(rawProps) { }); } function preloadStylesheet(ownerDocument, key, preloadProps, state) { - ownerDocument.querySelector('link[rel="preload"][as="style"][' + key + "]") - ? (state.loading = 1) - : ((key = ownerDocument.createElement("link")), - (state.preload = key), - key.addEventListener("load", function () { - return (state.loading |= 1); - }), - key.addEventListener("error", function () { - return (state.loading |= 2); - }), + if ( + (key = ownerDocument.querySelector( + 'link[rel="preload"][as="style"][' + key + "]" + )) + ) { + if (!0 !== key[internalLoadPendingKey]) { + state.loading = 1; + return; + } + } else + (key = ownerDocument.createElement("link")), + (key[internalLoadPendingKey] = !0), + (key.onload = key.onerror = clearPendingLoadOnNode.bind(null, key)), setInitialProperties(key, "link", preloadProps), markNodeAsHoistable(key), - ownerDocument.head.appendChild(key)); + ownerDocument.head.appendChild(key); + state.preload = key; + key.addEventListener("load", function () { + return (state.loading |= 1); + }); + key.addEventListener("error", function () { + return (state.loading |= 2); + }); } function getScriptKey(src) { return '[src="' + escapeSelectorAttributeValueInsideDoubleQuotes(src) + '"]'; @@ -18127,16 +18152,16 @@ ReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) { 0 === i && attemptExplicitHydrationTarget(target); } }; -var isomorphicReactPackageVersion$jscomp$inline_2044 = React.version; +var isomorphicReactPackageVersion$jscomp$inline_2048 = React.version; if ( - "19.3.0-canary-dd453071-20260506" !== - isomorphicReactPackageVersion$jscomp$inline_2044 + "19.3.0-canary-d5736f09-20260507" !== + isomorphicReactPackageVersion$jscomp$inline_2048 ) throw Error( formatProdErrorMessage( 527, - isomorphicReactPackageVersion$jscomp$inline_2044, - "19.3.0-canary-dd453071-20260506" + isomorphicReactPackageVersion$jscomp$inline_2048, + "19.3.0-canary-d5736f09-20260507" ) ); ReactDOMSharedInternals.findDOMNode = function (componentOrElement) { @@ -18156,24 +18181,24 @@ ReactDOMSharedInternals.findDOMNode = function (componentOrElement) { null === componentOrElement ? null : componentOrElement.stateNode; return componentOrElement; }; -var internals$jscomp$inline_2616 = { +var internals$jscomp$inline_2620 = { bundleType: 0, - version: "19.3.0-canary-dd453071-20260506", + version: "19.3.0-canary-d5736f09-20260507", rendererPackageName: "react-dom", currentDispatcherRef: ReactSharedInternals, - reconcilerVersion: "19.3.0-canary-dd453071-20260506" + reconcilerVersion: "19.3.0-canary-d5736f09-20260507" }; if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) { - var hook$jscomp$inline_2617 = __REACT_DEVTOOLS_GLOBAL_HOOK__; + var hook$jscomp$inline_2621 = __REACT_DEVTOOLS_GLOBAL_HOOK__; if ( - !hook$jscomp$inline_2617.isDisabled && - hook$jscomp$inline_2617.supportsFiber + !hook$jscomp$inline_2621.isDisabled && + hook$jscomp$inline_2621.supportsFiber ) try { - (rendererID = hook$jscomp$inline_2617.inject( - internals$jscomp$inline_2616 + (rendererID = hook$jscomp$inline_2621.inject( + internals$jscomp$inline_2620 )), - (injectedHook = hook$jscomp$inline_2617); + (injectedHook = hook$jscomp$inline_2621); } catch (err) {} } exports.createRoot = function (container, options) { @@ -18259,4 +18284,4 @@ exports.hydrateRoot = function (container, initialChildren, options) { listenToAllSupportedEvents(container); return new ReactDOMHydrationRoot(initialChildren); }; -exports.version = "19.3.0-canary-dd453071-20260506"; +exports.version = "19.3.0-canary-d5736f09-20260507"; diff --git a/packages/next/src/compiled/react-dom/cjs/react-dom-profiling.development.js b/packages/next/src/compiled/react-dom/cjs/react-dom-profiling.development.js index ce6b0e0b1efb..400133506fb3 100644 --- a/packages/next/src/compiled/react-dom/cjs/react-dom-profiling.development.js +++ b/packages/next/src/compiled/react-dom/cjs/react-dom-profiling.development.js @@ -1512,6 +1512,9 @@ function markNodeAsHoistable(node) { node[internalHoistableMarker] = !0; } + function clearPendingLoadOnNode(node) { + node[internalLoadPendingKey] = void 0; + } function registerTwoPhaseEvent(registrationName, dependencies) { registerDirectEvent(registrationName, dependencies); registerDirectEvent(registrationName + "Capture", dependencies); @@ -11097,24 +11100,24 @@ return current; } function updateSuspenseComponent(current, workInProgress, renderLanes) { - var JSCompiler_object_inline_digest_2901; - var JSCompiler_object_inline_stack_2902 = workInProgress.pendingProps; + var JSCompiler_object_inline_digest_2905; + var JSCompiler_object_inline_stack_2906 = workInProgress.pendingProps; shouldSuspendImpl(workInProgress) && (workInProgress.flags |= 128); - var JSCompiler_object_inline_message_2900 = !1; + var JSCompiler_object_inline_message_2904 = !1; var didSuspend = 0 !== (workInProgress.flags & 128); - (JSCompiler_object_inline_digest_2901 = didSuspend) || - (JSCompiler_object_inline_digest_2901 = + (JSCompiler_object_inline_digest_2905 = didSuspend) || + (JSCompiler_object_inline_digest_2905 = null !== current && null === current.memoizedState ? !1 : 0 !== (suspenseStackCursor.current & ForceSuspenseFallback)); - JSCompiler_object_inline_digest_2901 && - ((JSCompiler_object_inline_message_2900 = !0), + JSCompiler_object_inline_digest_2905 && + ((JSCompiler_object_inline_message_2904 = !0), (workInProgress.flags &= -129)); - JSCompiler_object_inline_digest_2901 = 0 !== (workInProgress.flags & 32); + JSCompiler_object_inline_digest_2905 = 0 !== (workInProgress.flags & 32); workInProgress.flags &= -33; if (null === current) { if (isHydrating) { - JSCompiler_object_inline_message_2900 + JSCompiler_object_inline_message_2904 ? pushPrimaryTreeSuspenseHandler(workInProgress) : reuseSuspenseHandlerOnStack(workInProgress); (current = nextHydratableInstance) @@ -11127,18 +11130,18 @@ ? renderLanes : null), null !== renderLanes && - ((JSCompiler_object_inline_digest_2901 = { + ((JSCompiler_object_inline_digest_2905 = { dehydrated: renderLanes, treeContext: getSuspendedTreeContext(), retryLane: 536870912, hydrationErrors: null }), (workInProgress.memoizedState = - JSCompiler_object_inline_digest_2901), - (JSCompiler_object_inline_digest_2901 = + JSCompiler_object_inline_digest_2905), + (JSCompiler_object_inline_digest_2905 = createFiberFromDehydratedFragment(renderLanes)), - (JSCompiler_object_inline_digest_2901.return = workInProgress), - (workInProgress.child = JSCompiler_object_inline_digest_2901), + (JSCompiler_object_inline_digest_2905.return = workInProgress), + (workInProgress.child = JSCompiler_object_inline_digest_2905), (hydrationParentFiber = workInProgress), (nextHydratableInstance = null))) : (renderLanes = null); @@ -11152,39 +11155,39 @@ : (workInProgress.lanes = 536870912); return null; } - var nextPrimaryChildren = JSCompiler_object_inline_stack_2902.children; - JSCompiler_object_inline_stack_2902 = - JSCompiler_object_inline_stack_2902.fallback; - if (JSCompiler_object_inline_message_2900) { + var nextPrimaryChildren = JSCompiler_object_inline_stack_2906.children; + JSCompiler_object_inline_stack_2906 = + JSCompiler_object_inline_stack_2906.fallback; + if (JSCompiler_object_inline_message_2904) { reuseSuspenseHandlerOnStack(workInProgress); var mode = workInProgress.mode; nextPrimaryChildren = mountWorkInProgressOffscreenFiber( { mode: "hidden", children: nextPrimaryChildren }, mode ); - JSCompiler_object_inline_stack_2902 = createFiberFromFragment( - JSCompiler_object_inline_stack_2902, + JSCompiler_object_inline_stack_2906 = createFiberFromFragment( + JSCompiler_object_inline_stack_2906, mode, renderLanes, null ); nextPrimaryChildren.return = workInProgress; - JSCompiler_object_inline_stack_2902.return = workInProgress; - nextPrimaryChildren.sibling = JSCompiler_object_inline_stack_2902; + JSCompiler_object_inline_stack_2906.return = workInProgress; + nextPrimaryChildren.sibling = JSCompiler_object_inline_stack_2906; workInProgress.child = nextPrimaryChildren; - JSCompiler_object_inline_stack_2902 = workInProgress.child; - JSCompiler_object_inline_stack_2902.memoizedState = + JSCompiler_object_inline_stack_2906 = workInProgress.child; + JSCompiler_object_inline_stack_2906.memoizedState = mountSuspenseOffscreenState(renderLanes); - JSCompiler_object_inline_stack_2902.childLanes = + JSCompiler_object_inline_stack_2906.childLanes = getRemainingWorkInPrimaryTree( current, - JSCompiler_object_inline_digest_2901, + JSCompiler_object_inline_digest_2905, renderLanes ); workInProgress.memoizedState = SUSPENDED_MARKER; return bailoutOffscreenComponent( null, - JSCompiler_object_inline_stack_2902 + JSCompiler_object_inline_stack_2906 ); } pushPrimaryTreeSuspenseHandler(workInProgress); @@ -11195,8 +11198,8 @@ } var prevState = current.memoizedState; if (null !== prevState) { - var JSCompiler_object_inline_componentStack_2903 = prevState.dehydrated; - if (null !== JSCompiler_object_inline_componentStack_2903) { + var JSCompiler_object_inline_componentStack_2907 = prevState.dehydrated; + if (null !== JSCompiler_object_inline_componentStack_2907) { if (didSuspend) workInProgress.flags & 256 ? (pushPrimaryTreeSuspenseHandler(workInProgress), @@ -11213,13 +11216,13 @@ (workInProgress = null)) : (reuseSuspenseHandlerOnStack(workInProgress), (nextPrimaryChildren = - JSCompiler_object_inline_stack_2902.fallback), + JSCompiler_object_inline_stack_2906.fallback), (mode = workInProgress.mode), - (JSCompiler_object_inline_stack_2902 = + (JSCompiler_object_inline_stack_2906 = mountWorkInProgressOffscreenFiber( { mode: "visible", - children: JSCompiler_object_inline_stack_2902.children + children: JSCompiler_object_inline_stack_2906.children }, mode )), @@ -11230,30 +11233,30 @@ null )), (nextPrimaryChildren.flags |= 2), - (JSCompiler_object_inline_stack_2902.return = workInProgress), + (JSCompiler_object_inline_stack_2906.return = workInProgress), (nextPrimaryChildren.return = workInProgress), - (JSCompiler_object_inline_stack_2902.sibling = + (JSCompiler_object_inline_stack_2906.sibling = nextPrimaryChildren), - (workInProgress.child = JSCompiler_object_inline_stack_2902), + (workInProgress.child = JSCompiler_object_inline_stack_2906), reconcileChildFibers( workInProgress, current.child, null, renderLanes ), - (JSCompiler_object_inline_stack_2902 = workInProgress.child), - (JSCompiler_object_inline_stack_2902.memoizedState = + (JSCompiler_object_inline_stack_2906 = workInProgress.child), + (JSCompiler_object_inline_stack_2906.memoizedState = mountSuspenseOffscreenState(renderLanes)), - (JSCompiler_object_inline_stack_2902.childLanes = + (JSCompiler_object_inline_stack_2906.childLanes = getRemainingWorkInPrimaryTree( current, - JSCompiler_object_inline_digest_2901, + JSCompiler_object_inline_digest_2905, renderLanes )), (workInProgress.memoizedState = SUSPENDED_MARKER), (workInProgress = bailoutOffscreenComponent( null, - JSCompiler_object_inline_stack_2902 + JSCompiler_object_inline_stack_2906 ))); else if ( (pushPrimaryTreeSuspenseHandler(workInProgress), @@ -11261,45 +11264,45 @@ 0 !== (renderLanes & 536870912) && markRenderDerivedCause(workInProgress), isSuspenseInstanceFallback( - JSCompiler_object_inline_componentStack_2903 + JSCompiler_object_inline_componentStack_2907 )) ) { - JSCompiler_object_inline_digest_2901 = - JSCompiler_object_inline_componentStack_2903.nextSibling && - JSCompiler_object_inline_componentStack_2903.nextSibling.dataset; - if (JSCompiler_object_inline_digest_2901) { - nextPrimaryChildren = JSCompiler_object_inline_digest_2901.dgst; - var message = JSCompiler_object_inline_digest_2901.msg; - mode = JSCompiler_object_inline_digest_2901.stck; - var componentStack = JSCompiler_object_inline_digest_2901.cstck; + JSCompiler_object_inline_digest_2905 = + JSCompiler_object_inline_componentStack_2907.nextSibling && + JSCompiler_object_inline_componentStack_2907.nextSibling.dataset; + if (JSCompiler_object_inline_digest_2905) { + nextPrimaryChildren = JSCompiler_object_inline_digest_2905.dgst; + var message = JSCompiler_object_inline_digest_2905.msg; + mode = JSCompiler_object_inline_digest_2905.stck; + var componentStack = JSCompiler_object_inline_digest_2905.cstck; } - JSCompiler_object_inline_message_2900 = message; - JSCompiler_object_inline_digest_2901 = nextPrimaryChildren; - JSCompiler_object_inline_stack_2902 = mode; - JSCompiler_object_inline_componentStack_2903 = componentStack; - nextPrimaryChildren = JSCompiler_object_inline_message_2900; - mode = JSCompiler_object_inline_componentStack_2903; + JSCompiler_object_inline_message_2904 = message; + JSCompiler_object_inline_digest_2905 = nextPrimaryChildren; + JSCompiler_object_inline_stack_2906 = mode; + JSCompiler_object_inline_componentStack_2907 = componentStack; + nextPrimaryChildren = JSCompiler_object_inline_message_2904; + mode = JSCompiler_object_inline_componentStack_2907; nextPrimaryChildren = nextPrimaryChildren ? Error(nextPrimaryChildren) : Error( "The server could not finish this Suspense boundary, likely due to an error during server rendering. Switched to client rendering." ); nextPrimaryChildren.stack = - JSCompiler_object_inline_stack_2902 || ""; - nextPrimaryChildren.digest = JSCompiler_object_inline_digest_2901; - JSCompiler_object_inline_digest_2901 = + JSCompiler_object_inline_stack_2906 || ""; + nextPrimaryChildren.digest = JSCompiler_object_inline_digest_2905; + JSCompiler_object_inline_digest_2905 = void 0 === mode ? null : mode; - JSCompiler_object_inline_stack_2902 = { + JSCompiler_object_inline_stack_2906 = { value: nextPrimaryChildren, source: null, - stack: JSCompiler_object_inline_digest_2901 + stack: JSCompiler_object_inline_digest_2905 }; - "string" === typeof JSCompiler_object_inline_digest_2901 && + "string" === typeof JSCompiler_object_inline_digest_2905 && CapturedStacks.set( nextPrimaryChildren, - JSCompiler_object_inline_stack_2902 + JSCompiler_object_inline_stack_2906 ); - queueHydrationError(JSCompiler_object_inline_stack_2902); + queueHydrationError(JSCompiler_object_inline_stack_2906); workInProgress = retrySuspenseComponentWithoutHydrating( current, workInProgress, @@ -11313,35 +11316,35 @@ renderLanes, !1 ), - (JSCompiler_object_inline_digest_2901 = + (JSCompiler_object_inline_digest_2905 = 0 !== (renderLanes & current.childLanes)), - didReceiveUpdate || JSCompiler_object_inline_digest_2901) + didReceiveUpdate || JSCompiler_object_inline_digest_2905) ) { - JSCompiler_object_inline_digest_2901 = workInProgressRoot; + JSCompiler_object_inline_digest_2905 = workInProgressRoot; if ( - null !== JSCompiler_object_inline_digest_2901 && - ((JSCompiler_object_inline_stack_2902 = getBumpedLaneForHydration( - JSCompiler_object_inline_digest_2901, + null !== JSCompiler_object_inline_digest_2905 && + ((JSCompiler_object_inline_stack_2906 = getBumpedLaneForHydration( + JSCompiler_object_inline_digest_2905, renderLanes )), - 0 !== JSCompiler_object_inline_stack_2902 && - JSCompiler_object_inline_stack_2902 !== prevState.retryLane) + 0 !== JSCompiler_object_inline_stack_2906 && + JSCompiler_object_inline_stack_2906 !== prevState.retryLane) ) throw ( - ((prevState.retryLane = JSCompiler_object_inline_stack_2902), + ((prevState.retryLane = JSCompiler_object_inline_stack_2906), enqueueConcurrentRenderForLane( current, - JSCompiler_object_inline_stack_2902 + JSCompiler_object_inline_stack_2906 ), scheduleUpdateOnFiber( - JSCompiler_object_inline_digest_2901, + JSCompiler_object_inline_digest_2905, current, - JSCompiler_object_inline_stack_2902 + JSCompiler_object_inline_stack_2906 ), SelectiveHydrationException) ); isSuspenseInstancePending( - JSCompiler_object_inline_componentStack_2903 + JSCompiler_object_inline_componentStack_2907 ) || renderDidSuspendDelayIfPossible(); workInProgress = retrySuspenseComponentWithoutHydrating( current, @@ -11350,14 +11353,14 @@ ); } else isSuspenseInstancePending( - JSCompiler_object_inline_componentStack_2903 + JSCompiler_object_inline_componentStack_2907 ) ? ((workInProgress.flags |= 192), (workInProgress.child = current.child), (workInProgress = null)) : ((current = prevState.treeContext), (nextHydratableInstance = getNextHydratable( - JSCompiler_object_inline_componentStack_2903.nextSibling + JSCompiler_object_inline_componentStack_2907.nextSibling )), (hydrationParentFiber = workInProgress), (isHydrating = !0), @@ -11369,32 +11372,32 @@ restoreSuspendedTreeContext(workInProgress, current), (workInProgress = mountSuspensePrimaryChildren( workInProgress, - JSCompiler_object_inline_stack_2902.children + JSCompiler_object_inline_stack_2906.children )), (workInProgress.flags |= 134221824)); return workInProgress; } } - if (JSCompiler_object_inline_message_2900) + if (JSCompiler_object_inline_message_2904) return ( reuseSuspenseHandlerOnStack(workInProgress), - (nextPrimaryChildren = JSCompiler_object_inline_stack_2902.fallback), + (nextPrimaryChildren = JSCompiler_object_inline_stack_2906.fallback), (mode = workInProgress.mode), (componentStack = current.child), - (JSCompiler_object_inline_componentStack_2903 = + (JSCompiler_object_inline_componentStack_2907 = componentStack.sibling), - (JSCompiler_object_inline_stack_2902 = createWorkInProgress( + (JSCompiler_object_inline_stack_2906 = createWorkInProgress( componentStack, { mode: "hidden", - children: JSCompiler_object_inline_stack_2902.children + children: JSCompiler_object_inline_stack_2906.children } )), - (JSCompiler_object_inline_stack_2902.subtreeFlags = + (JSCompiler_object_inline_stack_2906.subtreeFlags = componentStack.subtreeFlags & 133169152), - null !== JSCompiler_object_inline_componentStack_2903 + null !== JSCompiler_object_inline_componentStack_2907 ? (nextPrimaryChildren = createWorkInProgress( - JSCompiler_object_inline_componentStack_2903, + JSCompiler_object_inline_componentStack_2907, nextPrimaryChildren )) : ((nextPrimaryChildren = createFiberFromFragment( @@ -11405,11 +11408,11 @@ )), (nextPrimaryChildren.flags |= 2)), (nextPrimaryChildren.return = workInProgress), - (JSCompiler_object_inline_stack_2902.return = workInProgress), - (JSCompiler_object_inline_stack_2902.sibling = nextPrimaryChildren), - (workInProgress.child = JSCompiler_object_inline_stack_2902), - bailoutOffscreenComponent(null, JSCompiler_object_inline_stack_2902), - (JSCompiler_object_inline_stack_2902 = workInProgress.child), + (JSCompiler_object_inline_stack_2906.return = workInProgress), + (JSCompiler_object_inline_stack_2906.sibling = nextPrimaryChildren), + (workInProgress.child = JSCompiler_object_inline_stack_2906), + bailoutOffscreenComponent(null, JSCompiler_object_inline_stack_2906), + (JSCompiler_object_inline_stack_2906 = workInProgress.child), (nextPrimaryChildren = current.child.memoizedState), null === nextPrimaryChildren ? (nextPrimaryChildren = mountSuspenseOffscreenState(renderLanes)) @@ -11425,18 +11428,18 @@ baseLanes: nextPrimaryChildren.baseLanes | renderLanes, cachePool: mode })), - (JSCompiler_object_inline_stack_2902.memoizedState = + (JSCompiler_object_inline_stack_2906.memoizedState = nextPrimaryChildren), - (JSCompiler_object_inline_stack_2902.childLanes = + (JSCompiler_object_inline_stack_2906.childLanes = getRemainingWorkInPrimaryTree( current, - JSCompiler_object_inline_digest_2901, + JSCompiler_object_inline_digest_2905, renderLanes )), (workInProgress.memoizedState = SUSPENDED_MARKER), bailoutOffscreenComponent( current.child, - JSCompiler_object_inline_stack_2902 + JSCompiler_object_inline_stack_2906 ) ); null !== prevState && @@ -11448,16 +11451,16 @@ current = renderLanes.sibling; renderLanes = createWorkInProgress(renderLanes, { mode: "visible", - children: JSCompiler_object_inline_stack_2902.children + children: JSCompiler_object_inline_stack_2906.children }); renderLanes.return = workInProgress; renderLanes.sibling = null; null !== current && - ((JSCompiler_object_inline_digest_2901 = workInProgress.deletions), - null === JSCompiler_object_inline_digest_2901 + ((JSCompiler_object_inline_digest_2905 = workInProgress.deletions), + null === JSCompiler_object_inline_digest_2905 ? ((workInProgress.deletions = [current]), (workInProgress.flags |= 16)) - : JSCompiler_object_inline_digest_2901.push(current)); + : JSCompiler_object_inline_digest_2905.push(current)); workInProgress.child = renderLanes; workInProgress.memoizedState = null; return renderLanes; @@ -24933,8 +24936,7 @@ type = getStyleKey(pendingProps.href); var _styles = getResourcesFromRoot(resourceRoot).hoistableStyles, _resource = _styles.get(type); - if ( - !_resource && + _resource || ((resourceRoot = resourceRoot.ownerDocument || resourceRoot), (_resource = { type: "stylesheet", @@ -24945,31 +24947,29 @@ _styles.set(type, _resource), (_styles = resourceRoot.querySelector( getStylesheetSelectorFromKey(type) - )) && - !_styles._p && - ((_resource.instance = _styles), - (_resource.state.loading = Loaded | Inserted)), - !preloadPropsMap.has(type)) - ) { - var preloadProps = { - rel: "preload", - as: "style", - href: pendingProps.href, - crossOrigin: pendingProps.crossOrigin, - integrity: pendingProps.integrity, - media: pendingProps.media, - hrefLang: pendingProps.hrefLang, - referrerPolicy: pendingProps.referrerPolicy - }; - preloadPropsMap.set(type, preloadProps); - _styles || - preloadStylesheet( - resourceRoot, - type, - preloadProps, - _resource.state - ); - } + )) + ? _styles._p || + ((_resource.instance = _styles), + (_resource.state.loading = Loaded | Inserted)) + : ((_styles = preloadPropsMap.get(type)), + _styles || + ((_styles = { + rel: "preload", + as: "style", + href: pendingProps.href, + crossOrigin: pendingProps.crossOrigin, + integrity: pendingProps.integrity, + media: pendingProps.media, + hrefLang: pendingProps.hrefLang, + referrerPolicy: pendingProps.referrerPolicy + }), + preloadPropsMap.set(type, _styles)), + preloadStylesheet( + resourceRoot, + type, + _styles, + _resource.state + ))); if (currentProps && null === currentResource) throw ( ((pendingProps = @@ -25079,21 +25079,29 @@ }); } function preloadStylesheet(ownerDocument, key, preloadProps, state) { - ownerDocument.querySelector( - 'link[rel="preload"][as="style"][' + key + "]" - ) - ? (state.loading = Loaded) - : ((key = ownerDocument.createElement("link")), - (state.preload = key), - key.addEventListener("load", function () { - return (state.loading |= Loaded); - }), - key.addEventListener("error", function () { - return (state.loading |= Errored); - }), + if ( + (key = ownerDocument.querySelector( + 'link[rel="preload"][as="style"][' + key + "]" + )) + ) { + if (!0 !== key[internalLoadPendingKey]) { + state.loading = Loaded; + return; + } + } else + (key = ownerDocument.createElement("link")), + (key[internalLoadPendingKey] = !0), + (key.onload = key.onerror = clearPendingLoadOnNode.bind(null, key)), setInitialProperties(key, "link", preloadProps), markNodeAsHoistable(key), - ownerDocument.head.appendChild(key)); + ownerDocument.head.appendChild(key); + state.preload = key; + key.addEventListener("load", function () { + return (state.loading |= Loaded); + }); + key.addEventListener("error", function () { + return (state.loading |= Errored); + }); } function getScriptKey(src) { return ( @@ -26579,6 +26587,7 @@ internalEventHandlesSetKey = "__reactHandles$" + randomKey, internalRootNodeResourcesKey = "__reactResources$" + randomKey, internalHoistableMarker = "__reactMarker$" + randomKey, + internalLoadPendingKey = "__reactLoad$" + randomKey, allNativeEvents = new Set(), registrationNameDependencies = {}, possibleRegistrationNames = {}, @@ -30321,30 +30330,41 @@ case "script": key = getScriptKey(href); } - preloadPropsMap.has(key) || - ((href = assign( - { - rel: "preload", - href: - "image" === as && options && options.imageSrcSet - ? void 0 - : href, - as: as - }, - options - )), - preloadPropsMap.set(key, href), - null !== ownerDocument.querySelector(preloadSelector) || - ("style" === as && - ownerDocument.querySelector( - getStylesheetSelectorFromKey(key) - )) || - ("script" === as && - ownerDocument.querySelector(getScriptSelectorFromKey(key))) || - ((as = ownerDocument.createElement("link")), - setInitialProperties(as, "link", href), - markNodeAsHoistable(as), - ownerDocument.head.appendChild(as))); + if ( + !( + preloadPropsMap.has(key) || + ((href = assign( + { + rel: "preload", + href: + "image" === as && options && options.imageSrcSet + ? void 0 + : href, + as: as + }, + options + )), + preloadPropsMap.set(key, href), + null !== ownerDocument.querySelector(preloadSelector) || + ("style" === as && + ownerDocument.querySelector( + getStylesheetSelectorFromKey(key) + )) || + ("script" === as && + ownerDocument.querySelector(getScriptSelectorFromKey(key)))) + ) + ) { + var instance = ownerDocument.createElement("link"); + setInitialProperties(instance, "link", href); + "style" === as && + ((instance[internalLoadPendingKey] = !0), + (instance.onload = instance.onerror = + function () { + clearPendingLoadOnNode(instance); + })); + markNodeAsHoistable(instance); + ownerDocument.head.appendChild(instance); + } } }, m: function (href, options) { @@ -30678,11 +30698,11 @@ }; (function () { var isomorphicReactPackageVersion = React.version; - if ("19.3.0-canary-dd453071-20260506" !== isomorphicReactPackageVersion) + if ("19.3.0-canary-d5736f09-20260507" !== isomorphicReactPackageVersion) throw Error( 'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' + (isomorphicReactPackageVersion + - "\n - react-dom: 19.3.0-canary-dd453071-20260506\nLearn more: https://react.dev/warnings/version-mismatch") + "\n - react-dom: 19.3.0-canary-d5736f09-20260507\nLearn more: https://react.dev/warnings/version-mismatch") ); })(); ("function" === typeof Map && @@ -30719,10 +30739,10 @@ !(function () { var internals = { bundleType: 1, - version: "19.3.0-canary-dd453071-20260506", + version: "19.3.0-canary-d5736f09-20260507", rendererPackageName: "react-dom", currentDispatcherRef: ReactSharedInternals, - reconcilerVersion: "19.3.0-canary-dd453071-20260506" + reconcilerVersion: "19.3.0-canary-d5736f09-20260507" }; internals.overrideHookState = overrideHookState; internals.overrideHookStateDeletePath = overrideHookStateDeletePath; @@ -31190,7 +31210,7 @@ exports.useFormStatus = function () { return resolveDispatcher().useHostTransitionStatus(); }; - exports.version = "19.3.0-canary-dd453071-20260506"; + exports.version = "19.3.0-canary-d5736f09-20260507"; "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && diff --git a/packages/next/src/compiled/react-dom/cjs/react-dom-profiling.profiling.js b/packages/next/src/compiled/react-dom/cjs/react-dom-profiling.profiling.js index 3979762ad6df..cc319d3c75e3 100644 --- a/packages/next/src/compiled/react-dom/cjs/react-dom-profiling.profiling.js +++ b/packages/next/src/compiled/react-dom/cjs/react-dom-profiling.profiling.js @@ -1046,7 +1046,8 @@ var randomKey = Math.random().toString(36).slice(2), internalEventHandlerListenersKey = "__reactListeners$" + randomKey, internalEventHandlesSetKey = "__reactHandles$" + randomKey, internalRootNodeResourcesKey = "__reactResources$" + randomKey, - internalHoistableMarker = "__reactMarker$" + randomKey; + internalHoistableMarker = "__reactMarker$" + randomKey, + internalLoadPendingKey = "__reactLoad$" + randomKey; function detachDeletedInstance(node) { delete node[internalInstanceKey]; delete node[internalPropsKey]; @@ -1116,6 +1117,9 @@ function getResourcesFromRoot(root) { function markNodeAsHoistable(node) { node[internalHoistableMarker] = !0; } +function clearPendingLoadOnNode(node) { + node[internalLoadPendingKey] = void 0; +} var allNativeEvents = new Set(), registrationNameDependencies = {}; function registerTwoPhaseEvent(registrationName, dependencies) { @@ -18520,26 +18524,37 @@ function preload$1(href, as, options) { case "script": key = getScriptKey(href); } - preloadPropsMap.has(key) || - ((href = assign( - { - rel: "preload", - href: - "image" === as && options && options.imageSrcSet ? void 0 : href, - as: as - }, - options - )), - preloadPropsMap.set(key, href), - null !== ownerDocument.querySelector(preloadSelector) || - ("style" === as && - ownerDocument.querySelector(getStylesheetSelectorFromKey(key))) || - ("script" === as && - ownerDocument.querySelector(getScriptSelectorFromKey(key))) || - ((as = ownerDocument.createElement("link")), - setInitialProperties(as, "link", href), - markNodeAsHoistable(as), - ownerDocument.head.appendChild(as))); + if ( + !( + preloadPropsMap.has(key) || + ((href = assign( + { + rel: "preload", + href: + "image" === as && options && options.imageSrcSet ? void 0 : href, + as: as + }, + options + )), + preloadPropsMap.set(key, href), + null !== ownerDocument.querySelector(preloadSelector) || + ("style" === as && + ownerDocument.querySelector(getStylesheetSelectorFromKey(key))) || + ("script" === as && + ownerDocument.querySelector(getScriptSelectorFromKey(key)))) + ) + ) { + var instance = ownerDocument.createElement("link"); + setInitialProperties(instance, "link", href); + "style" === as && + ((instance[internalLoadPendingKey] = !0), + (instance.onload = instance.onerror = + function () { + clearPendingLoadOnNode(instance); + })); + markNodeAsHoistable(instance); + ownerDocument.head.appendChild(instance); + } } } function preloadModule$1(href, options) { @@ -18700,11 +18715,11 @@ function getResource(type, currentProps, pendingProps, currentResource) { case "style": return "string" === typeof pendingProps.precedence && "string" === typeof pendingProps.href - ? ((currentProps = getStyleKey(pendingProps.href)), - (pendingProps = getResourcesFromRoot( + ? ((pendingProps = getStyleKey(pendingProps.href)), + (currentProps = getResourcesFromRoot( JSCompiler_inline_result ).hoistableStyles), - (currentResource = pendingProps.get(currentProps)), + (currentResource = currentProps.get(pendingProps)), currentResource || ((currentResource = { type: "style", @@ -18712,7 +18727,7 @@ function getResource(type, currentProps, pendingProps, currentResource) { count: 0, state: null }), - pendingProps.set(currentProps, currentResource)), + currentProps.set(pendingProps, currentResource)), currentResource) : { type: "void", instance: null, count: 0, state: null }; case "link": @@ -18738,27 +18753,27 @@ function getResource(type, currentProps, pendingProps, currentResource) { styles$305.set(type, resource$306), (styles$305 = JSCompiler_inline_result.querySelector( getStylesheetSelectorFromKey(type) - )) && - !styles$305._p && - ((resource$306.instance = styles$305), - (resource$306.state.loading = 5)), - preloadPropsMap.has(type) || - ((pendingProps = { - rel: "preload", - as: "style", - href: pendingProps.href, - crossOrigin: pendingProps.crossOrigin, - integrity: pendingProps.integrity, - media: pendingProps.media, - hrefLang: pendingProps.hrefLang, - referrerPolicy: pendingProps.referrerPolicy - }), - preloadPropsMap.set(type, pendingProps), - styles$305 || + )) + ? styles$305._p || + ((resource$306.instance = styles$305), + (resource$306.state.loading = 5)) + : ((styles$305 = preloadPropsMap.get(type)), + styles$305 || + ((styles$305 = { + rel: "preload", + as: "style", + href: pendingProps.href, + crossOrigin: pendingProps.crossOrigin, + integrity: pendingProps.integrity, + media: pendingProps.media, + hrefLang: pendingProps.hrefLang, + referrerPolicy: pendingProps.referrerPolicy + }), + preloadPropsMap.set(type, styles$305)), preloadStylesheet( JSCompiler_inline_result, type, - pendingProps, + styles$305, resource$306.state ))); if (currentProps && null === currentResource) @@ -18776,11 +18791,11 @@ function getResource(type, currentProps, pendingProps, currentResource) { currentProps && "function" !== typeof currentProps && "symbol" !== typeof currentProps - ? ((currentProps = getScriptKey(pendingProps)), - (pendingProps = getResourcesFromRoot( + ? ((pendingProps = getScriptKey(pendingProps)), + (currentProps = getResourcesFromRoot( JSCompiler_inline_result ).hoistableScripts), - (currentResource = pendingProps.get(currentProps)), + (currentResource = currentProps.get(pendingProps)), currentResource || ((currentResource = { type: "script", @@ -18788,7 +18803,7 @@ function getResource(type, currentProps, pendingProps, currentResource) { count: 0, state: null }), - pendingProps.set(currentProps, currentResource)), + currentProps.set(pendingProps, currentResource)), currentResource) : { type: "void", instance: null, count: 0, state: null } ); @@ -18809,19 +18824,29 @@ function stylesheetPropsFromRawProps(rawProps) { }); } function preloadStylesheet(ownerDocument, key, preloadProps, state) { - ownerDocument.querySelector('link[rel="preload"][as="style"][' + key + "]") - ? (state.loading = 1) - : ((key = ownerDocument.createElement("link")), - (state.preload = key), - key.addEventListener("load", function () { - return (state.loading |= 1); - }), - key.addEventListener("error", function () { - return (state.loading |= 2); - }), + if ( + (key = ownerDocument.querySelector( + 'link[rel="preload"][as="style"][' + key + "]" + )) + ) { + if (!0 !== key[internalLoadPendingKey]) { + state.loading = 1; + return; + } + } else + (key = ownerDocument.createElement("link")), + (key[internalLoadPendingKey] = !0), + (key.onload = key.onerror = clearPendingLoadOnNode.bind(null, key)), setInitialProperties(key, "link", preloadProps), markNodeAsHoistable(key), - ownerDocument.head.appendChild(key)); + ownerDocument.head.appendChild(key); + state.preload = key; + key.addEventListener("load", function () { + return (state.loading |= 1); + }); + key.addEventListener("error", function () { + return (state.loading |= 2); + }); } function getScriptKey(src) { return '[src="' + escapeSelectorAttributeValueInsideDoubleQuotes(src) + '"]'; @@ -20057,16 +20082,16 @@ ReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) { 0 === i && attemptExplicitHydrationTarget(target); } }; -var isomorphicReactPackageVersion$jscomp$inline_2348 = React.version; +var isomorphicReactPackageVersion$jscomp$inline_2352 = React.version; if ( - "19.3.0-canary-dd453071-20260506" !== - isomorphicReactPackageVersion$jscomp$inline_2348 + "19.3.0-canary-d5736f09-20260507" !== + isomorphicReactPackageVersion$jscomp$inline_2352 ) throw Error( formatProdErrorMessage( 527, - isomorphicReactPackageVersion$jscomp$inline_2348, - "19.3.0-canary-dd453071-20260506" + isomorphicReactPackageVersion$jscomp$inline_2352, + "19.3.0-canary-d5736f09-20260507" ) ); ReactDOMSharedInternals.findDOMNode = function (componentOrElement) { @@ -20086,24 +20111,24 @@ ReactDOMSharedInternals.findDOMNode = function (componentOrElement) { null === componentOrElement ? null : componentOrElement.stateNode; return componentOrElement; }; -var internals$jscomp$inline_2933 = { +var internals$jscomp$inline_2937 = { bundleType: 0, - version: "19.3.0-canary-dd453071-20260506", + version: "19.3.0-canary-d5736f09-20260507", rendererPackageName: "react-dom", currentDispatcherRef: ReactSharedInternals, - reconcilerVersion: "19.3.0-canary-dd453071-20260506" + reconcilerVersion: "19.3.0-canary-d5736f09-20260507" }; if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) { - var hook$jscomp$inline_2934 = __REACT_DEVTOOLS_GLOBAL_HOOK__; + var hook$jscomp$inline_2938 = __REACT_DEVTOOLS_GLOBAL_HOOK__; if ( - !hook$jscomp$inline_2934.isDisabled && - hook$jscomp$inline_2934.supportsFiber + !hook$jscomp$inline_2938.isDisabled && + hook$jscomp$inline_2938.supportsFiber ) try { - (rendererID = hook$jscomp$inline_2934.inject( - internals$jscomp$inline_2933 + (rendererID = hook$jscomp$inline_2938.inject( + internals$jscomp$inline_2937 )), - (injectedHook = hook$jscomp$inline_2934); + (injectedHook = hook$jscomp$inline_2938); } catch (err) {} } function getCrossOriginStringAs(as, input) { @@ -20350,7 +20375,7 @@ exports.useFormState = function (action, initialState, permalink) { exports.useFormStatus = function () { return ReactSharedInternals.H.useHostTransitionStatus(); }; -exports.version = "19.3.0-canary-dd453071-20260506"; +exports.version = "19.3.0-canary-d5736f09-20260507"; "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && diff --git a/packages/next/src/compiled/react-dom/cjs/react-dom-server-legacy.browser.development.js b/packages/next/src/compiled/react-dom/cjs/react-dom-server-legacy.browser.development.js index c2d5496013c5..c77c2cf558de 100644 --- a/packages/next/src/compiled/react-dom/cjs/react-dom-server-legacy.browser.development.js +++ b/packages/next/src/compiled/react-dom/cjs/react-dom-server-legacy.browser.development.js @@ -10149,5 +10149,5 @@ 'The server used "renderToString" which does not support Suspense. If you intended for this Suspense boundary to render the fallback content on the server consider throwing an Error somewhere within the Suspense boundary. If you intended to have the server wait for the suspended component please switch to "renderToReadableStream" which supports Suspense on the server' ); }; - exports.version = "19.3.0-canary-dd453071-20260506"; + exports.version = "19.3.0-canary-d5736f09-20260507"; })(); diff --git a/packages/next/src/compiled/react-dom/cjs/react-dom-server-legacy.browser.production.js b/packages/next/src/compiled/react-dom/cjs/react-dom-server-legacy.browser.production.js index ce5c33b3cfd9..bb155bbe5b3a 100644 --- a/packages/next/src/compiled/react-dom/cjs/react-dom-server-legacy.browser.production.js +++ b/packages/next/src/compiled/react-dom/cjs/react-dom-server-legacy.browser.production.js @@ -6771,4 +6771,4 @@ exports.renderToString = function (children, options) { 'The server used "renderToString" which does not support Suspense. If you intended for this Suspense boundary to render the fallback content on the server consider throwing an Error somewhere within the Suspense boundary. If you intended to have the server wait for the suspended component please switch to "renderToReadableStream" which supports Suspense on the server' ); }; -exports.version = "19.3.0-canary-dd453071-20260506"; +exports.version = "19.3.0-canary-d5736f09-20260507"; diff --git a/packages/next/src/compiled/react-dom/cjs/react-dom-server-legacy.node.development.js b/packages/next/src/compiled/react-dom/cjs/react-dom-server-legacy.node.development.js index a1fdbe43db6c..63b2efbebd1f 100644 --- a/packages/next/src/compiled/react-dom/cjs/react-dom-server-legacy.node.development.js +++ b/packages/next/src/compiled/react-dom/cjs/react-dom-server-legacy.node.development.js @@ -10149,5 +10149,5 @@ 'The server used "renderToString" which does not support Suspense. If you intended for this Suspense boundary to render the fallback content on the server consider throwing an Error somewhere within the Suspense boundary. If you intended to have the server wait for the suspended component please switch to "renderToPipeableStream" which supports Suspense on the server' ); }; - exports.version = "19.3.0-canary-dd453071-20260506"; + exports.version = "19.3.0-canary-d5736f09-20260507"; })(); diff --git a/packages/next/src/compiled/react-dom/cjs/react-dom-server-legacy.node.production.js b/packages/next/src/compiled/react-dom/cjs/react-dom-server-legacy.node.production.js index 56ad2356dde0..c6b1d3b5bc11 100644 --- a/packages/next/src/compiled/react-dom/cjs/react-dom-server-legacy.node.production.js +++ b/packages/next/src/compiled/react-dom/cjs/react-dom-server-legacy.node.production.js @@ -6863,4 +6863,4 @@ exports.renderToString = function (children, options) { 'The server used "renderToString" which does not support Suspense. If you intended for this Suspense boundary to render the fallback content on the server consider throwing an Error somewhere within the Suspense boundary. If you intended to have the server wait for the suspended component please switch to "renderToPipeableStream" which supports Suspense on the server' ); }; -exports.version = "19.3.0-canary-dd453071-20260506"; +exports.version = "19.3.0-canary-d5736f09-20260507"; diff --git a/packages/next/src/compiled/react-dom/cjs/react-dom-server.browser.development.js b/packages/next/src/compiled/react-dom/cjs/react-dom-server.browser.development.js index 94760b92f069..beaa6ebdc660 100644 --- a/packages/next/src/compiled/react-dom/cjs/react-dom-server.browser.development.js +++ b/packages/next/src/compiled/react-dom/cjs/react-dom-server.browser.development.js @@ -9111,11 +9111,11 @@ } function ensureCorrectIsomorphicReactVersion() { var isomorphicReactPackageVersion = React.version; - if ("19.3.0-canary-dd453071-20260506" !== isomorphicReactPackageVersion) + if ("19.3.0-canary-d5736f09-20260507" !== isomorphicReactPackageVersion) throw Error( 'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' + (isomorphicReactPackageVersion + - "\n - react-dom: 19.3.0-canary-dd453071-20260506\nLearn more: https://react.dev/warnings/version-mismatch") + "\n - react-dom: 19.3.0-canary-d5736f09-20260507\nLearn more: https://react.dev/warnings/version-mismatch") ); } var React = require("next/dist/compiled/react"), @@ -10925,5 +10925,5 @@ startWork(request); }); }; - exports.version = "19.3.0-canary-dd453071-20260506"; + exports.version = "19.3.0-canary-d5736f09-20260507"; })(); diff --git a/packages/next/src/compiled/react-dom/cjs/react-dom-server.browser.production.js b/packages/next/src/compiled/react-dom/cjs/react-dom-server.browser.production.js index 070f6431949d..d8707021a2bc 100644 --- a/packages/next/src/compiled/react-dom/cjs/react-dom-server.browser.production.js +++ b/packages/next/src/compiled/react-dom/cjs/react-dom-server.browser.production.js @@ -7378,12 +7378,12 @@ function getPostponedState(request) { } function ensureCorrectIsomorphicReactVersion() { var isomorphicReactPackageVersion = React.version; - if ("19.3.0-canary-dd453071-20260506" !== isomorphicReactPackageVersion) + if ("19.3.0-canary-d5736f09-20260507" !== isomorphicReactPackageVersion) throw Error( formatProdErrorMessage( 527, isomorphicReactPackageVersion, - "19.3.0-canary-dd453071-20260506" + "19.3.0-canary-d5736f09-20260507" ) ); } @@ -7634,4 +7634,4 @@ exports.resumeAndPrerender = function (children, postponedState, options) { startWork(request); }); }; -exports.version = "19.3.0-canary-dd453071-20260506"; +exports.version = "19.3.0-canary-d5736f09-20260507"; diff --git a/packages/next/src/compiled/react-dom/cjs/react-dom-server.bun.production.js b/packages/next/src/compiled/react-dom/cjs/react-dom-server.bun.production.js index 0be42465573a..e7736238d8d2 100644 --- a/packages/next/src/compiled/react-dom/cjs/react-dom-server.bun.production.js +++ b/packages/next/src/compiled/react-dom/cjs/react-dom-server.bun.production.js @@ -7086,11 +7086,11 @@ function getPostponedState(request) { } function ensureCorrectIsomorphicReactVersion() { var isomorphicReactPackageVersion = React.version; - if ("19.3.0-canary-dd453071-20260506" !== isomorphicReactPackageVersion) + if ("19.3.0-canary-d5736f09-20260507" !== isomorphicReactPackageVersion) throw Error( 'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' + (isomorphicReactPackageVersion + - "\n - react-dom: 19.3.0-canary-dd453071-20260506\nLearn more: https://react.dev/warnings/version-mismatch") + "\n - react-dom: 19.3.0-canary-d5736f09-20260507\nLearn more: https://react.dev/warnings/version-mismatch") ); } ensureCorrectIsomorphicReactVersion(); @@ -7635,4 +7635,4 @@ exports.resumeToPipeableStream = function (children, postponedState, options) { } }; }; -exports.version = "19.3.0-canary-dd453071-20260506"; +exports.version = "19.3.0-canary-d5736f09-20260507"; diff --git a/packages/next/src/compiled/react-dom/cjs/react-dom-server.edge.development.js b/packages/next/src/compiled/react-dom/cjs/react-dom-server.edge.development.js index 54863f03f1fa..451e8070ebc3 100644 --- a/packages/next/src/compiled/react-dom/cjs/react-dom-server.edge.development.js +++ b/packages/next/src/compiled/react-dom/cjs/react-dom-server.edge.development.js @@ -9134,11 +9134,11 @@ } function ensureCorrectIsomorphicReactVersion() { var isomorphicReactPackageVersion = React.version; - if ("19.3.0-canary-dd453071-20260506" !== isomorphicReactPackageVersion) + if ("19.3.0-canary-d5736f09-20260507" !== isomorphicReactPackageVersion) throw Error( 'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' + (isomorphicReactPackageVersion + - "\n - react-dom: 19.3.0-canary-dd453071-20260506\nLearn more: https://react.dev/warnings/version-mismatch") + "\n - react-dom: 19.3.0-canary-d5736f09-20260507\nLearn more: https://react.dev/warnings/version-mismatch") ); } var React = require("next/dist/compiled/react"), @@ -10944,5 +10944,5 @@ startWork(request); }); }; - exports.version = "19.3.0-canary-dd453071-20260506"; + exports.version = "19.3.0-canary-d5736f09-20260507"; })(); diff --git a/packages/next/src/compiled/react-dom/cjs/react-dom-server.edge.production.js b/packages/next/src/compiled/react-dom/cjs/react-dom-server.edge.production.js index 439472bb3839..5da6301031e0 100644 --- a/packages/next/src/compiled/react-dom/cjs/react-dom-server.edge.production.js +++ b/packages/next/src/compiled/react-dom/cjs/react-dom-server.edge.production.js @@ -7485,11 +7485,11 @@ function getPostponedState(request) { } function ensureCorrectIsomorphicReactVersion() { var isomorphicReactPackageVersion = React.version; - if ("19.3.0-canary-dd453071-20260506" !== isomorphicReactPackageVersion) + if ("19.3.0-canary-d5736f09-20260507" !== isomorphicReactPackageVersion) throw Error( 'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' + (isomorphicReactPackageVersion + - "\n - react-dom: 19.3.0-canary-dd453071-20260506\nLearn more: https://react.dev/warnings/version-mismatch") + "\n - react-dom: 19.3.0-canary-d5736f09-20260507\nLearn more: https://react.dev/warnings/version-mismatch") ); } ensureCorrectIsomorphicReactVersion(); @@ -7739,4 +7739,4 @@ exports.resumeAndPrerender = function (children, postponedState, options) { startWork(request); }); }; -exports.version = "19.3.0-canary-dd453071-20260506"; +exports.version = "19.3.0-canary-d5736f09-20260507"; diff --git a/packages/next/src/compiled/react-dom/cjs/react-dom-server.node.development.js b/packages/next/src/compiled/react-dom/cjs/react-dom-server.node.development.js index 3f4b87d46386..0922ae700148 100644 --- a/packages/next/src/compiled/react-dom/cjs/react-dom-server.node.development.js +++ b/packages/next/src/compiled/react-dom/cjs/react-dom-server.node.development.js @@ -9008,11 +9008,11 @@ } function ensureCorrectIsomorphicReactVersion() { var isomorphicReactPackageVersion = React.version; - if ("19.3.0-canary-dd453071-20260506" !== isomorphicReactPackageVersion) + if ("19.3.0-canary-d5736f09-20260507" !== isomorphicReactPackageVersion) throw Error( 'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' + (isomorphicReactPackageVersion + - "\n - react-dom: 19.3.0-canary-dd453071-20260506\nLearn more: https://react.dev/warnings/version-mismatch") + "\n - react-dom: 19.3.0-canary-d5736f09-20260507\nLearn more: https://react.dev/warnings/version-mismatch") ); } function createDrainHandler(destination, request) { @@ -11124,5 +11124,5 @@ } }; }; - exports.version = "19.3.0-canary-dd453071-20260506"; + exports.version = "19.3.0-canary-d5736f09-20260507"; })(); diff --git a/packages/next/src/compiled/react-dom/cjs/react-dom-server.node.production.js b/packages/next/src/compiled/react-dom/cjs/react-dom-server.node.production.js index 24a729dd6e7c..d3cf479253bf 100644 --- a/packages/next/src/compiled/react-dom/cjs/react-dom-server.node.production.js +++ b/packages/next/src/compiled/react-dom/cjs/react-dom-server.node.production.js @@ -7376,11 +7376,11 @@ function getPostponedState(request) { } function ensureCorrectIsomorphicReactVersion() { var isomorphicReactPackageVersion = React.version; - if ("19.3.0-canary-dd453071-20260506" !== isomorphicReactPackageVersion) + if ("19.3.0-canary-d5736f09-20260507" !== isomorphicReactPackageVersion) throw Error( 'Incompatible React versions: The "react" and "react-dom" packages must have the exact same version. Instead got:\n - react: ' + (isomorphicReactPackageVersion + - "\n - react-dom: 19.3.0-canary-dd453071-20260506\nLearn more: https://react.dev/warnings/version-mismatch") + "\n - react-dom: 19.3.0-canary-d5736f09-20260507\nLearn more: https://react.dev/warnings/version-mismatch") ); } ensureCorrectIsomorphicReactVersion(); @@ -7930,4 +7930,4 @@ exports.resumeToPipeableStream = function (children, postponedState, options) { } }; }; -exports.version = "19.3.0-canary-dd453071-20260506"; +exports.version = "19.3.0-canary-d5736f09-20260507"; diff --git a/packages/next/src/compiled/react-dom/cjs/react-dom.development.js b/packages/next/src/compiled/react-dom/cjs/react-dom.development.js index 06a951ae8ee4..72b948f07076 100644 --- a/packages/next/src/compiled/react-dom/cjs/react-dom.development.js +++ b/packages/next/src/compiled/react-dom/cjs/react-dom.development.js @@ -422,7 +422,7 @@ exports.useFormStatus = function () { return resolveDispatcher().useHostTransitionStatus(); }; - exports.version = "19.3.0-canary-dd453071-20260506"; + exports.version = "19.3.0-canary-d5736f09-20260507"; "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && diff --git a/packages/next/src/compiled/react-dom/cjs/react-dom.production.js b/packages/next/src/compiled/react-dom/cjs/react-dom.production.js index f9d6bc0aa7f3..ae09f929e7b6 100644 --- a/packages/next/src/compiled/react-dom/cjs/react-dom.production.js +++ b/packages/next/src/compiled/react-dom/cjs/react-dom.production.js @@ -213,4 +213,4 @@ exports.useFormState = function (action, initialState, permalink) { exports.useFormStatus = function () { return ReactSharedInternals.H.useHostTransitionStatus(); }; -exports.version = "19.3.0-canary-dd453071-20260506"; +exports.version = "19.3.0-canary-d5736f09-20260507"; diff --git a/packages/next/src/compiled/react-dom/cjs/react-dom.react-server.development.js b/packages/next/src/compiled/react-dom/cjs/react-dom.react-server.development.js index 9ef8129cb80f..6672693dbbdd 100644 --- a/packages/next/src/compiled/react-dom/cjs/react-dom.react-server.development.js +++ b/packages/next/src/compiled/react-dom/cjs/react-dom.react-server.development.js @@ -336,5 +336,5 @@ })) : Internals.d.m(href)); }; - exports.version = "19.3.0-canary-dd453071-20260506"; + exports.version = "19.3.0-canary-d5736f09-20260507"; })(); diff --git a/packages/next/src/compiled/react-dom/cjs/react-dom.react-server.production.js b/packages/next/src/compiled/react-dom/cjs/react-dom.react-server.production.js index ed599eefe4e5..32134c83362c 100644 --- a/packages/next/src/compiled/react-dom/cjs/react-dom.react-server.production.js +++ b/packages/next/src/compiled/react-dom/cjs/react-dom.react-server.production.js @@ -149,4 +149,4 @@ exports.preloadModule = function (href, options) { }); } else Internals.d.m(href); }; -exports.version = "19.3.0-canary-dd453071-20260506"; +exports.version = "19.3.0-canary-d5736f09-20260507"; diff --git a/packages/next/src/compiled/react-dom/package.json b/packages/next/src/compiled/react-dom/package.json index bedaacd13cd3..c157b4f1d443 100644 --- a/packages/next/src/compiled/react-dom/package.json +++ b/packages/next/src/compiled/react-dom/package.json @@ -67,10 +67,10 @@ "./package.json": "./package.json" }, "dependencies": { - "scheduler": "0.28.0-canary-dd453071-20260506" + "scheduler": "0.28.0-canary-d5736f09-20260507" }, "peerDependencies": { - "react": "19.3.0-canary-dd453071-20260506" + "react": "19.3.0-canary-d5736f09-20260507" }, "browser": { "./server.js": "./server.browser.js", diff --git a/packages/next/src/compiled/react-experimental/cjs/react.development.js b/packages/next/src/compiled/react-experimental/cjs/react.development.js index 0e1e39991e7d..821e23d463d5 100644 --- a/packages/next/src/compiled/react-experimental/cjs/react.development.js +++ b/packages/next/src/compiled/react-experimental/cjs/react.development.js @@ -1391,7 +1391,7 @@ exports.useTransition = function () { return resolveDispatcher().useTransition(); }; - exports.version = "19.3.0-experimental-dd453071-20260506"; + exports.version = "19.3.0-experimental-d5736f09-20260507"; "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && diff --git a/packages/next/src/compiled/react-experimental/cjs/react.production.js b/packages/next/src/compiled/react-experimental/cjs/react.production.js index 33b5d3688ae8..cfd08440aee1 100644 --- a/packages/next/src/compiled/react-experimental/cjs/react.production.js +++ b/packages/next/src/compiled/react-experimental/cjs/react.production.js @@ -613,4 +613,4 @@ exports.useSyncExternalStore = function ( exports.useTransition = function () { return ReactSharedInternals.H.useTransition(); }; -exports.version = "19.3.0-experimental-dd453071-20260506"; +exports.version = "19.3.0-experimental-d5736f09-20260507"; diff --git a/packages/next/src/compiled/react-experimental/cjs/react.react-server.development.js b/packages/next/src/compiled/react-experimental/cjs/react.react-server.development.js index 8c5de24b5ab1..efc6e1772b0b 100644 --- a/packages/next/src/compiled/react-experimental/cjs/react.react-server.development.js +++ b/packages/next/src/compiled/react-experimental/cjs/react.react-server.development.js @@ -1061,5 +1061,5 @@ exports.useMemo = function (create, deps) { return resolveDispatcher().useMemo(create, deps); }; - exports.version = "19.3.0-experimental-dd453071-20260506"; + exports.version = "19.3.0-experimental-d5736f09-20260507"; })(); diff --git a/packages/next/src/compiled/react-experimental/cjs/react.react-server.production.js b/packages/next/src/compiled/react-experimental/cjs/react.react-server.production.js index a196677f56ae..ea058de1df50 100644 --- a/packages/next/src/compiled/react-experimental/cjs/react.react-server.production.js +++ b/packages/next/src/compiled/react-experimental/cjs/react.react-server.production.js @@ -579,4 +579,4 @@ exports.useId = function () { exports.useMemo = function (create, deps) { return ReactSharedInternals.H.useMemo(create, deps); }; -exports.version = "19.3.0-experimental-dd453071-20260506"; +exports.version = "19.3.0-experimental-d5736f09-20260507"; diff --git a/packages/next/src/compiled/react-is/package.json b/packages/next/src/compiled/react-is/package.json index 60898c5e6ac3..1b4244ee1ead 100644 --- a/packages/next/src/compiled/react-is/package.json +++ b/packages/next/src/compiled/react-is/package.json @@ -1,6 +1,6 @@ { "name": "react-is", - "version": "19.3.0-canary-dd453071-20260506", + "version": "19.3.0-canary-d5736f09-20260507", "description": "Brand checking of React Elements.", "main": "index.js", "sideEffects": false, diff --git a/packages/next/src/compiled/react-server-dom-turbopack-experimental/cjs/react-server-dom-turbopack-client.browser.development.js b/packages/next/src/compiled/react-server-dom-turbopack-experimental/cjs/react-server-dom-turbopack-client.browser.development.js index 3beab372df0b..c3deb304562a 100644 --- a/packages/next/src/compiled/react-server-dom-turbopack-experimental/cjs/react-server-dom-turbopack-client.browser.development.js +++ b/packages/next/src/compiled/react-server-dom-turbopack-experimental/cjs/react-server-dom-turbopack-client.browser.development.js @@ -5159,10 +5159,10 @@ return hook.checkDCE ? !0 : !1; })({ bundleType: 1, - version: "19.3.0-experimental-dd453071-20260506", + version: "19.3.0-experimental-d5736f09-20260507", rendererPackageName: "react-server-dom-turbopack", currentDispatcherRef: ReactSharedInternals, - reconcilerVersion: "19.3.0-experimental-dd453071-20260506", + reconcilerVersion: "19.3.0-experimental-d5736f09-20260507", getCurrentComponentInfo: function () { return currentOwnerInDEV; } diff --git a/packages/next/src/compiled/react-server-dom-turbopack-experimental/package.json b/packages/next/src/compiled/react-server-dom-turbopack-experimental/package.json index bb8d22431d90..3fb35689d023 100644 --- a/packages/next/src/compiled/react-server-dom-turbopack-experimental/package.json +++ b/packages/next/src/compiled/react-server-dom-turbopack-experimental/package.json @@ -48,7 +48,7 @@ "neo-async": "^2.6.1" }, "peerDependencies": { - "react": "0.0.0-experimental-dd453071-20260506", - "react-dom": "0.0.0-experimental-dd453071-20260506" + "react": "0.0.0-experimental-d5736f09-20260507", + "react-dom": "0.0.0-experimental-d5736f09-20260507" } } \ No newline at end of file diff --git a/packages/next/src/compiled/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.browser.development.js b/packages/next/src/compiled/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.browser.development.js index 98ee1b4083d8..fb3e894c951b 100644 --- a/packages/next/src/compiled/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.browser.development.js +++ b/packages/next/src/compiled/react-server-dom-turbopack/cjs/react-server-dom-turbopack-client.browser.development.js @@ -5159,10 +5159,10 @@ return hook.checkDCE ? !0 : !1; })({ bundleType: 1, - version: "19.3.0-canary-dd453071-20260506", + version: "19.3.0-canary-d5736f09-20260507", rendererPackageName: "react-server-dom-turbopack", currentDispatcherRef: ReactSharedInternals, - reconcilerVersion: "19.3.0-canary-dd453071-20260506", + reconcilerVersion: "19.3.0-canary-d5736f09-20260507", getCurrentComponentInfo: function () { return currentOwnerInDEV; } diff --git a/packages/next/src/compiled/react-server-dom-turbopack/package.json b/packages/next/src/compiled/react-server-dom-turbopack/package.json index cee23171c480..f65cf7ab6697 100644 --- a/packages/next/src/compiled/react-server-dom-turbopack/package.json +++ b/packages/next/src/compiled/react-server-dom-turbopack/package.json @@ -48,7 +48,7 @@ "neo-async": "^2.6.1" }, "peerDependencies": { - "react": "19.3.0-canary-dd453071-20260506", - "react-dom": "19.3.0-canary-dd453071-20260506" + "react": "19.3.0-canary-d5736f09-20260507", + "react-dom": "19.3.0-canary-d5736f09-20260507" } } \ No newline at end of file diff --git a/packages/next/src/compiled/react-server-dom-webpack-experimental/cjs/react-server-dom-webpack-client.browser.development.js b/packages/next/src/compiled/react-server-dom-webpack-experimental/cjs/react-server-dom-webpack-client.browser.development.js index f050862635a1..c43c1d1743ed 100644 --- a/packages/next/src/compiled/react-server-dom-webpack-experimental/cjs/react-server-dom-webpack-client.browser.development.js +++ b/packages/next/src/compiled/react-server-dom-webpack-experimental/cjs/react-server-dom-webpack-client.browser.development.js @@ -5175,10 +5175,10 @@ return hook.checkDCE ? !0 : !1; })({ bundleType: 1, - version: "19.3.0-experimental-dd453071-20260506", + version: "19.3.0-experimental-d5736f09-20260507", rendererPackageName: "react-server-dom-webpack", currentDispatcherRef: ReactSharedInternals, - reconcilerVersion: "19.3.0-experimental-dd453071-20260506", + reconcilerVersion: "19.3.0-experimental-d5736f09-20260507", getCurrentComponentInfo: function () { return currentOwnerInDEV; } diff --git a/packages/next/src/compiled/react-server-dom-webpack-experimental/package.json b/packages/next/src/compiled/react-server-dom-webpack-experimental/package.json index 5042646e1a78..735f4542fee7 100644 --- a/packages/next/src/compiled/react-server-dom-webpack-experimental/package.json +++ b/packages/next/src/compiled/react-server-dom-webpack-experimental/package.json @@ -52,8 +52,8 @@ "webpack-sources": "^3.2.0" }, "peerDependencies": { - "react": "0.0.0-experimental-dd453071-20260506", - "react-dom": "0.0.0-experimental-dd453071-20260506", + "react": "0.0.0-experimental-d5736f09-20260507", + "react-dom": "0.0.0-experimental-d5736f09-20260507", "webpack": "^5.59.0" } } \ No newline at end of file diff --git a/packages/next/src/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-client.browser.development.js b/packages/next/src/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-client.browser.development.js index 8b8068162651..21ecbad575e1 100644 --- a/packages/next/src/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-client.browser.development.js +++ b/packages/next/src/compiled/react-server-dom-webpack/cjs/react-server-dom-webpack-client.browser.development.js @@ -5175,10 +5175,10 @@ return hook.checkDCE ? !0 : !1; })({ bundleType: 1, - version: "19.3.0-canary-dd453071-20260506", + version: "19.3.0-canary-d5736f09-20260507", rendererPackageName: "react-server-dom-webpack", currentDispatcherRef: ReactSharedInternals, - reconcilerVersion: "19.3.0-canary-dd453071-20260506", + reconcilerVersion: "19.3.0-canary-d5736f09-20260507", getCurrentComponentInfo: function () { return currentOwnerInDEV; } diff --git a/packages/next/src/compiled/react-server-dom-webpack/package.json b/packages/next/src/compiled/react-server-dom-webpack/package.json index e0b8a10125da..88a975f2fa5c 100644 --- a/packages/next/src/compiled/react-server-dom-webpack/package.json +++ b/packages/next/src/compiled/react-server-dom-webpack/package.json @@ -52,8 +52,8 @@ "webpack-sources": "^3.2.0" }, "peerDependencies": { - "react": "19.3.0-canary-dd453071-20260506", - "react-dom": "19.3.0-canary-dd453071-20260506", + "react": "19.3.0-canary-d5736f09-20260507", + "react-dom": "19.3.0-canary-d5736f09-20260507", "webpack": "^5.59.0" } } \ No newline at end of file diff --git a/packages/next/src/compiled/react/cjs/react.development.js b/packages/next/src/compiled/react/cjs/react.development.js index 527929a0a6cc..aeeffd041274 100644 --- a/packages/next/src/compiled/react/cjs/react.development.js +++ b/packages/next/src/compiled/react/cjs/react.development.js @@ -1322,7 +1322,7 @@ exports.useTransition = function () { return resolveDispatcher().useTransition(); }; - exports.version = "19.3.0-canary-dd453071-20260506"; + exports.version = "19.3.0-canary-d5736f09-20260507"; "undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ && "function" === typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop && diff --git a/packages/next/src/compiled/react/cjs/react.production.js b/packages/next/src/compiled/react/cjs/react.production.js index 3346c8445430..d7d3bd009588 100644 --- a/packages/next/src/compiled/react/cjs/react.production.js +++ b/packages/next/src/compiled/react/cjs/react.production.js @@ -562,4 +562,4 @@ exports.useSyncExternalStore = function ( exports.useTransition = function () { return ReactSharedInternals.H.useTransition(); }; -exports.version = "19.3.0-canary-dd453071-20260506"; +exports.version = "19.3.0-canary-d5736f09-20260507"; diff --git a/packages/next/src/compiled/react/cjs/react.react-server.development.js b/packages/next/src/compiled/react/cjs/react.react-server.development.js index 7a1c7f91f71d..992ebb9326fa 100644 --- a/packages/next/src/compiled/react/cjs/react.react-server.development.js +++ b/packages/next/src/compiled/react/cjs/react.react-server.development.js @@ -874,5 +874,5 @@ exports.useMemo = function (create, deps) { return resolveDispatcher().useMemo(create, deps); }; - exports.version = "19.3.0-canary-dd453071-20260506"; + exports.version = "19.3.0-canary-d5736f09-20260507"; })(); diff --git a/packages/next/src/compiled/react/cjs/react.react-server.production.js b/packages/next/src/compiled/react/cjs/react.react-server.production.js index 0853a9ee8ff0..159bce2c93cd 100644 --- a/packages/next/src/compiled/react/cjs/react.react-server.production.js +++ b/packages/next/src/compiled/react/cjs/react.react-server.production.js @@ -433,4 +433,4 @@ exports.useId = function () { exports.useMemo = function (create, deps) { return ReactSharedInternals.H.useMemo(create, deps); }; -exports.version = "19.3.0-canary-dd453071-20260506"; +exports.version = "19.3.0-canary-d5736f09-20260507"; diff --git a/packages/next/src/compiled/unistore/unistore.js b/packages/next/src/compiled/unistore/unistore.js index 0ba482b5686d..6f80ba460e90 100644 --- a/packages/next/src/compiled/unistore/unistore.js +++ b/packages/next/src/compiled/unistore/unistore.js @@ -1 +1 @@ -(()=>{var t={976:t=>{function n(t,i){for(var _ in i)t[_]=i[_];return t}t.exports=function(t){var i=[];function u(t){for(var _=[],a=0;a{var t={413:t=>{function n(t,i){for(var _ in i)t[_]=i[_];return t}t.exports=function(t){var i=[];function u(t){for(var _=[],a=0;a=0.15.0' - version: 2.2.1(react@19.3.0-canary-dd453071-20260506) + version: 2.2.1(react@19.3.0-canary-d5736f09-20260507) source-map: specifier: ^0.7.0 version: 0.7.3 @@ -1923,8 +1923,8 @@ importers: packages/third-parties: dependencies: react: - specifier: npm:react@19.3.0-canary-dd453071-20260506 - version: 19.3.0-canary-dd453071-20260506 + specifier: npm:react@19.3.0-canary-d5736f09-20260507 + version: 19.3.0-canary-d5736f09-20260507 third-party-capital: specifier: 1.0.20 version: 1.0.20 @@ -1987,14 +1987,14 @@ importers: specifier: 29.5.0 version: 29.5.0 react: - specifier: npm:react@19.3.0-canary-dd453071-20260506 - version: 19.3.0-canary-dd453071-20260506 + specifier: npm:react@19.3.0-canary-d5736f09-20260507 + version: 19.3.0-canary-d5736f09-20260507 react-test-renderer: specifier: 18.2.0 - version: 18.2.0(react@19.3.0-canary-dd453071-20260506) + version: 18.2.0(react@19.3.0-canary-d5736f09-20260507) styled-jsx: specifier: ^5.1.2 - version: 5.1.6(@babel/core@7.26.10)(babel-plugin-macros@3.1.0)(react@19.3.0-canary-dd453071-20260506) + version: 5.1.6(@babel/core@7.26.10)(babel-plugin-macros@3.1.0)(react@19.3.0-canary-d5736f09-20260507) turbopack/packages/devlow-bench: dependencies: @@ -15529,18 +15529,18 @@ packages: resolution: {integrity: sha512-APPU8HB2uZnpl6Vt/+0AFoVYgSRtfiP6FLrZgPPTDmqSb2R4qZRbgd0A3VzIFxDt5e+Fozjx79WjLWnF69DK8g==} engines: {node: '>=16.14.0'} - react-dom@0.0.0-experimental-dd453071-20260506: - resolution: {integrity: sha512-Wyeu8Wl7p730v+YQWrw2boA7Lri0jFz+z4f/Mz0IV16dyK2AZWdLRTSa9W/tJ6QTrIo0Itq27nRj5aTEeRBnrw==} + react-dom@0.0.0-experimental-d5736f09-20260507: + resolution: {integrity: sha512-KOHRpa2sHl+wA7KGfX96sAtlSF0bbEHcHmMvA2ahIMMvlFtlcBblY6yV4i53E9nQD+wJ5OUG8jMII4fRTYTL4Q==} peerDependencies: - react: 0.0.0-experimental-dd453071-20260506 + react: 0.0.0-experimental-d5736f09-20260507 - react-dom@19.3.0-canary-dd453071-20260506: - resolution: {integrity: sha512-I7e3jgAlWH9X4R450dOtEVkH0SsgKEaXXKmGhBsCQewR6iyWkKQpJEHCdmaqWEe4YRyViVHIVKD1NABYJmCyyA==} + react-dom@19.3.0-canary-d5736f09-20260507: + resolution: {integrity: sha512-PrjUaYOYc1dX65Td8StJSNJ3TFTeO2KBpAdXQJiOmW5kxDbKK+lvkJmSK/U+f7LcNnJxQKwHzKVf8WdJVjJohg==} peerDependencies: - react: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 - react-is@19.3.0-canary-dd453071-20260506: - resolution: {integrity: sha512-zz1j60EHEhLrYDKg8l/NLfibtz5mhd6v2AyG3l9S4iDIXRsFgH+yUPxuTuwlamoCG7N6/iYGKCcHai/SsXczEg==} + react-is@19.3.0-canary-d5736f09-20260507: + resolution: {integrity: sha512-bTzkXzlj0JfmyWvkdotKAzXkfI1Fo7LBBB7MdjHtlLJK1pNYgmXdZjCxaB2n2Tj9m/ydB8XpQZi8W9Q0wq4CGA==} react-lifecycles-compat@3.0.4: resolution: {integrity: sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==} @@ -15595,34 +15595,34 @@ packages: '@types/react': optional: true - react-server-dom-turbopack@0.0.0-experimental-dd453071-20260506: - resolution: {integrity: sha512-o+13LCrfUNrWle4oSsDgaL4UuWJF11yvU8OXQR8qBzEbdQRIGZWMbgV/t8IibDkWO8IklSnCA/CFcpMS8cnb0A==} + react-server-dom-turbopack@0.0.0-experimental-d5736f09-20260507: + resolution: {integrity: sha512-QqL2rOH17o7vH/rWfFam/Mxfa6TeRCpv+L9x0/c44gJ35tFLvqHrQs3wxekOpkaomdITQu9uKi5UJRz2Mi4aSg==} engines: {node: '>=0.10.0'} peerDependencies: - react: 0.0.0-experimental-dd453071-20260506 - react-dom: 0.0.0-experimental-dd453071-20260506 + react: 0.0.0-experimental-d5736f09-20260507 + react-dom: 0.0.0-experimental-d5736f09-20260507 - react-server-dom-turbopack@19.3.0-canary-dd453071-20260506: - resolution: {integrity: sha512-dpFczhyQQEx8dCPJIaeEARQluHXPZ4F9NNxeESvGIKmpV+Io9SDmHfWya7N9SW5DX6QQ9mdcgk0JCOp/2SFSKA==} + react-server-dom-turbopack@19.3.0-canary-d5736f09-20260507: + resolution: {integrity: sha512-XKmwBWJSIKntK9ScoC6yV4qRabyViaFLZQyTU0zBSXK/YwjOHA29w+ucFJCJrtUyZoqBAtGyPjoqiRqKe4CVkA==} engines: {node: '>=0.10.0'} peerDependencies: - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507 - react-server-dom-webpack@0.0.0-experimental-dd453071-20260506: - resolution: {integrity: sha512-iKJ2UFbJ2Iv0Af9j1HwjfwIBEN3a+MgyTCsx5XMgrOcyr98+dVq+d461FdVDPGjdoFfIPoGgJsxFoM4V7S4LpQ==} + react-server-dom-webpack@0.0.0-experimental-d5736f09-20260507: + resolution: {integrity: sha512-i8L0/hTxJr+3YUbF34PU40OTm+izeuq7aifde+/+HHb4RvAT5aVmr5uMXGlgyiaaBwK61AYkKoJYwPfVQNEN4Q==} engines: {node: '>=0.10.0'} peerDependencies: - react: 0.0.0-experimental-dd453071-20260506 - react-dom: 0.0.0-experimental-dd453071-20260506 + react: 0.0.0-experimental-d5736f09-20260507 + react-dom: 0.0.0-experimental-d5736f09-20260507 webpack: 5.98.0 - react-server-dom-webpack@19.3.0-canary-dd453071-20260506: - resolution: {integrity: sha512-Iu8I8pYxLyYG27JypvmT1RsBClFu9oWpvwXlKndOiyfQQ9kIa7lhJN1+3GqZABh9w8MaLvIkXZwGNfrYkw8XGQ==} + react-server-dom-webpack@19.3.0-canary-d5736f09-20260507: + resolution: {integrity: sha512-lryStLE1COgy3lDJ4VudG5kQsIqv+c8WJ53mkDdyKLGSyZKOJ+sMYN+VN9oCUnNJCGvD20imoHsEadZYv9iyBQ==} engines: {node: '>=0.10.0'} peerDependencies: - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507 webpack: 5.98.0 react-shallow-renderer@16.15.0: @@ -15673,12 +15673,12 @@ packages: react: ^15.3.0 || ^16.0.0-alpha react-dom: ^15.3.0 || ^16.0.0-alpha - react@0.0.0-experimental-dd453071-20260506: - resolution: {integrity: sha512-S4uyYsBNq9l6JDVWIQ3y1cTlnCSOk2KCllaVQBFhB30I7aj5W4LO2Hc5sv/GqqtrB9Xm6k+ao8RGqB+kDxlc/Q==} + react@0.0.0-experimental-d5736f09-20260507: + resolution: {integrity: sha512-5dDIwqjDBbcFq8XT+X/i645ApcYnXPaeX4YhLtMHTCSV28xCSq3G4rfjIMqWZtlkcrblz6oBq0T5DXHqlDe0NQ==} engines: {node: '>=0.10.0'} - react@19.3.0-canary-dd453071-20260506: - resolution: {integrity: sha512-YDiDSwJgUCQQJ72bt7V897ln9jut5WqDLQN94b49X1YdxfDT6G5ZtXSLUDHzl4El+qG8xzYEcEl7IpS+sYkwng==} + react@19.3.0-canary-d5736f09-20260507: + resolution: {integrity: sha512-EL3w0mHylqEtiySCjcj/nPOkK1j6KvKsaFkeavTqR6hbd6bQi7gyCcTSHXQ2XpTjv8hfKWFArSVF6he1sgQcEQ==} engines: {node: '>=0.10.0'} read-all-stream@3.1.0: @@ -16241,11 +16241,11 @@ packages: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} - scheduler@0.0.0-experimental-dd453071-20260506: - resolution: {integrity: sha512-X2f2YhgiTwrpExY4MV7jXiZfRzChR64/0DkMyivqQ9wRlqJUg41OehVm1fc+rr/r71s4HAqrvQjEdFd3/QZ6bA==} + scheduler@0.0.0-experimental-d5736f09-20260507: + resolution: {integrity: sha512-3aVfrUiV8iEjthtyzXWQfx2Mg7kSWP7oT16XoblwySl6Vhc6aqMIOqQhPMF+W5EGugD7KJALjwBpwU64z8MGFQ==} - scheduler@0.28.0-canary-dd453071-20260506: - resolution: {integrity: sha512-VOK9IDz+kVNSyv+zxCVDxPjAznaL6ECSq66uc27pZI9g7BJ9B4Mi7cOGzXIJ8yBDn7LFgitev4bac/HfBBH5vQ==} + scheduler@0.28.0-canary-d5736f09-20260507: + resolution: {integrity: sha512-HkpDsMMSty/+FrYjvNnBZRwfU5P+LhZs8xRaWKVwTnB0rffXMg+BOntOebDmvlwI8hhB6D8ONBGXeOlWTzwVdA==} schema-utils@2.7.1: resolution: {integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==} @@ -19605,28 +19605,28 @@ snapshots: '@balena/dockerignore@1.0.2': {} - '@base-ui-components/react@1.0.0-beta.2(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)': + '@base-ui-components/react@1.0.0-beta.2(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)': dependencies: '@babel/runtime': 7.27.6 - '@base-ui-components/utils': 0.1.0(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@floating-ui/react-dom': 2.1.5(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) + '@base-ui-components/utils': 0.1.0(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@floating-ui/react-dom': 2.1.5(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) '@floating-ui/utils': 0.2.10 - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) reselect: 5.1.1 tabbable: 6.2.0 - use-sync-external-store: 1.5.0(react@19.3.0-canary-dd453071-20260506) + use-sync-external-store: 1.5.0(react@19.3.0-canary-d5736f09-20260507) optionalDependencies: '@types/react': 19.2.10 - '@base-ui-components/utils@0.1.0(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)': + '@base-ui-components/utils@0.1.0(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)': dependencies: '@babel/runtime': 7.27.6 '@floating-ui/utils': 0.2.10 - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) reselect: 5.1.1 - use-sync-external-store: 1.5.0(react@19.3.0-canary-dd453071-20260506) + use-sync-external-store: 1.5.0(react@19.3.0-canary-d5736f09-20260507) optionalDependencies: '@types/react': 19.2.10 @@ -19799,17 +19799,17 @@ snapshots: '@emotion/memoize@0.8.1': {} - '@emotion/react@11.11.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506)': + '@emotion/react@11.11.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507)': dependencies: '@babel/runtime': 7.27.0 '@emotion/babel-plugin': 11.11.0 '@emotion/cache': 11.11.0 '@emotion/serialize': 1.1.2 - '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@19.3.0-canary-dd453071-20260506) + '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@19.3.0-canary-d5736f09-20260507) '@emotion/utils': 1.2.1 '@emotion/weak-memoize': 0.3.1 hoist-non-react-statics: 3.3.2 - react: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 optionalDependencies: '@types/react': 19.2.10 transitivePeerDependencies: @@ -19827,9 +19827,9 @@ snapshots: '@emotion/unitless@0.8.1': {} - '@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@19.3.0-canary-dd453071-20260506)': + '@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@19.3.0-canary-d5736f09-20260507)': dependencies: - react: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 '@emotion/utils@1.2.1': {} @@ -20246,24 +20246,24 @@ snapshots: '@floating-ui/core': 1.7.3 '@floating-ui/utils': 0.2.10 - '@floating-ui/react-dom@2.1.0(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)': + '@floating-ui/react-dom@2.1.0(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)': dependencies: '@floating-ui/dom': 1.7.3 - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) - '@floating-ui/react-dom@2.1.5(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)': + '@floating-ui/react-dom@2.1.5(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)': dependencies: '@floating-ui/dom': 1.7.3 - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) - '@floating-ui/react@0.26.16(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)': + '@floating-ui/react@0.26.16(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)': dependencies: - '@floating-ui/react-dom': 2.1.0(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) + '@floating-ui/react-dom': 2.1.0(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) '@floating-ui/utils': 0.2.2 - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) tabbable: 6.2.0 '@floating-ui/utils@0.2.10': {} @@ -21048,23 +21048,23 @@ snapshots: dependencies: call-bind: 1.0.8 - '@mantine/core@7.10.1(@mantine/hooks@7.10.1(react@19.3.0-canary-dd453071-20260506))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)': + '@mantine/core@7.10.1(@mantine/hooks@7.10.1(react@19.3.0-canary-d5736f09-20260507))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)': dependencies: - '@floating-ui/react': 0.26.16(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@mantine/hooks': 7.10.1(react@19.3.0-canary-dd453071-20260506) + '@floating-ui/react': 0.26.16(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@mantine/hooks': 7.10.1(react@19.3.0-canary-d5736f09-20260507) clsx: 2.1.1 - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) - react-number-format: 5.4.0(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - react-remove-scroll: 2.5.10(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - react-textarea-autosize: 8.5.3(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) + react-number-format: 5.4.0(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + react-remove-scroll: 2.5.10(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + react-textarea-autosize: 8.5.3(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) type-fest: 4.18.3 transitivePeerDependencies: - '@types/react' - '@mantine/hooks@7.10.1(react@19.3.0-canary-dd453071-20260506)': + '@mantine/hooks@7.10.1(react@19.3.0-canary-d5736f09-20260507)': dependencies: - react: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 '@mapbox/node-pre-gyp@1.0.5(encoding@0.1.13)': dependencies: @@ -21111,17 +21111,17 @@ snapshots: transitivePeerDependencies: - supports-color - '@mdx-js/react@2.2.1(react@19.3.0-canary-dd453071-20260506)': + '@mdx-js/react@2.2.1(react@19.3.0-canary-d5736f09-20260507)': dependencies: '@types/mdx': 2.0.13 '@types/react': 19.2.10 - react: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 - '@mdx-js/react@3.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506)': + '@mdx-js/react@3.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507)': dependencies: '@types/mdx': 2.0.13 '@types/react': 19.2.10 - react: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 '@modelcontextprotocol/sdk@1.18.1(patch_hash=680fe4edb7abd1de29d08cdf217a22506e815a8cc1c2282201d5d47aa3e5da12)': dependencies: @@ -21865,589 +21865,589 @@ snapshots: '@radix-ui/primitive@1.1.3': {} - '@radix-ui/react-arrow@1.1.0(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-arrow@1.1.0(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)': dependencies: - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) optionalDependencies: '@types/react': 19.2.10 '@types/react-dom': 19.2.3(@types/react@19.2.10) - '@radix-ui/react-arrow@1.1.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-arrow@1.1.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)': dependencies: - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) optionalDependencies: '@types/react': 19.2.10 '@types/react-dom': 19.2.3(@types/react@19.2.10) - '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-arrow@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) optionalDependencies: '@types/react': 19.2.10 '@types/react-dom': 19.2.3(@types/react@19.2.10) - '@radix-ui/react-collection@1.1.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-collection@1.1.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)': dependencies: - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-context': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-slot': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-context': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-slot': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) optionalDependencies: '@types/react': 19.2.10 '@types/react-dom': 19.2.3(@types/react@19.2.10) - '@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-collection@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) optionalDependencies: '@types/react': 19.2.10 '@types/react-dom': 19.2.3(@types/react@19.2.10) - '@radix-ui/react-compose-refs@1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-compose-refs@1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507)': dependencies: - react: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 optionalDependencies: '@types/react': 19.2.10 - '@radix-ui/react-compose-refs@1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-compose-refs@1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507)': dependencies: - react: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 optionalDependencies: '@types/react': 19.2.10 - '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-compose-refs@1.1.2(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507)': dependencies: - react: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 optionalDependencies: '@types/react': 19.2.10 - '@radix-ui/react-context@1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-context@1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507)': dependencies: - react: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 optionalDependencies: '@types/react': 19.2.10 - '@radix-ui/react-context@1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-context@1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507)': dependencies: - react: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 optionalDependencies: '@types/react': 19.2.10 - '@radix-ui/react-context@1.1.2(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-context@1.1.2(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507)': dependencies: - react: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 optionalDependencies: '@types/react': 19.2.10 - '@radix-ui/react-dialog@1.1.4(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-dialog@1.1.4(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)': dependencies: '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-context': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-dismissable-layer': 1.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-focus-guards': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-focus-scope': 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-id': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-portal': 1.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-slot': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-context': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-dismissable-layer': 1.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-focus-scope': 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-id': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-portal': 1.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-slot': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) aria-hidden: 1.2.6 - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) - react-remove-scroll: 2.7.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) + react-remove-scroll: 2.7.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) optionalDependencies: '@types/react': 19.2.10 '@types/react-dom': 19.2.3(@types/react@19.2.10) - '@radix-ui/react-direction@1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-direction@1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507)': dependencies: - react: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 optionalDependencies: '@types/react': 19.2.10 - '@radix-ui/react-direction@1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-direction@1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507)': dependencies: - react: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 optionalDependencies: '@types/react': 19.2.10 - '@radix-ui/react-dismissable-layer@1.1.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-dismissable-layer@1.1.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)': dependencies: '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) optionalDependencies: '@types/react': 19.2.10 '@types/react-dom': 19.2.3(@types/react@19.2.10) - '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-dismissable-layer@1.1.11(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)': dependencies: '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-use-escape-keydown': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) optionalDependencies: '@types/react': 19.2.10 '@types/react-dom': 19.2.3(@types/react@19.2.10) - '@radix-ui/react-dismissable-layer@1.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-dismissable-layer@1.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)': dependencies: '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) optionalDependencies: '@types/react': 19.2.10 '@types/react-dom': 19.2.3(@types/react@19.2.10) - '@radix-ui/react-focus-guards@1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-focus-guards@1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507)': dependencies: - react: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 optionalDependencies: '@types/react': 19.2.10 - '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-focus-guards@1.1.3(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507)': dependencies: - react: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 optionalDependencies: '@types/react': 19.2.10 - '@radix-ui/react-focus-scope@1.1.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-focus-scope@1.1.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)': dependencies: - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) optionalDependencies: '@types/react': 19.2.10 '@types/react-dom': 19.2.3(@types/react@19.2.10) - '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-focus-scope@1.1.7(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) optionalDependencies: '@types/react': 19.2.10 '@types/react-dom': 19.2.3(@types/react@19.2.10) - '@radix-ui/react-id@1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-id@1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - react: 19.3.0-canary-dd453071-20260506 + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + react: 19.3.0-canary-d5736f09-20260507 optionalDependencies: '@types/react': 19.2.10 - '@radix-ui/react-id@1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-id@1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - react: 19.3.0-canary-dd453071-20260506 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + react: 19.3.0-canary-d5736f09-20260507 optionalDependencies: '@types/react': 19.2.10 - '@radix-ui/react-popover@1.1.4(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-popover@1.1.4(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)': dependencies: '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-context': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-dismissable-layer': 1.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-focus-guards': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-focus-scope': 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-id': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-popper': 1.2.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-portal': 1.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-slot': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-context': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-dismissable-layer': 1.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-focus-guards': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-focus-scope': 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-id': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-popper': 1.2.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-portal': 1.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-presence': 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-slot': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) aria-hidden: 1.2.6 - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) - react-remove-scroll: 2.7.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) + react-remove-scroll: 2.7.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) optionalDependencies: '@types/react': 19.2.10 '@types/react-dom': 19.2.3(@types/react@19.2.10) - '@radix-ui/react-popper@1.2.0(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)': - dependencies: - '@floating-ui/react-dom': 2.1.5(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-arrow': 1.1.0(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-compose-refs': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-context': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-use-rect': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-use-size': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) + '@radix-ui/react-popper@1.2.0(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)': + dependencies: + '@floating-ui/react-dom': 2.1.5(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-arrow': 1.1.0(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-context': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-use-rect': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-use-size': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) '@radix-ui/rect': 1.1.0 - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) optionalDependencies: '@types/react': 19.2.10 '@types/react-dom': 19.2.3(@types/react@19.2.10) - '@radix-ui/react-popper@1.2.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)': - dependencies: - '@floating-ui/react-dom': 2.1.5(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-arrow': 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-context': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-use-rect': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-use-size': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) + '@radix-ui/react-popper@1.2.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)': + dependencies: + '@floating-ui/react-dom': 2.1.5(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-arrow': 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-context': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-use-rect': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-use-size': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) '@radix-ui/rect': 1.1.0 - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) optionalDependencies: '@types/react': 19.2.10 '@types/react-dom': 19.2.3(@types/react@19.2.10) - '@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)': - dependencies: - '@floating-ui/react-dom': 2.1.5(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-use-rect': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) + '@radix-ui/react-popper@1.2.8(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)': + dependencies: + '@floating-ui/react-dom': 2.1.5(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-arrow': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-use-rect': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-use-size': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) '@radix-ui/rect': 1.1.1 - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) optionalDependencies: '@types/react': 19.2.10 '@types/react-dom': 19.2.3(@types/react@19.2.10) - '@radix-ui/react-portal@1.1.2(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-portal@1.1.2(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)': dependencies: - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) optionalDependencies: '@types/react': 19.2.10 '@types/react-dom': 19.2.3(@types/react@19.2.10) - '@radix-ui/react-portal@1.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-portal@1.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)': dependencies: - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) optionalDependencies: '@types/react': 19.2.10 '@types/react-dom': 19.2.3(@types/react@19.2.10) - '@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-portal@1.1.9(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) optionalDependencies: '@types/react': 19.2.10 '@types/react-dom': 19.2.3(@types/react@19.2.10) - '@radix-ui/react-presence@1.1.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-presence@1.1.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)': dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) optionalDependencies: '@types/react': 19.2.10 '@types/react-dom': 19.2.3(@types/react@19.2.10) - '@radix-ui/react-presence@1.1.2(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-presence@1.1.2(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)': dependencies: - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) optionalDependencies: '@types/react': 19.2.10 '@types/react-dom': 19.2.3(@types/react@19.2.10) - '@radix-ui/react-primitive@2.0.0(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-primitive@2.0.0(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)': dependencies: - '@radix-ui/react-slot': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + '@radix-ui/react-slot': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) optionalDependencies: '@types/react': 19.2.10 '@types/react-dom': 19.2.3(@types/react@19.2.10) - '@radix-ui/react-primitive@2.0.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-primitive@2.0.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)': dependencies: - '@radix-ui/react-slot': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + '@radix-ui/react-slot': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) optionalDependencies: '@types/react': 19.2.10 '@types/react-dom': 19.2.3(@types/react@19.2.10) - '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-primitive@2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)': dependencies: - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) optionalDependencies: '@types/react': 19.2.10 '@types/react-dom': 19.2.3(@types/react@19.2.10) - '@radix-ui/react-roving-focus@1.1.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-roving-focus@1.1.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)': dependencies: '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-collection': 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-context': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-direction': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-id': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + '@radix-ui/react-collection': 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-context': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-direction': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-id': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) optionalDependencies: '@types/react': 19.2.10 '@types/react-dom': 19.2.3(@types/react@19.2.10) - '@radix-ui/react-select@2.2.6(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-select@2.2.6(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)': dependencies: '@radix-ui/number': 1.1.1 '@radix-ui/primitive': 1.1.3 - '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-context': 1.1.2(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-direction': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-slot': 1.2.3(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) + '@radix-ui/react-collection': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-context': 1.1.2(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-direction': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-dismissable-layer': 1.1.11(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-focus-guards': 1.1.3(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-focus-scope': 1.1.7(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-popper': 1.2.8(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-portal': 1.1.9(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-slot': 1.2.3(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-use-controllable-state': 1.2.2(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-use-previous': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-visually-hidden': 1.2.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) aria-hidden: 1.2.6 - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) - react-remove-scroll: 2.7.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) + react-remove-scroll: 2.7.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) optionalDependencies: '@types/react': 19.2.10 '@types/react-dom': 19.2.3(@types/react@19.2.10) - '@radix-ui/react-slot@1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-slot@1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507)': dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - react: 19.3.0-canary-dd453071-20260506 + '@radix-ui/react-compose-refs': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + react: 19.3.0-canary-d5736f09-20260507 optionalDependencies: '@types/react': 19.2.10 - '@radix-ui/react-slot@1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-slot@1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507)': dependencies: - '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - react: 19.3.0-canary-dd453071-20260506 + '@radix-ui/react-compose-refs': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + react: 19.3.0-canary-d5736f09-20260507 optionalDependencies: '@types/react': 19.2.10 - '@radix-ui/react-slot@1.2.3(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-slot@1.2.3(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507)': dependencies: - '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - react: 19.3.0-canary-dd453071-20260506 + '@radix-ui/react-compose-refs': 1.1.2(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + react: 19.3.0-canary-d5736f09-20260507 optionalDependencies: '@types/react': 19.2.10 - '@radix-ui/react-toggle-group@1.1.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-toggle-group@1.1.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)': dependencies: '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-context': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-direction': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-roving-focus': 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-toggle': 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + '@radix-ui/react-context': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-direction': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-roving-focus': 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-toggle': 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) optionalDependencies: '@types/react': 19.2.10 '@types/react-dom': 19.2.3(@types/react@19.2.10) - '@radix-ui/react-toggle@1.1.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-toggle@1.1.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)': dependencies: '@radix-ui/primitive': 1.1.1 - '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + '@radix-ui/react-primitive': 2.0.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) optionalDependencies: '@types/react': 19.2.10 '@types/react-dom': 19.2.3(@types/react@19.2.10) - '@radix-ui/react-tooltip@1.1.4(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-tooltip@1.1.4(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)': dependencies: '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-context': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-id': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-popper': 1.2.0(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-portal': 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-presence': 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-slot': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + '@radix-ui/react-compose-refs': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-context': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-dismissable-layer': 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-id': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-popper': 1.2.0(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-portal': 1.1.2(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-presence': 1.1.1(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-slot': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) optionalDependencies: '@types/react': 19.2.10 '@types/react-dom': 19.2.3(@types/react@19.2.10) - '@radix-ui/react-use-callback-ref@1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-use-callback-ref@1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507)': dependencies: - react: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 optionalDependencies: '@types/react': 19.2.10 - '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-use-callback-ref@1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507)': dependencies: - react: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 optionalDependencies: '@types/react': 19.2.10 - '@radix-ui/react-use-controllable-state@1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-use-controllable-state@1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507)': dependencies: - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - react: 19.3.0-canary-dd453071-20260506 + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + react: 19.3.0-canary-d5736f09-20260507 optionalDependencies: '@types/react': 19.2.10 - '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-use-controllable-state@1.2.2(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507)': dependencies: - '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - react: 19.3.0-canary-dd453071-20260506 + '@radix-ui/react-use-effect-event': 0.0.2(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + react: 19.3.0-canary-d5736f09-20260507 optionalDependencies: '@types/react': 19.2.10 - '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-use-effect-event@0.0.2(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - react: 19.3.0-canary-dd453071-20260506 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + react: 19.3.0-canary-d5736f09-20260507 optionalDependencies: '@types/react': 19.2.10 - '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-use-escape-keydown@1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507)': dependencies: - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - react: 19.3.0-canary-dd453071-20260506 + '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + react: 19.3.0-canary-d5736f09-20260507 optionalDependencies: '@types/react': 19.2.10 - '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-use-escape-keydown@1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507)': dependencies: - '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - react: 19.3.0-canary-dd453071-20260506 + '@radix-ui/react-use-callback-ref': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + react: 19.3.0-canary-d5736f09-20260507 optionalDependencies: '@types/react': 19.2.10 - '@radix-ui/react-use-layout-effect@1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-use-layout-effect@1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507)': dependencies: - react: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 optionalDependencies: '@types/react': 19.2.10 - '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-use-layout-effect@1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507)': dependencies: - react: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 optionalDependencies: '@types/react': 19.2.10 - '@radix-ui/react-use-previous@1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-use-previous@1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507)': dependencies: - react: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 optionalDependencies: '@types/react': 19.2.10 - '@radix-ui/react-use-rect@1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-use-rect@1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507)': dependencies: '@radix-ui/rect': 1.1.0 - react: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 optionalDependencies: '@types/react': 19.2.10 - '@radix-ui/react-use-rect@1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-use-rect@1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507)': dependencies: '@radix-ui/rect': 1.1.1 - react: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 optionalDependencies: '@types/react': 19.2.10 - '@radix-ui/react-use-size@1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-use-size@1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - react: 19.3.0-canary-dd453071-20260506 + '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + react: 19.3.0-canary-d5736f09-20260507 optionalDependencies: '@types/react': 19.2.10 - '@radix-ui/react-use-size@1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-use-size@1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507)': dependencies: - '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - react: 19.3.0-canary-dd453071-20260506 + '@radix-ui/react-use-layout-effect': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + react: 19.3.0-canary-d5736f09-20260507 optionalDependencies: '@types/react': 19.2.10 - '@radix-ui/react-visually-hidden@1.1.0(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-visually-hidden@1.1.0(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)': dependencies: - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) optionalDependencies: '@types/react': 19.2.10 '@types/react-dom': 19.2.3(@types/react@19.2.10) - '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)': + '@radix-ui/react-visually-hidden@1.2.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)': dependencies: - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) optionalDependencies: '@types/react': 19.2.10 '@types/react-dom': 19.2.3(@types/react@19.2.10) @@ -22698,12 +22698,12 @@ snapshots: '@storybook/addon-docs@8.6.0(@types/react@19.2.10)(storybook@8.6.0(prettier@3.6.2))': dependencies: - '@mdx-js/react': 3.1.0(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@storybook/blocks': 8.6.0(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)(storybook@8.6.0(prettier@3.6.2)) + '@mdx-js/react': 3.1.0(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@storybook/blocks': 8.6.0(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)(storybook@8.6.0(prettier@3.6.2)) '@storybook/csf-plugin': 8.6.0(storybook@8.6.0(prettier@3.6.2)) - '@storybook/react-dom-shim': 8.6.0(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)(storybook@8.6.0(prettier@3.6.2)) - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + '@storybook/react-dom-shim': 8.6.0(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)(storybook@8.6.0(prettier@3.6.2)) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) storybook: 8.6.0(prettier@3.6.2) ts-dedent: 2.2.0 transitivePeerDependencies: @@ -22768,14 +22768,14 @@ snapshots: - '@swc/helpers' - webpack - '@storybook/blocks@8.6.0(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)(storybook@8.6.0(prettier@3.6.2))': + '@storybook/blocks@8.6.0(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)(storybook@8.6.0(prettier@3.6.2))': dependencies: - '@storybook/icons': 1.3.0(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) + '@storybook/icons': 1.3.0(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) storybook: 8.6.0(prettier@3.6.2) ts-dedent: 2.2.0 optionalDependencies: - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) '@storybook/builder-webpack5@8.6.0(@rspack/core@1.6.7(patch_hash=4cf28ea116b0e27c7c80b09035905f9d16a7b18d1f2b7d312fc80d42cd57068d)(@swc/helpers@0.5.15))(@swc/core@1.11.24(@swc/helpers@0.5.15))(esbuild@0.25.9)(storybook@8.6.0(prettier@3.6.2))(typescript@6.0.2)': dependencies: @@ -22854,10 +22854,10 @@ snapshots: '@storybook/global@5.0.0': {} - '@storybook/icons@1.3.0(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)': + '@storybook/icons@1.3.0(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)': dependencies: - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) '@storybook/instrumenter@8.6.0(storybook@8.6.0(prettier@3.6.2))': dependencies: @@ -22869,17 +22869,17 @@ snapshots: dependencies: storybook: 8.6.0(prettier@3.6.2) - '@storybook/preset-react-webpack@8.6.0(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.6.2)))(@swc/core@1.11.24(@swc/helpers@0.5.15))(esbuild@0.25.9)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)(storybook@8.6.0(prettier@3.6.2))(typescript@6.0.2)': + '@storybook/preset-react-webpack@8.6.0(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.6.2)))(@swc/core@1.11.24(@swc/helpers@0.5.15))(esbuild@0.25.9)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)(storybook@8.6.0(prettier@3.6.2))(typescript@6.0.2)': dependencies: '@storybook/core-webpack': 8.6.0(storybook@8.6.0(prettier@3.6.2)) - '@storybook/react': 8.6.0(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.6.2)))(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)(storybook@8.6.0(prettier@3.6.2))(typescript@6.0.2) + '@storybook/react': 8.6.0(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.6.2)))(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)(storybook@8.6.0(prettier@3.6.2))(typescript@6.0.2) '@storybook/react-docgen-typescript-plugin': 1.0.6--canary.9.0c3f3b7.0(typescript@6.0.2)(webpack@5.98.0(@swc/core@1.11.24(@swc/helpers@0.5.15))(esbuild@0.25.9)) '@types/semver': 7.5.6 find-up: 5.0.0 magic-string: 0.30.19 - react: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 react-docgen: 7.1.0 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) resolve: 1.22.10 semver: 7.6.3 storybook: 8.6.0(prettier@3.6.2) @@ -22913,19 +22913,19 @@ snapshots: transitivePeerDependencies: - supports-color - '@storybook/react-dom-shim@8.6.0(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)(storybook@8.6.0(prettier@3.6.2))': + '@storybook/react-dom-shim@8.6.0(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)(storybook@8.6.0(prettier@3.6.2))': dependencies: - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) storybook: 8.6.0(prettier@3.6.2) - '@storybook/react-webpack5@8.6.0(@rspack/core@1.6.7(patch_hash=4cf28ea116b0e27c7c80b09035905f9d16a7b18d1f2b7d312fc80d42cd57068d)(@swc/helpers@0.5.15))(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.6.2)))(@swc/core@1.11.24(@swc/helpers@0.5.15))(esbuild@0.25.9)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)(storybook@8.6.0(prettier@3.6.2))(typescript@6.0.2)': + '@storybook/react-webpack5@8.6.0(@rspack/core@1.6.7(patch_hash=4cf28ea116b0e27c7c80b09035905f9d16a7b18d1f2b7d312fc80d42cd57068d)(@swc/helpers@0.5.15))(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.6.2)))(@swc/core@1.11.24(@swc/helpers@0.5.15))(esbuild@0.25.9)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)(storybook@8.6.0(prettier@3.6.2))(typescript@6.0.2)': dependencies: '@storybook/builder-webpack5': 8.6.0(@rspack/core@1.6.7(patch_hash=4cf28ea116b0e27c7c80b09035905f9d16a7b18d1f2b7d312fc80d42cd57068d)(@swc/helpers@0.5.15))(@swc/core@1.11.24(@swc/helpers@0.5.15))(esbuild@0.25.9)(storybook@8.6.0(prettier@3.6.2))(typescript@6.0.2) - '@storybook/preset-react-webpack': 8.6.0(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.6.2)))(@swc/core@1.11.24(@swc/helpers@0.5.15))(esbuild@0.25.9)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)(storybook@8.6.0(prettier@3.6.2))(typescript@6.0.2) - '@storybook/react': 8.6.0(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.6.2)))(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)(storybook@8.6.0(prettier@3.6.2))(typescript@6.0.2) - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + '@storybook/preset-react-webpack': 8.6.0(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.6.2)))(@swc/core@1.11.24(@swc/helpers@0.5.15))(esbuild@0.25.9)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)(storybook@8.6.0(prettier@3.6.2))(typescript@6.0.2) + '@storybook/react': 8.6.0(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.6.2)))(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)(storybook@8.6.0(prettier@3.6.2))(typescript@6.0.2) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) storybook: 8.6.0(prettier@3.6.2) optionalDependencies: typescript: 6.0.2 @@ -22938,16 +22938,16 @@ snapshots: - uglify-js - webpack-cli - '@storybook/react@8.6.0(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.6.2)))(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)(storybook@8.6.0(prettier@3.6.2))(typescript@6.0.2)': + '@storybook/react@8.6.0(@storybook/test@8.6.0(storybook@8.6.0(prettier@3.6.2)))(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)(storybook@8.6.0(prettier@3.6.2))(typescript@6.0.2)': dependencies: '@storybook/components': 8.6.0(storybook@8.6.0(prettier@3.6.2)) '@storybook/global': 5.0.0 '@storybook/manager-api': 8.6.0(storybook@8.6.0(prettier@3.6.2)) '@storybook/preview-api': 8.6.0(storybook@8.6.0(prettier@3.6.2)) - '@storybook/react-dom-shim': 8.6.0(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)(storybook@8.6.0(prettier@3.6.2)) + '@storybook/react-dom-shim': 8.6.0(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)(storybook@8.6.0(prettier@3.6.2)) '@storybook/theming': 8.6.0(storybook@8.6.0(prettier@3.6.2)) - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) storybook: 8.6.0(prettier@3.6.2) optionalDependencies: '@storybook/test': 8.6.0(storybook@8.6.0(prettier@3.6.2)) @@ -23225,13 +23225,13 @@ snapshots: lodash: 4.17.23 redent: 3.0.0 - '@testing-library/react@15.0.7(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)': + '@testing-library/react@15.0.7(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)': dependencies: '@babel/runtime': 7.27.0 '@testing-library/dom': 10.1.0 '@types/react-dom': 19.2.3(@types/react@19.2.10) - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) optionalDependencies: '@types/react': 19.2.10 @@ -25587,14 +25587,14 @@ snapshots: cmd-shim@7.0.0: {} - cmdk@1.0.4(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506): + cmdk@1.0.4(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507): dependencies: - '@radix-ui/react-dialog': 1.1.4(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-id': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506) - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) - use-sync-external-store: 1.5.0(react@19.3.0-canary-dd453071-20260506) + '@radix-ui/react-dialog': 1.1.4(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-id': 1.1.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + '@radix-ui/react-primitive': 2.1.3(@types/react-dom@19.2.3(@types/react@19.2.10))(@types/react@19.2.10)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) + use-sync-external-store: 1.5.0(react@19.3.0-canary-d5736f09-20260507) transitivePeerDependencies: - '@types/react' - '@types/react-dom' @@ -29174,7 +29174,7 @@ snapshots: hoist-non-react-statics@3.3.2: dependencies: - react-is: 19.3.0-canary-dd453071-20260506 + react-is: 19.3.0-canary-d5736f09-20260507 homedir-polyfill@1.0.3: dependencies: @@ -31445,13 +31445,13 @@ snapshots: lru-cache@7.18.3: {} - lucide-react@0.383.0(react@19.3.0-canary-dd453071-20260506): + lucide-react@0.383.0(react@19.3.0-canary-d5736f09-20260507): dependencies: - react: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 - lucide-react@0.554.0(react@19.3.0-canary-dd453071-20260506): + lucide-react@0.554.0(react@19.3.0-canary-d5736f09-20260507): dependencies: - react: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 lz-string@1.5.0: {} @@ -32667,23 +32667,23 @@ snapshots: dependencies: inherits: 2.0.4 - next-themes@0.4.6(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506): + next-themes@0.4.6(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507): dependencies: - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) next-tick@1.0.0: {} - next@16.2.3(@babel/core@7.26.10)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@0.0.0-experimental-1371fcb-20260227)(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)(sass@1.77.8): + next@16.2.3(@babel/core@7.26.10)(@opentelemetry/api@1.9.0)(@playwright/test@1.58.2)(babel-plugin-macros@3.1.0)(babel-plugin-react-compiler@0.0.0-experimental-1371fcb-20260227)(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)(sass@1.77.8): dependencies: '@next/env': 16.2.3 '@swc/helpers': 0.5.15 baseline-browser-mapping: 2.9.19 caniuse-lite: 1.0.30001746 postcss: 8.4.31 - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) - styled-jsx: 5.1.6(@babel/core@7.26.10)(babel-plugin-macros@3.1.0)(react@19.3.0-canary-dd453071-20260506) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) + styled-jsx: 5.1.6(@babel/core@7.26.10)(babel-plugin-macros@3.1.0)(react@19.3.0-canary-d5736f09-20260507) optionalDependencies: '@next/swc-darwin-arm64': 16.2.3 '@next/swc-darwin-x64': 16.2.3 @@ -34472,31 +34472,31 @@ snapshots: dependencies: ansi-regex: 5.0.1 ansi-styles: 5.2.0 - react-is: 19.3.0-canary-dd453071-20260506 + react-is: 19.3.0-canary-d5736f09-20260507 pretty-format@29.5.0: dependencies: '@jest/schemas': 29.4.3 ansi-styles: 5.2.0 - react-is: 19.3.0-canary-dd453071-20260506 + react-is: 19.3.0-canary-d5736f09-20260507 pretty-format@29.7.0: dependencies: '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 - react-is: 19.3.0-canary-dd453071-20260506 + react-is: 19.3.0-canary-d5736f09-20260507 pretty-format@30.0.0-alpha.6: dependencies: '@jest/schemas': 30.0.0-alpha.6 ansi-styles: 5.2.0 - react-is: 19.3.0-canary-dd453071-20260506 + react-is: 19.3.0-canary-d5736f09-20260507 pretty-format@30.2.0: dependencies: '@jest/schemas': 30.0.5 ansi-styles: 5.2.0 - react-is: 19.3.0-canary-dd453071-20260506 + react-is: 19.3.0-canary-d5736f09-20260507 pretty-ms@7.0.0: dependencies: @@ -34560,7 +34560,7 @@ snapshots: dependencies: loose-envify: 1.4.0 object-assign: 4.1.1 - react-is: 19.3.0-canary-dd453071-20260506 + react-is: 19.3.0-canary-d5736f09-20260507 property-information@5.6.0: dependencies: @@ -34785,157 +34785,157 @@ snapshots: transitivePeerDependencies: - supports-color - react-dom@0.0.0-experimental-dd453071-20260506(react@19.3.0-canary-dd453071-20260506): + react-dom@0.0.0-experimental-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507): dependencies: - react: 19.3.0-canary-dd453071-20260506 - scheduler: 0.28.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 + scheduler: 0.28.0-canary-d5736f09-20260507 - react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506): + react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507): dependencies: - react: 19.3.0-canary-dd453071-20260506 - scheduler: 0.28.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 + scheduler: 0.28.0-canary-d5736f09-20260507 - react-is@19.3.0-canary-dd453071-20260506: {} + react-is@19.3.0-canary-d5736f09-20260507: {} react-lifecycles-compat@3.0.4: {} - react-number-format@5.4.0(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506): + react-number-format@5.4.0(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507): dependencies: prop-types: 15.8.1 - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) react-refresh@0.12.0: {} - react-remove-scroll-bar@2.3.6(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506): + react-remove-scroll-bar@2.3.6(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507): dependencies: - react: 19.3.0-canary-dd453071-20260506 - react-style-singleton: 2.2.3(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) + react: 19.3.0-canary-d5736f09-20260507 + react-style-singleton: 2.2.3(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) tslib: 2.8.1 optionalDependencies: '@types/react': 19.2.10 - react-remove-scroll-bar@2.3.8(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506): + react-remove-scroll-bar@2.3.8(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507): dependencies: - react: 19.3.0-canary-dd453071-20260506 - react-style-singleton: 2.2.3(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) + react: 19.3.0-canary-d5736f09-20260507 + react-style-singleton: 2.2.3(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) tslib: 2.8.1 optionalDependencies: '@types/react': 19.2.10 - react-remove-scroll@2.5.10(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506): + react-remove-scroll@2.5.10(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507): dependencies: - react: 19.3.0-canary-dd453071-20260506 - react-remove-scroll-bar: 2.3.6(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - react-style-singleton: 2.2.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) + react: 19.3.0-canary-d5736f09-20260507 + react-remove-scroll-bar: 2.3.6(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + react-style-singleton: 2.2.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) tslib: 2.8.1 - use-callback-ref: 1.3.2(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - use-sidecar: 1.1.2(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) + use-callback-ref: 1.3.2(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + use-sidecar: 1.1.2(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) optionalDependencies: '@types/react': 19.2.10 - react-remove-scroll@2.7.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506): + react-remove-scroll@2.7.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507): dependencies: - react: 19.3.0-canary-dd453071-20260506 - react-remove-scroll-bar: 2.3.8(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - react-style-singleton: 2.2.3(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) + react: 19.3.0-canary-d5736f09-20260507 + react-remove-scroll-bar: 2.3.8(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + react-style-singleton: 2.2.3(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) tslib: 2.8.1 - use-callback-ref: 1.3.3(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) - use-sidecar: 1.1.3(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) + use-callback-ref: 1.3.3(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) + use-sidecar: 1.1.3(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) optionalDependencies: '@types/react': 19.2.10 - react-server-dom-turbopack@0.0.0-experimental-dd453071-20260506(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506): + react-server-dom-turbopack@0.0.0-experimental-d5736f09-20260507(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507): dependencies: acorn-loose: 8.3.0 neo-async: 2.6.1 - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) - react-server-dom-turbopack@19.3.0-canary-dd453071-20260506(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506): + react-server-dom-turbopack@19.3.0-canary-d5736f09-20260507(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507): dependencies: acorn-loose: 8.3.0 neo-async: 2.6.1 - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) - react-server-dom-webpack@0.0.0-experimental-dd453071-20260506(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)(webpack@5.98.0(@swc/core@1.11.24(@swc/helpers@0.5.15))): + react-server-dom-webpack@0.0.0-experimental-d5736f09-20260507(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)(webpack@5.98.0(@swc/core@1.11.24(@swc/helpers@0.5.15))): dependencies: acorn-loose: 8.3.0 neo-async: 2.6.1 - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) webpack: 5.98.0(@swc/core@1.11.24(@swc/helpers@0.5.15)) webpack-sources: 3.2.3(patch_hash=26afc15966a3fc37a3d1d366312a95ce66723513f6a3a720e4166a37147da8bd) - react-server-dom-webpack@19.3.0-canary-dd453071-20260506(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506)(webpack@5.98.0(@swc/core@1.11.24(@swc/helpers@0.5.15))): + react-server-dom-webpack@19.3.0-canary-d5736f09-20260507(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507)(webpack@5.98.0(@swc/core@1.11.24(@swc/helpers@0.5.15))): dependencies: acorn-loose: 8.3.0 neo-async: 2.6.1 - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) webpack: 5.98.0(@swc/core@1.11.24(@swc/helpers@0.5.15)) webpack-sources: 3.2.3(patch_hash=26afc15966a3fc37a3d1d366312a95ce66723513f6a3a720e4166a37147da8bd) - react-shallow-renderer@16.15.0(react@19.3.0-canary-dd453071-20260506): + react-shallow-renderer@16.15.0(react@19.3.0-canary-d5736f09-20260507): dependencies: object-assign: 4.1.1 - react: 19.3.0-canary-dd453071-20260506 - react-is: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 + react-is: 19.3.0-canary-d5736f09-20260507 - react-ssr-prepass@1.0.8(react-is@19.3.0-canary-dd453071-20260506)(react@19.3.0-canary-dd453071-20260506): + react-ssr-prepass@1.0.8(react-is@19.3.0-canary-d5736f09-20260507)(react@19.3.0-canary-d5736f09-20260507): dependencies: object-is: 1.0.2 - react: 19.3.0-canary-dd453071-20260506 - react-is: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 + react-is: 19.3.0-canary-d5736f09-20260507 - react-style-singleton@2.2.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506): + react-style-singleton@2.2.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507): dependencies: get-nonce: 1.0.1 invariant: 2.2.4 - react: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 tslib: 2.8.1 optionalDependencies: '@types/react': 19.2.10 - react-style-singleton@2.2.3(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506): + react-style-singleton@2.2.3(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507): dependencies: get-nonce: 1.0.1 - react: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 tslib: 2.8.1 optionalDependencies: '@types/react': 19.2.10 - react-test-renderer@18.2.0(react@19.3.0-canary-dd453071-20260506): + react-test-renderer@18.2.0(react@19.3.0-canary-d5736f09-20260507): dependencies: - react: 19.3.0-canary-dd453071-20260506 - react-is: 19.3.0-canary-dd453071-20260506 - react-shallow-renderer: 16.15.0(react@19.3.0-canary-dd453071-20260506) - scheduler: 0.28.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 + react-is: 19.3.0-canary-d5736f09-20260507 + react-shallow-renderer: 16.15.0(react@19.3.0-canary-d5736f09-20260507) + scheduler: 0.28.0-canary-d5736f09-20260507 - react-textarea-autosize@8.5.3(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506): + react-textarea-autosize@8.5.3(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507): dependencies: '@babel/runtime': 7.27.0 - react: 19.3.0-canary-dd453071-20260506 - use-composed-ref: 1.3.0(react@19.3.0-canary-dd453071-20260506) - use-latest: 1.2.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) + react: 19.3.0-canary-d5736f09-20260507 + use-composed-ref: 1.3.0(react@19.3.0-canary-d5736f09-20260507) + use-latest: 1.2.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) transitivePeerDependencies: - '@types/react' - react-virtualized@9.22.3(react-dom@19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506))(react@19.3.0-canary-dd453071-20260506): + react-virtualized@9.22.3(react-dom@19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507))(react@19.3.0-canary-d5736f09-20260507): dependencies: '@babel/runtime': 7.27.0 clsx: 1.1.1 dom-helpers: 5.2.1 loose-envify: 1.4.0 prop-types: 15.8.1 - react: 19.3.0-canary-dd453071-20260506 - react-dom: 19.3.0-canary-dd453071-20260506(react@19.3.0-canary-dd453071-20260506) + react: 19.3.0-canary-d5736f09-20260507 + react-dom: 19.3.0-canary-d5736f09-20260507(react@19.3.0-canary-d5736f09-20260507) react-lifecycles-compat: 3.0.4 - react@0.0.0-experimental-dd453071-20260506: {} + react@0.0.0-experimental-d5736f09-20260507: {} - react@19.3.0-canary-dd453071-20260506: {} + react@19.3.0-canary-d5736f09-20260507: {} read-all-stream@3.1.0: dependencies: @@ -35685,9 +35685,9 @@ snapshots: dependencies: xmlchars: 2.2.0 - scheduler@0.0.0-experimental-dd453071-20260506: {} + scheduler@0.0.0-experimental-d5736f09-20260507: {} - scheduler@0.28.0-canary-dd453071-20260506: {} + scheduler@0.28.0-canary-d5736f09-20260507: {} schema-utils@2.7.1: dependencies: @@ -36548,10 +36548,10 @@ snapshots: postcss: 7.0.32 postcss-load-plugins: 2.3.0 - styled-jsx@5.1.6(@babel/core@7.26.10)(babel-plugin-macros@3.1.0)(react@19.3.0-canary-dd453071-20260506): + styled-jsx@5.1.6(@babel/core@7.26.10)(babel-plugin-macros@3.1.0)(react@19.3.0-canary-d5736f09-20260507): dependencies: client-only: 0.0.1 - react: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 optionalDependencies: '@babel/core': 7.26.10 babel-plugin-macros: 3.1.0 @@ -36655,11 +36655,11 @@ snapshots: '@swc/counter': 0.1.3 webpack: 5.98.0(@swc/core@1.11.24(@swc/helpers@0.5.15))(esbuild@0.25.9) - swr@2.2.4(react@19.3.0-canary-dd453071-20260506): + swr@2.2.4(react@19.3.0-canary-d5736f09-20260507): dependencies: client-only: 0.0.1 - react: 19.3.0-canary-dd453071-20260506 - use-sync-external-store: 1.5.0(react@19.3.0-canary-dd453071-20260506) + react: 19.3.0-canary-d5736f09-20260507 + use-sync-external-store: 1.5.0(react@19.3.0-canary-d5736f09-20260507) symbol-observable@1.0.1: {} @@ -37507,9 +37507,9 @@ snapshots: unist-util-is: 6.0.0 unist-util-visit-parents: 6.0.1 - unistore@3.4.1(react@19.3.0-canary-dd453071-20260506): + unistore@3.4.1(react@19.3.0-canary-d5736f09-20260507): optionalDependencies: - react: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 universal-github-app-jwt@1.1.1: dependencies: @@ -37637,56 +37637,56 @@ snapshots: punycode: 1.4.1 qs: 6.14.0 - use-callback-ref@1.3.2(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506): + use-callback-ref@1.3.2(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507): dependencies: - react: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 tslib: 2.8.1 optionalDependencies: '@types/react': 19.2.10 - use-callback-ref@1.3.3(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506): + use-callback-ref@1.3.3(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507): dependencies: - react: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 tslib: 2.8.1 optionalDependencies: '@types/react': 19.2.10 - use-composed-ref@1.3.0(react@19.3.0-canary-dd453071-20260506): + use-composed-ref@1.3.0(react@19.3.0-canary-d5736f09-20260507): dependencies: - react: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 - use-isomorphic-layout-effect@1.1.2(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506): + use-isomorphic-layout-effect@1.1.2(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507): dependencies: - react: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 optionalDependencies: '@types/react': 19.2.10 - use-latest@1.2.1(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506): + use-latest@1.2.1(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507): dependencies: - react: 19.3.0-canary-dd453071-20260506 - use-isomorphic-layout-effect: 1.1.2(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506) + react: 19.3.0-canary-d5736f09-20260507 + use-isomorphic-layout-effect: 1.1.2(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507) optionalDependencies: '@types/react': 19.2.10 - use-sidecar@1.1.2(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506): + use-sidecar@1.1.2(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507): dependencies: detect-node-es: 1.1.0 - react: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 tslib: 2.8.1 optionalDependencies: '@types/react': 19.2.10 - use-sidecar@1.1.3(@types/react@19.2.10)(react@19.3.0-canary-dd453071-20260506): + use-sidecar@1.1.3(@types/react@19.2.10)(react@19.3.0-canary-d5736f09-20260507): dependencies: detect-node-es: 1.1.0 - react: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 tslib: 2.8.1 optionalDependencies: '@types/react': 19.2.10 - use-sync-external-store@1.5.0(react@19.3.0-canary-dd453071-20260506): + use-sync-external-store@1.5.0(react@19.3.0-canary-d5736f09-20260507): dependencies: - react: 19.3.0-canary-dd453071-20260506 + react: 19.3.0-canary-d5736f09-20260507 util-deprecate@1.0.2: {} From 7dc4cdd48c357b434ce21cbfae09211196bcb92d Mon Sep 17 00:00:00 2001 From: Hendrik Liebau Date: Wed, 13 May 2026 21:11:08 +0200 Subject: [PATCH 12/12] Show inner `"use cache"` as cause of nested-dynamic cache error (#93707) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When a `"use cache"` propagated a dynamic cache life (`revalidate: 0` or `expire` under 5 minutes) to a parent without an explicit `cacheLife`, the resulting error pointed only at the outer cache invocation. With the inner cache's call site missing, tracing which nested cache was responsible meant reading through the outer's body — fine when it's local code, much harder when the dynamism comes from a nested cache buried in a third-party dependency. This change attaches the inner invocation as `cause` of the error, so the dev redbox and the build log show two stacks: the outer that threw, and the inner that propagated the dynamic life. The inner call site has to be captured eagerly while `cache()` is still on the synchronous stack, because we only learn whether the inner resolved dynamic asynchronously — after `collectResult` finishes and `propagateCacheEntryMetadata` runs — and by then the inner's frames are no longer on the JS stack. We only construct the eager `Error` when the parent is itself a public `"use cache"` (the only case where this entry could become a propagated origin), so top-level caches skip the allocation. The eager `Error` is held on `cacheContext.dynamicNestedCacheError`; once propagation knows the inner resolved dynamic, it's copied onto the outer store's same-named field, then carried through the outer's own `collectResult` into its RDC entry — which the throw site finally reads back as `cause`. We keep the first dynamic child — the immediate origin from the throwing cache's perspective. The two nested-dynamic cache error messages also get a small cleanup: each used to write `"use cache"` two different ways within the same sentence (bare and backticked); both now write it the same way. localhost_3000_use-cache-low-expire_nested (1) --- packages/next/errors.json | 5 +- .../server/app-render/postponed-state.test.ts | 1 + .../work-unit-async-storage.external.ts | 7 + .../server/resume-data-cache/cache-store.ts | 5 + .../resume-data-cache.test.ts | 3 + .../src/server/use-cache/use-cache-errors.ts | 15 ++ .../src/server/use-cache/use-cache-wrapper.ts | 99 +++++++++++- .../cache-components-errors.test.ts | 148 +++++++++++++++--- 8 files changed, 254 insertions(+), 29 deletions(-) diff --git a/packages/next/errors.json b/packages/next/errors.json index bdad3454f4ec..e40b508787a3 100644 --- a/packages/next/errors.json +++ b/packages/next/errors.json @@ -1240,5 +1240,8 @@ "1239": "Unterminated JSON object in %s.", "1240": "Route \"%s\": Next.js encountered %s during the initial render.\\n\\nThis value must either be prerendered or computed per request.\\n\\nWays to fix this:\\n - Render at request time by adding a dynamic data access (e.g. \\`await connection()\\`) before this call\\n - Prerender and cache the value with \\`\"use cache\"\\`\\n - Render the value on the client with \\`\"use client\"\\`\\n%s\\nLearn more: %s", "1241": "Route \"%s\": Next.js encountered %s in a Client Component.\\n\\nThis value would be evaluated during the prerender and fixed at build time, instead of recomputed on each visit.\\n\\nWays to fix this:\\n - Wrap the Client Component in \\`\\`\\n - Move the read into a \\`useEffect\\` or event handler\\n\\nLearn more: %s", - "1242": "Route \"%s\": Next.js encountered %s without an explicit rendering intent.\\n\\nThis value can change between renders, so it must be either prerendered or computed later.\\n\\nWays to fix this:\\n - Render at request time by adding a dynamic data access (e.g. \\`await connection()\\`) before this call\\n - Prerender and cache the value with \\`\"use cache\"\\`\\n - Render the value on the client with \\`\"use client\"\\`\\n%s\\nLearn more: %s" + "1242": "Route \"%s\": Next.js encountered %s without an explicit rendering intent.\\n\\nThis value can change between renders, so it must be either prerendered or computed later.\\n\\nWays to fix this:\\n - Render at request time by adding a dynamic data access (e.g. \\`await connection()\\`) before this call\\n - Prerender and cache the value with \\`\"use cache\"\\`\\n - Render the value on the client with \\`\"use client\"\\`\\n%s\\nLearn more: %s", + "1243": "This \"use cache\" has a dynamic cache life that was propagated to its parent.", + "1244": "A \"use cache\" with short \\`expire\\` (under 5 minutes) is nested inside another \"use cache\" that has no explicit \\`cacheLife\\`, which is not allowed during prerendering. Add \\`cacheLife()\\` to the outer \"use cache\" to choose whether it should be prerendered (with longer \\`expire\\`) or remain dynamic (with short \\`expire\\`). Read more: https://nextjs.org/docs/messages/nested-use-cache-no-explicit-cachelife", + "1245": "A \"use cache\" with zero \\`revalidate\\` is nested inside another \"use cache\" that has no explicit \\`cacheLife\\`, which is not allowed during prerendering. Add \\`cacheLife()\\` to the outer \"use cache\" to choose whether it should be prerendered (with non-zero \\`revalidate\\`) or remain dynamic (with zero \\`revalidate\\`). Read more: https://nextjs.org/docs/messages/nested-use-cache-no-explicit-cachelife" } diff --git a/packages/next/src/server/app-render/postponed-state.test.ts b/packages/next/src/server/app-render/postponed-state.test.ts index 718a4030f703..2f5cc1bdba6b 100644 --- a/packages/next/src/server/app-render/postponed-state.test.ts +++ b/packages/next/src/server/app-render/postponed-state.test.ts @@ -45,6 +45,7 @@ describe('getDynamicHTMLPostponedState', () => { hasExplicitRevalidate: true, hasExplicitExpire: true, readRootParamNames: undefined, + dynamicNestedCacheError: undefined, }) ) diff --git a/packages/next/src/server/app-render/work-unit-async-storage.external.ts b/packages/next/src/server/app-render/work-unit-async-storage.external.ts index 728bd0e6023e..01731c1abf07 100644 --- a/packages/next/src/server/app-render/work-unit-async-storage.external.ts +++ b/packages/next/src/server/app-render/work-unit-async-storage.external.ts @@ -364,6 +364,13 @@ export interface PublicUseCacheStore extends CommonUseCacheStore { * Tracks which root param names were read during this cache invocation. */ readonly readRootParamNames: Set + /** + * The first nested public `'use cache'` invocation with a dynamic cache life + * (`revalidate === 0` or `expire < DYNAMIC_EXPIRE`) that propagated up to + * this store. Used as `cause` for the nested-dynamic cache error so the + * redbox can point at the inner invocation site, not just the outer one. + */ + dynamicNestedCacheError: Error | undefined } export interface PrivateUseCacheStore extends CommonUseCacheStore { diff --git a/packages/next/src/server/resume-data-cache/cache-store.ts b/packages/next/src/server/resume-data-cache/cache-store.ts index c644aebd4e85..15ead30e2cc5 100644 --- a/packages/next/src/server/resume-data-cache/cache-store.ts +++ b/packages/next/src/server/resume-data-cache/cache-store.ts @@ -92,6 +92,11 @@ export function parseUseCacheCacheStore( readRootParamNames: readRootParamNames ? new Set(readRootParamNames) : undefined, + // Serialized RDC entries are non-dynamic by construction (the + // serializer drops dynamic entries), so this is never produced from the + // wire — the throw path that consumes it is only reachable for dynamic + // entries, which only exist in the in-memory RDC. + dynamicNestedCacheError: undefined, }) ) } diff --git a/packages/next/src/server/resume-data-cache/resume-data-cache.test.ts b/packages/next/src/server/resume-data-cache/resume-data-cache.test.ts index 2908a7ab29e0..722d5f450211 100644 --- a/packages/next/src/server/resume-data-cache/resume-data-cache.test.ts +++ b/packages/next/src/server/resume-data-cache/resume-data-cache.test.ts @@ -26,6 +26,7 @@ function createMockedCache() { hasExplicitRevalidate: true, hasExplicitExpire: true, readRootParamNames: undefined, + dynamicNestedCacheError: undefined, }) ) @@ -44,6 +45,7 @@ function createMockedCache() { hasExplicitRevalidate: true, hasExplicitExpire: true, readRootParamNames: undefined, + dynamicNestedCacheError: undefined, }) ) @@ -62,6 +64,7 @@ function createMockedCache() { hasExplicitRevalidate: true, hasExplicitExpire: true, readRootParamNames: undefined, + dynamicNestedCacheError: undefined, }) ) diff --git a/packages/next/src/server/use-cache/use-cache-errors.ts b/packages/next/src/server/use-cache/use-cache-errors.ts index 1215ebb50d68..16b8dc7e803f 100644 --- a/packages/next/src/server/use-cache/use-cache-errors.ts +++ b/packages/next/src/server/use-cache/use-cache-errors.ts @@ -13,3 +13,18 @@ export class UseCacheDeadlockError extends Error { ) } } + +/** + * Used purely as `cause` for the nested-dynamic cache error: its captured stack + * points at the inner `"use cache"` invocation that propagated a dynamic cache + * life up to the outer cache. Constructed eagerly in `cache()` while the caller + * is still on the synchronous stack — see use-cache-wrapper.ts. + */ +export class NestedDynamicUseCacheError extends Error { + constructor() { + super( + 'This "use cache" has a dynamic cache life that was propagated to its parent.' + ) + this.name = 'Nested dynamic "use cache"' + } +} diff --git a/packages/next/src/server/use-cache/use-cache-wrapper.ts b/packages/next/src/server/use-cache/use-cache-wrapper.ts index ce8dc61112dd..c320d4a4f281 100644 --- a/packages/next/src/server/use-cache/use-cache-wrapper.ts +++ b/packages/next/src/server/use-cache/use-cache-wrapper.ts @@ -59,7 +59,11 @@ import { DYNAMIC_EXPIRE, RUNTIME_PREFETCH_DYNAMIC_STALE } from './constants' import { NEXT_CACHE_ROOT_PARAM_TAG_ID } from '../../lib/constants' import type { CacheHandler } from '../lib/cache-handlers/types' import { getCacheHandler } from './handlers' -import { UseCacheDeadlockError, UseCacheTimeoutError } from './use-cache-errors' +import { + NestedDynamicUseCacheError, + UseCacheDeadlockError, + UseCacheTimeoutError, +} from './use-cache-errors' import { createHangingInputAbortSignal, postponeWithTracking, @@ -106,6 +110,15 @@ interface PublicCacheContext { readonly functionId: string /** The cache handler kind (first arg of `cache()`, e.g. 'default'). */ readonly handlerKind: string + /** + * Eagerly captured at `cache()` entry, pointing at this invocation's call + * site. Only set when the outer is itself a public `'use cache'` (i.e. when + * this entry could become the propagated origin of a nested-dynamic cache + * error in the parent). When this cache resolves dynamic, this is copied into + * `outerWorkUnitStore.dynamicNestedCacheError` so the parent's error can use + * it as `cause`. + */ + readonly dynamicNestedCacheError: Error | undefined } type CacheContext = PrivateCacheContext | PublicCacheContext @@ -148,6 +161,7 @@ interface CacheResultMetadata { readonly readRootParamNames: ReadonlySet | undefined readonly hasExplicitRevalidate: boolean | undefined readonly hasExplicitExpire: boolean | undefined + readonly dynamicNestedCacheError: Error | undefined } /** @@ -268,7 +282,7 @@ const findSourceMapURL = const nestedCacheZeroRevalidateErrorMessage = `A "use cache" with zero \`revalidate\` is nested inside another "use cache" ` + `that has no explicit \`cacheLife\`, which is not allowed during ` + - `prerendering. Add \`cacheLife()\` to the outer \`"use cache"\` to choose ` + + `prerendering. Add \`cacheLife()\` to the outer "use cache" to choose ` + `whether it should be prerendered (with non-zero \`revalidate\`) or remain ` + `dynamic (with zero \`revalidate\`). Read more: ` + `https://nextjs.org/docs/messages/nested-use-cache-no-explicit-cachelife` @@ -276,7 +290,7 @@ const nestedCacheZeroRevalidateErrorMessage = const nestedCacheShortExpireErrorMessage = `A "use cache" with short \`expire\` (under 5 minutes) is nested inside ` + `another "use cache" that has no explicit \`cacheLife\`, which is not ` + - `allowed during prerendering. Add \`cacheLife()\` to the outer \`"use cache"\` ` + + `allowed during prerendering. Add \`cacheLife()\` to the outer "use cache" ` + `to choose whether it should be prerendered (with longer \`expire\`) or remain ` + `dynamic (with short \`expire\`). Read more: ` + `https://nextjs.org/docs/messages/nested-use-cache-no-explicit-cachelife` @@ -381,6 +395,7 @@ function saveSharedCacheEntryToResumeDataCache( readRootParamNames: metadata.readRootParamNames, hasExplicitRevalidate: metadata.hasExplicitRevalidate, hasExplicitExpire: metadata.hasExplicitExpire, + dynamicNestedCacheError: metadata.dynamicNestedCacheError, })) prerenderResumeDataCache.cache.set(serializedCacheKey, rdcResult) @@ -585,6 +600,7 @@ function createUseCacheStore( rootParams: outerWorkUnitStore.rootParams, readRootParamNames: new Set(), outerOwnerStack: cacheContext.outerOwnerStack, + dynamicNestedCacheError: undefined, } } } @@ -767,6 +783,17 @@ function propagateCacheEntryMetadata( cacheContext.outerWorkUnitStore.readRootParamNames.add(paramName) } } + // If this entry's cache life is dynamic, record this invocation as the + // origin to use as `cause` when the outer cache surfaces the + // nested-dynamic cache error. `??=` keeps the first occurrence so the + // cause points at the immediate dynamic child. + if ( + cacheContext.dynamicNestedCacheError !== undefined && + (metadata.revalidate === 0 || metadata.expire < DYNAMIC_EXPIRE) + ) { + cacheContext.outerWorkUnitStore.dynamicNestedCacheError ??= + cacheContext.dynamicNestedCacheError + } // fallthrough case 'private-cache': case 'prerender': @@ -874,6 +901,15 @@ export interface CollectedCacheResult { * don't have this information. */ readRootParamNames: ReadonlySet | undefined + /** + * The `Error` carried up from the first nested public `'use cache'` + * invocation that propagated a dynamic cache life into this entry, captured + * eagerly at that inner invocation's `cache()` entry. Used as `cause` for the + * nested-dynamic cache error so the redbox can point at the inner invocation + * site, not just the outer one. Lives in-memory only — intentionally dropped + * from the serialized RDC because dynamic entries aren't serialized either. + */ + dynamicNestedCacheError: Error | undefined } async function collectResult( @@ -958,6 +994,12 @@ async function collectResult( innerCacheStore.type === 'cache' ? innerCacheStore.readRootParamNames : undefined, + // The store accumulates this from nested public caches that propagated a + // dynamic life into us. + dynamicNestedCacheError: + innerCacheStore.type === 'cache' + ? innerCacheStore.dynamicNestedCacheError + : undefined, } if (!cacheContext.skipPropagation) { @@ -970,6 +1012,7 @@ async function collectResult( hasExplicitRevalidate: collected.hasExplicitRevalidate, hasExplicitExpire: collected.hasExplicitExpire, readRootParamNames: collected.readRootParamNames, + dynamicNestedCacheError: collected.dynamicNestedCacheError, }) const cacheSignal = getCacheSignal(cacheContext.outerWorkUnitStore) @@ -1338,12 +1381,14 @@ function cloneCacheResult( hasExplicitRevalidate: result.hasExplicitRevalidate, hasExplicitExpire: result.hasExplicitExpire, readRootParamNames: result.readRootParamNames, + dynamicNestedCacheError: result.dynamicNestedCacheError, }, { entry: entryB, hasExplicitRevalidate: result.hasExplicitRevalidate, hasExplicitExpire: result.hasExplicitExpire, readRootParamNames: result.readRootParamNames, + dynamicNestedCacheError: result.dynamicNestedCacheError, }, ] } @@ -1560,12 +1605,36 @@ export async function cache( throw new InvariantError( `${expression} must not be used within a client component. Next.js should be preventing ${expression} from being allowed in client components statically, but did not in this case.` ) + case 'cache': { + // Eagerly capture this invocation's call site while still synchronous + // in `cache()`. Used as `cause` of the nested-dynamic cache error + // when the outer cache (whose body never re-runs during the final + // prerender) throws. Only constructed when the parent is itself a + // public `'use cache'` — otherwise this entry can never propagate + // dynamism into that error and the allocation would be wasted. Private + // parents are intentionally excluded: `'use cache: private'` is + // dynamic-by-definition in prerendering and deferred to the runtime + // stage in dev requests, so a public cache nested inside one never + // triggers the throw upstream. + const dynamicNestedCacheError = new NestedDynamicUseCacheError() + Error.captureStackTrace(dynamicNestedCacheError, cache) + applyOwnerStack(dynamicNestedCacheError) + cacheContext = { + kind: 'public', + outerWorkUnitStore: workUnitStore, + skipPropagation: false, + outerOwnerStack, + functionId: id, + handlerKind: kind, + dynamicNestedCacheError, + } + break + } case 'prerender': case 'prerender-runtime': case 'prerender-ppr': case 'prerender-legacy': case 'request': - case 'cache': case 'private-cache': // TODO: We should probably forbid nesting "use cache" inside // unstable_cache. (fallthrough) @@ -1578,6 +1647,7 @@ export async function cache( outerOwnerStack, functionId: id, handlerKind: kind, + dynamicNestedCacheError: undefined, } break default: @@ -1988,7 +2058,9 @@ export async function cache( if (rdcResult.entry.revalidate === 0) { if (rdcResult.hasExplicitRevalidate === false) { throw wrapAsInvalidDynamicUsageError( - new Error(nestedCacheZeroRevalidateErrorMessage) + new Error(nestedCacheZeroRevalidateErrorMessage, { + cause: rdcResult.dynamicNestedCacheError, + }) ) } debug?.( @@ -1999,7 +2071,9 @@ export async function cache( } else { if (rdcResult.hasExplicitExpire === false) { throw wrapAsInvalidDynamicUsageError( - new Error(nestedCacheShortExpireErrorMessage) + new Error(nestedCacheShortExpireErrorMessage, { + cause: rdcResult.dynamicNestedCacheError, + }) ) } debug?.( @@ -2036,7 +2110,9 @@ export async function cache( rdcResult.hasExplicitRevalidate === false ) { throw wrapAsInvalidDynamicUsageError( - new Error(nestedCacheZeroRevalidateErrorMessage) + new Error(nestedCacheZeroRevalidateErrorMessage, { + cause: rdcResult.dynamicNestedCacheError, + }) ) } if ( @@ -2044,7 +2120,9 @@ export async function cache( rdcResult.hasExplicitExpire === false ) { throw wrapAsInvalidDynamicUsageError( - new Error(nestedCacheShortExpireErrorMessage) + new Error(nestedCacheShortExpireErrorMessage, { + cause: rdcResult.dynamicNestedCacheError, + }) ) } // We delay the cache here so that it doesn't resolve in the static task -- @@ -2154,6 +2232,7 @@ export async function cache( hasExplicitRevalidate: rdcResult.hasExplicitRevalidate, hasExplicitExpire: rdcResult.hasExplicitExpire, readRootParamNames: rdcResult.readRootParamNames, + dynamicNestedCacheError: rdcResult.dynamicNestedCacheError, }) const [streamA, streamB] = rdcResult.entry.value.tee() @@ -2685,6 +2764,7 @@ export async function cache( hasExplicitRevalidate: collected.hasExplicitRevalidate, hasExplicitExpire: collected.hasExplicitExpire, readRootParamNames: collected.readRootParamNames, + dynamicNestedCacheError: collected.dynamicNestedCacheError, })) const sharedCacheEntry = new SharedCacheEntry( @@ -2720,6 +2800,8 @@ export async function cache( // set this to undefined here. hasExplicitRevalidate: undefined, hasExplicitExpire: undefined, + // The same applies to the dynamic nested cache error. + dynamicNestedCacheError: undefined, } maybePropagateCacheEntryMetadata(cacheContext, entryMetadata) @@ -2746,6 +2828,7 @@ export async function cache( hasExplicitRevalidate: entryMetadata.hasExplicitRevalidate, hasExplicitExpire: entryMetadata.hasExplicitExpire, readRootParamNames: entryMetadata.readRootParamNames, + dynamicNestedCacheError: entryMetadata.dynamicNestedCacheError, }) ) } else { diff --git a/test/e2e/app-dir/cache-components-errors/cache-components-errors.test.ts b/test/e2e/app-dir/cache-components-errors/cache-components-errors.test.ts index cb974bb0c576..cec32123c924 100644 --- a/test/e2e/app-dir/cache-components-errors/cache-components-errors.test.ts +++ b/test/e2e/app-dir/cache-components-errors/cache-components-errors.test.ts @@ -3281,8 +3281,22 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` await expect(browser).toDisplayCollapsedRedbox(` { - "code": "E1009", - "description": "A "use cache" with short \`expire\` (under 5 minutes) is nested inside another "use cache" that has no explicit \`cacheLife\`, which is not allowed during prerendering. Add \`cacheLife()\` to the outer \`"use cache"\` to choose whether it should be prerendered (with longer \`expire\`) or remain dynamic (with short \`expire\`). Read more: https://nextjs.org/docs/messages/nested-use-cache-no-explicit-cachelife", + "cause": [ + { + "label": "Caused by: Nested dynamic "use cache"", + "message": "This "use cache" has a dynamic cache life that was propagated to its parent.", + "source": "app/use-cache-low-expire/nested/page.tsx (3:1) @ innerCache + > 3 | async function innerCache() { + | ^", + "stack": [ + "innerCache app/use-cache-low-expire/nested/page.tsx (3:1)", + "outerCache app/use-cache-low-expire/nested/page.tsx (14:10)", + "Page ", + ], + }, + ], + "code": "E1244", + "description": "A "use cache" with short \`expire\` (under 5 minutes) is nested inside another "use cache" that has no explicit \`cacheLife\`, which is not allowed during prerendering. Add \`cacheLife()\` to the outer "use cache" to choose whether it should be prerendered (with longer \`expire\`) or remain dynamic (with short \`expire\`). Read more: https://nextjs.org/docs/messages/nested-use-cache-no-explicit-cachelife", "environmentLabel": "Server", "label": "Console Error", "source": "app/use-cache-low-expire/nested/page.tsx (20:14) @ Page @@ -3310,7 +3324,7 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` if (isTurbopack) { if (isDebugPrerender) { expect(output).toMatchInlineSnapshot(` - "Error: A "use cache" with short \`expire\` (under 5 minutes) is nested inside another "use cache" that has no explicit \`cacheLife\`, which is not allowed during prerendering. Add \`cacheLife()\` to the outer \`"use cache"\` to choose whether it should be prerendered (with longer \`expire\`) or remain dynamic (with short \`expire\`). Read more: https://nextjs.org/docs/messages/nested-use-cache-no-explicit-cachelife + "Error: A "use cache" with short \`expire\` (under 5 minutes) is nested inside another "use cache" that has no explicit \`cacheLife\`, which is not allowed during prerendering. Add \`cacheLife()\` to the outer "use cache" to choose whether it should be prerendered (with longer \`expire\`) or remain dynamic (with short \`expire\`). Read more: https://nextjs.org/docs/messages/nested-use-cache-no-explicit-cachelife at async Page (app/use-cache-low-expire/nested/page.tsx:20:14) 18 | let result: number | undefined 19 | try { @@ -3318,7 +3332,19 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` | ^ 21 | } catch {} 22 | - 23 | return ( + 23 | return ( { + [cause]: Nested dynamic "use cache": This "use cache" has a dynamic cache life that was propagated to its parent. + at innerCache (app/use-cache-low-expire/nested/page.tsx:3:1) + at outerCache (app/use-cache-low-expire/nested/page.tsx:14:10) + at Page () + 1 | import { cacheLife } from 'next/cache' + 2 | + > 3 | async function innerCache() { + | ^ + 4 | 'use cache' + 5 | cacheLife({ expire: 60 }) // 1 minute, under the 5 minute threshold + 6 | return Math.random() + } To debug the issue, start the app in development mode by running \`next dev\`, then open "/use-cache-low-expire/nested" in your browser to investigate the error. Error occurred prerendering page "/use-cache-low-expire/nested". Read more: https://nextjs.org/docs/messages/prerender-error @@ -3327,7 +3353,7 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` `) } else { expect(output).toMatchInlineSnapshot(` - "Error: A "use cache" with short \`expire\` (under 5 minutes) is nested inside another "use cache" that has no explicit \`cacheLife\`, which is not allowed during prerendering. Add \`cacheLife()\` to the outer \`"use cache"\` to choose whether it should be prerendered (with longer \`expire\`) or remain dynamic (with short \`expire\`). Read more: https://nextjs.org/docs/messages/nested-use-cache-no-explicit-cachelife + "Error: A "use cache" with short \`expire\` (under 5 minutes) is nested inside another "use cache" that has no explicit \`cacheLife\`, which is not allowed during prerendering. Add \`cacheLife()\` to the outer "use cache" to choose whether it should be prerendered (with longer \`expire\`) or remain dynamic (with short \`expire\`). Read more: https://nextjs.org/docs/messages/nested-use-cache-no-explicit-cachelife at async k (app/use-cache-low-expire/nested/page.tsx:20:14) 18 | let result: number | undefined 19 | try { @@ -3335,7 +3361,18 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` | ^ 21 | } catch {} 22 | - 23 | return ( + 23 | return ( { + [cause]: Nested dynamic "use cache": This "use cache" has a dynamic cache life that was propagated to its parent. + at (app/use-cache-low-expire/nested/page.tsx:3:1) + at a (app/use-cache-low-expire/nested/page.tsx:3:16) + 1 | import { cacheLife } from 'next/cache' + 2 | + > 3 | async function innerCache() { + | ^ + 4 | 'use cache' + 5 | cacheLife({ expire: 60 }) // 1 minute, under the 5 minute threshold + 6 | return Math.random() + } To get a more detailed stack trace and pinpoint the issue, try one of the following: - Start the app in development mode by running \`next dev\`, then open "/use-cache-low-expire/nested" in your browser to investigate the error. - Rerun the production build with \`next build --debug-prerender\` to generate better stack traces. @@ -3346,7 +3383,7 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` } else { if (isDebugPrerender) { expect(output).toMatchInlineSnapshot(` - "Error: A "use cache" with short \`expire\` (under 5 minutes) is nested inside another "use cache" that has no explicit \`cacheLife\`, which is not allowed during prerendering. Add \`cacheLife()\` to the outer \`"use cache"\` to choose whether it should be prerendered (with longer \`expire\`) or remain dynamic (with short \`expire\`). Read more: https://nextjs.org/docs/messages/nested-use-cache-no-explicit-cachelife + "Error: A "use cache" with short \`expire\` (under 5 minutes) is nested inside another "use cache" that has no explicit \`cacheLife\`, which is not allowed during prerendering. Add \`cacheLife()\` to the outer "use cache" to choose whether it should be prerendered (with longer \`expire\`) or remain dynamic (with short \`expire\`). Read more: https://nextjs.org/docs/messages/nested-use-cache-no-explicit-cachelife at async Page (webpack:///app/use-cache-low-expire/nested/page.tsx:20:14) 18 | let result: number | undefined 19 | try { @@ -3354,7 +3391,19 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` | ^ 21 | } catch {} 22 | - 23 | return ( + 23 | return ( { + [cause]: Nested dynamic "use cache": This "use cache" has a dynamic cache life that was propagated to its parent. + at innerCache (webpack:///app/use-cache-low-expire/nested/page.tsx:3:1) + at outerCache (webpack:///app/use-cache-low-expire/nested/page.tsx:14:10) + at Page () + 1 | import { cacheLife } from 'next/cache' + 2 | + > 3 | async function innerCache() { + | ^ + 4 | 'use cache' + 5 | cacheLife({ expire: 60 }) // 1 minute, under the 5 minute threshold + 6 | return Math.random() + } To debug the issue, start the app in development mode by running \`next dev\`, then open "/use-cache-low-expire/nested" in your browser to investigate the error. Error occurred prerendering page "/use-cache-low-expire/nested". Read more: https://nextjs.org/docs/messages/prerender-error @@ -3363,8 +3412,13 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` `) } else { expect(output).toMatchInlineSnapshot(` - "Error: A "use cache" with short \`expire\` (under 5 minutes) is nested inside another "use cache" that has no explicit \`cacheLife\`, which is not allowed during prerendering. Add \`cacheLife()\` to the outer \`"use cache"\` to choose whether it should be prerendered (with longer \`expire\`) or remain dynamic (with short \`expire\`). Read more: https://nextjs.org/docs/messages/nested-use-cache-no-explicit-cachelife - at a () + "Error: A "use cache" with short \`expire\` (under 5 minutes) is nested inside another "use cache" that has no explicit \`cacheLife\`, which is not allowed during prerendering. Add \`cacheLife()\` to the outer "use cache" to choose whether it should be prerendered (with longer \`expire\`) or remain dynamic (with short \`expire\`). Read more: https://nextjs.org/docs/messages/nested-use-cache-no-explicit-cachelife + at a () { + [cause]: Nested dynamic "use cache": This "use cache" has a dynamic cache life that was propagated to its parent. + at b () + at c () + at d () + } To get a more detailed stack trace and pinpoint the issue, try one of the following: - Start the app in development mode by running \`next dev\`, then open "/use-cache-low-expire/nested" in your browser to investigate the error. - Rerun the production build with \`next build --debug-prerender\` to generate better stack traces. @@ -3632,8 +3686,22 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` await expect(browser).toDisplayCollapsedRedbox(` { - "code": "E1000", - "description": "A "use cache" with zero \`revalidate\` is nested inside another "use cache" that has no explicit \`cacheLife\`, which is not allowed during prerendering. Add \`cacheLife()\` to the outer \`"use cache"\` to choose whether it should be prerendered (with non-zero \`revalidate\`) or remain dynamic (with zero \`revalidate\`). Read more: https://nextjs.org/docs/messages/nested-use-cache-no-explicit-cachelife", + "cause": [ + { + "label": "Caused by: Nested dynamic "use cache"", + "message": "This "use cache" has a dynamic cache life that was propagated to its parent.", + "source": "app/use-cache-revalidate-0/nested/page.tsx (3:1) @ innerCache + > 3 | async function innerCache() { + | ^", + "stack": [ + "innerCache app/use-cache-revalidate-0/nested/page.tsx (3:1)", + "outerCache app/use-cache-revalidate-0/nested/page.tsx (14:10)", + "Page ", + ], + }, + ], + "code": "E1245", + "description": "A "use cache" with zero \`revalidate\` is nested inside another "use cache" that has no explicit \`cacheLife\`, which is not allowed during prerendering. Add \`cacheLife()\` to the outer "use cache" to choose whether it should be prerendered (with non-zero \`revalidate\`) or remain dynamic (with zero \`revalidate\`). Read more: https://nextjs.org/docs/messages/nested-use-cache-no-explicit-cachelife", "environmentLabel": "Server", "label": "Console Error", "source": "app/use-cache-revalidate-0/nested/page.tsx (20:14) @ Page @@ -3661,7 +3729,7 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` if (isTurbopack) { if (isDebugPrerender) { expect(output).toMatchInlineSnapshot(` - "Error: A "use cache" with zero \`revalidate\` is nested inside another "use cache" that has no explicit \`cacheLife\`, which is not allowed during prerendering. Add \`cacheLife()\` to the outer \`"use cache"\` to choose whether it should be prerendered (with non-zero \`revalidate\`) or remain dynamic (with zero \`revalidate\`). Read more: https://nextjs.org/docs/messages/nested-use-cache-no-explicit-cachelife + "Error: A "use cache" with zero \`revalidate\` is nested inside another "use cache" that has no explicit \`cacheLife\`, which is not allowed during prerendering. Add \`cacheLife()\` to the outer "use cache" to choose whether it should be prerendered (with non-zero \`revalidate\`) or remain dynamic (with zero \`revalidate\`). Read more: https://nextjs.org/docs/messages/nested-use-cache-no-explicit-cachelife at async Page (app/use-cache-revalidate-0/nested/page.tsx:20:14) 18 | let result: number | undefined 19 | try { @@ -3669,7 +3737,19 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` | ^ 21 | } catch {} 22 | - 23 | return ( + 23 | return ( { + [cause]: Nested dynamic "use cache": This "use cache" has a dynamic cache life that was propagated to its parent. + at innerCache (app/use-cache-revalidate-0/nested/page.tsx:3:1) + at outerCache (app/use-cache-revalidate-0/nested/page.tsx:14:10) + at Page () + 1 | import { cacheLife } from 'next/cache' + 2 | + > 3 | async function innerCache() { + | ^ + 4 | 'use cache' + 5 | cacheLife({ revalidate: 0 }) + 6 | return Math.random() + } To debug the issue, start the app in development mode by running \`next dev\`, then open "/use-cache-revalidate-0/nested" in your browser to investigate the error. Error occurred prerendering page "/use-cache-revalidate-0/nested". Read more: https://nextjs.org/docs/messages/prerender-error @@ -3678,7 +3758,7 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` `) } else { expect(output).toMatchInlineSnapshot(` - "Error: A "use cache" with zero \`revalidate\` is nested inside another "use cache" that has no explicit \`cacheLife\`, which is not allowed during prerendering. Add \`cacheLife()\` to the outer \`"use cache"\` to choose whether it should be prerendered (with non-zero \`revalidate\`) or remain dynamic (with zero \`revalidate\`). Read more: https://nextjs.org/docs/messages/nested-use-cache-no-explicit-cachelife + "Error: A "use cache" with zero \`revalidate\` is nested inside another "use cache" that has no explicit \`cacheLife\`, which is not allowed during prerendering. Add \`cacheLife()\` to the outer "use cache" to choose whether it should be prerendered (with non-zero \`revalidate\`) or remain dynamic (with zero \`revalidate\`). Read more: https://nextjs.org/docs/messages/nested-use-cache-no-explicit-cachelife at async k (app/use-cache-revalidate-0/nested/page.tsx:20:14) 18 | let result: number | undefined 19 | try { @@ -3686,7 +3766,18 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` | ^ 21 | } catch {} 22 | - 23 | return ( + 23 | return ( { + [cause]: Nested dynamic "use cache": This "use cache" has a dynamic cache life that was propagated to its parent. + at (app/use-cache-revalidate-0/nested/page.tsx:3:1) + at a (app/use-cache-revalidate-0/nested/page.tsx:3:16) + 1 | import { cacheLife } from 'next/cache' + 2 | + > 3 | async function innerCache() { + | ^ + 4 | 'use cache' + 5 | cacheLife({ revalidate: 0 }) + 6 | return Math.random() + } To get a more detailed stack trace and pinpoint the issue, try one of the following: - Start the app in development mode by running \`next dev\`, then open "/use-cache-revalidate-0/nested" in your browser to investigate the error. - Rerun the production build with \`next build --debug-prerender\` to generate better stack traces. @@ -3697,7 +3788,7 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` } else { if (isDebugPrerender) { expect(output).toMatchInlineSnapshot(` - "Error: A "use cache" with zero \`revalidate\` is nested inside another "use cache" that has no explicit \`cacheLife\`, which is not allowed during prerendering. Add \`cacheLife()\` to the outer \`"use cache"\` to choose whether it should be prerendered (with non-zero \`revalidate\`) or remain dynamic (with zero \`revalidate\`). Read more: https://nextjs.org/docs/messages/nested-use-cache-no-explicit-cachelife + "Error: A "use cache" with zero \`revalidate\` is nested inside another "use cache" that has no explicit \`cacheLife\`, which is not allowed during prerendering. Add \`cacheLife()\` to the outer "use cache" to choose whether it should be prerendered (with non-zero \`revalidate\`) or remain dynamic (with zero \`revalidate\`). Read more: https://nextjs.org/docs/messages/nested-use-cache-no-explicit-cachelife at async Page (webpack:///app/use-cache-revalidate-0/nested/page.tsx:20:14) 18 | let result: number | undefined 19 | try { @@ -3705,7 +3796,19 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` | ^ 21 | } catch {} 22 | - 23 | return ( + 23 | return ( { + [cause]: Nested dynamic "use cache": This "use cache" has a dynamic cache life that was propagated to its parent. + at innerCache (webpack:///app/use-cache-revalidate-0/nested/page.tsx:3:1) + at outerCache (webpack:///app/use-cache-revalidate-0/nested/page.tsx:14:10) + at Page () + 1 | import { cacheLife } from 'next/cache' + 2 | + > 3 | async function innerCache() { + | ^ + 4 | 'use cache' + 5 | cacheLife({ revalidate: 0 }) + 6 | return Math.random() + } To debug the issue, start the app in development mode by running \`next dev\`, then open "/use-cache-revalidate-0/nested" in your browser to investigate the error. Error occurred prerendering page "/use-cache-revalidate-0/nested". Read more: https://nextjs.org/docs/messages/prerender-error @@ -3714,8 +3817,13 @@ Learn more: https://nextjs.org/docs/messages/blocking-route` `) } else { expect(output).toMatchInlineSnapshot(` - "Error: A "use cache" with zero \`revalidate\` is nested inside another "use cache" that has no explicit \`cacheLife\`, which is not allowed during prerendering. Add \`cacheLife()\` to the outer \`"use cache"\` to choose whether it should be prerendered (with non-zero \`revalidate\`) or remain dynamic (with zero \`revalidate\`). Read more: https://nextjs.org/docs/messages/nested-use-cache-no-explicit-cachelife - at a () + "Error: A "use cache" with zero \`revalidate\` is nested inside another "use cache" that has no explicit \`cacheLife\`, which is not allowed during prerendering. Add \`cacheLife()\` to the outer "use cache" to choose whether it should be prerendered (with non-zero \`revalidate\`) or remain dynamic (with zero \`revalidate\`). Read more: https://nextjs.org/docs/messages/nested-use-cache-no-explicit-cachelife + at a () { + [cause]: Nested dynamic "use cache": This "use cache" has a dynamic cache life that was propagated to its parent. + at b () + at c () + at d () + } To get a more detailed stack trace and pinpoint the issue, try one of the following: - Start the app in development mode by running \`next dev\`, then open "/use-cache-revalidate-0/nested" in your browser to investigate the error. - Rerun the production build with \`next build --debug-prerender\` to generate better stack traces.