diff --git a/examples/reproduction-template/package.json b/examples/reproduction-template/package.json index 11c4a9dbb96c..2877f50d6e72 100644 --- a/examples/reproduction-template/package.json +++ b/examples/reproduction-template/package.json @@ -7,8 +7,8 @@ }, "dependencies": { "next": "canary", - "react": "19.2.6", - "react-dom": "19.2.6" + "react": "19.2.7", + "react-dom": "19.2.7" }, "devDependencies": { "@types/node": "^22", diff --git a/package.json b/package.json index ba750d6e94c4..9a8b3e4bd656 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-f0dfee38-20260529", + "react-builtin": "npm:react@19.3.0-canary-43bcbf80-20260603", "react-dom": "19.0.0", - "react-dom-builtin": "npm:react-dom@19.3.0-canary-f0dfee38-20260529", - "react-dom-experimental-builtin": "npm:react-dom@0.0.0-experimental-f0dfee38-20260529", - "react-experimental-builtin": "npm:react@0.0.0-experimental-f0dfee38-20260529", - "react-is-builtin": "npm:react-is@19.3.0-canary-f0dfee38-20260529", - "react-server-dom-turbopack": "npm:react-server-dom-turbopack@19.3.0-canary-f0dfee38-20260529", - "react-server-dom-turbopack-experimental": "npm:react-server-dom-turbopack@0.0.0-experimental-f0dfee38-20260529", - "react-server-dom-webpack": "npm:react-server-dom-webpack@19.3.0-canary-f0dfee38-20260529", - "react-server-dom-webpack-experimental": "npm:react-server-dom-webpack@0.0.0-experimental-f0dfee38-20260529", + "react-dom-builtin": "npm:react-dom@19.3.0-canary-43bcbf80-20260603", + "react-dom-experimental-builtin": "npm:react-dom@0.0.0-experimental-43bcbf80-20260603", + "react-experimental-builtin": "npm:react@0.0.0-experimental-43bcbf80-20260603", + "react-is-builtin": "npm:react-is@19.3.0-canary-43bcbf80-20260603", + "react-server-dom-turbopack": "npm:react-server-dom-turbopack@19.3.0-canary-43bcbf80-20260603", + "react-server-dom-turbopack-experimental": "npm:react-server-dom-turbopack@0.0.0-experimental-43bcbf80-20260603", + "react-server-dom-webpack": "npm:react-server-dom-webpack@19.3.0-canary-43bcbf80-20260603", + "react-server-dom-webpack-experimental": "npm:react-server-dom-webpack@0.0.0-experimental-43bcbf80-20260603", "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-f0dfee38-20260529", - "scheduler-experimental-builtin": "npm:scheduler@0.0.0-experimental-f0dfee38-20260529", + "scheduler-builtin": "npm:scheduler@0.28.0-canary-43bcbf80-20260603", + "scheduler-experimental-builtin": "npm:scheduler@0.0.0-experimental-43bcbf80-20260603", "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-f0dfee38-20260529", - "react-dom": "npm:react-dom@19.3.0-canary-f0dfee38-20260529", - "react-is": "npm:react-is@19.3.0-canary-f0dfee38-20260529", - "scheduler": "npm:scheduler@0.28.0-canary-f0dfee38-20260529" + "react": "npm:react@19.3.0-canary-43bcbf80-20260603", + "react-dom": "npm:react-dom@19.3.0-canary-43bcbf80-20260603", + "react-is": "npm:react-is@19.3.0-canary-43bcbf80-20260603", + "scheduler": "npm:scheduler@0.28.0-canary-43bcbf80-20260603" }, "packageExtensions": { "eslint-plugin-react-hooks@0.0.0-experimental-6de32a5a-20250822": { diff --git a/packages/create-next-app/templates/index.ts b/packages/create-next-app/templates/index.ts index ff1891556f14..5d30fa7a6b90 100644 --- a/packages/create-next-app/templates/index.ts +++ b/packages/create-next-app/templates/index.ts @@ -18,7 +18,7 @@ import { Bundler, GetTemplateFileArgs, InstallTemplateArgs } from "./types"; // Do not rename or format. sync-react script relies on this line. // prettier-ignore -const nextjsReactPeerVersion = "19.2.6"; +const nextjsReactPeerVersion = "19.2.7"; function sorted(obj: Record) { return Object.keys(obj) .sort() 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 4eab2f602b11..7c1dc9d611ee 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 @@ -32914,11 +32914,11 @@ }; (function () { var isomorphicReactPackageVersion = React.version; - if ("19.3.0-experimental-f0dfee38-20260529" !== isomorphicReactPackageVersion) + if ("19.3.0-experimental-43bcbf80-20260603" !== 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-f0dfee38-20260529\nLearn more: https://react.dev/warnings/version-mismatch") + "\n - react-dom: 19.3.0-experimental-43bcbf80-20260603\nLearn more: https://react.dev/warnings/version-mismatch") ); })(); ("function" === typeof Map && @@ -32955,10 +32955,10 @@ !(function () { var internals = { bundleType: 1, - version: "19.3.0-experimental-f0dfee38-20260529", + version: "19.3.0-experimental-43bcbf80-20260603", rendererPackageName: "react-dom", currentDispatcherRef: ReactSharedInternals, - reconcilerVersion: "19.3.0-experimental-f0dfee38-20260529" + reconcilerVersion: "19.3.0-experimental-43bcbf80-20260603" }; internals.overrideHookState = overrideHookState; internals.overrideHookStateDeletePath = overrideHookStateDeletePath; @@ -33106,7 +33106,7 @@ listenToAllSupportedEvents(container); return new ReactDOMHydrationRoot(initialChildren); }; - exports.version = "19.3.0-experimental-f0dfee38-20260529"; + exports.version = "19.3.0-experimental-43bcbf80-20260603"; "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 650bc19fa1e7..df0ae57c8d2b 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 @@ -19970,14 +19970,14 @@ ReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) { }; var isomorphicReactPackageVersion$jscomp$inline_2241 = React.version; if ( - "19.3.0-experimental-f0dfee38-20260529" !== + "19.3.0-experimental-43bcbf80-20260603" !== isomorphicReactPackageVersion$jscomp$inline_2241 ) throw Error( formatProdErrorMessage( 527, isomorphicReactPackageVersion$jscomp$inline_2241, - "19.3.0-experimental-f0dfee38-20260529" + "19.3.0-experimental-43bcbf80-20260603" ) ); ReactDOMSharedInternals.findDOMNode = function (componentOrElement) { @@ -19999,10 +19999,10 @@ ReactDOMSharedInternals.findDOMNode = function (componentOrElement) { }; var internals$jscomp$inline_2926 = { bundleType: 0, - version: "19.3.0-experimental-f0dfee38-20260529", + version: "19.3.0-experimental-43bcbf80-20260603", rendererPackageName: "react-dom", currentDispatcherRef: ReactSharedInternals, - reconcilerVersion: "19.3.0-experimental-f0dfee38-20260529" + reconcilerVersion: "19.3.0-experimental-43bcbf80-20260603" }; if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) { var hook$jscomp$inline_2927 = __REACT_DEVTOOLS_GLOBAL_HOOK__; @@ -20109,4 +20109,4 @@ exports.hydrateRoot = function (container, initialChildren, options) { listenToAllSupportedEvents(container); return new ReactDOMHydrationRoot(initialChildren); }; -exports.version = "19.3.0-experimental-f0dfee38-20260529"; +exports.version = "19.3.0-experimental-43bcbf80-20260603"; 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 a9faa259ef0e..5004c9c42927 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 @@ -32971,11 +32971,11 @@ }; (function () { var isomorphicReactPackageVersion = React.version; - if ("19.3.0-experimental-f0dfee38-20260529" !== isomorphicReactPackageVersion) + if ("19.3.0-experimental-43bcbf80-20260603" !== 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-f0dfee38-20260529\nLearn more: https://react.dev/warnings/version-mismatch") + "\n - react-dom: 19.3.0-experimental-43bcbf80-20260603\nLearn more: https://react.dev/warnings/version-mismatch") ); })(); ("function" === typeof Map && @@ -33012,10 +33012,10 @@ !(function () { var internals = { bundleType: 1, - version: "19.3.0-experimental-f0dfee38-20260529", + version: "19.3.0-experimental-43bcbf80-20260603", rendererPackageName: "react-dom", currentDispatcherRef: ReactSharedInternals, - reconcilerVersion: "19.3.0-experimental-f0dfee38-20260529" + reconcilerVersion: "19.3.0-experimental-43bcbf80-20260603" }; internals.overrideHookState = overrideHookState; internals.overrideHookStateDeletePath = overrideHookStateDeletePath; @@ -33493,7 +33493,7 @@ exports.useFormStatus = function () { return resolveDispatcher().useHostTransitionStatus(); }; - exports.version = "19.3.0-experimental-f0dfee38-20260529"; + exports.version = "19.3.0-experimental-43bcbf80-20260603"; "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 4279d7a80215..2957a1fbe459 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 @@ -22053,14 +22053,14 @@ ReactDOMHydrationRoot.prototype.unstable_scheduleHydration = function (target) { }; var isomorphicReactPackageVersion$jscomp$inline_2545 = React.version; if ( - "19.3.0-experimental-f0dfee38-20260529" !== + "19.3.0-experimental-43bcbf80-20260603" !== isomorphicReactPackageVersion$jscomp$inline_2545 ) throw Error( formatProdErrorMessage( 527, isomorphicReactPackageVersion$jscomp$inline_2545, - "19.3.0-experimental-f0dfee38-20260529" + "19.3.0-experimental-43bcbf80-20260603" ) ); ReactDOMSharedInternals.findDOMNode = function (componentOrElement) { @@ -22082,10 +22082,10 @@ ReactDOMSharedInternals.findDOMNode = function (componentOrElement) { }; var internals$jscomp$inline_3247 = { bundleType: 0, - version: "19.3.0-experimental-f0dfee38-20260529", + version: "19.3.0-experimental-43bcbf80-20260603", rendererPackageName: "react-dom", currentDispatcherRef: ReactSharedInternals, - reconcilerVersion: "19.3.0-experimental-f0dfee38-20260529" + reconcilerVersion: "19.3.0-experimental-43bcbf80-20260603" }; if ("undefined" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__) { var hook$jscomp$inline_3248 = __REACT_DEVTOOLS_GLOBAL_HOOK__; @@ -22353,7 +22353,7 @@ exports.useFormState = function (action, initialState, permalink) { exports.useFormStatus = function () { return ReactSharedInternals.H.useHostTransitionStatus(); }; -exports.version = "19.3.0-experimental-f0dfee38-20260529"; +exports.version = "19.3.0-experimental-43bcbf80-20260603"; "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 2652b457f858..922521a20083 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 @@ -4751,11 +4751,13 @@ void 0 === progressiveChunkSize ? 12800 : progressiveChunkSize; this.status = 10; this.fatalError = null; + this.aborted = !1; this.pendingRootTasks = this.allPendingTasks = this.nextSegmentId = 0; this.completedPreambleSegments = this.completedRootSegment = null; this.byteSize = 0; this.abortableTasks = abortSet; this.pingedTasks = []; + this.currentTask = null; this.clientRenderedBoundaries = []; this.completedBoundaries = []; this.partialBoundaries = []; @@ -4897,12 +4899,21 @@ ? request.pendingRootTasks++ : blockedBoundary.pendingTasks++; null !== row && row.pendingTasks++; - var task = { + var task$jscomp$0 = { replay: null, node: node, childIndex: childIndex, - ping: function () { - return pingTask(request, task); + ping: { + resolve: function () { + return pingTask(request, task$jscomp$0); + }, + reject: function (error) { + var task = task$jscomp$0; + request.aborted + ? task.abortSet.delete(task) && + finishAbortedTaskDEV(task, request, error) + : pingTask(request, task); + } }, blockedBoundary: blockedBoundary, blockedSegment: blockedSegment, @@ -4917,9 +4928,9 @@ componentStack: componentStack, thenableState: thenableState }; - task.debugTask = debugTask; - abortSet.add(task); - return task; + task$jscomp$0.debugTask = debugTask; + abortSet.add(task$jscomp$0); + return task$jscomp$0; } function createReplayTask( request, @@ -4945,12 +4956,21 @@ : blockedBoundary.pendingTasks++; null !== row && row.pendingTasks++; replay.pendingTasks++; - var task = { + var task$jscomp$0 = { replay: replay, node: node, childIndex: childIndex, - ping: function () { - return pingTask(request, task); + ping: { + resolve: function () { + return pingTask(request, task$jscomp$0); + }, + reject: function (error) { + var task = task$jscomp$0; + request.aborted + ? task.abortSet.delete(task) && + finishAbortedTaskDEV(task, request, error) + : pingTask(request, task); + } }, blockedBoundary: blockedBoundary, blockedSegment: null, @@ -4965,9 +4985,9 @@ componentStack: componentStack, thenableState: thenableState }; - task.debugTask = debugTask; - abortSet.add(task); - return task; + task$jscomp$0.debugTask = debugTask; + abortSet.add(task$jscomp$0); + return task$jscomp$0; } function createPendingSegment( request, @@ -5061,8 +5081,10 @@ task.thenableState ); try { - var prevStatus = request.status; - request.status = 15; + var prevStatus = request.status, + prevAborted = request.aborted; + request.status = 14; + request.aborted = !1; var prevContext = currentActiveSnapshot, prevDispatcher = ReactSharedInternals.H; ReactSharedInternals.H = HooksDispatcher; @@ -5089,7 +5111,8 @@ (ReactSharedInternals.getCurrentStack = prevGetCurrentStackImpl), prevDispatcher === HooksDispatcher && switchContext(prevContext), (currentRequest = prevRequest), - (request.status = prevStatus); + (request.status = prevStatus), + (request.aborted = prevAborted); } } finally { restoreThenableState(), (shouldCaptureSuspendedCallSite = !1); @@ -5231,7 +5254,7 @@ : (errorInfo(error), onFatalError(error)); null !== request.destination ? ((request.status = CLOSED), request.destination.destroy(error)) - : ((request.status = 13), (request.fatalError = error)); + : ((request.status = 12), (request.fatalError = error)); } function finishSuspenseListRow(request, row) { unblockSuspenseListRow(request, row.next, row.hoistables); @@ -5411,7 +5434,7 @@ finishSuspenseListRow(request, previousSuspenseListRow); } catch (thrownValue) { throw ( - ((newSegment.status = 12 === request.status ? ABORTED : ERRORED), + ((newSegment.status = request.aborted ? ABORTED : ERRORED), thrownValue) ); } @@ -5860,7 +5883,7 @@ } else internalInstance.queue = null; } var nextChildren = callRenderInDEV(instance); - if (12 === request.status) throw null; + if (request.aborted) throw null; instance.props !== resolvedProps && (didWarnAboutReassigningProps || console.error( @@ -5892,7 +5915,7 @@ props, void 0 ); - if (12 === request.status) throw null; + if (request.aborted) throw null; var hasId = 0 !== localIdCounter, actionStateCount = actionStateCounter, actionStateMatchingIndex$jscomp$0 = actionStateMatchingIndex; @@ -5994,8 +6017,7 @@ segment.preambleChildren.push(preambleSegment); task.blockedSegment = preambleSegment; try { - (preambleSegment.status = 6), - renderNode(request, task, _children, -1), + renderNode(request, task, _children, -1), pushSegmentFinale( preambleSegment.chunks, request.renderState, @@ -6316,7 +6338,6 @@ replaceSuspenseComponentStackWithSuspenseFallbackStack( suspenseComponentStack ); - boundarySegment.status = 6; try { renderNode(request, task, fallback, -1), pushSegmentFinale( @@ -6328,8 +6349,9 @@ (boundarySegment.status = COMPLETED); } catch (thrownValue) { throw ( - ((boundarySegment.status = - 12 === request.status ? ABORTED : ERRORED), + ((boundarySegment.status = request.aborted + ? ABORTED + : ERRORED), thrownValue) ); } finally { @@ -6378,7 +6400,6 @@ prevContext$jscomp$1 ); task.row = null; - contentRootSegment.status = 6; try { if ( (renderNode(request, task, content, -1), @@ -6411,7 +6432,7 @@ tryToResolveTogetherRow(request, prevRow$jscomp$0); } catch (thrownValue$2) { newBoundary.status = CLIENT_RENDERED; - if (12 === request.status) { + if (request.aborted) { contentRootSegment.status = ABORTED; var error = request.fatalError; } else @@ -6570,7 +6591,7 @@ return; case REACT_LAZY_TYPE: var Component = callLazyInitInDEV(type); - if (12 === request.status && 15 !== request.status) throw null; + if (request.aborted) throw null; renderElement(request, task, keyPath, Component, props, ref); return; } @@ -6642,8 +6663,8 @@ ">. The tree doesn't match so React will fallback to client rendering." ); var childNodes = node[2], - childSlots = node[3]; - name = task.node; + childSlots = node[3], + currentNode = task.node; task.replay = { nodes: childNodes, slots: childSlots, @@ -6666,25 +6687,30 @@ (x === SuspenseException || "function" === typeof x.then) ) throw ( - (task.node === name + (task.node === currentNode ? (task.replay = replay) : childIndex.splice(i, 1), x) ); task.replay.pendingTasks--; - type = getThrownInfo(task.componentStack); + keyPath = getThrownInfo(task.componentStack); props = request; - keyPath = task.blockedBoundary; - request = x; - ref = logRecoverableError(props, request, type, task.debugTask); - abortRemainingReplayNodes( + currentNode = task.blockedBoundary; + request = request.aborted ? request.fatalError : x; + type = logRecoverableError( props, + request, keyPath, + task.debugTask + ); + abortRemainingReplayNodes( + props, + currentNode, childNodes, childSlots, request, - ref, type, + keyPath, !1 ); } @@ -6698,7 +6724,8 @@ ); a: { replay = request; - request = node[5]; + request = keyPath; + keyPath = node[5]; type = node[2]; ref = node[3]; name = null === node[4] ? [] : node[4][2]; @@ -6721,10 +6748,10 @@ defer ); defer.parentFlushed = !0; - defer.rootSegmentID = request; + defer.rootSegmentID = keyPath; task.blockedBoundary = defer; task.hoistableState = defer.contentState; - task.keyPath = keyPath; + task.keyPath = request; task.formatContext = getSuspenseContentFormatContext( replay.resumableState, prevContext @@ -6746,20 +6773,23 @@ replay.completedBoundaries.push(defer); break a; } - } catch (error) { + } catch (thrownValue) { (defer.status = CLIENT_RENDERED), - (childNodes = getThrownInfo(task.componentStack)), - (childSlots = logRecoverableError( + (childNodes = replay.aborted + ? replay.fatalError + : thrownValue), + (childSlots = getThrownInfo(task.componentStack)), + (currentNode = logRecoverableError( replay, - error, childNodes, + childSlots, task.debugTask )), encodeErrorForBoundary( defer, - childSlots, - error, + currentNode, childNodes, + childSlots, !1 ), task.replay.pendingTasks--, @@ -6781,7 +6811,7 @@ parentBoundary, defer.fallbackState, props, - [keyPath[0], "Suspense Fallback", keyPath[2]], + [request[0], "Suspense Fallback", request[2]], getSuspenseFallbackFormatContext( replay.resumableState, task.formatContext @@ -6930,7 +6960,7 @@ ); case REACT_LAZY_TYPE: node = callLazyInitInDEV(node); - if (12 === request.status) throw null; + if (request.aborted) throw null; renderNodeDestructive(request, task, node, childIndex); return; } @@ -7115,8 +7145,12 @@ var node = replayNodes[j]; if (node[1] === childIndex) { childIndex = node[2]; - node = node[3]; - task.replay = { nodes: childIndex, slots: node, pendingTasks: 1 }; + var childSlots = node[3]; + task.replay = { + nodes: childIndex, + slots: childSlots, + pendingTasks: 1 + }; try { renderChildrenArray(request, task, children, -1); if ( @@ -7136,20 +7170,21 @@ throw x; task.replay.pendingTasks--; var thrownInfo = getThrownInfo(task.componentStack); - children = task.blockedBoundary; - var error = x, - errorDigest = logRecoverableError( - request, - error, - thrownInfo, - task.debugTask - ); - abortRemainingReplayNodes( + children = request; + node = task.blockedBoundary; + request = request.aborted ? request.fatalError : x; + var errorDigest = logRecoverableError( + children, request, + thrownInfo, + task.debugTask + ); + abortRemainingReplayNodes( children, - childIndex, node, - error, + childIndex, + childSlots, + request, errorDigest, thrownInfo, !1 @@ -7171,18 +7206,14 @@ null !== task.replay && ((j = task.replay.slots), null !== j && "object" === typeof j) ) { - for (childIndex = 0; childIndex < replayNodes; childIndex++) - (node = children[childIndex]), - (task.treeContext = pushTreeContext( - replay, - replayNodes, - childIndex - )), - (error = j[childIndex]), - "number" === typeof error - ? (resumeNode(request, task, error, node, childIndex), - delete j[childIndex]) - : renderNode(request, task, node, childIndex); + for (node = 0; node < replayNodes; node++) + (childIndex = children[node]), + (task.treeContext = pushTreeContext(replay, replayNodes, node)), + (childSlots = j[node]), + "number" === typeof childSlots + ? (resumeNode(request, task, childSlots, childIndex, node), + delete j[node]) + : renderNode(request, task, childIndex, node); task.treeContext = replay; task.keyPath = prevKeyPath; task.componentStack = previousComponentStack; @@ -7190,10 +7221,10 @@ return; } for (j = 0; j < replayNodes; j++) - (childIndex = children[j]), - warnForMissingKey(request, task, childIndex), + (node = children[j]), + warnForMissingKey(request, task, node), (task.treeContext = pushTreeContext(replay, replayNodes, j)), - renderNode(request, task, childIndex, j); + renderNode(request, task, node, j); task.treeContext = replay; task.keyPath = prevKeyPath; task.componentStack = previousComponentStack; @@ -7386,7 +7417,7 @@ thrownValue === SuspenseException ? getSuspendedThenable() : thrownValue), - 12 !== request.status && "object" === typeof node && null !== node) + !request.aborted && "object" === typeof node && null !== node) ) { if ("function" === typeof node.then) { childIndex = @@ -7398,7 +7429,7 @@ task, childIndex ).ping; - node.then(request, request); + node.then(request.resolve, request.reject); task.formatContext = previousFormatContext; task.context = previousContext; task.keyPath = previousKeyPath; @@ -7442,7 +7473,7 @@ thrownValue$3 === SuspenseException ? getSuspendedThenable() : thrownValue$3), - 12 !== request.status && "object" === typeof node && null !== node) + !request.aborted && "object" === typeof node && null !== node) ) { if ("function" === typeof node.then) { segment = node; @@ -7451,7 +7482,7 @@ ? getThenableStateAfterSuspending() : null; request = spawnNewSuspendedRenderTask(request, task, node).ping; - segment.then(request, request); + segment.then(request.resolve, request.reject); task.formatContext = previousFormatContext; task.context = previousContext; task.keyPath = previousKeyPath; @@ -7566,111 +7597,170 @@ for (var index in slots) delete slots[index]; } } - function abortTask(task, request, error) { - var boundary = task.blockedBoundary, - segment = task.blockedSegment; - if (null !== segment) { - if (6 === segment.status) return; - segment.status = ABORTED; - } - var errorInfo = getThrownInfo(task.componentStack), - node = task.node; - if (null !== node && "object" === typeof node) { - for ( - var debugInfo = node._debugInfo; - "object" === typeof node && - null !== node && - node.$$typeof === REACT_LAZY_TYPE; + function abortTask(task, request) { + if (task !== request.currentTask) { + var boundary = task.blockedBoundary, + segment = task.blockedSegment; + null !== segment && (segment.status = ABORTED); + segment = task.node; + if (null !== segment && "object" === typeof segment) { + for ( + var debugInfo = segment._debugInfo; + "object" === typeof segment && + null !== segment && + segment.$$typeof === REACT_LAZY_TYPE; - ) { - var payload = node._payload; - if ("fulfilled" === payload.status) node = payload.value; - else break; + ) { + var payload = segment._payload; + if ("fulfilled" === payload.status) segment = payload.value; + else break; + } + "object" === typeof segment && + null !== segment && + (isArrayImpl(segment) || + "function" === typeof segment[ASYNC_ITERATOR] || + segment.$$typeof === REACT_ELEMENT_TYPE || + segment.$$typeof === REACT_LAZY_TYPE) && + isArrayImpl(segment._debugInfo) && + (debugInfo = segment._debugInfo); + pushHaltedAwaitOnComponentStack(task, debugInfo); + null !== task.thenableState && + pushSuspendedCallSiteOnComponentStack(request, task); } - "object" === typeof node && - null !== node && - (isArrayImpl(node) || - "function" === typeof node[ASYNC_ITERATOR] || - node.$$typeof === REACT_ELEMENT_TYPE || - node.$$typeof === REACT_LAZY_TYPE) && - isArrayImpl(node._debugInfo) && - (debugInfo = node._debugInfo); - pushHaltedAwaitOnComponentStack(task, debugInfo); - null !== task.thenableState && - pushSuspendedCallSiteOnComponentStack(request, task); + null !== boundary && + boundary.fallbackAbortableTasks.forEach(function (fallbackTask) { + return abortTask(fallbackTask, request); + }); } - if (null === boundary) { - if (13 !== request.status && request.status !== CLOSED) { - boundary = task.replay; + } + function finishAbortedTask(task, request, error) { + if (task !== request.currentTask) { + var boundary = task.blockedBoundary, + segment = task.blockedSegment; + if (null === segment || segment.status === ABORTED) { + var errorInfo = getThrownInfo(task.componentStack); if (null === boundary) { - null !== request.trackedPostpones && null !== segment - ? ((boundary = request.trackedPostpones), - logRecoverableError(request, error, errorInfo, task.debugTask), - trackPostpone(request, boundary, task, segment), - finishedTask(request, null, task.row, segment)) - : (logRecoverableError(request, error, errorInfo, task.debugTask), - fatalError(request, error, errorInfo, task.debugTask)); - return; + boundary = task.replay; + if (null === boundary) { + null !== request.trackedPostpones && null !== segment + ? ((boundary = request.trackedPostpones), + logRecoverableError( + request, + error, + errorInfo, + task.debugTask + ), + trackPostpone(request, boundary, task, segment), + finishedTask(request, null, task.row, segment)) + : (logRecoverableError( + request, + error, + errorInfo, + task.debugTask + ), + 12 !== request.status && + request.status !== CLOSED && + fatalError(request, error, errorInfo, task.debugTask)); + return; + } + 12 !== request.status && + request.status !== CLOSED && + (boundary.pendingTasks--, + 0 === boundary.pendingTasks && + 0 < boundary.nodes.length && + ((segment = logRecoverableError( + request, + error, + errorInfo, + null + )), + abortRemainingReplayNodes( + request, + null, + boundary.nodes, + boundary.slots, + error, + segment, + errorInfo, + !0 + )), + request.pendingRootTasks--, + 0 === request.pendingRootTasks && completeShell(request)); + } else { + var _trackedPostpones = request.trackedPostpones; + if (boundary.status !== CLIENT_RENDERED) { + if (null !== _trackedPostpones && null !== segment) + return ( + logRecoverableError( + request, + error, + errorInfo, + task.debugTask + ), + trackPostpone(request, _trackedPostpones, task, segment), + boundary.fallbackAbortableTasks.forEach( + function (fallbackTask) { + return finishAbortedTask(fallbackTask, request, error); + } + ), + boundary.fallbackAbortableTasks.clear(), + finishedTask(request, boundary, task.row, segment) + ); + boundary.status = CLIENT_RENDERED; + segment = logRecoverableError( + request, + error, + errorInfo, + task.debugTask + ); + boundary.status = CLIENT_RENDERED; + encodeErrorForBoundary(boundary, segment, error, errorInfo, !0); + untrackBoundary(request, boundary); + boundary.parentFlushed && + request.clientRenderedBoundaries.push(boundary); + } + boundary.pendingTasks--; + errorInfo = boundary.row; + null !== errorInfo && + 0 === --errorInfo.pendingTasks && + finishSuspenseListRow(request, errorInfo); + boundary.fallbackAbortableTasks.forEach(function (fallbackTask) { + return finishAbortedTask(fallbackTask, request, error); + }); + boundary.fallbackAbortableTasks.clear(); } - boundary.pendingTasks--; - 0 === boundary.pendingTasks && - 0 < boundary.nodes.length && - ((segment = logRecoverableError(request, error, errorInfo, null)), - abortRemainingReplayNodes( - request, - null, - boundary.nodes, - boundary.slots, - error, - segment, - errorInfo, - !0 - )); - request.pendingRootTasks--; - 0 === request.pendingRootTasks && completeShell(request); - } - } else { - node = request.trackedPostpones; - if (boundary.status !== CLIENT_RENDERED) { - if (null !== node && null !== segment) - return ( - logRecoverableError(request, error, errorInfo, task.debugTask), - trackPostpone(request, node, task, segment), - boundary.fallbackAbortableTasks.forEach(function (fallbackTask) { - return abortTask(fallbackTask, request, error); - }), - boundary.fallbackAbortableTasks.clear(), - finishedTask(request, boundary, task.row, segment) - ); - boundary.status = CLIENT_RENDERED; - segment = logRecoverableError( - request, - error, - errorInfo, - task.debugTask - ); - boundary.status = CLIENT_RENDERED; - encodeErrorForBoundary(boundary, segment, error, errorInfo, !0); - untrackBoundary(request, boundary); - boundary.parentFlushed && - request.clientRenderedBoundaries.push(boundary); + task = task.row; + null !== task && + 0 === --task.pendingTasks && + finishSuspenseListRow(request, task); + request.allPendingTasks--; + 0 === request.allPendingTasks && completeAll(request); } - boundary.pendingTasks--; - errorInfo = boundary.row; - null !== errorInfo && - 0 === --errorInfo.pendingTasks && - finishSuspenseListRow(request, errorInfo); - boundary.fallbackAbortableTasks.forEach(function (fallbackTask) { - return abortTask(fallbackTask, request, error); - }); - boundary.fallbackAbortableTasks.clear(); } - task = task.row; - null !== task && - 0 === --task.pendingTasks && - finishSuspenseListRow(request, task); - request.allPendingTasks--; - 0 === request.allPendingTasks && completeAll(request); + } + function finishAbortedTaskDEV(task, request, error) { + var prevTaskInDEV = currentTaskInDEV, + prevGetCurrentStackImpl = ReactSharedInternals.getCurrentStack; + currentTaskInDEV = task; + ReactSharedInternals.getCurrentStack = getCurrentStackInDEV; + try { + finishAbortedTask(task, request, error); + } finally { + (currentTaskInDEV = prevTaskInDEV), + (ReactSharedInternals.getCurrentStack = prevGetCurrentStackImpl); + } + } + function abortTaskDEV(task, request) { + var prevTaskInDEV = currentTaskInDEV, + prevGetCurrentStackImpl = ReactSharedInternals.getCurrentStack; + currentTaskInDEV = task; + ReactSharedInternals.getCurrentStack = getCurrentStackInDEV; + try { + abortTask(task, request); + } finally { + (currentTaskInDEV = prevTaskInDEV), + (ReactSharedInternals.getCurrentStack = prevGetCurrentStackImpl); + } } function safelyEmitEarlyPreloads(request, shellComplete) { try { @@ -7858,10 +7948,7 @@ 0 === request.allPendingTasks && completeAll(request); } function performWork(request$jscomp$1) { - if ( - request$jscomp$1.status !== CLOSED && - 13 !== request$jscomp$1.status - ) { + if (!(request$jscomp$1.aborted || 11 < request$jscomp$1.status)) { var prevContext = currentActiveSnapshot, prevDispatcher = ReactSharedInternals.H; ReactSharedInternals.H = HooksDispatcher; @@ -7884,6 +7971,8 @@ var prevTaskInDEV = void 0, task$jscomp$0 = task; if (0 !== task$jscomp$0.replay.pendingTasks) { + var prevTask = request.currentTask; + request.currentTask = task$jscomp$0; switchContext(task$jscomp$0.context); prevTaskInDEV = currentTaskInDEV; currentTaskInDEV = task$jscomp$0; @@ -7918,13 +8007,26 @@ thrownValue === SuspenseException ? getSuspendedThenable() : thrownValue; - if ( + if (request.aborted) { + thrownValue === SuspenseException && + (task$jscomp$0.thenableState = + getThenableStateAfterSuspending()); + request.currentTask = prevTask; + var request$jscomp$0 = request; + abortTaskDEV(task$jscomp$0, request$jscomp$0); + task$jscomp$0.abortSet.delete(task$jscomp$0); + finishAbortedTaskDEV( + task$jscomp$0, + request$jscomp$0, + request$jscomp$0.fatalError + ); + } else if ( "object" === typeof x && null !== x && "function" === typeof x.then ) { var ping = task$jscomp$0.ping; - x.then(ping, ping); + x.then(ping.resolve, ping.reject); task$jscomp$0.thenableState = thrownValue === SuspenseException ? getThenableStateAfterSuspending() @@ -7932,11 +8034,10 @@ } else { task$jscomp$0.replay.pendingTasks--; task$jscomp$0.abortSet.delete(task$jscomp$0); - var errorInfo = getThrownInfo(task$jscomp$0.componentStack), - request$jscomp$0 = request, - boundary = task$jscomp$0.blockedBoundary, - error$jscomp$0 = - 12 === request.status ? request.fatalError : x, + var errorInfo = getThrownInfo(task$jscomp$0.componentStack); + request$jscomp$0 = request; + var boundary = task$jscomp$0.blockedBoundary, + error$jscomp$0 = request.aborted ? request.fatalError : x, errorInfo$jscomp$0 = errorInfo, replayNodes = task$jscomp$0.replay.nodes, resumeSlots = task$jscomp$0.replay.slots, @@ -7962,7 +8063,8 @@ 0 === request.allPendingTasks && completeAll(request); } } finally { - currentTaskInDEV = prevTaskInDEV; + (request.currentTask = prevTask), + (currentTaskInDEV = prevTaskInDEV); } } } else if ( @@ -7971,7 +8073,8 @@ (request$jscomp$0 = segment), request$jscomp$0.status === PENDING) ) { - request$jscomp$0.status = 6; + var prevTask$jscomp$0 = request.currentTask; + request.currentTask = task$jscomp$0; switchContext(task$jscomp$0.context); prevTaskInDEV = currentTaskInDEV; currentTaskInDEV = task$jscomp$0; @@ -8000,35 +8103,21 @@ var x$jscomp$0 = thrownValue === SuspenseException ? getSuspendedThenable() - : 12 === request.status - ? request.fatalError - : thrownValue; - if ( - 12 === request.status && - null !== request.trackedPostpones - ) { - var trackedPostpones = request.trackedPostpones, - thrownInfo = getThrownInfo(task$jscomp$0.componentStack); - task$jscomp$0.abortSet.delete(task$jscomp$0); - logRecoverableError( - request, - x$jscomp$0, - thrownInfo, - task$jscomp$0.debugTask - ); - trackPostpone( - request, - trackedPostpones, - task$jscomp$0, - request$jscomp$0 - ); - finishedTask( - request, - task$jscomp$0.blockedBoundary, - task$jscomp$0.row, - request$jscomp$0 - ); - } else if ( + : thrownValue; + if (request.aborted) + thrownValue === SuspenseException && + (task$jscomp$0.thenableState = + getThenableStateAfterSuspending()), + (request.currentTask = prevTask$jscomp$0), + (request$jscomp$0 = request), + abortTaskDEV(task$jscomp$0, request$jscomp$0), + task$jscomp$0.abortSet.delete(task$jscomp$0), + finishAbortedTaskDEV( + task$jscomp$0, + request$jscomp$0, + request$jscomp$0.fatalError + ); + else if ( "object" === typeof x$jscomp$0 && null !== x$jscomp$0 && "function" === typeof x$jscomp$0.then @@ -8039,7 +8128,7 @@ ? getThenableStateAfterSuspending() : null; var ping$jscomp$0 = task$jscomp$0.ping; - x$jscomp$0.then(ping$jscomp$0, ping$jscomp$0); + x$jscomp$0.then(ping$jscomp$0.resolve, ping$jscomp$0.reject); } else { var errorInfo$jscomp$1 = getThrownInfo( task$jscomp$0.componentStack @@ -8095,7 +8184,8 @@ 0 === request.allPendingTasks && completeAll(request); } } finally { - currentTaskInDEV = prevTaskInDEV; + (request.currentTask = prevTask$jscomp$0), + (currentTaskInDEV = prevTaskInDEV); } } } @@ -8946,7 +9036,7 @@ } } function startFlowing(request, destination) { - if (13 === request.status) + if (12 === request.status) (request.status = CLOSED), destination.destroy(request.fatalError); else if (request.status !== CLOSED && null === request.destination) { request.destination = destination; @@ -8959,43 +9049,41 @@ } } } - function abort(request, reason) { - if (11 === request.status || 10 === request.status) request.status = 12; + function finishAbort(request, abortableTasks) { try { - var abortableTasks = request.abortableTasks; if (0 < abortableTasks.size) { - var error = - void 0 === reason - ? Error("The render was aborted by the server without a reason.") - : "object" === typeof reason && - null !== reason && - "function" === typeof reason.then - ? Error("The render was aborted by the server with a promise.") - : reason; - request.fatalError = error; + var error = request.fatalError; abortableTasks.forEach(function (task) { - var prevTaskInDEV = currentTaskInDEV, - prevGetCurrentStackImpl = ReactSharedInternals.getCurrentStack; - currentTaskInDEV = task; - ReactSharedInternals.getCurrentStack = getCurrentStackInDEV; - try { - abortTask(task, request, error); - } finally { - (currentTaskInDEV = prevTaskInDEV), - (ReactSharedInternals.getCurrentStack = - prevGetCurrentStackImpl); - } + return finishAbortedTaskDEV(task, request, error); }); abortableTasks.clear(); } null !== request.destination && flushCompletedQueues(request, request.destination); } catch (error$4) { - (reason = {}), - logRecoverableError(request, error$4, reason, null), - fatalError(request, error$4, reason, null); + (abortableTasks = {}), + logRecoverableError(request, error$4, abortableTasks, null), + fatalError(request, error$4, abortableTasks, null); } } + function abort(request, reason) { + request.aborted || + (11 !== request.status && 10 !== request.status) || + ((request.aborted = !0), + (request.fatalError = + void 0 === reason + ? Error("The render was aborted by the server without a reason.") + : "object" === typeof reason && + null !== reason && + "function" === typeof reason.then + ? Error("The render was aborted by the server with a promise.") + : reason), + (reason = request.abortableTasks), + reason.forEach(function (task) { + return abortTaskDEV(task, request); + }), + finishAbort(request, reason)); + } function addToReplayParent(node, parentKeyPath, trackedPostpones) { if (null === parentKeyPath) trackedPostpones.rootNodes.push(node); else { @@ -10529,7 +10617,7 @@ ABORTED = 3, ERRORED = 4, POSTPONED = 5, - CLOSED = 14, + CLOSED = 13, currentRequest = null, didWarnAboutBadClass = {}, didWarnAboutContextTypes = {}, @@ -10556,5 +10644,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-f0dfee38-20260529"; + exports.version = "19.3.0-experimental-43bcbf80-20260603"; })(); 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 e9de447c9584..3a89c6b1d0e8 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 @@ -2954,16 +2954,16 @@ function createRenderState(resumableState, generateStaticMarkup) { "\x3c/script>" )); bootstrapScriptContent = idPrefix + "P:"; - var JSCompiler_object_inline_segmentPrefix_1883 = idPrefix + "S:"; + var JSCompiler_object_inline_segmentPrefix_1902 = idPrefix + "S:"; idPrefix += "B:"; - 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 = { + var JSCompiler_object_inline_preconnects_1916 = new Set(), + JSCompiler_object_inline_fontPreloads_1917 = new Set(), + JSCompiler_object_inline_highImagePreloads_1918 = new Set(), + JSCompiler_object_inline_styles_1919 = new Map(), + JSCompiler_object_inline_bootstrapScripts_1920 = new Set(), + JSCompiler_object_inline_scripts_1921 = new Set(), + JSCompiler_object_inline_bulkPreloads_1922 = new Set(), + JSCompiler_object_inline_preloads_1923 = { images: new Map(), stylesheets: new Map(), scripts: new Map(), @@ -3000,7 +3000,7 @@ function createRenderState(resumableState, generateStaticMarkup) { scriptConfig.moduleScriptResources[href] = null; scriptConfig = []; pushLinkImpl(scriptConfig, props); - JSCompiler_object_inline_bootstrapScripts_1901.add(scriptConfig); + JSCompiler_object_inline_bootstrapScripts_1920.add(scriptConfig); bootstrapChunks.push('