diff --git a/package.json b/package.json index 741c60152905bc..3a5893b8244e62 100644 --- a/package.json +++ b/package.json @@ -197,7 +197,7 @@ "eslint-plugin-jsdoc": "48.0.4", "eslint-plugin-mdx": "3.1.5", "eslint-plugin-react": "7.37.0", - "eslint-plugin-react-hooks": "0.0.0-experimental-dd048c3b-20251105", + "eslint-plugin-react-hooks": "0.0.0-experimental-5a2205ba-20251105", "event-stream": "4.0.1", "execa": "2.0.3", "expect": "29.7.0", @@ -257,16 +257,16 @@ "pretty-ms": "7.0.0", "random-seed": "0.3.0", "react": "19.0.0", - "react-builtin": "npm:react@19.3.0-canary-dd048c3b-20251105", + "react-builtin": "npm:react@19.3.0-canary-5a2205ba-20251105", "react-dom": "19.0.0", - "react-dom-builtin": "npm:react-dom@19.3.0-canary-dd048c3b-20251105", - "react-dom-experimental-builtin": "npm:react-dom@0.0.0-experimental-dd048c3b-20251105", - "react-experimental-builtin": "npm:react@0.0.0-experimental-dd048c3b-20251105", - "react-is-builtin": "npm:react-is@19.3.0-canary-dd048c3b-20251105", - "react-server-dom-turbopack": "19.3.0-canary-dd048c3b-20251105", - "react-server-dom-turbopack-experimental": "npm:react-server-dom-turbopack@0.0.0-experimental-dd048c3b-20251105", - "react-server-dom-webpack": "19.3.0-canary-dd048c3b-20251105", - "react-server-dom-webpack-experimental": "npm:react-server-dom-webpack@0.0.0-experimental-dd048c3b-20251105", + "react-dom-builtin": "npm:react-dom@19.3.0-canary-5a2205ba-20251105", + "react-dom-experimental-builtin": "npm:react-dom@0.0.0-experimental-5a2205ba-20251105", + "react-experimental-builtin": "npm:react@0.0.0-experimental-5a2205ba-20251105", + "react-is-builtin": "npm:react-is@19.3.0-canary-5a2205ba-20251105", + "react-server-dom-turbopack": "19.3.0-canary-5a2205ba-20251105", + "react-server-dom-turbopack-experimental": "npm:react-server-dom-turbopack@0.0.0-experimental-5a2205ba-20251105", + "react-server-dom-webpack": "19.3.0-canary-5a2205ba-20251105", + "react-server-dom-webpack-experimental": "npm:react-server-dom-webpack@0.0.0-experimental-5a2205ba-20251105", "react-ssr-prepass": "1.0.8", "react-virtualized": "9.22.3", "relay-compiler": "13.0.2", @@ -276,8 +276,8 @@ "resolve-from": "5.0.0", "sass": "1.54.0", "satori": "0.15.2", - "scheduler-builtin": "npm:scheduler@0.28.0-canary-dd048c3b-20251105", - "scheduler-experimental-builtin": "npm:scheduler@0.0.0-experimental-dd048c3b-20251105", + "scheduler-builtin": "npm:scheduler@0.28.0-canary-5a2205ba-20251105", + "scheduler-experimental-builtin": "npm:scheduler@0.0.0-experimental-5a2205ba-20251105", "seedrandom": "3.0.5", "semver": "7.3.7", "serve-handler": "6.1.6", @@ -322,10 +322,10 @@ "@types/react-dom": "19.2.1", "@types/retry": "0.12.0", "jest-snapshot": "30.0.0-alpha.6", - "react": "19.3.0-canary-dd048c3b-20251105", - "react-dom": "19.3.0-canary-dd048c3b-20251105", - "react-is": "19.3.0-canary-dd048c3b-20251105", - "scheduler": "0.28.0-canary-dd048c3b-20251105" + "react": "19.3.0-canary-5a2205ba-20251105", + "react-dom": "19.3.0-canary-5a2205ba-20251105", + "react-is": "19.3.0-canary-5a2205ba-20251105", + "scheduler": "0.28.0-canary-5a2205ba-20251105" }, "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 b19c256b605e58..845e542e2bb0a6 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 @@ -11443,10 +11443,7 @@ (workInProgress.memoizedState = SUSPENDED_MARKER), bailoutOffscreenComponent(null, JSCompiler_object_inline_stack_3231) ); - if ( - "number" === - typeof JSCompiler_object_inline_stack_3231.unstable_expectedLoadTime - ) + if (!0 === JSCompiler_object_inline_stack_3231.defer) return ( reuseSuspenseHandlerOnStack(workInProgress), mountSuspenseFallbackChildren( @@ -32406,11 +32403,11 @@ }; (function () { var isomorphicReactPackageVersion = React.version; - if ("19.3.0-experimental-dd048c3b-20251105" !== isomorphicReactPackageVersion) + if ("19.3.0-experimental-5a2205ba-20251105" !== 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-dd048c3b-20251105\nLearn more: https://react.dev/warnings/version-mismatch") + "\n - react-dom: 19.3.0-experimental-5a2205ba-20251105\nLearn more: https://react.dev/warnings/version-mismatch") ); })(); ("function" === typeof Map && @@ -32447,10 +32444,10 @@ !(function () { var internals = { bundleType: 1, - version: "19.3.0-experimental-dd048c3b-20251105", + version: "19.3.0-experimental-5a2205ba-20251105", rendererPackageName: "react-dom", currentDispatcherRef: ReactSharedInternals, - reconcilerVersion: "19.3.0-experimental-dd048c3b-20251105" + reconcilerVersion: "19.3.0-experimental-5a2205ba-20251105" }; internals.overrideHookState = overrideHookState; internals.overrideHookStateDeletePath = overrideHookStateDeletePath; @@ -32598,7 +32595,7 @@ listenToAllSupportedEvents(container); return new ReactDOMHydrationRoot(initialChildren); }; - exports.version = "19.3.0-experimental-dd048c3b-20251105"; + exports.version = "19.3.0-experimental-5a2205ba-20251105"; "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 923a23de578da2..509f6a6191bbba 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 @@ -7299,7 +7299,7 @@ function updateSuspenseComponent(current, workInProgress, renderLanes) { (workInProgress.memoizedState = SUSPENDED_MARKER), bailoutOffscreenComponent(null, nextProps) ); - if ("number" === typeof nextProps.unstable_expectedLoadTime) + if (!0 === nextProps.defer) return ( reuseSuspenseHandlerOnStack(), mountSuspenseFallbackChildren( @@ -19617,14 +19617,14 @@ ReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) { }; var isomorphicReactPackageVersion$jscomp$inline_2198 = React.version; if ( - "19.3.0-experimental-dd048c3b-20251105" !== + "19.3.0-experimental-5a2205ba-20251105" !== isomorphicReactPackageVersion$jscomp$inline_2198 ) throw Error( formatProdErrorMessage( 527, isomorphicReactPackageVersion$jscomp$inline_2198, - "19.3.0-experimental-dd048c3b-20251105" + "19.3.0-experimental-5a2205ba-20251105" ) ); ReactDOMSharedInternals.findDOMNode = function (componentOrElement) { @@ -19646,10 +19646,10 @@ ReactDOMSharedInternals.findDOMNode = function (componentOrElement) { }; var internals$jscomp$inline_2903 = { bundleType: 0, - version: "19.3.0-experimental-dd048c3b-20251105", + version: "19.3.0-experimental-5a2205ba-20251105", rendererPackageName: "react-dom", currentDispatcherRef: ReactSharedInternals, - reconcilerVersion: "19.3.0-experimental-dd048c3b-20251105" + reconcilerVersion: "19.3.0-experimental-5a2205ba-20251105" }; if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) { var hook$jscomp$inline_2904 = __REACT_DEVTOOLS_GLOBAL_HOOK__; @@ -19756,4 +19756,4 @@ exports.hydrateRoot = function (container, initialChildren, options) { listenToAllSupportedEvents(container); return new ReactDOMHydrationRoot(initialChildren); }; -exports.version = "19.3.0-experimental-dd048c3b-20251105"; +exports.version = "19.3.0-experimental-5a2205ba-20251105"; 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 f197e1d60abacc..8881caf3185eac 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 @@ -11451,10 +11451,7 @@ (workInProgress.memoizedState = SUSPENDED_MARKER), bailoutOffscreenComponent(null, JSCompiler_object_inline_stack_3236) ); - if ( - "number" === - typeof JSCompiler_object_inline_stack_3236.unstable_expectedLoadTime - ) + if (!0 === JSCompiler_object_inline_stack_3236.defer) return ( reuseSuspenseHandlerOnStack(workInProgress), mountSuspenseFallbackChildren( @@ -32458,11 +32455,11 @@ }; (function () { var isomorphicReactPackageVersion = React.version; - if ("19.3.0-experimental-dd048c3b-20251105" !== isomorphicReactPackageVersion) + if ("19.3.0-experimental-5a2205ba-20251105" !== 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-dd048c3b-20251105\nLearn more: https://react.dev/warnings/version-mismatch") + "\n - react-dom: 19.3.0-experimental-5a2205ba-20251105\nLearn more: https://react.dev/warnings/version-mismatch") ); })(); ("function" === typeof Map && @@ -32499,10 +32496,10 @@ !(function () { var internals = { bundleType: 1, - version: "19.3.0-experimental-dd048c3b-20251105", + version: "19.3.0-experimental-5a2205ba-20251105", rendererPackageName: "react-dom", currentDispatcherRef: ReactSharedInternals, - reconcilerVersion: "19.3.0-experimental-dd048c3b-20251105" + reconcilerVersion: "19.3.0-experimental-5a2205ba-20251105" }; internals.overrideHookState = overrideHookState; internals.overrideHookStateDeletePath = overrideHookStateDeletePath; @@ -32980,7 +32977,7 @@ exports.useFormStatus = function () { return resolveDispatcher().useHostTransitionStatus(); }; - exports.version = "19.3.0-experimental-dd048c3b-20251105"; + exports.version = "19.3.0-experimental-5a2205ba-20251105"; "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 5828d85c174b32..6c782e8ca066c4 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 @@ -7837,7 +7837,7 @@ function updateSuspenseComponent(current, workInProgress, renderLanes) { (workInProgress.memoizedState = SUSPENDED_MARKER), bailoutOffscreenComponent(null, nextProps) ); - if ("number" === typeof nextProps.unstable_expectedLoadTime) + if (!0 === nextProps.defer) return ( reuseSuspenseHandlerOnStack(), mountSuspenseFallbackChildren( @@ -21672,14 +21672,14 @@ ReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) { }; var isomorphicReactPackageVersion$jscomp$inline_2494 = React.version; if ( - "19.3.0-experimental-dd048c3b-20251105" !== + "19.3.0-experimental-5a2205ba-20251105" !== isomorphicReactPackageVersion$jscomp$inline_2494 ) throw Error( formatProdErrorMessage( 527, isomorphicReactPackageVersion$jscomp$inline_2494, - "19.3.0-experimental-dd048c3b-20251105" + "19.3.0-experimental-5a2205ba-20251105" ) ); ReactDOMSharedInternals.findDOMNode = function (componentOrElement) { @@ -21701,10 +21701,10 @@ ReactDOMSharedInternals.findDOMNode = function (componentOrElement) { }; var internals$jscomp$inline_3212 = { bundleType: 0, - version: "19.3.0-experimental-dd048c3b-20251105", + version: "19.3.0-experimental-5a2205ba-20251105", rendererPackageName: "react-dom", currentDispatcherRef: ReactSharedInternals, - reconcilerVersion: "19.3.0-experimental-dd048c3b-20251105" + reconcilerVersion: "19.3.0-experimental-5a2205ba-20251105" }; if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) { var hook$jscomp$inline_3213 = __REACT_DEVTOOLS_GLOBAL_HOOK__; @@ -21972,7 +21972,7 @@ exports.useFormState = function (action, initialState, permalink) { exports.useFormStatus = function () { return ReactSharedInternals.H.useHostTransitionStatus(); }; -exports.version = "19.3.0-experimental-dd048c3b-20251105"; +exports.version = "19.3.0-experimental-5a2205ba-20251105"; "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 7a6d6c3a257c4f..437487a2e0fcbb 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 @@ -4624,7 +4624,8 @@ } function isEligibleForOutlining(request, boundary) { return ( - (500 < boundary.byteSize || !1) && null === boundary.contentPreamble + (500 < boundary.byteSize || boundary.defer) && + null === boundary.contentPreamble ); } function defaultErrorHandler(error) { @@ -4760,7 +4761,8 @@ row, fallbackAbortableTasks, contentPreamble, - fallbackPreamble + fallbackPreamble, + defer ) { fallbackAbortableTasks = { status: PENDING, @@ -4770,6 +4772,7 @@ row: row, completedSegments: [], byteSize: 0, + defer: defer, fallbackAbortableTasks: fallbackAbortableTasks, errorDigest: null, contentState: createHoistableState(), @@ -6116,13 +6119,15 @@ parentSegment = task.blockedSegment, fallback = props.fallback, content = props.children, + defer = !0 === props.defer, fallbackAbortSet = new Set(); var newBoundary = createSuspenseBoundary( request, task.row, fallbackAbortSet, null, - null + null, + defer ); null !== request.trackedPostpones && (newBoundary.trackedContentKeyPath = keyPath); @@ -6145,24 +6150,27 @@ !1 ); contentRootSegment.parentFlushed = !0; - if (null !== request.trackedPostpones) { + var trackedPostpones = request.trackedPostpones; + if (null !== trackedPostpones || defer) { var suspenseComponentStack = task.componentStack, fallbackKeyPath = [ keyPath[0], "Suspense Fallback", keyPath[2] - ], - fallbackReplayNode = [ + ]; + if (null !== trackedPostpones) { + var fallbackReplayNode = [ fallbackKeyPath[1], fallbackKeyPath[2], [], null ]; - request.trackedPostpones.workingMap.set( - fallbackKeyPath, - fallbackReplayNode - ); - newBoundary.trackedFallbackNode = fallbackReplayNode; + trackedPostpones.workingMap.set( + fallbackKeyPath, + fallbackReplayNode + ); + newBoundary.trackedFallbackNode = fallbackReplayNode; + } task.blockedSegment = boundarySegment; task.blockedPreamble = newBoundary.fallbackPreamble; task.keyPath = fallbackKeyPath; @@ -6561,19 +6569,21 @@ parentBoundary = task.blockedBoundary, parentHoistableState = task.hoistableState, content = props.children, - fallback = props.fallback, - fallbackAbortSet = new Set(); - props = createSuspenseBoundary( + fallback = props.fallback; + var resumedBoundary = !0 === props.defer; + props = new Set(); + resumedBoundary = createSuspenseBoundary( replay, task.row, - fallbackAbortSet, + props, null, - null + null, + resumedBoundary ); - props.parentFlushed = !0; - props.rootSegmentID = request; - task.blockedBoundary = props; - task.hoistableState = props.contentState; + resumedBoundary.parentFlushed = !0; + resumedBoundary.rootSegmentID = request; + task.blockedBoundary = resumedBoundary; + task.hoistableState = resumedBoundary.contentState; task.keyPath = keyPath; task.formatContext = getSuspenseContentFormatContext( replay.resumableState, @@ -6591,13 +6601,16 @@ "Couldn't find all resumable slots by key/index during replaying. The tree doesn't match so React will fallback to client rendering." ); task.replay.pendingTasks--; - if (0 === props.pendingTasks && props.status === PENDING) { - props.status = COMPLETED; - replay.completedBoundaries.push(props); + if ( + 0 === resumedBoundary.pendingTasks && + resumedBoundary.status === PENDING + ) { + resumedBoundary.status = COMPLETED; + replay.completedBoundaries.push(resumedBoundary); break a; } } catch (error) { - (props.status = CLIENT_RENDERED), + (resumedBoundary.status = CLIENT_RENDERED), (childNodes = getThrownInfo(task.componentStack)), (childSlots = logRecoverableError( replay, @@ -6606,14 +6619,14 @@ task.debugTask )), encodeErrorForBoundary( - props, + resumedBoundary, childSlots, error, childNodes, !1 ), task.replay.pendingTasks--, - replay.clientRenderedBoundaries.push(props); + replay.clientRenderedBoundaries.push(resumedBoundary); } finally { (task.blockedBoundary = parentBoundary), (task.hoistableState = parentHoistableState), @@ -6629,8 +6642,8 @@ fallback, -1, parentBoundary, - props.fallbackState, - fallbackAbortSet, + resumedBoundary.fallbackState, + props, [keyPath[0], "Suspense Fallback", keyPath[2]], getSuspenseFallbackFormatContext( replay.resumableState, @@ -7366,7 +7379,8 @@ null, new Set(), null, - null + null, + !1 ); resumedBoundary.parentFlushed = !0; resumedBoundary.rootSegmentID = node; @@ -8144,7 +8158,8 @@ if ( !flushingPartialBoundaries && isEligibleForOutlining(request, boundary) && - flushedByteSize + boundary.byteSize > request.progressiveChunkSize + (flushedByteSize + boundary.byteSize > request.progressiveChunkSize || + boundary.defer) ) return ( (boundary.rootSegmentID = request.nextSegmentId++), @@ -10381,5 +10396,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-dd048c3b-20251105"; + exports.version = "19.3.0-experimental-5a2205ba-20251105"; })(); 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 dca7b39af76d8c..48ee1c564fc783 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 @@ -2951,16 +2951,16 @@ function createRenderState(resumableState, generateStaticMarkup) { "\x3c/script>" )); bootstrapScriptContent = idPrefix + "P:"; - var JSCompiler_object_inline_segmentPrefix_1881 = idPrefix + "S:"; + var JSCompiler_object_inline_segmentPrefix_1883 = idPrefix + "S:"; idPrefix += "B:"; - var JSCompiler_object_inline_preconnects_1895 = new Set(), - JSCompiler_object_inline_fontPreloads_1896 = new Set(), - JSCompiler_object_inline_highImagePreloads_1897 = new Set(), - JSCompiler_object_inline_styles_1898 = new Map(), - JSCompiler_object_inline_bootstrapScripts_1899 = new Set(), - JSCompiler_object_inline_scripts_1900 = new Set(), - JSCompiler_object_inline_bulkPreloads_1901 = new Set(), - JSCompiler_object_inline_preloads_1902 = { + var JSCompiler_object_inline_preconnects_1897 = new Set(), + JSCompiler_object_inline_fontPreloads_1898 = new Set(), + JSCompiler_object_inline_highImagePreloads_1899 = new Set(), + JSCompiler_object_inline_styles_1900 = new Map(), + JSCompiler_object_inline_bootstrapScripts_1901 = new Set(), + JSCompiler_object_inline_scripts_1902 = new Set(), + JSCompiler_object_inline_bulkPreloads_1903 = new Set(), + JSCompiler_object_inline_preloads_1904 = { images: new Map(), stylesheets: new Map(), scripts: new Map(), @@ -2997,7 +2997,7 @@ function createRenderState(resumableState, generateStaticMarkup) { scriptConfig.moduleScriptResources[href] = null; scriptConfig = []; pushLinkImpl(scriptConfig, props); - JSCompiler_object_inline_bootstrapScripts_1899.add(scriptConfig); + JSCompiler_object_inline_bootstrapScripts_1901.add(scriptConfig); bootstrapChunks.push('