{"version":3,"sources":["../../../../src/server/app-render/app-render.tsx"],"sourcesContent":["import type { ComponentType, ErrorInfo, JSX, ReactNode } from 'react'\nimport type { RenderOpts, PreloadCallbacks } from './types'\nimport type {\n  ActionResult,\n  DynamicParamTypesShort,\n  DynamicSegmentTuple,\n  FlightRouterState,\n  CacheNodeSeedData,\n  RSCPayload,\n  NavigationFlightResponse,\n  FlightData,\n  InitialRSCPayload,\n  FlightDataPath,\n  PrefetchHints,\n} from '../../shared/lib/app-router-types'\nimport type { Readable } from 'node:stream'\nimport {\n  workAsyncStorage,\n  type WorkStore,\n} from '../app-render/work-async-storage.external'\nimport type {\n  InstantValidationSamples,\n  PrerenderStoreModernClient,\n  PrerenderStoreModernRuntime,\n  RequestStore,\n  ValidationStoreClient,\n} from '../app-render/work-unit-async-storage.external'\nimport type { NextParsedUrlQuery } from '../request-meta'\nimport type { LoaderTree } from '../lib/app-dir-module'\nimport type { AppPageModule } from '../route-modules/app-page/module'\nimport type { BaseNextRequest, BaseNextResponse } from '../base-http'\nimport type { IncomingHttpHeaders } from 'http'\nimport * as ReactClient from 'react'\n\nimport RenderResult, {\n  type AppPageRenderResultMetadata,\n  type RenderResultOptions,\n} from '../render-result'\nimport {\n  chainStreams,\n  continueFizzStream,\n  continueDynamicPrerender,\n  continueStaticPrerender,\n  continueDynamicHTMLResume,\n  continueStaticFallbackPrerender,\n  streamToBuffer,\n  streamToString,\n  createInlinedDataStream,\n  createPendingStream,\n  createOnHeadersCallback,\n  resumeAndAbort,\n  renderToFlightStream,\n  renderToFizzStream,\n  resumeToFizzStream,\n  getServerPrerender,\n  getClientPrerender,\n  processPrelude as processPreludeOp,\n  createDocumentClosingStream,\n} from './stream-ops'\nimport { stripInternalQueries } from '../internal-utils'\nimport {\n  NEXT_HMR_REFRESH_HEADER,\n  NEXT_ROUTER_PREFETCH_HEADER,\n  NEXT_ROUTER_STATE_TREE_HEADER,\n  NEXT_ROUTER_STALE_TIME_HEADER,\n  NEXT_URL,\n  RSC_HEADER,\n  NEXT_ROUTER_SEGMENT_PREFETCH_HEADER,\n  NEXT_REQUEST_ID_HEADER,\n  NEXT_HTML_REQUEST_ID_HEADER,\n} from '../../client/components/app-router-headers'\nimport { createMetadataContext } from '../../lib/metadata/metadata-context'\nimport { createRequestStoreForRender } from '../async-storage/request-store'\nimport { isRSCRequestHeader } from '../lib/is-rsc-request'\nimport { createWorkStore } from '../async-storage/work-store'\nimport {\n  getAccessFallbackErrorTypeByStatus,\n  getAccessFallbackHTTPStatus,\n  isHTTPAccessFallbackError,\n} from '../../client/components/http-access-fallback/http-access-fallback'\nimport {\n  getURLFromRedirectError,\n  getRedirectStatusCodeFromError,\n} from '../../client/components/redirect'\nimport { isRedirectError } from '../../client/components/redirect-error'\nimport { getImplicitTags, type ImplicitTags } from '../lib/implicit-tags'\nimport { AppRenderSpan, NextNodeServerSpan } from '../lib/trace/constants'\nimport { getTracer, SpanStatusCode } from '../lib/trace/tracer'\nimport { FlightRenderResult } from './flight-render-result'\nimport {\n  createReactServerErrorHandler,\n  createHTMLErrorHandler,\n  type DigestedError,\n  isUserLandError,\n  getDigestForWellKnownError,\n} from './create-error-handler'\nimport { dynamicParamTypes } from './get-short-dynamic-param-type'\nimport { getSegmentParam } from '../../shared/lib/router/utils/get-segment-param'\nimport { getScriptNonceFromHeader } from './get-script-nonce-from-header'\nimport { parseAndValidateFlightRouterState } from './parse-and-validate-flight-router-state'\nimport { createFlightRouterStateFromLoaderTree } from './create-flight-router-state-from-loader-tree'\nimport { handleAction } from './action-handler'\nimport { isBailoutToCSRError } from '../../shared/lib/lazy-dynamic/bailout-to-csr'\nimport { warn, error } from '../../build/output/log'\nimport { appendMutableCookies } from '../web/spec-extension/adapters/request-cookies'\nimport { createServerInsertedHTML } from './server-inserted-html'\nimport { getRequiredScripts } from './required-scripts'\nimport { addPathPrefix } from '../../shared/lib/router/utils/add-path-prefix'\nimport { makeGetServerInsertedHTML } from './make-get-server-inserted-html'\nimport {\n  walkTreeWithFlightRouterState,\n  createFullTreeFlightDataForNavigation,\n} from './walk-tree-with-flight-router-state'\nimport {\n  createComponentTree,\n  getRootParams,\n  type PrerenderHTTPErrorState,\n} from './create-component-tree'\nimport { getAssetQueryString } from './get-asset-query-string'\nimport {\n  getClientReferenceManifest,\n  getServerModuleMap,\n} from './manifests-singleton'\nimport {\n  DynamicState,\n  type PostponedState,\n  DynamicHTMLPreludeState,\n  parsePostponedState,\n} from './postponed-state'\nimport {\n  getDynamicDataPostponedState,\n  getDynamicHTMLPostponedState,\n  getPostponedFromState,\n} from './postponed-state'\nimport { isDynamicServerError } from '../../client/components/hooks-server-context'\nimport { getFlightStream } from './use-flight-response'\nimport {\n  StaticGenBailoutError,\n  isStaticGenBailoutError,\n} from '../../client/components/static-generation-bailout'\nimport { getStackWithoutErrorMessage } from '../../lib/format-server-error'\nimport { extractNextErrorCode } from '../../lib/error-telemetry-utils'\nimport {\n  accessedDynamicData,\n  createRenderInBrowserAbortSignal,\n  formatDynamicAPIAccesses,\n  isPrerenderInterruptedError,\n  createDynamicTrackingState,\n  createDynamicValidationState,\n  trackAllowedDynamicAccess,\n  throwIfDisallowedDynamic,\n  PreludeState,\n  consumeDynamicAccess,\n  type DynamicAccess,\n  logDisallowedDynamicError,\n  trackDynamicHoleInRuntimeShell,\n  trackDynamicHoleInStaticShell,\n  getStaticShellDisallowedDynamicReasons,\n  getNavigationDisallowedDynamicReasons,\n  trackDynamicHoleInNavigation,\n  DynamicHoleKind,\n  trackThrownErrorInNavigation,\n  createInstantValidationState,\n} from './dynamic-rendering'\nimport {\n  getClientComponentLoaderMetrics,\n  wrapClientComponentLoader,\n} from '../client-component-renderer-logger'\nimport { isNodeNextRequest } from '../base-http/helpers'\nimport {\n  parseRelativeUrl,\n  type ParsedRelativeUrl,\n} from '../../shared/lib/router/utils/parse-relative-url'\nimport AppRouter from '../../client/components/app-router'\nimport type { ServerComponentsHmrCache } from '../response-cache'\nimport type { RequestErrorContext } from '../instrumentation/types'\nimport { getIsPossibleServerAction } from '../lib/server-action-request-meta'\nimport { createInitialRouterState } from '../../client/components/router-reducer/create-initial-router-state'\nimport { createMutableActionQueue } from '../../client/components/app-router-instance'\nimport { getRevalidateReason } from '../instrumentation/utils'\nimport { PAGE_SEGMENT_KEY } from '../../shared/lib/segment'\nimport {\n  getFallbackRouteParams,\n  type OpaqueFallbackRouteParams,\n} from '../request/fallback-params'\nimport {\n  createReactServerPrerenderResult,\n  type ReactServerPrerenderResult,\n  ReactServerResult,\n  createReactServerPrerenderResultFromRender,\n} from './app-render-prerender-utils'\nimport {\n  Phase,\n  printDebugThrownValueForProspectiveRender,\n} from './prospective-render-utils'\nimport { runInSequentialTasks } from './app-render-render-utils'\nimport { waitAtLeastOneReactRenderTask } from '../../lib/scheduler'\nimport {\n  getHmrRefreshHash,\n  workUnitAsyncStorage,\n  type PrerenderStore,\n} from './work-unit-async-storage.external'\nimport { consoleAsyncStorage } from './console-async-storage.external'\nimport { CacheSignal } from './cache-signal'\nimport {\n  createResponseVaryParamsAccumulator,\n  finishAccumulatingVaryParams,\n  getMetadataVaryParamsThenable,\n} from './vary-params'\nimport { getTracedMetadata } from '../lib/trace/utils'\nimport { InvariantError } from '../../shared/lib/invariant-error'\nimport {\n  StaleTimeIterable,\n  createSelectStaleTime,\n  trackStaleTime,\n  finishStaleTimeTracking,\n} from './stale-time'\n\nimport { HTML_CONTENT_TYPE_HEADER, INFINITE_CACHE } from '../../lib/constants'\nimport { createComponentStylesAndScripts } from './create-component-styles-and-scripts'\nimport { parseLoaderTree } from '../../shared/lib/router/utils/parse-loader-tree'\nimport {\n  createPrerenderResumeDataCache,\n  createRenderResumeDataCache,\n  type PrerenderResumeDataCache,\n  type RenderResumeDataCache,\n} from '../resume-data-cache/resume-data-cache'\nimport type { MetadataErrorType } from '../../lib/metadata/resolve-metadata'\nimport isError from '../../lib/is-error'\nimport { createServerInsertedMetadata } from './metadata-insertion/create-server-inserted-metadata'\nimport { getPreviouslyRevalidatedTags } from '../server-utils'\nimport { executeRevalidates } from '../revalidation-utils'\nimport {\n  trackPendingChunkLoad,\n  trackPendingImport,\n  trackPendingModules,\n} from './module-loading/track-module-loading.external'\nimport { isReactLargeShellError } from './react-large-shell-error'\nimport type { GlobalErrorComponent } from '../../client/components/builtin/global-error'\nimport { normalizeConventionFilePath } from './segment-explorer-path'\nimport { getRequestMeta } from '../request-meta'\nimport {\n  getDynamicParam,\n  interpolateParallelRouteParams,\n} from '../../shared/lib/router/utils/get-dynamic-param'\nimport type { Params } from '../request/params'\nimport { ImageConfigContext } from '../../shared/lib/image-config-context.shared-runtime'\nimport { imageConfigDefault } from '../../shared/lib/image-config'\nimport { RenderStage, StagedRenderingController } from './staged-rendering'\nimport {\n  anySegmentHasRuntimePrefetchEnabled,\n  isPageAllowedToBlock,\n  anySegmentNeedsInstantValidationInDev,\n  anySegmentNeedsInstantValidationInBuild,\n  resolveInstantConfigSamplesForPage,\n} from './instant-validation/instant-config'\nimport { warnOnce } from '../../shared/lib/utils/warn-once'\nimport {\n  createDebugChannel,\n  type DebugChannelPair,\n} from './debug-channel-server'\nimport { createNodeStreamWithLateRelease } from './instant-validation/stream-utils'\n\nimport {\n  createValidationBoundaryTracking,\n  type ValidationBoundaryTracking,\n} from './instant-validation/boundary-tracking'\nimport type {\n  AppSegmentConfig,\n  InstantSample,\n} from '../../build/segment-config/app/app-segment-config'\nimport { ResponseCookies } from '../web/spec-extension/cookies'\nimport { isInstantValidationError } from './instant-validation/instant-validation-error'\n\nexport type GetDynamicParamFromSegment = (\n  // The LoaderTree to extract the dynamic param from\n  loaderTree: LoaderTree\n) => DynamicParam | null\n\nexport type DynamicParam = {\n  param: string\n  value: string | string[] | null\n  treeSegment: DynamicSegmentTuple\n  type: DynamicParamTypesShort\n}\n\nexport type GenerateFlight = typeof generateDynamicFlightRenderResult\n\nexport type AppSharedContext = {\n  buildId: string\n  deploymentId: string\n  clientAssetToken: string\n}\n\nexport type AppRenderContext = {\n  sharedContext: AppSharedContext\n  workStore: WorkStore\n  url: ReturnType<typeof parseRelativeUrl>\n  componentMod: AppPageModule\n  renderOpts: RenderOpts\n  parsedRequestHeaders: ParsedRequestHeaders\n  getDynamicParamFromSegment: GetDynamicParamFromSegment\n  interpolatedParams: Params\n  query: NextParsedUrlQuery\n  isPrefetch: boolean\n  isPossibleServerAction: boolean\n  requestTimestamp: number\n  appUsingSizeAdjustment: boolean\n  flightRouterState?: FlightRouterState\n  requestId: string\n  htmlRequestId: string\n  pagePath: string\n  assetPrefix: string\n  isNotFoundPath: boolean\n  nonce: string | undefined\n  res: BaseNextResponse\n  /**\n   * For now, the implicit tags are common for the whole route. If we ever start\n   * rendering/revalidating segments independently, they need to move to the\n   * work unit store.\n   */\n  implicitTags: ImplicitTags\n}\n\nfunction maybeAppendBuildIdToRSCPayload<T extends RSCPayload>(\n  ctx: AppRenderContext,\n  payload: T\n): T {\n  if (!ctx.sharedContext.deploymentId) {\n    // When using the build id, we need to initialize the id on initial page load, so a build id\n    // header wouldn't be enough.\n    payload.b = ctx.sharedContext.buildId\n  }\n  return payload\n}\n\ninterface ParseRequestHeadersOptions {\n  readonly isRoutePPREnabled: boolean\n  readonly previewModeId: string | undefined\n}\n\nconst flightDataPathHeadKey = 'h'\nconst getFlightViewportKey = (requestId: string) => requestId + 'v'\nconst getFlightMetadataKey = (requestId: string) => requestId + 'm'\n\nconst filterStackFrame =\n  process.env.NODE_ENV !== 'production'\n    ? (require('../lib/source-maps') as typeof import('../lib/source-maps'))\n        .filterStackFrameDEV\n    : undefined\n\ninterface ParsedRequestHeaders {\n  /**\n   * Router state provided from the client-side router. Used to handle rendering\n   * from the common layout down. This value will be undefined if the request is\n   * not a client-side navigation request, or if the request is a prefetch\n   * request.\n   */\n  readonly flightRouterState: FlightRouterState | undefined\n  readonly isPrefetchRequest: boolean\n  readonly isRuntimePrefetchRequest: boolean\n  readonly isRouteTreePrefetchRequest: boolean\n  readonly isHmrRefresh: boolean\n  readonly isRSCRequest: boolean\n  readonly nonce: string | undefined\n  readonly previouslyRevalidatedTags: string[]\n  readonly requestId: string | undefined\n  readonly htmlRequestId: string | undefined\n}\n\nfunction parseRequestHeaders(\n  headers: IncomingHttpHeaders,\n  options: ParseRequestHeadersOptions\n): ParsedRequestHeaders {\n  // runtime prefetch requests are *not* treated as prefetch requests\n  // (TODO: this is confusing, we should refactor this to express this better)\n  const isPrefetchRequest = headers[NEXT_ROUTER_PREFETCH_HEADER] === '1'\n\n  const isRuntimePrefetchRequest = headers[NEXT_ROUTER_PREFETCH_HEADER] === '2'\n\n  const isHmrRefresh = headers[NEXT_HMR_REFRESH_HEADER] !== undefined\n\n  const isRSCRequest = isRSCRequestHeader(headers[RSC_HEADER])\n\n  const shouldProvideFlightRouterState =\n    isRSCRequest && (!isPrefetchRequest || !options.isRoutePPREnabled)\n\n  const flightRouterState = shouldProvideFlightRouterState\n    ? parseAndValidateFlightRouterState(headers[NEXT_ROUTER_STATE_TREE_HEADER])\n    : undefined\n\n  // Checks if this is a prefetch of the Route Tree by the Segment Cache\n  const isRouteTreePrefetchRequest =\n    headers[NEXT_ROUTER_SEGMENT_PREFETCH_HEADER] === '/_tree'\n\n  const csp =\n    headers['content-security-policy'] ||\n    headers['content-security-policy-report-only']\n\n  const nonce =\n    typeof csp === 'string' ? getScriptNonceFromHeader(csp) : undefined\n\n  const previouslyRevalidatedTags = getPreviouslyRevalidatedTags(\n    headers,\n    options.previewModeId\n  )\n\n  let requestId: string | undefined\n  let htmlRequestId: string | undefined\n\n  if (process.env.__NEXT_DEV_SERVER) {\n    // The request IDs are only used for the dev server to send debug\n    // information to the matching client (identified by the HTML request ID\n    // that was sent to the client with the HTML document) for the current\n    // request (identified by the request ID, as defined by the client).\n\n    requestId =\n      typeof headers[NEXT_REQUEST_ID_HEADER] === 'string'\n        ? headers[NEXT_REQUEST_ID_HEADER]\n        : undefined\n\n    htmlRequestId =\n      typeof headers[NEXT_HTML_REQUEST_ID_HEADER] === 'string'\n        ? headers[NEXT_HTML_REQUEST_ID_HEADER]\n        : undefined\n  }\n\n  return {\n    flightRouterState,\n    isPrefetchRequest,\n    isRuntimePrefetchRequest,\n    isRouteTreePrefetchRequest,\n    isHmrRefresh,\n    isRSCRequest,\n    nonce,\n    previouslyRevalidatedTags,\n    requestId,\n    htmlRequestId,\n  }\n}\n\n/**\n * Walks the loader tree to find the minimum `unstable_dynamicStaleTime` exported by\n * any page module. Returns null if no page exports the config.\n *\n * This only reads static exports from page modules — it does not render any\n * server components, so it's cheap to call.\n *\n * TODO: Move this to the prefetch hints file so we don't have to walk the\n * tree on every render.\n */\nasync function getDynamicStaleTime(tree: LoaderTree): Promise<number | null> {\n  const { page, parallelRoutes } = parseLoaderTree(tree)\n\n  let result: number | null = null\n\n  // Only pages (not layouts) can export unstable_dynamicStaleTime.\n  if (typeof page !== 'undefined') {\n    const pageMod = await page[0]()\n    if (\n      pageMod &&\n      typeof (pageMod as AppSegmentConfig).unstable_dynamicStaleTime ===\n        'number'\n    ) {\n      const value = (pageMod as AppSegmentConfig).unstable_dynamicStaleTime!\n      result = result !== null ? Math.min(result, value) : value\n    }\n  }\n\n  const childPromises: Promise<number | null>[] = []\n  for (const parallelRouteKey in parallelRoutes) {\n    childPromises.push(getDynamicStaleTime(parallelRoutes[parallelRouteKey]))\n  }\n  const childResults = await Promise.all(childPromises)\n  for (const childResult of childResults) {\n    if (childResult !== null) {\n      result = result !== null ? Math.min(result, childResult) : childResult\n    }\n  }\n\n  return result\n}\n\nfunction createNotFoundLoaderTree(loaderTree: LoaderTree): LoaderTree {\n  const components = loaderTree[2]\n  const hasGlobalNotFound = !!components['global-not-found']\n  const notFoundTreeComponents: LoaderTree[2] = hasGlobalNotFound\n    ? {\n        layout: components['global-not-found']!,\n        page: [() => null, 'next/dist/client/components/builtin/empty-stub'],\n      }\n    : {\n        page: components['not-found'],\n      }\n\n  return [\n    '',\n    {\n      children: [PAGE_SEGMENT_KEY, {}, notFoundTreeComponents, null],\n    },\n    // Always include global-error so that getGlobalErrorStyles can access it.\n    // When global-not-found is present, use full components.\n    // Otherwise, only include global-error module.\n    hasGlobalNotFound\n      ? components\n      : { 'global-error': components['global-error'] },\n    null, // staticSiblings\n  ]\n}\n\ntype HTTPAccessErrorStatusCode = 404 | 403 | 401\n\nfunction hasPrerenderHTTPErrorBoundary(\n  loaderTree: LoaderTree,\n  triggeredStatus: HTTPAccessErrorStatusCode,\n  authInterrupts: boolean\n): boolean {\n  switch (triggeredStatus) {\n    case 404:\n      return !!loaderTree[2]['not-found']\n    case 403:\n      return authInterrupts && !!loaderTree[2].forbidden\n    case 401:\n      return authInterrupts && !!loaderTree[2].unauthorized\n    default:\n      return false\n  }\n}\n\nfunction findPrerenderHTTPErrorBoundaryTree(\n  loaderTree: LoaderTree,\n  triggeredStatus: HTTPAccessErrorStatusCode,\n  authInterrupts: boolean\n): LoaderTree | null {\n  let boundaryTree: LoaderTree | null = hasPrerenderHTTPErrorBoundary(\n    loaderTree,\n    triggeredStatus,\n    authInterrupts\n  )\n    ? loaderTree\n    : null\n\n  const childrenTree = loaderTree[1].children\n  if (childrenTree) {\n    const deeperBoundaryTree = findPrerenderHTTPErrorBoundaryTree(\n      childrenTree,\n      triggeredStatus,\n      authInterrupts\n    )\n\n    if (deeperBoundaryTree) {\n      boundaryTree = deeperBoundaryTree\n    }\n  }\n\n  return boundaryTree\n}\n\n/**\n * Returns a function that parses the dynamic segment and return the associated value.\n */\nfunction makeGetDynamicParamFromSegment(\n  interpolatedParams: Params,\n  fallbackRouteParams: OpaqueFallbackRouteParams | null,\n  optimisticRouting: boolean\n): GetDynamicParamFromSegment {\n  return function getDynamicParamFromSegment(loaderTree: LoaderTree) {\n    const [segment, , , staticSiblings] = loaderTree\n    const segmentParam = getSegmentParam(segment)\n    if (!segmentParam) {\n      return null\n    }\n    const segmentKey = segmentParam.paramName\n    const dynamicParamType = dynamicParamTypes[segmentParam.paramType]\n    // Static siblings are only included when optimistic routing is enabled\n    const siblings = optimisticRouting ? staticSiblings : null\n    return getDynamicParam(\n      interpolatedParams,\n      segmentKey,\n      dynamicParamType,\n      fallbackRouteParams,\n      siblings\n    )\n  }\n}\n\nfunction NonIndex({\n  createElement,\n  pagePath,\n  statusCode,\n  isPossibleServerAction,\n}: {\n  createElement: typeof ReactClient.createElement\n  pagePath: string\n  statusCode: number | undefined\n  isPossibleServerAction: boolean\n}) {\n  const is404Page = pagePath === '/404'\n  const isInvalidStatusCode = typeof statusCode === 'number' && statusCode > 400\n\n  // Only render noindex for page request, skip for server actions\n  // TODO: is this correct if `isPossibleServerAction` is a false positive?\n  if (!isPossibleServerAction && (is404Page || isInvalidStatusCode)) {\n    return createElement('meta', {\n      name: 'robots',\n      content: 'noindex',\n    })\n  }\n  return null\n}\n\n/**\n * This is used by server actions & client-side navigations to generate RSC data from a client-side request.\n * This function is only called on \"dynamic\" requests (ie, there wasn't already a static response).\n * It uses request headers (namely `next-router-state-tree`) to determine where to start rendering.\n */\nasync function generateDynamicRSCPayload(\n  ctx: AppRenderContext,\n  options?: {\n    actionResult?: ActionResult\n    skipPageRendering?: boolean\n    staleTimeIterable?: AsyncIterable<number>\n    staticStageByteLengthPromise?: Promise<number>\n    runtimePrefetchStream?: ReadableStream<Uint8Array>\n  }\n): Promise<RSCPayload> {\n  // Flight data that is going to be passed to the browser.\n  // Currently a single item array but in the future multiple patches might be combined in a single request.\n\n  // We initialize `flightData` to an empty string because the client router knows how to tolerate\n  // it (treating it as an MPA navigation). The only time this function wouldn't generate flight data\n  // is for server actions, if the server action handler instructs this function to skip it. When the server\n  // action reducer sees a falsy value, it'll simply resolve the action with no data.\n  let flightData: FlightData = ''\n\n  const {\n    componentMod: {\n      routeModule: {\n        userland: { loaderTree },\n      },\n      createElement,\n      createMetadataComponents,\n      Fragment,\n    },\n    query,\n    requestId,\n    flightRouterState,\n    workStore,\n    url,\n  } = ctx\n\n  const serveStreamingMetadata = !!ctx.renderOpts.serveStreamingMetadata\n\n  if (!options?.skipPageRendering) {\n    const preloadCallbacks: PreloadCallbacks = []\n\n    // If we're performing instant validation, we need to render the whole tree,\n    // without skipping shared layouts.\n    const needsFullTree =\n      process.env.__NEXT_DEV_SERVER &&\n      ctx.renderOpts.cacheComponents &&\n      !options?.actionResult && // Only for navigations\n      (await anySegmentNeedsInstantValidationInDev(loaderTree))\n\n    const metadataIsRuntimePrefetchable =\n      await anySegmentHasRuntimePrefetchEnabled(loaderTree)\n    const { Viewport, Metadata, MetadataOutlet } = createMetadataComponents({\n      tree: loaderTree,\n      parsedQuery: query,\n      pathname: url.pathname,\n      metadataContext: createMetadataContext(ctx.renderOpts),\n      interpolatedParams: ctx.interpolatedParams,\n      serveStreamingMetadata,\n      isRuntimePrefetchable: metadataIsRuntimePrefetchable,\n    })\n\n    const rscHead = createElement(\n      Fragment,\n      {\n        key: flightDataPathHeadKey,\n      },\n      createElement(NonIndex, {\n        createElement,\n        pagePath: ctx.pagePath,\n        statusCode: ctx.res.statusCode,\n        isPossibleServerAction: ctx.isPossibleServerAction,\n      }),\n      createElement(Viewport, {\n        key: getFlightViewportKey(requestId),\n      }),\n      createElement(Metadata, {\n        key: getFlightMetadataKey(requestId),\n      })\n    )\n\n    flightData = (\n      needsFullTree\n        ? await createFullTreeFlightDataForNavigation({\n            ctx,\n            loaderTree,\n            rscHead,\n            injectedCSS: new Set(),\n            injectedJS: new Set(),\n            injectedFontPreloadTags: new Set(),\n            preloadCallbacks,\n            MetadataOutlet,\n          })\n        : await walkTreeWithFlightRouterState({\n            ctx,\n            loaderTreeToFilter: loaderTree,\n            parentParams: {},\n            flightRouterState,\n            rscHead,\n            injectedCSS: new Set(),\n            injectedJS: new Set(),\n            injectedFontPreloadTags: new Set(),\n            rootLayoutIncluded: false,\n            preloadCallbacks,\n            MetadataOutlet,\n            hintTree: ctx.renderOpts.prefetchHints?.[ctx.pagePath] ?? null,\n          })\n    ).map((path) => path.slice(1)) // remove the '' (root) segment\n  }\n\n  // In dev, the Vary header may not reliably reflect whether a route can\n  // be intercepted, because interception routes are compiled on demand.\n  // Default to true so the client doesn't cache a stale Fallback entry.\n  const varyHeader = ctx.res.getHeader('vary')\n  const couldBeIntercepted =\n    !!process.env.__NEXT_DEV_SERVER ||\n    (typeof varyHeader === 'string' && varyHeader.includes(NEXT_URL))\n\n  // If we have an action result, then this is a server action response.\n  // We can rely on this because `ActionResult` will always be a promise, even if\n  // the result is falsey.\n  if (options?.actionResult) {\n    return maybeAppendBuildIdToRSCPayload(ctx, {\n      a: options.actionResult,\n      f: flightData,\n      q: getRenderedSearch(query),\n      i: !!couldBeIntercepted,\n    })\n  }\n\n  // Otherwise, it's a regular RSC response.\n  const baseResponse: NavigationFlightResponse = maybeAppendBuildIdToRSCPayload(\n    ctx,\n    {\n      f: flightData,\n      q: getRenderedSearch(query),\n      i: !!couldBeIntercepted,\n      S: workStore.isStaticGeneration,\n      h: getMetadataVaryParamsThenable(),\n    }\n  )\n\n  if (options?.staleTimeIterable !== undefined) {\n    baseResponse.s = options.staleTimeIterable\n  }\n\n  if (options?.staticStageByteLengthPromise !== undefined) {\n    baseResponse.l = options.staticStageByteLengthPromise\n  }\n\n  if (options?.runtimePrefetchStream !== undefined) {\n    baseResponse.p = options.runtimePrefetchStream\n  }\n\n  // Include the per-page dynamic stale time from unstable_dynamicStaleTime, but only\n  // for dynamic renders (not prerenders/static generation). The client treats\n  // its presence as authoritative.\n  // TODO: Move this to the prefetch hints file so we don't have to walk the\n  // tree on every render.\n  if (!workStore.isStaticGeneration) {\n    const dynamicStaleTime = await getDynamicStaleTime(\n      ctx.componentMod.routeModule.userland.loaderTree\n    )\n    if (dynamicStaleTime !== null) {\n      baseResponse.d = dynamicStaleTime\n    }\n  }\n\n  return baseResponse\n}\n\nfunction createErrorContext(\n  ctx: AppRenderContext,\n  renderSource: RequestErrorContext['renderSource']\n): RequestErrorContext {\n  return {\n    routerKind: 'App Router',\n    routePath: ctx.pagePath,\n    // TODO: is this correct if `isPossibleServerAction` is a false positive?\n    routeType: ctx.isPossibleServerAction ? 'action' : 'render',\n    renderSource,\n    revalidateReason: getRevalidateReason(ctx.workStore),\n  }\n}\n\n/**\n * Produces a RenderResult containing the Flight data for the given request. See\n * `generateDynamicRSCPayload` for information on the contents of the render result.\n */\nasync function generateDynamicFlightRenderResult(\n  req: BaseNextRequest,\n  ctx: AppRenderContext,\n  requestStore: RequestStore,\n  options?: {\n    actionResult: ActionResult\n    skipPageRendering: boolean\n    componentTree?: CacheNodeSeedData\n    preloadCallbacks?: PreloadCallbacks\n    temporaryReferences?: WeakMap<any, string>\n    waitUntil?: Promise<unknown>\n  }\n): Promise<RenderResult> {\n  const { htmlRequestId, renderOpts, requestId, workStore } = ctx\n\n  const {\n    onInstrumentationRequestError,\n    setReactDebugChannel,\n    isBuildTimePrerendering = false,\n  } = renderOpts\n\n  function onFlightDataRenderError(err: DigestedError, silenceLog: boolean) {\n    return onInstrumentationRequestError?.(\n      err,\n      req,\n      createErrorContext(ctx, 'react-server-components-payload'),\n      silenceLog\n    )\n  }\n\n  const onError = createReactServerErrorHandler(\n    process.env.NODE_ENV === 'development',\n    isBuildTimePrerendering,\n    workStore.reactServerErrorsByDigest,\n    onFlightDataRenderError\n  )\n\n  const debugChannel = setReactDebugChannel && createDebugChannel()\n\n  if (debugChannel) {\n    setReactDebugChannel(debugChannel.clientSide, htmlRequestId, requestId)\n  }\n\n  const { clientModules } = getClientReferenceManifest()\n\n  // For app dir, use the bundled version of Flight server renderer (renderToReadableStream)\n  // which contains the subset React.\n  const rscPayload = await workUnitAsyncStorage.run(\n    requestStore,\n    generateDynamicRSCPayload,\n    ctx,\n    options\n  )\n\n  const flightStream = workUnitAsyncStorage.run(\n    requestStore,\n    renderToFlightStream,\n    ctx.componentMod,\n    rscPayload,\n    clientModules,\n    {\n      onError,\n      temporaryReferences: options?.temporaryReferences,\n      filterStackFrame,\n      debugChannel: debugChannel?.serverSide,\n    }\n  )\n\n  return new FlightRenderResult(\n    flightStream,\n    { fetchMetrics: workStore.fetchMetrics },\n    options?.waitUntil\n  )\n}\n\n/**\n * Production-only staged dynamic flight render for cache components. Uses\n * staged rendering to separate static (RDC-backed) from runtime/dynamic\n * content.\n */\nasync function generateStagedDynamicFlightRenderResult(\n  req: BaseNextRequest,\n  ctx: AppRenderContext,\n  requestStore: RequestStore\n): Promise<RenderResult> {\n  const { componentMod, workStore, renderOpts } = ctx\n  const { renderToReadableStream, routeModule } = componentMod\n  const { loaderTree } = routeModule.userland\n  const { onInstrumentationRequestError, experimental } = renderOpts\n\n  function onFlightDataRenderError(err: DigestedError, silenceLog: boolean) {\n    return onInstrumentationRequestError?.(\n      err,\n      req,\n      createErrorContext(ctx, 'react-server-components-payload'),\n      silenceLog\n    )\n  }\n\n  const onError = createReactServerErrorHandler(\n    false,\n    false,\n    workStore.reactServerErrorsByDigest,\n    onFlightDataRenderError\n  )\n\n  const selectStaleTime = createSelectStaleTime(experimental)\n  const staleTimeIterable = new StaleTimeIterable()\n\n  // TODO(cached-navs): this assumes that we checked during build that there's no sync IO.\n  // but it can happen e.g. after a revalidation or conditionally for a param that wasn't prerendered.\n  // we should change this to track sync IO, log an error and advance to dynamic.\n  const shouldTrackSyncIO = false\n  const stageController = new StagedRenderingController(\n    null, // no aborting\n    null, // no abandoning\n    shouldTrackSyncIO\n  )\n\n  // Initialize stale time tracking on the request store.\n  requestStore.stale = INFINITE_CACHE\n  requestStore.stagedRendering = stageController\n  requestStore.asyncApiPromises = createAsyncApiPromises(\n    stageController,\n    requestStore.cookies,\n    requestStore.mutableCookies,\n    requestStore.headers\n  )\n\n  trackStaleTime(\n    requestStore as { stale: number },\n    staleTimeIterable,\n    selectStaleTime\n  )\n\n  // Deferred promise for the static stage byte length. Flight serializes the\n  // resolved value into the stream so the client knows where the static\n  // prefix ends.\n  let resolveStaticStageByteLength: (count: number) => void\n  const staticStageByteLengthPromise = new Promise<number>((resolve) => {\n    resolveStaticStageByteLength = resolve\n  })\n\n  // Check if this route has opted into runtime prefetching via\n  // unstable_instant. If so, we piggyback on the dynamic render to fill caches\n  // and then spawn a final runtime prerender whose result stream is embedded in\n  // the RSC payload. This is gated on the explicit opt-in because it adds extra\n  // server processing, increases the response payload size, and the runtime\n  // prefetch output should have been validated first.\n  const hasRuntimePrefetch =\n    await anySegmentHasRuntimePrefetchEnabled(loaderTree)\n\n  let runtimePrefetchStream: ReadableStream<Uint8Array> | undefined\n\n  if (hasRuntimePrefetch) {\n    // Create a mutable cache that gets filled during the dynamic render.\n    const prerenderResumeDataCache = createPrerenderResumeDataCache()\n    requestStore.prerenderResumeDataCache = prerenderResumeDataCache\n\n    const cacheSignal = new CacheSignal()\n    trackPendingModules(cacheSignal)\n    requestStore.cacheSignal = cacheSignal\n\n    // Create a deferred stream for the runtime prefetch result. Its readable\n    // side goes into the RSC payload (Flight serializes it lazily). The\n    // writable side receives the runtime prerender result once the dynamic\n    // render has filled all caches.\n    const runtimePrefetchTransform = new TransformStream<Uint8Array>()\n    runtimePrefetchStream = runtimePrefetchTransform.readable\n\n    // Wait for the dynamic render to fill caches, then run the final runtime\n    // prerender (fire-and-forget — does not block the response).\n    void cacheSignal\n      .cacheReady()\n      .then(() =>\n        spawnRuntimePrefetchWithFilledCaches(\n          runtimePrefetchTransform.writable,\n          ctx,\n          prerenderResumeDataCache,\n          requestStore,\n          onError\n        )\n      )\n  }\n\n  const rscPayload = await workUnitAsyncStorage.run(\n    requestStore,\n    generateDynamicRSCPayload,\n    ctx,\n    { staleTimeIterable, staticStageByteLengthPromise, runtimePrefetchStream }\n  )\n\n  const { clientModules } = getClientReferenceManifest()\n\n  const flightReadableStream = await runInSequentialTasks(\n    () => {\n      stageController.advanceStage(RenderStage.Static)\n\n      const stream = workUnitAsyncStorage.run(\n        requestStore,\n        renderToReadableStream,\n        rscPayload,\n        clientModules,\n        { onError, filterStackFrame }\n      )\n\n      const [dynamicStream, staticStream] = stream.tee()\n\n      countStaticStageBytes(staticStream, stageController).then(\n        resolveStaticStageByteLength\n      )\n\n      return dynamicStream\n    },\n    () => {\n      // This is a separate task that doesn't advance a stage. It forces\n      // draining the microtask queue so that the stale time iterable is closed\n      // before we advance to the dynamic stage.\n      void finishStaleTimeTracking(staleTimeIterable)\n    },\n    () => {\n      stageController.advanceStage(RenderStage.Dynamic)\n    }\n  )\n\n  return new FlightRenderResult(flightReadableStream, {\n    fetchMetrics: workStore.fetchMetrics,\n  })\n}\n\n/**\n * Runs a final runtime prerender using the provided (already filled) cache and\n * pipes its output into the provided writable stream. The caller is responsible\n * for waiting until caches are warm before calling this function.\n */\nasync function spawnRuntimePrefetchWithFilledCaches(\n  writable: WritableStream<Uint8Array>,\n  ctx: AppRenderContext,\n  prerenderResumeDataCache: PrerenderResumeDataCache,\n  requestStore: RequestStore,\n  onError: (err: unknown) => string | undefined\n): Promise<void> {\n  try {\n    const { componentMod, getDynamicParamFromSegment } = ctx\n    const { loaderTree } = componentMod.routeModule.userland\n    const rootParams = getRootParams(loaderTree, getDynamicParamFromSegment)\n    const staleTimeIterable = new StaleTimeIterable()\n\n    const { result } = await finalRuntimeServerPrerender(\n      ctx,\n      generateDynamicRSCPayload.bind(null, ctx, { staleTimeIterable }),\n      prerenderResumeDataCache,\n      null, // renderResumeDataCache\n      rootParams,\n      requestStore.headers,\n      requestStore.cookies,\n      requestStore.draftMode,\n      onError,\n      staleTimeIterable\n    )\n\n    await result.prelude.pipeTo(writable)\n  } catch {\n    // Runtime prerender failed. Close the stream gracefully — the navigation\n    // still works, we just won't get cached runtime data.\n    try {\n      await writable.close()\n    } catch {\n      // Writable may already be closed/errored.\n    }\n  }\n}\n\ntype RenderToReadableStreamServerOptions = NonNullable<\n  Parameters<\n    (typeof import('react-server-dom-webpack/server.node'))['renderToReadableStream']\n  >[2]\n>\n\nasync function stagedRenderToReadableStreamWithoutCachesInDev(\n  ctx: AppRenderContext,\n  requestStore: RequestStore,\n  getPayload: (requestStore: RequestStore) => Promise<RSCPayload>,\n  options: Omit<RenderToReadableStreamServerOptions, 'environmentName'>\n) {\n  // We're rendering while bypassing caches,\n  // so we have no hope of showing a useful runtime stage.\n  // But we still want things like `params` to show up in devtools correctly,\n  // which relies on mechanisms we've set up for staged rendering,\n  // so we do a 2-task version (Static -> Dynamic) instead.\n\n  // We aren't filling caches so we don't need to abort this render, it'll\n  // stream in a single pass\n  const stageController = new StagedRenderingController(\n    null, // no aborting\n    null, // no abandoning\n    false // do not track sync IO (we don't have reliable stages)\n  )\n\n  const environmentName = () => {\n    const currentStage = stageController.currentStage\n    switch (currentStage) {\n      case RenderStage.Before:\n      case RenderStage.EarlyStatic:\n      case RenderStage.Static:\n        return 'Prerender'\n      case RenderStage.EarlyRuntime:\n      case RenderStage.Runtime:\n      case RenderStage.Dynamic:\n      case RenderStage.Abandoned:\n        return 'Server'\n      default:\n        currentStage satisfies never\n        throw new InvariantError(`Invalid render stage: ${currentStage}`)\n    }\n  }\n\n  requestStore.stagedRendering = stageController\n  requestStore.asyncApiPromises = createAsyncApiPromises(\n    stageController,\n    requestStore.cookies,\n    requestStore.mutableCookies,\n    requestStore.headers\n  )\n\n  const { clientModules } = getClientReferenceManifest()\n  const rscPayload = await getPayload(requestStore)\n\n  return await runInSequentialTasks(\n    () => {\n      stageController.advanceStage(RenderStage.Static)\n      return workUnitAsyncStorage.run(\n        requestStore,\n        renderToFlightStream,\n        ctx.componentMod,\n        rscPayload,\n        clientModules,\n        {\n          ...options,\n          environmentName,\n        }\n      )\n    },\n    () => {\n      stageController.advanceStage(RenderStage.Dynamic)\n    }\n  )\n}\n\n/**\n * Fork of `generateDynamicFlightRenderResult` that renders using `renderWithRestartOnCacheMissInDev`\n * to ensure correct separation of environments Prerender/Server (for use in Cache Components)\n */\nasync function generateDynamicFlightRenderResultWithStagesInDev(\n  req: BaseNextRequest,\n  ctx: AppRenderContext,\n  initialRequestStore: RequestStore,\n  createRequestStore: (() => RequestStore) | undefined,\n  fallbackParams: OpaqueFallbackRouteParams | null\n): Promise<RenderResult> {\n  const {\n    htmlRequestId,\n    renderOpts,\n    requestId,\n    workStore,\n    componentMod: {\n      createElement,\n      routeModule: {\n        userland: { loaderTree },\n      },\n    },\n    url,\n  } = ctx\n\n  const {\n    onInstrumentationRequestError,\n    setReactDebugChannel,\n    setCacheStatus,\n    isBuildTimePrerendering = false,\n  } = renderOpts\n\n  function onFlightDataRenderError(err: DigestedError, silenceLog: boolean) {\n    return onInstrumentationRequestError?.(\n      err,\n      req,\n      createErrorContext(ctx, 'react-server-components-payload'),\n      silenceLog\n    )\n  }\n\n  const onError = createReactServerErrorHandler(\n    process.env.NODE_ENV === 'development',\n    isBuildTimePrerendering,\n    workStore.reactServerErrorsByDigest,\n    onFlightDataRenderError\n  )\n\n  // We validate RSC requests for HMR refreshes and client navigations when\n  // instant configs exist, since we render all the layouts necessary to perform\n  // the validation in those cases.\n  const shouldValidate =\n    !isBypassingCachesInDev(initialRequestStore) &&\n    (initialRequestStore.isHmrRefresh === true ||\n      (await anySegmentNeedsInstantValidationInDev(loaderTree)))\n\n  const getPayload = async (requestStore: RequestStore) => {\n    const payload: RSCPayload &\n      RSCPayloadDevProperties &\n      RSCInitialPayloadPartialDev = await workUnitAsyncStorage.run(\n      requestStore,\n      generateDynamicRSCPayload,\n      ctx,\n      undefined\n    )\n\n    if (isBypassingCachesInDev(requestStore)) {\n      // Mark the RSC payload to indicate that caches were bypassed in dev.\n      // This lets the client know not to cache anything based on this render.\n      payload._bypassCachesInDev = createElement(WarnForBypassCachesInDev, {\n        route: workStore.route,\n      })\n    } else if (shouldValidate) {\n      // If this payload will be used for validation, it needs to contain the\n      // canonical URL. Without it we'd get an error.\n      payload.c = prepareInitialCanonicalUrl(url)\n    }\n\n    return payload\n  }\n\n  let debugChannel: DebugChannelPair | undefined\n  let stream: ReadableStream<Uint8Array>\n\n  if (\n    // We only do this flow if we can safely recreate the store from scratch\n    // (which is not the case for renders after an action)\n    createRequestStore &&\n    // We only do this flow if we're not bypassing caches in dev using\n    // \"disable cache\" in devtools or a hard refresh (cache-control: \"no-store\")\n    !isBypassingCachesInDev(initialRequestStore)\n  ) {\n    // Before we kick off the render, we set the cache status back to it's initial state\n    // in case a previous render bypassed the cache.\n    if (setCacheStatus) {\n      setCacheStatus('ready', htmlRequestId)\n    }\n\n    const {\n      stream: serverStream,\n      accumulatedChunksPromise,\n      syncInterruptReason,\n      startTime,\n      staticStageEndTime,\n      runtimeStageEndTime,\n      debugChannel: returnedDebugChannel,\n      requestStore: finalRequestStore,\n    } = await renderWithRestartOnCacheMissInDev(\n      ctx,\n      initialRequestStore,\n      createRequestStore,\n      getPayload,\n      onError\n    )\n\n    if (shouldValidate) {\n      let validationDebugChannelClient: Readable | undefined = undefined\n      if (returnedDebugChannel) {\n        const [t1, t2] = returnedDebugChannel.clientSide.readable.tee()\n        returnedDebugChannel.clientSide.readable = t1\n        validationDebugChannelClient = nodeStreamFromReadableStream(t2)\n      }\n      consoleAsyncStorage.run(\n        { dim: true },\n        spawnStaticShellValidationInDev,\n        accumulatedChunksPromise,\n        syncInterruptReason,\n        startTime,\n        staticStageEndTime,\n        runtimeStageEndTime,\n        ctx,\n        finalRequestStore,\n        fallbackParams,\n        validationDebugChannelClient\n      )\n    } else {\n      logValidationSkipped(ctx)\n    }\n\n    debugChannel = returnedDebugChannel\n    stream = serverStream\n  } else {\n    // We're either bypassing caches or we can't restart the render.\n    // Do a dynamic render, but with (basic) environment labels.\n\n    // Set cache status to bypass when specifically bypassing caches in dev\n    if (setCacheStatus) {\n      setCacheStatus('bypass', htmlRequestId)\n    }\n\n    debugChannel = setReactDebugChannel && createDebugChannel()\n\n    stream = await stagedRenderToReadableStreamWithoutCachesInDev(\n      ctx,\n      initialRequestStore,\n      getPayload,\n      {\n        onError: onError,\n        filterStackFrame,\n        debugChannel: debugChannel?.serverSide,\n      }\n    )\n  }\n\n  if (debugChannel && setReactDebugChannel) {\n    setReactDebugChannel(debugChannel.clientSide, htmlRequestId, requestId)\n  }\n\n  return new FlightRenderResult(stream, {\n    fetchMetrics: workStore.fetchMetrics,\n  })\n}\n\nasync function generateRuntimePrefetchResult(\n  req: BaseNextRequest,\n  ctx: AppRenderContext,\n  requestStore: RequestStore\n): Promise<RenderResult> {\n  const { workStore, renderOpts } = ctx\n  const { isBuildTimePrerendering = false, onInstrumentationRequestError } =\n    renderOpts\n\n  function onFlightDataRenderError(err: DigestedError, silenceLog: boolean) {\n    return onInstrumentationRequestError?.(\n      err,\n      req,\n      // TODO(runtime-ppr): should we use a different value?\n      createErrorContext(ctx, 'react-server-components-payload'),\n      silenceLog\n    )\n  }\n\n  const onError = createReactServerErrorHandler(\n    false,\n    isBuildTimePrerendering,\n    workStore.reactServerErrorsByDigest,\n    onFlightDataRenderError\n  )\n\n  const metadata: AppPageRenderResultMetadata = {}\n  const staleTimeIterable = new StaleTimeIterable()\n\n  const {\n    componentMod: {\n      routeModule: {\n        userland: { loaderTree },\n      },\n    },\n    getDynamicParamFromSegment,\n  } = ctx\n  const rootParams = getRootParams(loaderTree, getDynamicParamFromSegment)\n\n  // We need to share caches between the prospective prerender and the final prerender,\n  // but we're not going to persist this anywhere.\n  const prerenderResumeDataCache = createPrerenderResumeDataCache()\n  // We're not resuming an existing render.\n  const renderResumeDataCache = null\n\n  await prospectiveRuntimeServerPrerender(\n    ctx,\n    generateDynamicRSCPayload.bind(null, ctx),\n    prerenderResumeDataCache,\n    renderResumeDataCache,\n    rootParams,\n    requestStore.headers,\n    requestStore.cookies,\n    requestStore.draftMode\n  )\n\n  const response = await finalRuntimeServerPrerender(\n    ctx,\n    generateDynamicRSCPayload.bind(null, ctx, { staleTimeIterable }),\n    prerenderResumeDataCache,\n    renderResumeDataCache,\n    rootParams,\n    requestStore.headers,\n    requestStore.cookies,\n    requestStore.draftMode,\n    onError,\n    staleTimeIterable\n  )\n\n  applyMetadataFromPrerenderResult(response, metadata, workStore)\n  metadata.fetchMetrics = ctx.workStore.fetchMetrics\n\n  return new FlightRenderResult(response.result.prelude, metadata)\n}\n\nasync function prospectiveRuntimeServerPrerender(\n  ctx: AppRenderContext,\n  getPayload: () => any,\n  prerenderResumeDataCache: PrerenderResumeDataCache | null,\n  renderResumeDataCache: RenderResumeDataCache | null,\n  rootParams: Params,\n  headers: PrerenderStoreModernRuntime['headers'],\n  cookies: PrerenderStoreModernRuntime['cookies'],\n  draftMode: PrerenderStoreModernRuntime['draftMode']\n) {\n  const { implicitTags, renderOpts, workStore } = ctx\n  const { ComponentMod } = renderOpts\n\n  // Prerender controller represents the lifetime of the prerender.\n  // It will be aborted when a Task is complete or a synchronously aborting\n  // API is called. Notably during cache-filling renders this does not actually\n  // terminate the render itself which will continue until all caches are filled\n  const initialServerPrerenderController = new AbortController()\n\n  // This controller represents the lifetime of the React render call. Notably\n  // during the cache-filling render it is different from the prerender controller\n  // because we don't want to end the react render until all caches are filled.\n  const initialServerRenderController = new AbortController()\n\n  // The cacheSignal helps us track whether caches are still filling or we are ready\n  // to cut the render off.\n  const cacheSignal = new CacheSignal()\n\n  const initialServerPrerenderStore: PrerenderStoreModernRuntime = {\n    type: 'prerender-runtime',\n    phase: 'render',\n    rootParams,\n    implicitTags,\n    renderSignal: initialServerRenderController.signal,\n    controller: initialServerPrerenderController,\n    // During the initial prerender we need to track all cache reads to ensure\n    // we render long enough to fill every cache it is possible to visit during\n    // the final prerender.\n    cacheSignal,\n    // We only need to track dynamic accesses during the final prerender.\n    dynamicTracking: null,\n    // Runtime prefetches are never cached server-side, only client-side,\n    // so we set `expire` and `revalidate` to their minimum values just in case.\n    revalidate: 1,\n    expire: 0,\n    stale: INFINITE_CACHE,\n    tags: [...implicitTags.tags],\n    renderResumeDataCache,\n    prerenderResumeDataCache,\n    hmrRefreshHash: undefined,\n    // We don't track vary params during initial prerender, only the final one\n    varyParamsAccumulator: null,\n    // No stage sequencing needed for prospective renders.\n    stagedRendering: null,\n    // These are not present in regular prerenders, but allowed in a runtime prerender.\n    headers,\n    cookies,\n    draftMode,\n  }\n\n  const { clientModules } = getClientReferenceManifest()\n\n  // We're not going to use the result of this render because the only time it could be used\n  // is if it completes in a microtask and that's likely very rare for any non-trivial app\n  const initialServerPayload = await workUnitAsyncStorage.run(\n    initialServerPrerenderStore,\n    getPayload\n  )\n\n  const prerenderOptions = {\n    filterStackFrame,\n    onError: (err: unknown) => {\n      const digest = getDigestForWellKnownError(err)\n\n      if (digest) {\n        return digest\n      }\n\n      if (initialServerPrerenderController.signal.aborted) {\n        // The render aborted before this error was handled which indicates\n        // the error is caused by unfinished components within the render\n        return\n      } else if (\n        process.env.NEXT_DEBUG_BUILD ||\n        process.env.__NEXT_VERBOSE_LOGGING\n      ) {\n        printDebugThrownValueForProspectiveRender(\n          err,\n          workStore.route,\n          Phase.ProspectiveRender\n        )\n      }\n    },\n    // We don't want to stop rendering until the cacheSignal is complete so we pass\n    // a different signal to this render call than is used by dynamic APIs to signify\n    // transitioning out of the prerender environment\n    signal: initialServerRenderController.signal,\n  }\n\n  const pendingInitialServerResult = workUnitAsyncStorage.run(\n    initialServerPrerenderStore,\n    getServerPrerender(ComponentMod),\n    initialServerPayload,\n    clientModules,\n    prerenderOptions\n  )\n\n  // Wait for all caches to be finished filling and for async imports to resolve\n  trackPendingModules(cacheSignal)\n  await cacheSignal.cacheReady()\n\n  initialServerRenderController.abort()\n  initialServerPrerenderController.abort()\n\n  // We don't need to continue the prerender process if we already\n  // detected invalid dynamic usage in the initial prerender phase.\n  if (workStore.invalidDynamicUsageError) {\n    throw workStore.invalidDynamicUsageError\n  }\n\n  try {\n    return await createReactServerPrerenderResult(pendingInitialServerResult)\n  } catch (err) {\n    if (\n      initialServerRenderController.signal.aborted ||\n      initialServerPrerenderController.signal.aborted\n    ) {\n      // These are expected errors that might error the prerender. we ignore them.\n    } else if (\n      process.env.NEXT_DEBUG_BUILD ||\n      process.env.__NEXT_VERBOSE_LOGGING\n    ) {\n      // We don't normally log these errors because we are going to retry anyway but\n      // it can be useful for debugging Next.js itself to get visibility here when needed\n      printDebugThrownValueForProspectiveRender(\n        err,\n        workStore.route,\n        Phase.ProspectiveRender\n      )\n    }\n    return null\n  }\n}\n\n/**\n * Prepends a single ASCII byte to the stream indicating whether the response\n * is partial (contains dynamic holes): '~' (0x7e) for partial, '#' (0x23)\n * for complete.\n */\nfunction prependIsPartialByte(\n  stream: ReadableStream<Uint8Array>,\n  isPartial: boolean\n): ReadableStream<Uint8Array> {\n  const byte = new Uint8Array([isPartial ? 0x7e : 0x23])\n  return stream.pipeThrough(\n    new TransformStream({\n      start(controller) {\n        controller.enqueue(byte)\n      },\n    })\n  )\n}\n\nasync function finalRuntimeServerPrerender(\n  ctx: AppRenderContext,\n  getPayload: () => any,\n  prerenderResumeDataCache: PrerenderResumeDataCache | null,\n  renderResumeDataCache: RenderResumeDataCache | null,\n  rootParams: Params,\n  headers: PrerenderStoreModernRuntime['headers'],\n  cookies: PrerenderStoreModernRuntime['cookies'],\n  draftMode: PrerenderStoreModernRuntime['draftMode'],\n  onError: (err: unknown) => string | undefined,\n  staleTimeIterable: StaleTimeIterable\n) {\n  const { implicitTags, renderOpts } = ctx\n  const { ComponentMod, experimental, isDebugDynamicAccesses } = renderOpts\n  const selectStaleTime = createSelectStaleTime(experimental)\n\n  let serverIsDynamic = false\n  const finalServerController = new AbortController()\n\n  const serverDynamicTracking = createDynamicTrackingState(\n    isDebugDynamicAccesses\n  )\n\n  const finalStageController = new StagedRenderingController(\n    finalServerController.signal,\n    null, // no abandoning\n    true // track sync IO\n  )\n\n  const varyParamsAccumulator = createResponseVaryParamsAccumulator()\n\n  const finalServerPrerenderStore: PrerenderStoreModernRuntime = {\n    type: 'prerender-runtime',\n    phase: 'render',\n    rootParams,\n    implicitTags,\n    renderSignal: finalServerController.signal,\n    controller: finalServerController,\n    // All caches we could read must already be filled so no tracking is necessary\n    cacheSignal: null,\n    dynamicTracking: serverDynamicTracking,\n    // Runtime prefetches are never cached server-side, only client-side,\n    // so we set `expire` and `revalidate` to their minimum values just in case.\n    revalidate: 1,\n    expire: 0,\n    stale: INFINITE_CACHE,\n    tags: [...implicitTags.tags],\n    prerenderResumeDataCache,\n    renderResumeDataCache,\n    hmrRefreshHash: undefined,\n    varyParamsAccumulator,\n    // Used to separate the stages in the 5-task pipeline.\n    stagedRendering: finalStageController,\n    // These are not present in regular prerenders, but allowed in a runtime prerender.\n    headers,\n    cookies,\n    draftMode,\n  }\n\n  trackStaleTime(finalServerPrerenderStore, staleTimeIterable, selectStaleTime)\n\n  const { clientModules } = getClientReferenceManifest()\n\n  const finalRSCPayload = await workUnitAsyncStorage.run(\n    finalServerPrerenderStore,\n    getPayload\n  )\n\n  let prerenderIsPending = true\n  const result = await runInSequentialTasks(\n    async () => {\n      // EarlyStatic stage: render begins.\n      // Runtime-prefetchable segments render immediately.\n      // Non-prefetchable segments are gated until the Static stage.\n      finalStageController.advanceStage(RenderStage.EarlyStatic)\n      const prerenderResult = await workUnitAsyncStorage.run(\n        finalServerPrerenderStore,\n        getServerPrerender(ComponentMod),\n        finalRSCPayload,\n        clientModules,\n        {\n          filterStackFrame,\n          onError,\n          signal: finalServerController.signal,\n        }\n      )\n      prerenderIsPending = false\n      return prerenderResult\n    },\n    () => {\n      // Advance to Static stage: resolve promise holding back\n      // non-prefetchable segments so they can begin rendering.\n      finalStageController.advanceStage(RenderStage.Static)\n    },\n    () => {\n      // Advance to EarlyRuntime stage: resolve cookies/headers for\n      // runtime-prefetchable segments. Sync IO is checked here.\n      finalStageController.advanceStage(RenderStage.EarlyRuntime)\n    },\n    () => {\n      // Advance to Runtime stage: resolve cookies/headers for\n      // non-prefetchable segments. Sync IO is allowed here.\n      finalStageController.advanceStage(RenderStage.Runtime)\n    },\n    () => {\n      Promise.all([\n        finishStaleTimeTracking(staleTimeIterable),\n        finishAccumulatingVaryParams(varyParamsAccumulator),\n      ]).then(() => {\n        // Abort. This runs as a microtask after Flight has flushed the\n        // staleTime and varyParams closing chunks, but before the next\n        // macrotask resolves the overall result.\n        if (finalServerController.signal.aborted) {\n          // If the server controller is already aborted we must have called\n          // something that required aborting the prerender synchronously such\n          // as with new Date()\n          serverIsDynamic = true\n          return\n        }\n\n        if (prerenderIsPending) {\n          // If prerenderIsPending then we have blocked for longer than a Task\n          // and we assume there is something unfinished.\n          serverIsDynamic = true\n        }\n        finalServerController.abort()\n      })\n    }\n  )\n\n  result.prelude = prependIsPartialByte(result.prelude, serverIsDynamic)\n\n  return {\n    result,\n    // TODO(runtime-ppr): do we need to produce a digest map here?\n    // digestErrorsMap: ...,\n    dynamicAccess: serverDynamicTracking,\n    isPartial: serverIsDynamic,\n    collectedRevalidate: finalServerPrerenderStore.revalidate,\n    collectedExpire: finalServerPrerenderStore.expire,\n    collectedStale: staleTimeIterable.currentValue,\n    collectedTags: finalServerPrerenderStore.tags,\n  }\n}\n\n/**\n * Crawlers will inadvertently think the canonicalUrl in the RSC payload should be crawled\n * when our intention is to just seed the router state with the current URL.\n * This function splits up the pathname so that we can later join it on\n * when we're ready to consume the path.\n */\nfunction prepareInitialCanonicalUrl(url: RequestStore['url']) {\n  return (url.pathname + url.search).split('/')\n}\n\nfunction getRenderedSearch(query: NextParsedUrlQuery): string {\n  // Inlined implementation of querystring.encode, which is not available in\n  // the Edge runtime.\n  const pairs = []\n  for (const key in query) {\n    const value = query[key]\n    if (value == null) continue\n    if (Array.isArray(value)) {\n      for (const v of value) {\n        pairs.push(\n          `${encodeURIComponent(key)}=${encodeURIComponent(String(v))}`\n        )\n      }\n    } else {\n      pairs.push(\n        `${encodeURIComponent(key)}=${encodeURIComponent(String(value))}`\n      )\n    }\n  }\n\n  // The result should match the format of a web URL's `search` property, since\n  // this is the format that's stored in the App Router state.\n  // TODO: We're a bit inconsistent about this. The x-nextjs-rewritten-query\n  // header omits the leading question mark. Should refactor to always do\n  // that instead.\n  if (pairs.length === 0) {\n    // If the search string is empty, return an empty string.\n    return ''\n  }\n  // Prepend '?' to the search params string.\n  return '?' + pairs.join('&')\n}\n\n// This is the data necessary to render <AppRouter /> when no SSR errors are encountered\nasync function getRSCPayload(\n  tree: LoaderTree,\n  ctx: AppRenderContext,\n  options: {\n    is404: boolean\n    // When set, rerender a segment-scoped HTTP fallback inside the normal app\n    // router tree instead of falling back to the generic error shell payload.\n    prerenderHTTPError?: PrerenderHTTPErrorState\n    staleTimeIterable?: AsyncIterable<number>\n    staticStageByteLengthPromise?: Promise<number>\n    runtimePrefetchStream?: ReadableStream<Uint8Array>\n  }\n): Promise<InitialRSCPayload & { P: ReactNode }> {\n  const {\n    is404,\n    prerenderHTTPError,\n    staleTimeIterable,\n    staticStageByteLengthPromise,\n    runtimePrefetchStream,\n  } = options\n  const injectedCSS = new Set<string>()\n  const injectedJS = new Set<string>()\n  const injectedFontPreloadTags = new Set<string>()\n  let missingSlots: Set<string> | undefined\n\n  // We only track missing parallel slots in development\n  if (process.env.__NEXT_DEV_SERVER) {\n    missingSlots = new Set<string>()\n  }\n\n  const {\n    getDynamicParamFromSegment,\n    query,\n    appUsingSizeAdjustment,\n    componentMod: { createMetadataComponents, createElement, Fragment },\n    url,\n    workStore,\n  } = ctx\n\n  const hints = ctx.renderOpts.prefetchHints?.[ctx.pagePath] ?? null\n  const initialTree = await createFlightRouterStateFromLoaderTree(\n    tree,\n    hints,\n    getDynamicParamFromSegment,\n    query\n  )\n  const serveStreamingMetadata = !!ctx.renderOpts.serveStreamingMetadata\n  const hasGlobalNotFound = !!tree[2]['global-not-found']\n\n  const metadataIsRuntimePrefetchable =\n    await anySegmentHasRuntimePrefetchEnabled(tree)\n  const { Viewport, Metadata, MetadataOutlet } = createMetadataComponents({\n    tree,\n    // When it's using global-not-found, metadata errorType is undefined, which will retrieve the\n    // metadata from the page.\n    // When it's using not-found, metadata errorType is 'not-found', which will retrieve the\n    // metadata from the not-found.js boundary.\n    // TODO: remove this condition and keep it undefined when global-not-found is stabilized.\n    errorType: is404 && !hasGlobalNotFound ? 'not-found' : undefined,\n    parsedQuery: query,\n    pathname: url.pathname,\n    metadataContext: createMetadataContext(ctx.renderOpts),\n    interpolatedParams: ctx.interpolatedParams,\n    serveStreamingMetadata,\n    isRuntimePrefetchable: metadataIsRuntimePrefetchable,\n  })\n\n  const preloadCallbacks: PreloadCallbacks = []\n\n  const seedData = await createComponentTree({\n    ctx,\n    loaderTree: tree,\n    parentParams: {},\n    parentOptionalCatchAllParamName: null,\n    parentRuntimePrefetchable: false,\n    injectedCSS,\n    injectedJS,\n    injectedFontPreloadTags,\n    rootLayoutIncluded: false,\n    missingSlots,\n    preloadCallbacks,\n    authInterrupts: ctx.renderOpts.experimental.authInterrupts,\n    MetadataOutlet,\n    prerenderHTTPError,\n  })\n\n  // When the `vary` response header is present with `Next-URL`, that means there's a chance\n  // it could respond differently if there's an interception route. We provide this information\n  // to `AppRouter` so that it can properly seed the prefetch cache with a prefix, if needed.\n  // In dev, the Vary header may not reliably reflect whether a route can\n  // be intercepted, because interception routes are compiled on demand.\n  // Default to true so the client doesn't cache a stale Fallback entry.\n  const varyHeader = ctx.res.getHeader('vary')\n  const couldBeIntercepted =\n    !!process.env.__NEXT_DEV_SERVER ||\n    (typeof varyHeader === 'string' && varyHeader.includes(NEXT_URL))\n\n  const initialHead = createElement(\n    Fragment,\n    {\n      key: flightDataPathHeadKey,\n    },\n    createElement(NonIndex, {\n      createElement,\n      pagePath: ctx.pagePath,\n      statusCode: ctx.res.statusCode,\n      isPossibleServerAction: ctx.isPossibleServerAction,\n    }),\n    createElement(Viewport, null),\n    createElement(Metadata, null),\n    appUsingSizeAdjustment\n      ? createElement('meta', {\n          name: 'next-size-adjust',\n          content: '',\n        })\n      : null\n  )\n\n  const { GlobalError, styles: globalErrorStyles } = await getGlobalErrorStyles(\n    tree,\n    ctx\n  )\n\n  // Assume the head we're rendering contains only partial data if PPR is\n  // enabled and this is a statically generated response. This is used by the\n  // client Segment Cache after a prefetch to determine if it can skip the\n  // second request to fill in the dynamic data.\n  //\n  // See similar comment in create-component-tree.tsx for more context.\n  const isPossiblyPartialHead =\n    workStore.isStaticGeneration &&\n    ctx.renderOpts.experimental.isRoutePPREnabled === true\n\n  return maybeAppendBuildIdToRSCPayload(ctx, {\n    // See the comment above the `Preloads` component (below) for why this is part of the payload\n    P: createElement(Preloads, {\n      preloadCallbacks: preloadCallbacks,\n    }),\n    c: prepareInitialCanonicalUrl(url),\n    q: getRenderedSearch(query),\n    i: !!couldBeIntercepted,\n    f: [\n      [\n        initialTree,\n        seedData,\n        initialHead,\n        isPossiblyPartialHead,\n      ] as FlightDataPath,\n    ],\n    m: missingSlots,\n    G: [GlobalError, globalErrorStyles],\n    // Tells the client whether this route supports per-segment prefetching.\n    // With Cache Components, all routes support it. Without it, only fully\n    // static pages do, because their per-segment prefetch responses are\n    // generated during static generation (build or ISR).\n    S: workStore.isStaticGeneration || ctx.renderOpts.cacheComponents,\n    h: getMetadataVaryParamsThenable(),\n    s: staleTimeIterable,\n    l: staticStageByteLengthPromise,\n    p: runtimePrefetchStream,\n    // Include the per-page dynamic stale time from unstable_dynamicStaleTime, but\n    // only for dynamic renders. The client treats its presence as\n    // authoritative.\n    // TODO: Move this to the prefetch hints file so we don't have to walk\n    // the tree on every render.\n    d: !workStore.isStaticGeneration\n      ? ((await getDynamicStaleTime(tree)) ?? undefined)\n      : undefined,\n  })\n}\n\n/**\n * Preload calls (such as `ReactDOM.preloadStyle` and `ReactDOM.preloadFont`) need to be called during rendering\n * in order to create the appropriate preload tags in the DOM, otherwise they're a no-op. Since we invoke\n * renderToReadableStream with a function that returns component props rather than a component itself, we use\n * this component to \"render  \" the preload calls.\n */\nfunction Preloads({ preloadCallbacks }: { preloadCallbacks: Function[] }) {\n  preloadCallbacks.forEach((preloadFn) => preloadFn())\n  return null\n}\n\n// This is the data necessary to render <AppRouter /> when an error state is triggered\nasync function getErrorRSCPayload(\n  tree: LoaderTree,\n  ctx: AppRenderContext,\n  ssrError: unknown,\n  errorType: MetadataErrorType | 'redirect' | undefined\n) {\n  const {\n    getDynamicParamFromSegment,\n    query,\n    componentMod: { createMetadataComponents, createElement, Fragment },\n    url,\n    workStore,\n  } = ctx\n\n  const serveStreamingMetadata = !!ctx.renderOpts.serveStreamingMetadata\n  const metadataIsRuntimePrefetchable =\n    await anySegmentHasRuntimePrefetchEnabled(tree)\n  const { Viewport, Metadata } = createMetadataComponents({\n    tree,\n    parsedQuery: query,\n    pathname: url.pathname,\n    metadataContext: createMetadataContext(ctx.renderOpts),\n    errorType,\n    interpolatedParams: ctx.interpolatedParams,\n    serveStreamingMetadata: serveStreamingMetadata,\n    isRuntimePrefetchable: metadataIsRuntimePrefetchable,\n  })\n\n  const initialHead = createElement(\n    Fragment,\n    {\n      key: flightDataPathHeadKey,\n    },\n    createElement(NonIndex, {\n      createElement,\n      pagePath: ctx.pagePath,\n      statusCode: ctx.res.statusCode,\n      isPossibleServerAction: ctx.isPossibleServerAction,\n    }),\n    createElement(Viewport, null),\n    process.env.__NEXT_DEV_SERVER &&\n      createElement('meta', {\n        name: 'next-error',\n        content: 'not-found',\n      }),\n    createElement(Metadata, null)\n  )\n\n  const errorHints = ctx.renderOpts.prefetchHints?.[ctx.pagePath] ?? null\n  const initialTree = await createFlightRouterStateFromLoaderTree(\n    tree,\n    errorHints,\n    getDynamicParamFromSegment,\n    query\n  )\n\n  let err: Error | undefined = undefined\n  if (ssrError) {\n    err = isError(ssrError) ? ssrError : new Error(ssrError + '')\n  }\n\n  // For metadata notFound error there's no global not found boundary on top\n  // so we create a not found page with AppRouter\n  const seedData: CacheNodeSeedData = [\n    createElement(\n      'html',\n      {\n        id: '__next_error__',\n      },\n      createElement('head', null),\n      createElement(\n        'body',\n        null,\n        process.env.__NEXT_DEV_SERVER && err\n          ? createElement('template', {\n              'data-next-error-message': err.message,\n              'data-next-error-digest': 'digest' in err ? err.digest : '',\n              'data-next-error-stack': err.stack,\n            })\n          : null\n      )\n    ),\n    {},\n    null,\n    false,\n    null, // varyParams - not tracked for error pages\n  ]\n\n  const { GlobalError, styles: globalErrorStyles } = await getGlobalErrorStyles(\n    tree,\n    ctx\n  )\n\n  const isPossiblyPartialHead =\n    workStore.isStaticGeneration &&\n    ctx.renderOpts.experimental.isRoutePPREnabled === true\n\n  return maybeAppendBuildIdToRSCPayload(ctx, {\n    c: prepareInitialCanonicalUrl(url),\n    q: getRenderedSearch(query),\n    m: undefined,\n    i: false,\n    f: [\n      [\n        initialTree,\n        seedData,\n        initialHead,\n        isPossiblyPartialHead,\n      ] as FlightDataPath,\n    ],\n    G: [GlobalError, globalErrorStyles],\n    // Tells the client whether this route supports per-segment prefetching.\n    // With Cache Components, all routes support it. Without it, only fully\n    // static pages do, because their per-segment prefetch responses are\n    // generated during static generation (build or ISR).\n    S: workStore.isStaticGeneration || ctx.renderOpts.cacheComponents,\n    h: getMetadataVaryParamsThenable(),\n  } satisfies InitialRSCPayload)\n}\n\n// This component must run in an SSR context. It will render the RSC root component\nfunction App<T>({\n  reactServerStream,\n  reactDebugStream,\n  debugEndTime,\n  preinitScripts,\n  ServerInsertedHTMLProvider,\n  nonce,\n  images,\n}: {\n  /* eslint-disable @next/internal/no-ambiguous-jsx -- React Client */\n  reactServerStream: Readable | BinaryStreamOf<T>\n  reactDebugStream: Readable | ReadableStream<Uint8Array> | undefined\n  debugEndTime: number | undefined\n  preinitScripts: () => void\n  ServerInsertedHTMLProvider: ComponentType<{\n    children: JSX.Element\n  }>\n  images: RenderOpts['images']\n  nonce?: string\n}): JSX.Element {\n  preinitScripts()\n  const response = ReactClient.use(\n    getFlightStream<InitialRSCPayload>(\n      reactServerStream,\n      reactDebugStream,\n      debugEndTime,\n      nonce\n    )\n  )\n\n  const initialState = createInitialRouterState({\n    // This is not used during hydration, so we don't have to pass a\n    // real timestamp.\n    navigatedAt: -1,\n    initialRSCPayload: response,\n    // location is not initialized in the SSR render\n    // it's set to window.location during hydration\n    location: null,\n  })\n\n  const actionQueue = createMutableActionQueue(initialState, null)\n\n  const { HeadManagerContext } =\n    require('../../shared/lib/head-manager-context.shared-runtime') as typeof import('../../shared/lib/head-manager-context.shared-runtime')\n\n  return (\n    <HeadManagerContext.Provider\n      value={{\n        appDir: true,\n        nonce,\n      }}\n    >\n      <ImageConfigContext.Provider value={images ?? imageConfigDefault}>\n        <ServerInsertedHTMLProvider>\n          <AppRouter actionQueue={actionQueue} globalErrorState={response.G} />\n        </ServerInsertedHTMLProvider>\n      </ImageConfigContext.Provider>\n    </HeadManagerContext.Provider>\n  )\n  /* eslint-enable @next/internal/no-ambiguous-jsx -- React Client */\n}\n\n// @TODO our error stream should be probably just use the same root component. But it was previously\n// different I don't want to figure out if that is meaningful at this time so just keeping the behavior\n// consistent for now.\nfunction ErrorApp<T>({\n  reactServerStream,\n  preinitScripts,\n  ServerInsertedHTMLProvider,\n  nonce,\n  images,\n}: {\n  reactServerStream: BinaryStreamOf<T>\n  preinitScripts: () => void\n  ServerInsertedHTMLProvider: ComponentType<{\n    children: JSX.Element\n  }>\n  nonce?: string\n  images: RenderOpts['images']\n}): JSX.Element {\n  /* eslint-disable @next/internal/no-ambiguous-jsx -- React Client */\n  preinitScripts()\n  const response = ReactClient.use(\n    getFlightStream<InitialRSCPayload>(\n      reactServerStream,\n      undefined,\n      undefined,\n      nonce\n    )\n  )\n\n  const initialState = createInitialRouterState({\n    // This is not used during hydration, so we don't have to pass a\n    // real timestamp.\n    navigatedAt: -1,\n    initialRSCPayload: response,\n    // location is not initialized in the SSR render\n    // it's set to window.location during hydration\n    location: null,\n  })\n\n  const actionQueue = createMutableActionQueue(initialState, null)\n\n  return (\n    <ImageConfigContext.Provider value={images ?? imageConfigDefault}>\n      <ServerInsertedHTMLProvider>\n        <AppRouter actionQueue={actionQueue} globalErrorState={response.G} />\n      </ServerInsertedHTMLProvider>\n    </ImageConfigContext.Provider>\n  )\n  /* eslint-enable @next/internal/no-ambiguous-jsx -- React Client */\n}\n\n// We use a trick with TS Generics to branch streams with a type so we can\n// consume the parsed value of a Readable Stream if it was constructed with a\n// certain object shape. The generic type is not used directly in the type so it\n// requires a disabling of the eslint rule disallowing unused vars\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport type BinaryStreamOf<T> = ReadableStream<Uint8Array>\n\nasync function renderToHTMLOrFlightImpl(\n  req: BaseNextRequest,\n  res: BaseNextResponse,\n  url: ReturnType<typeof parseRelativeUrl>,\n  pagePath: string,\n  query: NextParsedUrlQuery,\n  renderOpts: RenderOpts,\n  workStore: WorkStore,\n  parsedRequestHeaders: ParsedRequestHeaders,\n  postponedState: PostponedState | null,\n  serverComponentsHmrCache: ServerComponentsHmrCache | undefined,\n  sharedContext: AppSharedContext,\n  interpolatedParams: Params,\n  fallbackRouteParams: OpaqueFallbackRouteParams | null\n) {\n  const isNotFoundPath = pagePath === '/404'\n  if (isNotFoundPath) {\n    res.statusCode = 404\n  }\n\n  // A unique request timestamp used by development to ensure that it's\n  // consistent and won't change during this request. This is important to\n  // avoid that resources can be deduped by React Float if the same resource is\n  // rendered or preloaded multiple times: `<link href=\"a.css?v={Date.now()}\"/>`.\n  const requestTimestamp = Date.now()\n\n  const {\n    ComponentMod,\n    nextFontManifest,\n    serverActions,\n    assetPrefix = '',\n    enableTainting,\n    cacheComponents,\n    setIsrStatus,\n  } = renderOpts\n\n  const { cachedNavigations } = renderOpts.experimental\n\n  // We need to expose the bundled `require` API globally for\n  // react-server-dom-webpack. This is a hack until we find a better way.\n  if (ComponentMod.__next_app__) {\n    const instrumented = wrapClientComponentLoader(ComponentMod)\n\n    // When we are prerendering if there is a cacheSignal for tracking\n    // cache reads we track calls to `loadChunk` and `require`. This allows us\n    // to treat chunk/module loading with similar semantics as cache reads to avoid\n    // module loading from causing a prerender to abort too early.\n\n    const shouldTrackModuleLoading = () => {\n      if (!cacheComponents) {\n        return false\n      }\n      if (process.env.__NEXT_DEV_SERVER) {\n        return true\n      }\n      const workUnitStore = workUnitAsyncStorage.getStore()\n\n      if (!workUnitStore) {\n        return false\n      }\n\n      switch (workUnitStore.type) {\n        case 'prerender':\n        case 'prerender-client':\n        case 'validation-client':\n        case 'prerender-runtime':\n        case 'cache':\n        case 'private-cache':\n          return true\n        case 'prerender-ppr':\n        case 'prerender-legacy':\n        case 'request':\n        case 'unstable-cache':\n        case 'generate-static-params':\n          return false\n        default:\n          workUnitStore satisfies never\n      }\n    }\n\n    const __next_require__: typeof instrumented.require = (...args) => {\n      const exportsOrPromise = instrumented.require(...args)\n      if (shouldTrackModuleLoading()) {\n        // requiring an async module returns a promise.\n        trackPendingImport(exportsOrPromise)\n      }\n      return exportsOrPromise\n    }\n    // @ts-expect-error\n    globalThis.__next_require__ = __next_require__\n\n    const __next_chunk_load__: typeof instrumented.loadChunk = (...args) => {\n      const loadingChunk = instrumented.loadChunk(...args)\n      if (shouldTrackModuleLoading()) {\n        trackPendingChunkLoad(loadingChunk)\n      }\n      return loadingChunk\n    }\n    // @ts-expect-error\n    globalThis.__next_chunk_load__ = __next_chunk_load__\n  }\n\n  if (process.env.__NEXT_DEV_SERVER && setIsrStatus && !cacheComponents) {\n    // Reset the ISR status at start of request.\n    const { pathname } = new URL(req.url || '/', 'http://n')\n    setIsrStatus(\n      pathname,\n      // Only pages using the Node runtime can use ISR, Edge is always dynamic.\n      process.env.NEXT_RUNTIME === 'edge' ? false : undefined\n    )\n  }\n\n  if (\n    // The type check here ensures that `req` is correctly typed, and the\n    // environment variable check provides dead code elimination.\n    process.env.NEXT_RUNTIME !== 'edge' &&\n    isNodeNextRequest(req)\n  ) {\n    res.onClose(() => {\n      // We stop tracking fetch metrics when the response closes, since we\n      // report them at that time.\n      workStore.shouldTrackFetchMetrics = false\n    })\n\n    req.originalRequest.on('end', () => {\n      if ('performance' in globalThis) {\n        const metrics = getClientComponentLoaderMetrics({ reset: true })\n        if (metrics) {\n          getTracer()\n            .startSpan(NextNodeServerSpan.clientComponentLoading, {\n              startTime: metrics.clientComponentLoadStart,\n              attributes: {\n                'next.clientComponentLoadCount':\n                  metrics.clientComponentLoadCount,\n                'next.span_type': NextNodeServerSpan.clientComponentLoading,\n              },\n            })\n            .end(\n              metrics.clientComponentLoadStart +\n                metrics.clientComponentLoadTimes\n            )\n        }\n      }\n    })\n  }\n\n  const metadata: AppPageRenderResultMetadata = {\n    statusCode: isNotFoundPath ? 404 : undefined,\n  }\n\n  const appUsingSizeAdjustment = !!nextFontManifest?.appUsingSizeAdjust\n\n  ComponentMod.patchFetch()\n\n  // Pull out the hooks/references from the component.\n  const {\n    routeModule: {\n      userland: { loaderTree },\n    },\n    taintObjectReference,\n  } = ComponentMod\n  if (enableTainting) {\n    taintObjectReference(\n      'Do not pass process.env to Client Components since it will leak sensitive data',\n      process.env\n    )\n  }\n\n  workStore.fetchMetrics = []\n  metadata.fetchMetrics = workStore.fetchMetrics\n\n  // don't modify original query object\n  query = { ...query }\n  stripInternalQueries(query)\n\n  const { isStaticGeneration } = workStore\n\n  let requestId: string\n  let htmlRequestId: string\n\n  const {\n    flightRouterState,\n    isPrefetchRequest,\n    isRuntimePrefetchRequest,\n    isRSCRequest,\n    isHmrRefresh,\n    nonce,\n  } = parsedRequestHeaders\n\n  if (parsedRequestHeaders.requestId) {\n    // If the client has provided a request ID (in development mode), we use it.\n    requestId = parsedRequestHeaders.requestId\n  } else {\n    // Otherwise we generate a new request ID.\n    if (isStaticGeneration) {\n      requestId = Buffer.from(\n        await crypto.subtle.digest('SHA-1', Buffer.from(req.url))\n      ).toString('hex')\n    } else if (process.env.NEXT_RUNTIME === 'edge') {\n      requestId = crypto.randomUUID()\n    } else {\n      requestId = (\n        require('next/dist/compiled/nanoid') as typeof import('next/dist/compiled/nanoid')\n      ).nanoid()\n    }\n  }\n\n  // If the client has provided an HTML request ID, we use it to associate the\n  // request with the HTML document from which it originated, which is used to\n  // send debug information to the associated WebSocket client. Otherwise, this\n  // is the request for the HTML document, so we use the request ID also as the\n  // HTML request ID.\n  htmlRequestId = parsedRequestHeaders.htmlRequestId || requestId\n\n  const getDynamicParamFromSegment = makeGetDynamicParamFromSegment(\n    interpolatedParams,\n    fallbackRouteParams,\n    renderOpts.experimental.optimisticRouting\n  )\n\n  const isPossibleActionRequest = getIsPossibleServerAction(req)\n\n  // For implicit tags, we use the resolved pathname which has dynamic params\n  // interpolated, is decoded, and has trailing slash removed.\n  const resolvedPathname = getRequestMeta(req, 'resolvedPathname')\n  if (!resolvedPathname) {\n    throw new InvariantError('resolvedPathname must be set in request metadata')\n  }\n\n  const implicitTags = await getImplicitTags(\n    workStore.page,\n    resolvedPathname,\n    fallbackRouteParams\n  )\n\n  const ctx: AppRenderContext = {\n    componentMod: ComponentMod,\n    url,\n    renderOpts,\n    workStore,\n    parsedRequestHeaders,\n    getDynamicParamFromSegment,\n    interpolatedParams,\n    query,\n    isPrefetch: isPrefetchRequest,\n    isPossibleServerAction: isPossibleActionRequest,\n    requestTimestamp,\n    appUsingSizeAdjustment,\n    flightRouterState,\n    requestId,\n    htmlRequestId,\n    pagePath,\n    assetPrefix,\n    isNotFoundPath,\n    nonce,\n    res,\n    sharedContext,\n    implicitTags,\n  }\n\n  getTracer().setRootSpanAttribute('next.route', pagePath)\n\n  if (isStaticGeneration) {\n    // We're either building or revalidating. In either case we need to\n    // prerender our page rather than render it.\n    const prerenderToStreamWithTracing = getTracer().wrap(\n      AppRenderSpan.getBodyResult,\n      {\n        spanName: `prerender route (app) ${pagePath}`,\n        attributes: {\n          'next.route': pagePath,\n        },\n      },\n      prerenderToStream\n    )\n\n    const response = await prerenderToStreamWithTracing(\n      req,\n      res,\n      ctx,\n      metadata,\n      loaderTree,\n      fallbackRouteParams\n    )\n\n    // If we're debugging partial prerendering, print all the dynamic API accesses\n    // that occurred during the render.\n    // @TODO move into renderToStream function\n    if (\n      response.dynamicAccess &&\n      accessedDynamicData(response.dynamicAccess) &&\n      renderOpts.isDebugDynamicAccesses\n    ) {\n      warn('The following dynamic usage was detected:')\n      for (const access of formatDynamicAPIAccesses(response.dynamicAccess)) {\n        warn(access)\n      }\n    }\n\n    // If we encountered any unexpected errors during build we fail the\n    // prerendering phase and the build.\n    if (workStore.invalidDynamicUsageError) {\n      logDisallowedDynamicError(workStore, workStore.invalidDynamicUsageError)\n      throw new StaticGenBailoutError()\n    }\n    if (response.digestErrorsMap.size) {\n      const buildFailingError = response.digestErrorsMap.values().next().value\n      if (buildFailingError) throw buildFailingError\n    }\n    // Pick first userland SSR error, which is also not a RSC error.\n    if (response.ssrErrors.length) {\n      const buildFailingError = response.ssrErrors.find((err) =>\n        isUserLandError(err)\n      )\n      if (buildFailingError) throw buildFailingError\n    }\n\n    const options: RenderResultOptions = {\n      metadata,\n      contentType: HTML_CONTENT_TYPE_HEADER,\n    }\n\n    // If we have pending revalidates, wait until they are all resolved.\n    const maybeRevalidatesPromise = executeRevalidates(workStore)\n    if (maybeRevalidatesPromise !== false) {\n      const revalidatesPromise = maybeRevalidatesPromise.finally(() => {\n        if (process.env.NEXT_PRIVATE_DEBUG_CACHE) {\n          console.log('pending revalidates promise finished for:', url.href)\n        }\n      })\n      if (renderOpts.waitUntil) {\n        renderOpts.waitUntil(revalidatesPromise)\n      } else {\n        options.waitUntil = revalidatesPromise\n      }\n    }\n\n    applyMetadataFromPrerenderResult(response, metadata, workStore)\n\n    if (response.renderResumeDataCache) {\n      metadata.renderResumeDataCache = response.renderResumeDataCache\n    }\n\n    const streamString = await streamToString(response.stream)\n    const result = new RenderResult(streamString, options)\n\n    // Run build-time instant validation if the page has instant configs\n    // TODO(instant-validation-build): This is not a great place to wire this in.\n    if (\n      workStore.cacheComponentsEnabled &&\n      workStore.isBuildTimePrerendering &&\n      renderOpts.runInstantValidation &&\n      (await anySegmentNeedsInstantValidationInBuild(loaderTree))\n    ) {\n      // Throws StaticGenBailoutError if validation failed.\n      await validateInstantConfigsInBuild(\n        ctx,\n        response.renderResumeDataCache ?? null\n      )\n    }\n\n    return result\n  } else {\n    // We're rendering dynamically\n    const renderResumeDataCache =\n      renderOpts.renderResumeDataCache ??\n      postponedState?.renderResumeDataCache ??\n      null\n\n    const rootParams = getRootParams(loaderTree, ctx.getDynamicParamFromSegment)\n    const fallbackParams = getRequestMeta(req, 'fallbackParams') || null\n\n    const createRequestStore = createRequestStoreForRender.bind(\n      null,\n      req,\n      res,\n      url,\n      rootParams,\n      implicitTags,\n      renderOpts.onUpdateCookies,\n      renderOpts.previewProps,\n      isHmrRefresh,\n      serverComponentsHmrCache,\n      renderResumeDataCache,\n      fallbackParams\n    )\n    const requestStore = createRequestStore()\n\n    if (\n      process.env.__NEXT_DEV_SERVER &&\n      setIsrStatus &&\n      !cacheComponents &&\n      // Only pages using the Node runtime can use ISR, so we only need to\n      // update the status for those.\n      // The type check here ensures that `req` is correctly typed, and the\n      // environment variable check provides dead code elimination.\n      process.env.NEXT_RUNTIME !== 'edge' &&\n      isNodeNextRequest(req)\n    ) {\n      req.originalRequest.on('end', () => {\n        const { pathname } = new URL(req.url || '/', 'http://n')\n        const isStatic = !requestStore.usedDynamic && !workStore.forceDynamic\n        setIsrStatus(pathname, isStatic)\n      })\n    }\n\n    if (isRSCRequest) {\n      if (isRuntimePrefetchRequest) {\n        return generateRuntimePrefetchResult(req, ctx, requestStore)\n      } else {\n        if (\n          process.env.__NEXT_DEV_SERVER &&\n          process.env.NEXT_RUNTIME !== 'edge' &&\n          cacheComponents\n        ) {\n          return generateDynamicFlightRenderResultWithStagesInDev(\n            req,\n            ctx,\n            requestStore,\n            createRequestStore,\n            fallbackParams\n          )\n        } else if (cacheComponents && cachedNavigations) {\n          return generateStagedDynamicFlightRenderResult(req, ctx, requestStore)\n        } else {\n          return generateDynamicFlightRenderResult(req, ctx, requestStore)\n        }\n      }\n    }\n\n    let didExecuteServerAction = false\n    let formState: null | any = null\n    if (isPossibleActionRequest) {\n      // For action requests, we handle them differently with a special render result.\n      const actionRequestResult = await handleAction({\n        req,\n        res,\n        ComponentMod,\n        generateFlight: generateDynamicFlightRenderResult,\n        workStore,\n        requestStore,\n        serverActions,\n        ctx,\n        metadata,\n      })\n\n      if (actionRequestResult) {\n        if (actionRequestResult.type === 'not-found') {\n          const notFoundLoaderTree = createNotFoundLoaderTree(loaderTree)\n          res.statusCode = 404\n          metadata.statusCode = 404\n          const stream = await renderToStream(\n            requestStore,\n            req,\n            res,\n            ctx,\n            notFoundLoaderTree,\n            formState,\n            postponedState,\n            metadata,\n            undefined, // Prevent restartable-render behavior in dev + Cache Components mode\n            fallbackParams\n          )\n\n          return new RenderResult(stream, {\n            metadata,\n            contentType: HTML_CONTENT_TYPE_HEADER,\n          })\n        } else if (actionRequestResult.type === 'done') {\n          if (actionRequestResult.result) {\n            actionRequestResult.result.assignMetadata(metadata)\n            return actionRequestResult.result\n          } else if (actionRequestResult.formState) {\n            formState = actionRequestResult.formState\n          }\n        }\n      }\n\n      didExecuteServerAction = true\n    }\n\n    const options: RenderResultOptions = {\n      metadata,\n      contentType: HTML_CONTENT_TYPE_HEADER,\n    }\n\n    const stream = await renderToStream(\n      // NOTE: in Cache Components (dev), if the render is restarted, it will use a different requestStore\n      // than the one that we're passing in here.\n      requestStore,\n      req,\n      res,\n      ctx,\n      loaderTree,\n      formState,\n      postponedState,\n      metadata,\n      // If we're rendering HTML after an action, we don't want restartable-render behavior\n      // because the result should be dynamic, like it is in prod.\n      // Also, the request store might have been mutated by the action (e.g. enabling draftMode)\n      // and we currently we don't copy changes over when creating a new store,\n      // so the restarted render wouldn't be correct.\n      didExecuteServerAction ? undefined : createRequestStore,\n      fallbackParams\n    )\n\n    // Invalid dynamic usages should only error the request in development.\n    // In production, it's better to produce a result.\n    // (the dynamic error will still be thrown inside the component tree, but it's catchable by error boundaries)\n    if (workStore.invalidDynamicUsageError && process.env.__NEXT_DEV_SERVER) {\n      throw workStore.invalidDynamicUsageError\n    }\n\n    // If we have pending revalidates, wait until they are all resolved.\n    const maybeRevalidatesPromise = executeRevalidates(workStore)\n    if (maybeRevalidatesPromise !== false) {\n      const revalidatesPromise = maybeRevalidatesPromise.finally(() => {\n        if (process.env.NEXT_PRIVATE_DEBUG_CACHE) {\n          console.log('pending revalidates promise finished for:', url.href)\n        }\n      })\n      if (renderOpts.waitUntil) {\n        renderOpts.waitUntil(revalidatesPromise)\n      } else {\n        options.waitUntil = revalidatesPromise\n      }\n    }\n\n    // Create the new render result for the response.\n    return new RenderResult(stream, options)\n  }\n}\n\nexport type AppPageRender = (\n  req: BaseNextRequest,\n  res: BaseNextResponse,\n  pagePath: string,\n  query: NextParsedUrlQuery,\n  fallbackRouteParams: OpaqueFallbackRouteParams | null,\n  renderOpts: RenderOpts,\n  serverComponentsHmrCache: ServerComponentsHmrCache | undefined,\n  sharedContext: AppSharedContext\n) => Promise<RenderResult<AppPageRenderResultMetadata>>\n\nexport const renderToHTMLOrFlight: AppPageRender = (\n  req,\n  res,\n  pagePath,\n  query,\n  fallbackRouteParams,\n  renderOpts,\n  serverComponentsHmrCache,\n  sharedContext\n) => {\n  if (!req.url) {\n    throw new Error('Invalid URL')\n  }\n\n  const url = parseRelativeUrl(req.url, undefined, false)\n\n  // We read these values from the request object as, in certain cases,\n  // base-server will strip them to opt into different rendering behavior.\n  const parsedRequestHeaders = parseRequestHeaders(req.headers, {\n    isRoutePPREnabled: renderOpts.experimental.isRoutePPREnabled === true,\n    previewModeId: renderOpts.previewProps?.previewModeId,\n  })\n\n  const { isPrefetchRequest, previouslyRevalidatedTags, nonce } =\n    parsedRequestHeaders\n\n  let interpolatedParams: Params\n  let postponedState: PostponedState | null = null\n\n  // If provided, the postpone state should be parsed so it can be provided to\n  // React.\n  if (typeof renderOpts.postponed === 'string') {\n    if (fallbackRouteParams) {\n      throw new InvariantError(\n        'postponed state should not be provided when fallback params are provided'\n      )\n    }\n\n    interpolatedParams = interpolateParallelRouteParams(\n      renderOpts.ComponentMod.routeModule.userland.loaderTree,\n      renderOpts.params ?? {},\n      pagePath,\n      fallbackRouteParams\n    )\n\n    postponedState = parsePostponedState(\n      renderOpts.postponed,\n      interpolatedParams,\n      renderOpts.experimental.maxPostponedStateSizeBytes\n    )\n  } else {\n    interpolatedParams = interpolateParallelRouteParams(\n      renderOpts.ComponentMod.routeModule.userland.loaderTree,\n      renderOpts.params ?? {},\n      pagePath,\n      fallbackRouteParams\n    )\n  }\n\n  if (\n    postponedState?.renderResumeDataCache &&\n    renderOpts.renderResumeDataCache\n  ) {\n    throw new InvariantError(\n      'postponed state and dev warmup immutable resume data cache should not be provided together'\n    )\n  }\n\n  const workStore = createWorkStore({\n    page: renderOpts.routeModule.definition.page,\n    renderOpts,\n    // @TODO move to workUnitStore of type Request\n    isPrefetchRequest,\n    buildId: sharedContext.buildId,\n    deploymentId: sharedContext.deploymentId,\n    previouslyRevalidatedTags,\n    nonce,\n  })\n\n  return workAsyncStorage.run(\n    workStore,\n    // The function to run\n    renderToHTMLOrFlightImpl,\n    // all of it's args\n    req,\n    res,\n    url,\n    pagePath,\n    query,\n    renderOpts,\n    workStore,\n    parsedRequestHeaders,\n    postponedState,\n    serverComponentsHmrCache,\n    sharedContext,\n    interpolatedParams,\n    fallbackRouteParams\n  )\n}\n\nfunction applyMetadataFromPrerenderResult(\n  response: Pick<\n    PrerenderToStreamResult,\n    | 'collectedExpire'\n    | 'collectedRevalidate'\n    | 'collectedStale'\n    | 'collectedTags'\n  >,\n  metadata: AppPageRenderResultMetadata,\n  workStore: WorkStore\n) {\n  if (response.collectedTags) {\n    metadata.fetchTags = response.collectedTags.join(',')\n  }\n\n  // Let the client router know how long to keep the cached entry around.\n  const staleHeader = String(response.collectedStale)\n  metadata.headers ??= {}\n  metadata.headers[NEXT_ROUTER_STALE_TIME_HEADER] = staleHeader\n\n  // If force static is specifically set to false, we should not revalidate\n  // the page.\n  if (workStore.forceStatic === false || response.collectedRevalidate === 0) {\n    metadata.cacheControl = { revalidate: 0, expire: undefined }\n  } else {\n    // Copy the cache control value onto the render result metadata.\n    metadata.cacheControl = {\n      revalidate:\n        response.collectedRevalidate >= INFINITE_CACHE\n          ? false\n          : response.collectedRevalidate,\n      expire:\n        response.collectedExpire >= INFINITE_CACHE\n          ? undefined\n          : response.collectedExpire,\n    }\n  }\n\n  // provide bailout info for debugging\n  if (metadata.cacheControl.revalidate === 0) {\n    metadata.staticBailoutInfo = {\n      description: workStore.dynamicUsageDescription,\n      stack: workStore.dynamicUsageStack,\n    }\n  }\n}\n\ntype RSCPayloadDevProperties = {\n  /** Only available during cacheComponents development builds. Used for logging errors. */\n  _validation?: Promise<ReactNode>\n  _bypassCachesInDev?: ReactNode\n}\n\ntype RSCInitialPayloadPartialDev = {\n  c?: InitialRSCPayload['c']\n}\n\nasync function renderToStream(\n  requestStore: RequestStore,\n  req: BaseNextRequest,\n  res: BaseNextResponse,\n  ctx: AppRenderContext,\n  tree: LoaderTree,\n  formState: any,\n  postponedState: PostponedState | null,\n  metadata: AppPageRenderResultMetadata,\n  createRequestStore: (() => RequestStore) | undefined,\n  fallbackParams: OpaqueFallbackRouteParams | null\n): Promise<ReadableStream<Uint8Array>> {\n  /* eslint-disable @next/internal/no-ambiguous-jsx -- React Client */\n  const {\n    assetPrefix,\n    htmlRequestId,\n    nonce,\n    pagePath,\n    renderOpts,\n    requestId,\n    workStore,\n  } = ctx\n\n  const {\n    basePath,\n    buildManifest,\n    ComponentMod: { createElement },\n    crossOrigin,\n    experimental,\n    isBuildTimePrerendering = false,\n    onInstrumentationRequestError,\n    page,\n    reactMaxHeadersLength,\n    setReactDebugChannel,\n    shouldWaitOnAllReady,\n    subresourceIntegrityManifest,\n    supportsDynamicResponse,\n    cacheComponents,\n  } = renderOpts\n\n  const { cachedNavigations } = renderOpts.experimental\n\n  const { ServerInsertedHTMLProvider, renderServerInsertedHTML } =\n    createServerInsertedHTML()\n  const getServerInsertedMetadata = createServerInsertedMetadata(nonce)\n\n  const tracingMetadata = getTracedMetadata(\n    getTracer().getTracePropagationData(),\n    experimental.clientTraceMetadata\n  )\n\n  const polyfills: JSX.IntrinsicElements['script'][] =\n    buildManifest.polyfillFiles\n      .filter(\n        (polyfill) =>\n          polyfill.endsWith('.js') && !polyfill.endsWith('.module.js')\n      )\n      .map((polyfill) => ({\n        src: `${assetPrefix}/_next/${polyfill}${getAssetQueryString(\n          ctx,\n          false\n        )}`,\n        integrity: subresourceIntegrityManifest?.[polyfill],\n        crossOrigin,\n        noModule: true,\n        nonce,\n      }))\n\n  const [preinitScripts, bootstrapScript] = getRequiredScripts(\n    buildManifest,\n    // Why is assetPrefix optional on renderOpts?\n    // @TODO make it default empty string on renderOpts and get rid of it from ctx\n    assetPrefix,\n    crossOrigin,\n    subresourceIntegrityManifest,\n    getAssetQueryString(ctx, true),\n    nonce,\n    page\n  )\n\n  // In development mode, set the request ID as a global variable, before the\n  // bootstrap script is executed, which depends on it during hydration.\n  // For MPA navigations (page reload, direct URL entry), the request ID\n  // header is not present, so we generate a random one.\n  const bootstrapScriptContent = process.env.__NEXT_DEV_SERVER\n    ? `self.__next_r=${JSON.stringify(requestId ?? crypto.randomUUID())}`\n    : undefined\n\n  // Create the \"render route (app)\" span manually so we can keep it open during streaming.\n  // This is necessary because errors inside Suspense boundaries are reported asynchronously\n  // during stream consumption, after a typical wrapped function would have ended the span.\n  // Note: We pass the full span name as the first argument since startSpan uses it directly.\n  const renderSpan = getTracer().startSpan(\n    `render route (app) ${pagePath}` as any,\n    {\n      attributes: {\n        'next.span_name': `render route (app) ${pagePath}`,\n        'next.span_type': AppRenderSpan.getBodyResult,\n        'next.route': pagePath,\n      },\n    }\n  )\n\n  // Helper to end the span with error status (used when throwing from catch blocks)\n  const endSpanWithError = (err: unknown) => {\n    if (!renderSpan.isRecording()) return\n    if (err instanceof Error) {\n      renderSpan.recordException(err)\n      renderSpan.setAttribute('error.type', err.name)\n    }\n    renderSpan.setStatus({\n      code: SpanStatusCode.ERROR,\n      message: err instanceof Error ? err.message : undefined,\n    })\n    renderSpan.end()\n  }\n\n  // Run the rest of the function within the span's context so child spans\n  // (like \"build component tree\", \"generateMetadata\") are properly parented.\n  return getTracer().withSpan(renderSpan, async () => {\n    const { reactServerErrorsByDigest } = workStore\n    function onHTMLRenderRSCError(err: DigestedError, silenceLog: boolean) {\n      return onInstrumentationRequestError?.(\n        err,\n        req,\n        createErrorContext(ctx, 'react-server-components'),\n        silenceLog\n      )\n    }\n    const serverComponentsErrorHandler = createReactServerErrorHandler(\n      process.env.NODE_ENV === 'development',\n      isBuildTimePrerendering,\n      reactServerErrorsByDigest,\n      onHTMLRenderRSCError,\n      renderSpan\n    )\n\n    function onHTMLRenderSSRError(err: DigestedError) {\n      // We don't need to silence logs here. onHTMLRenderSSRError won't be called\n      // at all if the error was logged before in the RSC error handler.\n      const silenceLog = false\n      return onInstrumentationRequestError?.(\n        err,\n        req,\n        createErrorContext(ctx, 'server-rendering'),\n        silenceLog\n      )\n    }\n\n    const allCapturedErrors: Array<unknown> = []\n    const htmlRendererErrorHandler = createHTMLErrorHandler(\n      process.env.NODE_ENV === 'development',\n      isBuildTimePrerendering,\n      reactServerErrorsByDigest,\n      allCapturedErrors,\n      onHTMLRenderSSRError,\n      renderSpan\n    )\n\n    let reactServerResult: null | ReactServerResult = null\n    let reactDebugStream: ReadableStream<Uint8Array> | undefined\n\n    const setHeader = res.setHeader.bind(res)\n    const appendHeader = res.appendHeader.bind(res)\n    const { clientModules } = getClientReferenceManifest()\n\n    try {\n      if (\n        process.env.__NEXT_DEV_SERVER &&\n        // Edge routes never prerender so we don't have a Prerender environment for anything in edge runtime\n        process.env.NEXT_RUNTIME !== 'edge' &&\n        // We only have a Prerender environment for projects opted into cacheComponents\n        cacheComponents\n      ) {\n        let debugChannel: DebugChannelPair | undefined\n\n        // eslint-disable-next-line @typescript-eslint/no-shadow\n        const getPayload = async (requestStore: RequestStore) => {\n          const payload: InitialRSCPayload & RSCPayloadDevProperties =\n            await workUnitAsyncStorage.run(\n              requestStore,\n              getRSCPayload,\n              tree,\n              ctx,\n              { is404: res.statusCode === 404 }\n            )\n\n          if (isBypassingCachesInDev(requestStore)) {\n            // Mark the RSC payload to indicate that caches were bypassed in dev.\n            // This lets the client know not to cache anything based on this render.\n            if (renderOpts.setCacheStatus) {\n              // we know this is available  when cacheComponents is enabled, but typeguard to be safe\n              renderOpts.setCacheStatus('bypass', htmlRequestId)\n            }\n            payload._bypassCachesInDev = createElement(\n              WarnForBypassCachesInDev,\n              {\n                route: workStore.route,\n              }\n            )\n          }\n\n          return payload\n        }\n\n        if (\n          // We only do this flow if we can safely recreate the store from scratch\n          // (which is not the case for renders after an action)\n          createRequestStore &&\n          // We only do this flow if we're not bypassing caches in dev using\n          // \"disable cache\" in devtools or a hard refresh (cache-control: \"no-store\")\n          !isBypassingCachesInDev(requestStore)\n        ) {\n          const {\n            stream: serverStream,\n            accumulatedChunksPromise,\n            syncInterruptReason,\n            startTime,\n            staticStageEndTime,\n            runtimeStageEndTime,\n            debugChannel: returnedDebugChannel,\n            requestStore: finalRequestStore,\n          } = await renderWithRestartOnCacheMissInDev(\n            ctx,\n            requestStore,\n            createRequestStore,\n            getPayload,\n            serverComponentsErrorHandler\n          )\n\n          let validationDebugChannelClient: Readable | undefined = undefined\n          if (returnedDebugChannel) {\n            const [t1, t2] = returnedDebugChannel.clientSide.readable.tee()\n            returnedDebugChannel.clientSide.readable = t1\n            validationDebugChannelClient = nodeStreamFromReadableStream(t2)\n          }\n\n          consoleAsyncStorage.run(\n            { dim: true },\n            spawnStaticShellValidationInDev,\n            accumulatedChunksPromise,\n            syncInterruptReason,\n            startTime,\n            staticStageEndTime,\n            runtimeStageEndTime,\n            ctx,\n            finalRequestStore,\n            fallbackParams,\n            validationDebugChannelClient\n          )\n\n          reactServerResult = new ReactServerResult(serverStream)\n          requestStore = finalRequestStore\n          debugChannel = returnedDebugChannel\n        } else {\n          logValidationSkipped(ctx)\n\n          // We're either bypassing caches or we can't restart the render.\n          // Do a dynamic render, but with (basic) environment labels.\n\n          debugChannel = setReactDebugChannel && createDebugChannel()\n\n          const serverStream =\n            await stagedRenderToReadableStreamWithoutCachesInDev(\n              ctx,\n              requestStore,\n              getPayload,\n              {\n                onError: serverComponentsErrorHandler,\n                filterStackFrame,\n                debugChannel: debugChannel?.serverSide,\n              }\n            )\n          reactServerResult = new ReactServerResult(serverStream)\n        }\n\n        if (debugChannel && setReactDebugChannel) {\n          const [readableSsr, readableBrowser] =\n            debugChannel.clientSide.readable.tee()\n\n          reactDebugStream = readableSsr\n\n          setReactDebugChannel(\n            { readable: readableBrowser },\n            htmlRequestId,\n            requestId\n          )\n        }\n      } else if (cacheComponents && cachedNavigations) {\n        // Production Cache Components + Cached Navigations: use staged\n        // rendering so the RSC payload includes the static stage byte length\n        // (`l` field), enabling the client to cache the static subset during\n        // hydration.\n        const { renderToReadableStream } = ctx.componentMod\n\n        const selectStaleTime = createSelectStaleTime(experimental)\n        const staleTimeIterable = new StaleTimeIterable()\n\n        // TODO(cached-navs): this assumes that we checked during build that there's no sync IO.\n        // but it can happen e.g. after a revalidation or conditionally for a param that wasn't prerendered.\n        // we should change this to track sync IO, log an error and advance to dynamic.\n        const shouldTrackSyncIO = false\n        const stageController = new StagedRenderingController(\n          null, // no aborting\n          null, // no abandoning\n          shouldTrackSyncIO\n        )\n\n        requestStore.stale = INFINITE_CACHE\n        requestStore.stagedRendering = stageController\n\n        trackStaleTime(\n          requestStore as { stale: number },\n          staleTimeIterable,\n          selectStaleTime\n        )\n\n        let resolveStaticStageByteLength: (count: number) => void\n        const staticStageByteLengthPromise = new Promise<number>((resolve) => {\n          resolveStaticStageByteLength = resolve\n        })\n\n        // If the route has runtime prefetching enabled, spawn a runtime\n        // prerender after the resume render fills caches. The result is\n        // embedded in the initial RSC payload so the client can cache\n        // runtime-prefetchable content during hydration.\n        const hasRuntimePrefetch =\n          await anySegmentHasRuntimePrefetchEnabled(tree)\n\n        let runtimePrefetchStream: ReadableStream<Uint8Array> | undefined\n\n        if (hasRuntimePrefetch) {\n          const prerenderResumeDataCache = createPrerenderResumeDataCache()\n          requestStore.prerenderResumeDataCache = prerenderResumeDataCache\n\n          const cacheSignal = new CacheSignal()\n          trackPendingModules(cacheSignal)\n          requestStore.cacheSignal = cacheSignal\n\n          const runtimePrefetchTransform = new TransformStream<Uint8Array>()\n          runtimePrefetchStream = runtimePrefetchTransform.readable\n\n          void cacheSignal\n            .cacheReady()\n            .then(() =>\n              spawnRuntimePrefetchWithFilledCaches(\n                runtimePrefetchTransform.writable,\n                ctx,\n                prerenderResumeDataCache,\n                requestStore,\n                serverComponentsErrorHandler\n              )\n            )\n        }\n\n        const RSCPayload = await workUnitAsyncStorage.run(\n          requestStore,\n          getRSCPayload,\n          tree,\n          ctx,\n          {\n            is404: res.statusCode === 404,\n            staleTimeIterable,\n            staticStageByteLengthPromise,\n            runtimePrefetchStream,\n          }\n        )\n\n        const flightStream = await runInSequentialTasks(\n          () => {\n            stageController.advanceStage(RenderStage.Static)\n\n            const stream = workUnitAsyncStorage.run(\n              requestStore,\n              renderToReadableStream,\n              RSCPayload,\n              clientModules,\n              {\n                onError: serverComponentsErrorHandler,\n                filterStackFrame,\n              }\n            )\n\n            const [dynamicStream, staticStream] = stream.tee()\n\n            countStaticStageBytes(staticStream, stageController).then(\n              resolveStaticStageByteLength!\n            )\n\n            return dynamicStream\n          },\n          () => {\n            // This is a separate task that doesn't advance a stage. It forces\n            // draining the microtask queue so that the stale time iterable is\n            // closed before we advance to the dynamic stage.\n            void finishStaleTimeTracking(staleTimeIterable)\n          },\n          () => {\n            stageController.advanceStage(RenderStage.Dynamic)\n          }\n        )\n\n        reactServerResult = new ReactServerResult(flightStream)\n      } else {\n        // This is a dynamic render. We don't do dynamic tracking because we're not prerendering\n        const RSCPayload: RSCPayload & RSCPayloadDevProperties =\n          await workUnitAsyncStorage.run(\n            requestStore,\n            getRSCPayload,\n            tree,\n            ctx,\n            { is404: res.statusCode === 404 }\n          )\n\n        const debugChannel = setReactDebugChannel && createDebugChannel()\n\n        if (debugChannel) {\n          const [readableSsr, readableBrowser] =\n            debugChannel.clientSide.readable.tee()\n\n          reactDebugStream = readableSsr\n\n          setReactDebugChannel(\n            { readable: readableBrowser },\n            htmlRequestId,\n            requestId\n          )\n        }\n\n        reactServerResult = new ReactServerResult(\n          workUnitAsyncStorage.run(\n            requestStore,\n            renderToFlightStream,\n            ctx.componentMod,\n            RSCPayload,\n            clientModules,\n            {\n              filterStackFrame,\n              onError: serverComponentsErrorHandler,\n              debugChannel: debugChannel?.serverSide,\n            }\n          )\n        )\n      }\n\n      // React doesn't start rendering synchronously but we want the RSC render to have a chance to start\n      // before we begin SSR rendering because we want to capture any available preload headers so we tick\n      // one task before continuing\n      await waitAtLeastOneReactRenderTask()\n\n      // If provided, the postpone state should be parsed as JSON so it can be\n      // provided to React.\n      if (typeof renderOpts.postponed === 'string') {\n        if (postponedState?.type === DynamicState.DATA) {\n          // We have a complete HTML Document in the prerender but we need to\n          // still include the new server component render because it was not included\n          // in the static prelude.\n          const inlinedDataStream = createInlinedDataStream(\n            reactServerResult.tee(),\n            nonce,\n            formState\n          )\n\n          // End the span since there's no async rendering in this path\n          if (renderSpan.isRecording()) renderSpan.end()\n          return chainStreams(inlinedDataStream, createDocumentClosingStream())\n        } else if (postponedState) {\n          // We assume we have dynamic HTML requiring a resume render to complete\n          const { postponed, preludeState } =\n            getPostponedFromState(postponedState)\n\n          const resumeAppElement = (\n            <App\n              reactServerStream={reactServerResult.tee()}\n              reactDebugStream={reactDebugStream}\n              debugEndTime={undefined}\n              preinitScripts={preinitScripts}\n              ServerInsertedHTMLProvider={ServerInsertedHTMLProvider}\n              nonce={nonce}\n              images={ctx.renderOpts.images}\n            />\n          )\n\n          const getServerInsertedHTML = makeGetServerInsertedHTML({\n            polyfills,\n            renderServerInsertedHTML,\n            serverCapturedErrors: allCapturedErrors,\n            basePath,\n            tracingMetadata: tracingMetadata,\n          })\n\n          const { stream: htmlStream, allReady } =\n            await workUnitAsyncStorage.run(\n              requestStore,\n              resumeToFizzStream,\n              resumeAppElement,\n              postponed,\n              { onError: htmlRendererErrorHandler, nonce }\n            )\n\n          // End the render span only after React completed rendering (including anything inside Suspense boundaries)\n          allReady.finally(() => {\n            if (renderSpan.isRecording()) renderSpan.end()\n          })\n\n          return await continueDynamicHTMLResume(htmlStream, {\n            delayDataUntilFirstHtmlChunk:\n              preludeState === DynamicHTMLPreludeState.Empty,\n            inlinedDataStream: createInlinedDataStream(\n              reactServerResult.consume(),\n              nonce,\n              formState\n            ),\n            getServerInsertedHTML,\n            getServerInsertedMetadata,\n            deploymentId: ctx.sharedContext.deploymentId,\n          })\n        }\n      }\n\n      // This is a regular dynamic render\n      const getServerInsertedHTML = makeGetServerInsertedHTML({\n        polyfills,\n        renderServerInsertedHTML,\n        serverCapturedErrors: allCapturedErrors,\n        basePath,\n        tracingMetadata: tracingMetadata,\n      })\n\n      const generateStaticHTML =\n        supportsDynamicResponse !== true || !!shouldWaitOnAllReady\n\n      const appElement = (\n        <App\n          reactServerStream={reactServerResult.tee()}\n          reactDebugStream={reactDebugStream}\n          debugEndTime={undefined}\n          preinitScripts={preinitScripts}\n          ServerInsertedHTMLProvider={ServerInsertedHTMLProvider}\n          nonce={nonce}\n          images={ctx.renderOpts.images}\n        />\n      )\n\n      const fizzOptions = {\n        onError: htmlRendererErrorHandler,\n        nonce,\n        onHeaders: (headers: Headers) => {\n          headers.forEach((value, key) => {\n            appendHeader(key, value)\n          })\n        },\n        maxHeadersLength: reactMaxHeadersLength,\n        bootstrapScriptContent,\n        bootstrapScripts: [bootstrapScript],\n        formState,\n      }\n\n      const { stream: htmlStream, allReady } = await workUnitAsyncStorage.run(\n        requestStore,\n        renderToFizzStream,\n        appElement,\n        fizzOptions\n      )\n\n      // End the render span only after React completed rendering (including anything inside Suspense boundaries)\n      allReady.finally(() => {\n        if (renderSpan.isRecording()) renderSpan.end()\n      })\n\n      return await continueFizzStream(htmlStream, {\n        inlinedDataStream: createInlinedDataStream(\n          reactServerResult.consume(),\n          nonce,\n          formState\n        ),\n        isStaticGeneration: generateStaticHTML,\n        allReady,\n        deploymentId: ctx.sharedContext.deploymentId,\n        getServerInsertedHTML,\n        getServerInsertedMetadata,\n        validateRootLayout: !!process.env.__NEXT_DEV_SERVER,\n      })\n    } catch (err) {\n      if (\n        isStaticGenBailoutError(err) ||\n        (typeof err === 'object' &&\n          err !== null &&\n          'message' in err &&\n          typeof err.message === 'string' &&\n          err.message.includes(\n            'https://nextjs.org/docs/advanced-features/static-html-export'\n          ))\n      ) {\n        // Ensure that \"next dev\" prints the red error overlay\n        endSpanWithError(err)\n        throw err\n      }\n\n      // If a bailout made it to this point, it means it wasn't wrapped inside\n      // a suspense boundary.\n      const shouldBailoutToCSR = isBailoutToCSRError(err)\n      if (shouldBailoutToCSR) {\n        const stack = getStackWithoutErrorMessage(err)\n        error(\n          `${err.reason} should be wrapped in a suspense boundary at page \"${pagePath}\". Read more: https://nextjs.org/docs/messages/missing-suspense-with-csr-bailout\\n${stack}`\n        )\n\n        endSpanWithError(err)\n        throw err\n      }\n\n      let errorType: MetadataErrorType | 'redirect' | undefined\n\n      if (isHTTPAccessFallbackError(err)) {\n        res.statusCode = getAccessFallbackHTTPStatus(err)\n        metadata.statusCode = res.statusCode\n        errorType = getAccessFallbackErrorTypeByStatus(res.statusCode)\n      } else if (isRedirectError(err)) {\n        errorType = 'redirect'\n        res.statusCode = getRedirectStatusCodeFromError(err)\n        metadata.statusCode = res.statusCode\n\n        const redirectUrl = addPathPrefix(\n          getURLFromRedirectError(err),\n          basePath\n        )\n\n        // If there were mutable cookies set, we need to set them on the\n        // response.\n        const headers = new Headers()\n        if (appendMutableCookies(headers, requestStore.mutableCookies)) {\n          setHeader('set-cookie', Array.from(headers.values()))\n        }\n\n        setHeader('location', redirectUrl)\n      } else if (!shouldBailoutToCSR) {\n        res.statusCode = 500\n        metadata.statusCode = res.statusCode\n      }\n\n      const [errorPreinitScripts, errorBootstrapScript] = getRequiredScripts(\n        buildManifest,\n        assetPrefix,\n        crossOrigin,\n        subresourceIntegrityManifest,\n        getAssetQueryString(ctx, false),\n        nonce,\n        '/_not-found/page'\n      )\n\n      let errorRSCPayload: InitialRSCPayload\n      let errorServerStream: import('./stream-ops').AnyStream\n\n      try {\n        errorRSCPayload = await workUnitAsyncStorage.run(\n          requestStore,\n          getErrorRSCPayload,\n          tree,\n          ctx,\n          reactServerErrorsByDigest.has((err as any).digest) ? null : err,\n          errorType\n        )\n\n        errorServerStream = workUnitAsyncStorage.run(\n          requestStore,\n          renderToFlightStream,\n          ctx.componentMod,\n          errorRSCPayload,\n          clientModules,\n          {\n            filterStackFrame,\n            onError: serverComponentsErrorHandler,\n          }\n        )\n\n        if (reactServerResult === null) {\n          // We errored when we did not have an RSC stream to read from. This is not just a render\n          // error, we need to throw early\n          endSpanWithError(err)\n          throw err\n        }\n      } catch (setupErr) {\n        endSpanWithError(setupErr)\n        throw setupErr\n      }\n\n      try {\n        const generateStaticHTML =\n          supportsDynamicResponse !== true || !!shouldWaitOnAllReady\n\n        const { stream: errorHtmlStream, allReady: errorAllReady } =\n          await workUnitAsyncStorage.run(\n            requestStore,\n            renderToFizzStream,\n            <ErrorApp\n              reactServerStream={errorServerStream}\n              ServerInsertedHTMLProvider={ServerInsertedHTMLProvider}\n              preinitScripts={errorPreinitScripts}\n              nonce={nonce}\n              images={ctx.renderOpts.images}\n            />,\n            {\n              nonce,\n              bootstrapScriptContent,\n              bootstrapScripts: [errorBootstrapScript],\n              formState,\n            }\n          )\n\n        // End the render span only after React completed rendering (including anything inside Suspense boundaries)\n        errorAllReady.finally(() => {\n          if (renderSpan.isRecording()) renderSpan.end()\n        })\n\n        return await continueFizzStream(errorHtmlStream, {\n          inlinedDataStream: createInlinedDataStream(\n            // This is intentionally using the readable datastream from the\n            // main render rather than the flight data from the error page\n            // render\n            reactServerResult.consume(),\n            nonce,\n            formState\n          ),\n          isStaticGeneration: generateStaticHTML,\n          deploymentId: ctx.sharedContext.deploymentId,\n          getServerInsertedHTML: makeGetServerInsertedHTML({\n            polyfills,\n            renderServerInsertedHTML,\n            serverCapturedErrors: [],\n            basePath,\n            tracingMetadata: tracingMetadata,\n          }),\n          getServerInsertedMetadata,\n          validateRootLayout: !!process.env.__NEXT_DEV_SERVER,\n        })\n      } catch (finalErr: any) {\n        if (\n          process.env.__NEXT_DEV_SERVER &&\n          isHTTPAccessFallbackError(finalErr)\n        ) {\n          const { bailOnRootNotFound } =\n            require('../../client/components/dev-root-http-access-fallback-boundary') as typeof import('../../client/components/dev-root-http-access-fallback-boundary')\n          bailOnRootNotFound()\n        }\n        endSpanWithError(finalErr)\n        throw finalErr\n      }\n    }\n  })\n  /* eslint-enable @next/internal/no-ambiguous-jsx */\n}\n\nasync function renderWithRestartOnCacheMissInDev(\n  ctx: AppRenderContext,\n  initialRequestStore: RequestStore,\n  createRequestStore: () => RequestStore,\n  getPayload: (requestStore: RequestStore) => Promise<RSCPayload>,\n  onError: (error: unknown) => void\n) {\n  const { htmlRequestId, renderOpts } = ctx\n\n  const { ComponentMod, setCacheStatus, setReactDebugChannel } = renderOpts\n\n  let startTime = -Infinity\n\n  // If the render is restarted, we'll recreate a fresh request store\n  let requestStore: RequestStore = initialRequestStore\n\n  const environmentName = () => {\n    const currentStage = requestStore.stagedRendering!.currentStage\n    switch (currentStage) {\n      case RenderStage.Before:\n      case RenderStage.EarlyStatic:\n      case RenderStage.Static:\n        return 'Prerender'\n      case RenderStage.EarlyRuntime:\n        return 'Prefetch'\n      case RenderStage.Runtime:\n        return 'Prefetchable'\n      case RenderStage.Dynamic:\n      case RenderStage.Abandoned:\n        return 'Server'\n      default:\n        currentStage satisfies never\n        throw new InvariantError(`Invalid render stage: ${currentStage}`)\n    }\n  }\n\n  //===============================================\n  // Initial render\n  //===============================================\n\n  // Try to render the page and see if there's any cache misses.\n  // If there are, wait for caches to finish and restart the render.\n\n  // This render might end up being used as a prospective render (if there's cache misses),\n  // so we need to set it up for filling caches.\n  const cacheSignal = new CacheSignal()\n\n  // If we encounter async modules that delay rendering, we'll also need to restart.\n  // TODO(restart-on-cache-miss): technically, we only need to wait for pending *server* modules here,\n  // but `trackPendingModules` doesn't distinguish between client and server.\n  trackPendingModules(cacheSignal)\n\n  const prerenderResumeDataCache = createPrerenderResumeDataCache()\n\n  const initialReactController = new AbortController()\n  const initialDataController = new AbortController() // Controls hanging promises we create\n  const initialAbandonController = new AbortController() // Controls whether this render is abandoned\n  const initialStageController = new StagedRenderingController(\n    initialDataController.signal,\n    initialAbandonController,\n    true // track sync IO\n  )\n\n  requestStore.prerenderResumeDataCache = prerenderResumeDataCache\n  // `getRenderResumeDataCache` will fall back to using `prerenderResumeDataCache` as `renderResumeDataCache`,\n  // so not having a resume data cache won't break any expectations in case we don't need to restart.\n  requestStore.renderResumeDataCache = null\n  requestStore.stagedRendering = initialStageController\n  requestStore.asyncApiPromises = createAsyncApiPromises(\n    initialStageController,\n    requestStore.cookies,\n    requestStore.mutableCookies,\n    requestStore.headers\n  )\n  requestStore.cacheSignal = cacheSignal\n\n  let debugChannel = setReactDebugChannel && createDebugChannel()\n  const { clientModules } = getClientReferenceManifest()\n\n  // Note: The stage controller starts out in the `Before` stage,\n  // where sync IO does not cause aborts, so it's okay if it happens before render.\n  const initialRscPayload = await getPayload(requestStore)\n\n  const initialStreamResult = await runInSequentialTasks(\n    () => {\n      initialStageController.advanceStage(RenderStage.EarlyStatic)\n      startTime = performance.now() + performance.timeOrigin\n\n      const streamPair = workUnitAsyncStorage\n        .run(\n          requestStore,\n          renderToFlightStream,\n          ComponentMod,\n          initialRscPayload,\n          clientModules,\n          {\n            onError,\n            environmentName,\n            startTime,\n            filterStackFrame,\n            debugChannel: debugChannel?.serverSide,\n            signal: initialReactController.signal,\n          }\n        )\n        .tee()\n\n      // If we abort the render, we want to reject the stage-dependent promises as well.\n      // Note that we want to install this listener after the render is started\n      // so that it runs after react is finished running its abort code.\n      initialReactController.signal.addEventListener(\n        'abort',\n        () => {\n          const { reason } = initialReactController.signal\n          initialDataController.abort(reason)\n        },\n        { once: true }\n      )\n\n      const stream = streamPair[0]\n      const accumulatedChunksPromise = accumulateStreamChunks(\n        streamPair[1],\n        initialStageController,\n        initialDataController.signal\n      )\n\n      initialDataController.signal.addEventListener(\n        'abort',\n        () => {\n          accumulatedChunksPromise.catch(() => {})\n          stream.cancel()\n        },\n        { once: true }\n      )\n\n      return {\n        stream,\n        accumulatedChunksPromise,\n      }\n    },\n    () => {\n      if (initialAbandonController.signal.aborted === true) {\n        return\n      } else if (cacheSignal.hasPendingReads()) {\n        initialAbandonController.abort()\n      } else {\n        initialStageController.advanceStage(RenderStage.Static)\n      }\n    },\n    () => {\n      if (initialAbandonController.signal.aborted === true) {\n        return\n      } else if (cacheSignal.hasPendingReads()) {\n        initialAbandonController.abort()\n      } else {\n        initialStageController.advanceStage(RenderStage.EarlyRuntime)\n      }\n    },\n    () => {\n      if (initialAbandonController.signal.aborted === true) {\n        return\n      } else if (cacheSignal.hasPendingReads()) {\n        initialAbandonController.abort()\n      } else {\n        initialStageController.advanceStage(RenderStage.Runtime)\n      }\n    },\n    () => {\n      if (initialAbandonController.signal.aborted === true) {\n        return\n      } else if (cacheSignal.hasPendingReads()) {\n        initialAbandonController.abort()\n      } else {\n        initialStageController.advanceStage(RenderStage.Dynamic)\n      }\n    }\n  )\n\n  if (initialStageController.currentStage !== RenderStage.Abandoned) {\n    // No cache misses. We can use the result as-is.\n    return {\n      stream: initialStreamResult.stream,\n      accumulatedChunksPromise: initialStreamResult.accumulatedChunksPromise,\n      syncInterruptReason: initialStageController.getSyncInterruptReason(),\n      startTime,\n      staticStageEndTime: initialStageController.getStaticStageEndTime(),\n      runtimeStageEndTime: initialStageController.getRuntimeStageEndTime(),\n      debugChannel,\n      requestStore,\n    }\n  }\n\n  if (process.env.__NEXT_DEV_SERVER && setCacheStatus) {\n    setCacheStatus('filling', htmlRequestId)\n  }\n\n  // Cache miss. We will use the initial render to fill caches, and discard its result.\n  // Then, we can render again with warm caches.\n\n  // TODO(restart-on-cache-miss):\n  // This might end up waiting for more caches than strictly necessary,\n  // because we can't abort the render yet, and we'll let runtime/dynamic APIs resolve.\n  // Ideally we'd only wait for caches that are needed in the static stage.\n  // This will be optimized in the future by not allowing runtime/dynamic APIs to resolve.\n\n  await cacheSignal.cacheReady()\n  initialReactController.abort()\n\n  //===============================================\n  // Final render (restarted)\n  //===============================================\n\n  // The initial render acted as a prospective render to warm the caches.\n  requestStore = createRequestStore()\n\n  // We are going to render this pass all the way through because we've already\n  // filled any caches so we won't be aborting this time.\n  const abortSignal = null\n  const finalStageController = new StagedRenderingController(\n    abortSignal,\n    null, // no abandoning\n    true // track sync IO\n  )\n\n  // We've filled the caches, so now we can render as usual,\n  // without any cache-filling mechanics.\n  requestStore.prerenderResumeDataCache = null\n  requestStore.renderResumeDataCache = createRenderResumeDataCache(\n    prerenderResumeDataCache\n  )\n  requestStore.stagedRendering = finalStageController\n  requestStore.cacheSignal = null\n  requestStore.asyncApiPromises = createAsyncApiPromises(\n    finalStageController,\n    requestStore.cookies,\n    requestStore.mutableCookies,\n    requestStore.headers\n  )\n\n  // The initial render already wrote to its debug channel.\n  // We're not using it, so we need to create a new one.\n  debugChannel = setReactDebugChannel && createDebugChannel()\n\n  // Note: The stage controller starts out in the `Before` stage,\n  // where sync IO does not cause aborts, so it's okay if it happens before render.\n  const finalRscPayload = await getPayload(requestStore)\n\n  const finalStreamResult = await runInSequentialTasks(\n    () => {\n      finalStageController.advanceStage(RenderStage.EarlyStatic)\n      startTime = performance.now() + performance.timeOrigin\n\n      const streamPair = workUnitAsyncStorage\n        .run(\n          requestStore,\n          renderToFlightStream,\n          ComponentMod,\n          finalRscPayload,\n          clientModules,\n          {\n            onError,\n            environmentName,\n            startTime,\n            filterStackFrame,\n            debugChannel: debugChannel?.serverSide,\n          }\n        )\n        .tee()\n\n      return {\n        stream: streamPair[0],\n        accumulatedChunksPromise: accumulateStreamChunks(\n          streamPair[1],\n          finalStageController,\n          null\n        ),\n      }\n    },\n    () => {\n      // Static stage\n      finalStageController.advanceStage(RenderStage.Static)\n    },\n    () => {\n      // EarlyRuntime stage\n      finalStageController.advanceStage(RenderStage.EarlyRuntime)\n    },\n    () => {\n      // Runtime stage\n      finalStageController.advanceStage(RenderStage.Runtime)\n    },\n    () => {\n      // Dynamic stage\n      finalStageController.advanceStage(RenderStage.Dynamic)\n    }\n  )\n\n  if (process.env.__NEXT_DEV_SERVER && setCacheStatus) {\n    setCacheStatus('filled', htmlRequestId)\n  }\n\n  return {\n    stream: finalStreamResult.stream,\n    accumulatedChunksPromise: finalStreamResult.accumulatedChunksPromise,\n    syncInterruptReason: finalStageController.getSyncInterruptReason(),\n    startTime,\n    staticStageEndTime: finalStageController.getStaticStageEndTime(),\n    runtimeStageEndTime: finalStageController.getRuntimeStageEndTime(),\n    debugChannel,\n    requestStore,\n  }\n}\n\ninterface AccumulatedStreamChunks {\n  readonly staticChunks: Array<Uint8Array>\n  readonly runtimeChunks: Array<Uint8Array>\n  readonly dynamicChunks: Array<Uint8Array>\n}\n\nasync function accumulateStreamChunks(\n  stream: ReadableStream<Uint8Array>,\n  stageController: StagedRenderingController,\n  signal: AbortSignal | null\n): Promise<AccumulatedStreamChunks> {\n  const staticChunks: Array<Uint8Array> = []\n  const runtimeChunks: Array<Uint8Array> = []\n  const dynamicChunks: Array<Uint8Array> = []\n  const reader = stream.getReader()\n\n  let cancelled = false\n  function cancel() {\n    if (!cancelled) {\n      cancelled = true\n      reader.cancel()\n    }\n  }\n\n  if (signal) {\n    signal.addEventListener('abort', cancel, { once: true })\n  }\n\n  try {\n    while (!cancelled) {\n      const { done, value } = await reader.read()\n      if (done) {\n        cancel()\n        break\n      }\n      switch (stageController.currentStage) {\n        case RenderStage.Before:\n          throw new InvariantError(\n            'Unexpected stream chunk while in Before stage'\n          )\n        case RenderStage.EarlyStatic:\n        case RenderStage.Static:\n          staticChunks.push(value)\n        // fall through\n        case RenderStage.EarlyRuntime:\n        case RenderStage.Runtime:\n          runtimeChunks.push(value)\n        // fall through\n        case RenderStage.Dynamic:\n          dynamicChunks.push(value)\n          break\n        case RenderStage.Abandoned:\n          // If the render was abandoned, we won't use the chunks,\n          // so there's no need to accumulate them\n          break\n        default:\n          stageController.currentStage satisfies never\n          break\n      }\n    }\n  } catch (err) {\n    // When we cancel the reader we may reject the read.\n    // Only swallow errors caused by our intentional cancel();\n    // re-throw unexpected errors to avoid silently returning partial data.\n    if (!cancelled) {\n      throw err\n    }\n  }\n\n  return { staticChunks, runtimeChunks, dynamicChunks }\n}\n\nasync function countStaticStageBytes(\n  stream: ReadableStream<Uint8Array>,\n  stageController: StagedRenderingController\n): Promise<number> {\n  let byteLength = 0\n  const reader = stream.getReader()\n\n  stageController.onStage(RenderStage.EarlyRuntime, () => {\n    reader.cancel()\n  })\n\n  while (true) {\n    const { done, value } = await reader.read()\n    if (done) {\n      break\n    }\n    if (stageController.currentStage <= RenderStage.Static) {\n      byteLength += value.byteLength\n    } else {\n      reader.cancel()\n      break\n    }\n  }\n\n  return byteLength\n}\n\nfunction createAsyncApiPromises(\n  stagedRendering: StagedRenderingController,\n  cookies: RequestStore['cookies'],\n  mutableCookies: RequestStore['mutableCookies'],\n  headers: RequestStore['headers']\n): NonNullable<RequestStore['asyncApiPromises']> {\n  return {\n    // Runtime APIs (for prefetch segments)\n    cookies: stagedRendering.delayUntilStage(\n      RenderStage.Runtime,\n      'cookies',\n      cookies\n    ),\n    earlyCookies: stagedRendering.delayUntilStage(\n      RenderStage.EarlyRuntime,\n      'cookies',\n      cookies\n    ),\n    mutableCookies: stagedRendering.delayUntilStage(\n      RenderStage.Runtime,\n      'cookies',\n      mutableCookies as RequestStore['cookies']\n    ),\n    earlyMutableCookies: stagedRendering.delayUntilStage(\n      RenderStage.EarlyRuntime,\n      'cookies',\n      mutableCookies as RequestStore['cookies']\n    ),\n    headers: stagedRendering.delayUntilStage(\n      RenderStage.Runtime,\n      'headers',\n      headers\n    ),\n    earlyHeaders: stagedRendering.delayUntilStage(\n      RenderStage.EarlyRuntime,\n      'headers',\n      headers\n    ),\n    // These are not used directly, but we chain other `params`/`searchParams` promises off of them.\n    sharedParamsParent: stagedRendering.delayUntilStage(\n      RenderStage.Runtime,\n      undefined,\n      '<internal params>'\n    ),\n    earlySharedParamsParent: stagedRendering.delayUntilStage(\n      RenderStage.EarlyRuntime,\n      undefined,\n      '<internal params>'\n    ),\n    sharedSearchParamsParent: stagedRendering.delayUntilStage(\n      RenderStage.Runtime,\n      undefined,\n      '<internal searchParams>'\n    ),\n    earlySharedSearchParamsParent: stagedRendering.delayUntilStage(\n      RenderStage.EarlyRuntime,\n      undefined,\n      '<internal searchParams>'\n    ),\n    connection: stagedRendering.delayUntilStage(\n      RenderStage.Dynamic,\n      'connection',\n      undefined\n    ),\n  }\n}\n\n/**\n * Logs the given messages, and sends the error instances to the browser as an\n * RSC stream, where they can be deserialized and logged (or otherwise presented\n * in the devtools), while leveraging React's capabilities to not only\n * source-map the stack frames (via findSourceMapURL), but also create virtual\n * server modules that allow users to inspect the server source code in the\n * browser.\n */\nasync function logMessagesAndSendErrorsToBrowser(\n  messages: unknown[],\n  ctx: AppRenderContext\n): Promise<void> {\n  const { htmlRequestId, renderOpts } = ctx\n  const { sendErrorsToBrowser } = renderOpts\n\n  const errors: Error[] = []\n  for (const message of messages) {\n    // Log the error to the CLI. Prevent the logs from being dimmed, which we\n    // apply for other logs during the spawned validation.\n    consoleAsyncStorage.exit(() => {\n      console.error(message)\n    })\n\n    // Error instances are also sent to the browser. We're currently using a\n    // non-Error message only in debug build mode as a message that is only\n    // meant for the CLI. FIXME: This is a bit spooky action at a distance. We\n    // should maybe have a more explicit way of determining which messages\n    // should be sent to the browser. Regardless, only real errors with a proper\n    // stack make sense to be \"replayed\" in the browser.\n    if (message instanceof Error) {\n      errors.push(message)\n    }\n  }\n\n  if (errors.length > 0) {\n    if (!sendErrorsToBrowser) {\n      throw new InvariantError(\n        'Expected `sendErrorsToBrowser` to be defined in renderOpts.'\n      )\n    }\n\n    // Build a Map of error → error code for errors that have one.\n    // React doesn't revive __NEXT_ERROR_CODE during RSC deserialization, so we\n    // send it as a side-channel Map. RSC preserves object identity, so the\n    // deserialized Map keys will reference the same Error objects.\n    const errorCodes = new Map<Error, string>()\n    for (const err of errors) {\n      const code = extractNextErrorCode(err)\n      if (code !== undefined) {\n        errorCodes.set(err, code)\n      }\n    }\n\n    const { clientModules } = getClientReferenceManifest()\n\n    const errorsFlightStream = renderToFlightStream(\n      ctx.componentMod,\n      { errors, errorCodes },\n      clientModules,\n      { filterStackFrame }\n    )\n\n    sendErrorsToBrowser(errorsFlightStream, htmlRequestId)\n  }\n}\n\nfunction logValidationSkipped(ctx: AppRenderContext) {\n  if (process.env.__NEXT_TEST_MODE && process.env.NEXT_TEST_LOG_VALIDATION) {\n    const requestId = ctx.requestId\n    const url = ctx.url.href\n    console.log(\n      '<VALIDATION_MESSAGE>' +\n        JSON.stringify({ type: 'validation_start', requestId, url }) +\n        '</VALIDATION_MESSAGE>'\n    )\n    console.log(\n      '<VALIDATION_MESSAGE>' +\n        JSON.stringify({ type: 'validation_end', requestId, url }) +\n        '</VALIDATION_MESSAGE>'\n    )\n  }\n}\n\nasync function spawnStaticShellValidationInDev(\n  ...args: Parameters<typeof spawnStaticShellValidationInDevImpl>\n) {\n  if (process.env.__NEXT_TEST_MODE && process.env.NEXT_TEST_LOG_VALIDATION) {\n    const ctx: AppRenderContext = args[5]\n    const requestId = ctx.requestId\n    const url = ctx.url.href\n    console.log(\n      '<VALIDATION_MESSAGE>' +\n        JSON.stringify({ type: 'validation_start', requestId, url }) +\n        '</VALIDATION_MESSAGE>'\n    )\n    try {\n      return await spawnStaticShellValidationInDevImpl(...args)\n    } finally {\n      console.log(\n        '<VALIDATION_MESSAGE>' +\n          JSON.stringify({ type: 'validation_end', requestId, url }) +\n          '</VALIDATION_MESSAGE>'\n      )\n    }\n  } else {\n    return await spawnStaticShellValidationInDevImpl(...args)\n  }\n}\n\n/**\n * This function is a fork of prerenderToStream cacheComponents branch.\n * While it doesn't return a stream we want it to have identical\n * prerender semantics to prerenderToStream and should update it\n * in conjunction with any changes to that function.\n */\nasync function spawnStaticShellValidationInDevImpl(\n  accumulatedChunksPromise: Promise<AccumulatedStreamChunks>,\n  syncInterruptReason: Error | null,\n  startTime: number,\n  staticStageEndTime: number,\n  runtimeStageEndTime: number,\n  ctx: AppRenderContext,\n  requestStore: RequestStore,\n  fallbackRouteParams: OpaqueFallbackRouteParams | null,\n  debugChannelClient: Readable | undefined\n): Promise<void> {\n  const debug =\n    process.env.NEXT_PRIVATE_DEBUG_VALIDATION === '1' ? console.log : undefined\n\n  const {\n    componentMod: ComponentMod,\n    getDynamicParamFromSegment,\n    renderOpts,\n    workStore,\n  } = ctx\n\n  const loaderTree = ComponentMod.routeModule.userland.loaderTree\n\n  const allowEmptyStaticShell =\n    (renderOpts.allowEmptyStaticShell ?? false) ||\n    (await isPageAllowedToBlock(loaderTree))\n\n  const rootParams = getRootParams(loaderTree, getDynamicParamFromSegment)\n\n  const hmrRefreshHash = getHmrRefreshHash(requestStore)\n\n  // We don't need to continue the prerender process if we already\n  // detected invalid dynamic usage in the initial prerender phase.\n  const { invalidDynamicUsageError } = workStore\n  if (invalidDynamicUsageError) {\n    return logMessagesAndSendErrorsToBrowser([invalidDynamicUsageError], ctx)\n  }\n\n  if (syncInterruptReason) {\n    return logMessagesAndSendErrorsToBrowser([syncInterruptReason], ctx)\n  }\n\n  let debugChunks: Uint8Array[] | null = null\n  if (debugChannelClient) {\n    debugChunks = []\n    debugChannelClient.on('data', (c) => {\n      debugChunks!.push(c)\n    })\n  }\n\n  const accumulatedChunks = await accumulatedChunksPromise\n  const { staticChunks, runtimeChunks, dynamicChunks } = accumulatedChunks\n\n  const needsInstantValidation =\n    await anySegmentNeedsInstantValidationInDev(loaderTree)\n\n  // `samples` from instant config are only used during build\n  const validationSamples = null\n  const validationSampleTracking = null\n\n  // First we warmup SSR with the runtime chunks. This ensures that when we do\n  // the full prerender pass with dynamic tracking module loading won't\n  // interrupt the prerender and can properly observe the entire content\n  await warmupClientModulesForStagedValidation(\n    // if we're going to be validating prefetches, we'll be rendering some segments in the dynamic stage.\n    // otherwise, for static shell validation, we only need to warm up to the runtime stage.\n    // we also need to use a different store type, because instant validation allows more APIs to resolve.\n    needsInstantValidation ? 'validation-client' : 'prerender-client',\n    needsInstantValidation ? dynamicChunks : runtimeChunks,\n    dynamicChunks,\n    rootParams,\n    fallbackRouteParams,\n    allowEmptyStaticShell,\n    ctx,\n    validationSamples,\n    validationSampleTracking\n  )\n\n  debug?.(`Starting static shell validation...`)\n\n  const runtimeResult = await validateStagedShell(\n    runtimeChunks,\n    dynamicChunks,\n    debugChunks,\n    runtimeStageEndTime,\n    rootParams,\n    fallbackRouteParams,\n    allowEmptyStaticShell,\n    ctx,\n    hmrRefreshHash,\n    trackDynamicHoleInRuntimeShell\n  )\n\n  if (runtimeResult.length > 0) {\n    debug?.(`❌ Failed - ${runtimeResult.length} errors from runtime stage`)\n    // We have something to report from the runtime validation\n    // We can skip the rest\n    return logMessagesAndSendErrorsToBrowser(runtimeResult, ctx)\n  }\n\n  const staticResult = await validateStagedShell(\n    staticChunks,\n    dynamicChunks,\n    debugChunks,\n    staticStageEndTime,\n    rootParams,\n    fallbackRouteParams,\n    allowEmptyStaticShell,\n    ctx,\n    hmrRefreshHash,\n    trackDynamicHoleInStaticShell\n  )\n\n  if (staticResult.length > 0) {\n    debug?.(`❌ Failed - ${staticResult.length} errors from static stage`)\n    // We have something to report from the static validation\n    // We can skip the rest\n    return logMessagesAndSendErrorsToBrowser(staticResult, ctx)\n  }\n  debug?.(`✅ Passed`)\n\n  if (needsInstantValidation) {\n    const instantConfigsResult = await validateInstantConfigs(\n      accumulatedChunks,\n      debugChunks,\n      startTime,\n      rootParams,\n      fallbackRouteParams,\n      ctx,\n      hmrRefreshHash,\n      validationSamples\n    )\n\n    if (instantConfigsResult.length > 0) {\n      return logMessagesAndSendErrorsToBrowser(instantConfigsResult, ctx)\n    }\n  }\n}\n\nasync function warmupClientModulesForStagedValidation(\n  storeType: PrerenderStoreModernClient['type'] | ValidationStoreClient['type'],\n  partialServerChunks: Array<Uint8Array>,\n  allServerChunks: Array<Uint8Array>,\n  rootParams: Params,\n  fallbackRouteParams: OpaqueFallbackRouteParams | null,\n  allowEmptyStaticShell: boolean,\n  ctx: AppRenderContext,\n  validationSamples: ValidationStoreClient['validationSamples'],\n  validationSampleTracking: ValidationStoreClient['validationSampleTracking']\n) {\n  const { implicitTags, nonce, workStore } = ctx\n\n  // Warmup SSR\n  const initialClientPrerenderController = new AbortController()\n  const initialClientReactController = new AbortController()\n  const initialClientRenderController = new AbortController()\n\n  const preinitScripts = () => {}\n  const { ServerInsertedHTMLProvider } = createServerInsertedHTML()\n\n  let initialClientPrerenderStore: PrerenderStore\n  if (storeType === 'prerender-client') {\n    const store: PrerenderStoreModernClient = {\n      type: 'prerender-client',\n      phase: 'render',\n      rootParams,\n      fallbackRouteParams,\n      implicitTags,\n      renderSignal: initialClientRenderController.signal,\n      controller: initialClientPrerenderController,\n      // For HTML Generation the only cache tracked activity\n      // is module loading, which has it's own cache signal\n      cacheSignal: null,\n      dynamicTracking: null,\n      allowEmptyStaticShell,\n      revalidate: INFINITE_CACHE,\n      expire: INFINITE_CACHE,\n      stale: INFINITE_CACHE,\n      tags: [...implicitTags.tags],\n      // TODO should this be removed from client stores?\n      prerenderResumeDataCache: null,\n      renderResumeDataCache: null,\n      hmrRefreshHash: undefined,\n      // Client prerenders don't track server param access\n      varyParamsAccumulator: null,\n    }\n    initialClientPrerenderStore = store\n  } else {\n    const store: ValidationStoreClient = {\n      type: 'validation-client',\n      phase: 'render',\n      rootParams,\n      implicitTags,\n      renderSignal: initialClientRenderController.signal,\n      controller: initialClientPrerenderController,\n      // For HTML Generation the only cache tracked activity\n      // is module loading, which has it's own cache signal\n      cacheSignal: null,\n      dynamicTracking: null,\n      revalidate: INFINITE_CACHE,\n      expire: INFINITE_CACHE,\n      stale: INFINITE_CACHE,\n      tags: [...implicitTags.tags],\n      // TODO should this be removed from client stores?\n      prerenderResumeDataCache: null,\n      renderResumeDataCache: null,\n      hmrRefreshHash: undefined,\n      // Client prerenders don't track server param access\n      varyParamsAccumulator: null,\n      // We're not rendering any validation boundaries yet.\n      boundaryState: null,\n      validationSamples,\n      validationSampleTracking,\n      fallbackRouteParams,\n    }\n    initialClientPrerenderStore = store\n  }\n\n  // TODO: maybe conditionally switch between runtime chunks and all chunks?\n  // but warming too much should always be fine, just not always necessary\n  const serverStream = createNodeStreamWithLateRelease(\n    partialServerChunks,\n    allServerChunks,\n    initialClientReactController.signal\n  )\n\n  const pendingInitialClientResult = workUnitAsyncStorage.run(\n    initialClientPrerenderStore,\n    getClientPrerender,\n    // eslint-disable-next-line @next/internal/no-ambiguous-jsx -- React Client\n    <App\n      reactServerStream={serverStream}\n      reactDebugStream={undefined}\n      debugEndTime={undefined}\n      preinitScripts={preinitScripts}\n      ServerInsertedHTMLProvider={ServerInsertedHTMLProvider}\n      nonce={nonce}\n      images={ctx.renderOpts.images}\n    />,\n    {\n      signal: initialClientReactController.signal,\n      onError: (err: unknown) => {\n        const digest = getDigestForWellKnownError(err)\n\n        if (digest) {\n          return digest\n        }\n\n        if (isReactLargeShellError(err)) {\n          // TODO: Aggregate\n          console.error(err)\n          return undefined\n        }\n\n        if (initialClientReactController.signal.aborted) {\n          // These are expected errors that might error the prerender. we ignore them.\n        } else if (\n          process.env.NEXT_DEBUG_BUILD ||\n          process.env.__NEXT_VERBOSE_LOGGING\n        ) {\n          // We don't normally log these errors because we are going to retry anyway but\n          // it can be useful for debugging Next.js itself to get visibility here when needed\n          printDebugThrownValueForProspectiveRender(\n            err,\n            workStore.route,\n            Phase.ProspectiveRender\n          )\n        }\n      },\n      // We don't need bootstrap scripts in this prerender\n      // bootstrapScripts: [bootstrapScript],\n    }\n  )\n\n  // The listener to abort our own render controller must be added after React\n  // has added its listener, to ensure that pending I/O is not\n  // aborted/rejected too early.\n  initialClientReactController.signal.addEventListener(\n    'abort',\n    () => {\n      initialClientRenderController.abort()\n    },\n    { once: true }\n  )\n\n  pendingInitialClientResult.catch((err: unknown) => {\n    if (\n      initialClientReactController.signal.aborted ||\n      isPrerenderInterruptedError(err)\n    ) {\n      // These are expected errors that might error the prerender. we ignore them.\n    } else if (\n      process.env.NEXT_DEBUG_BUILD ||\n      process.env.__NEXT_VERBOSE_LOGGING\n    ) {\n      // We don't normally log these errors because we are going to retry anyway but\n      // it can be useful for debugging Next.js itself to get visibility here when needed\n      printDebugThrownValueForProspectiveRender(\n        err,\n        workStore.route,\n        Phase.ProspectiveRender\n      )\n    }\n  })\n\n  // This is mostly needed for dynamic `import()`s in client components.\n  // Promises passed to client were already awaited above (assuming that they came from cached functions)\n  const cacheSignal = new CacheSignal()\n  trackPendingModules(cacheSignal)\n  await cacheSignal.cacheReady()\n  initialClientReactController.abort()\n}\n\nasync function validateStagedShell(\n  stageChunks: Array<Uint8Array>,\n  allServerChunks: Array<Uint8Array>,\n  debugChunks: null | Array<Uint8Array>,\n  debugEndTime: number | undefined,\n  rootParams: Params,\n  fallbackRouteParams: OpaqueFallbackRouteParams | null,\n  allowEmptyStaticShell: boolean,\n  ctx: AppRenderContext,\n  hmrRefreshHash: string | undefined,\n  trackDynamicHole:\n    | typeof trackDynamicHoleInStaticShell\n    | typeof trackDynamicHoleInRuntimeShell\n): Promise<Array<unknown>> {\n  const { implicitTags, nonce, workStore } = ctx\n\n  const clientDynamicTracking = createDynamicTrackingState(\n    false //isDebugDynamicAccesses\n  )\n  const clientReactController = new AbortController()\n  const clientRenderController = new AbortController()\n\n  const preinitScripts = () => {}\n  const { ServerInsertedHTMLProvider } = createServerInsertedHTML()\n\n  const finalClientPrerenderStore: PrerenderStore = {\n    type: 'prerender-client',\n    phase: 'render',\n    rootParams,\n    fallbackRouteParams,\n    implicitTags,\n    renderSignal: clientRenderController.signal,\n    controller: clientReactController,\n    // No APIs require a cacheSignal through the workUnitStore during the HTML prerender\n    cacheSignal: null,\n    dynamicTracking: clientDynamicTracking,\n    allowEmptyStaticShell,\n    revalidate: INFINITE_CACHE,\n    expire: INFINITE_CACHE,\n    stale: INFINITE_CACHE,\n    tags: [...implicitTags.tags],\n    // TODO should this be removed from client stores?\n    prerenderResumeDataCache: null,\n    renderResumeDataCache: null,\n    hmrRefreshHash,\n    // Client prerenders don't track server param access\n    varyParamsAccumulator: null,\n  }\n\n  const dynamicValidation = createDynamicValidationState()\n\n  const serverStream = createNodeStreamWithLateRelease(\n    stageChunks,\n    allServerChunks,\n    clientReactController.signal\n  )\n\n  const debugChannelClient = debugChunks\n    ? createNodeStreamWithLateRelease(\n        debugChunks,\n        debugChunks,\n        clientReactController.signal\n      )\n    : undefined\n\n  try {\n    let { prelude: unprocessedPrelude } = await runInSequentialTasks(\n      () => {\n        const pendingFinalClientResult = workUnitAsyncStorage.run(\n          finalClientPrerenderStore,\n          getClientPrerender,\n          // eslint-disable-next-line @next/internal/no-ambiguous-jsx -- React Client\n          <App\n            reactServerStream={serverStream}\n            reactDebugStream={debugChannelClient}\n            debugEndTime={debugEndTime}\n            preinitScripts={preinitScripts}\n            ServerInsertedHTMLProvider={ServerInsertedHTMLProvider}\n            nonce={nonce}\n            images={ctx.renderOpts.images}\n          />,\n          {\n            signal: clientReactController.signal,\n            onError: (err: unknown, errorInfo: ErrorInfo) => {\n              if (\n                isPrerenderInterruptedError(err) ||\n                clientReactController.signal.aborted\n              ) {\n                const componentStack = errorInfo.componentStack\n                if (typeof componentStack === 'string') {\n                  trackDynamicHole(\n                    workStore,\n                    componentStack,\n                    dynamicValidation,\n                    clientDynamicTracking\n                  )\n                }\n                return\n              }\n\n              if (isReactLargeShellError(err)) {\n                // TODO: Aggregate\n                console.error(err)\n                return undefined\n              }\n\n              return getDigestForWellKnownError(err)\n            },\n            // We don't need bootstrap scripts in this prerender\n            // bootstrapScripts: [bootstrapScript],\n          }\n        )\n\n        // The listener to abort our own render controller must be added after\n        // React has added its listener, to ensure that pending I/O is not\n        // aborted/rejected too early.\n        clientReactController.signal.addEventListener(\n          'abort',\n          () => {\n            clientRenderController.abort()\n          },\n          { once: true }\n        )\n\n        return pendingFinalClientResult\n      },\n      () => {\n        clientReactController.abort()\n      }\n    )\n\n    const { preludeIsEmpty } = await processPreludeOp(unprocessedPrelude)\n    return getStaticShellDisallowedDynamicReasons(\n      workStore,\n      preludeIsEmpty ? PreludeState.Empty : PreludeState.Full,\n      dynamicValidation,\n      // TODO(instant-validation): if allowEmptyStaticShell is true (likely due to blocking configs),\n      // we should probably just skip this altogether\n      allowEmptyStaticShell\n    )\n  } catch (thrownValue) {\n    // Even if the root errors we still want to report any cache components errors\n    // that were discovered before the root errored.\n    let errors: Array<unknown> = getStaticShellDisallowedDynamicReasons(\n      workStore,\n      PreludeState.Errored,\n      dynamicValidation,\n      // TODO(instant-validation): if allowEmptyStaticShell is true (likely due to blocking configs),\n      // we should probably just skip this altogether\n      allowEmptyStaticShell\n    )\n\n    if (process.env.NEXT_DEBUG_BUILD || process.env.__NEXT_VERBOSE_LOGGING) {\n      errors.unshift(\n        'During dynamic validation the root of the page errored. The next logged error is the thrown value. It may be a duplicate of errors reported during the normal development mode render.',\n        thrownValue\n      )\n    }\n\n    return errors\n  }\n}\n\n/**\n * Validates instant configs by iterating URL depths from deepest to\n * shallowest. At each depth, builds a combined payload where segments\n * above the boundary use Dynamic stage (already mounted) and segments\n * below use Static/Runtime stage (being prefetched). If the new subtree\n * contains any `unstable_instant` configs, the payload is rendered to\n * detect dynamic holes without Suspense.\n */\nasync function validateInstantConfigs(\n  accumulatedChunks: AccumulatedStreamChunks,\n  debugChunks: null | Array<Uint8Array>,\n  startTime: number,\n  rootParams: Params,\n  fallbackRouteParams: OpaqueFallbackRouteParams | null,\n  ctx: AppRenderContext,\n  hmrRefreshHash: string | undefined,\n  validationSamples: ValidationStoreClient['validationSamples'] | null\n): Promise<Array<unknown>> {\n  const debug =\n    process.env.NEXT_PRIVATE_DEBUG_VALIDATION === '1' ? console.log : undefined\n\n  const {\n    createCombinedPayloadAtDepth,\n    createCombinedPayloadStream,\n    collectStagedSegmentData,\n    discoverValidationDepths,\n  } = ctx.componentMod.InstantValidation()!\n\n  const { createValidationSampleTracking } =\n    require('./instant-validation/instant-samples') as typeof import('./instant-validation/instant-samples')\n\n  debug?.('\\nStarting depth-based instant validation...')\n\n  const loaderTree = ctx.componentMod.routeModule.userland.loaderTree\n\n  // Only affects a debug environment name label, not functional behavior.\n  const hasRuntimePrefetch = true\n\n  const clientReferenceManifest = getClientReferenceManifest()\n\n  const {\n    cache,\n    payload: initialRscPayload,\n    stageEndTimes,\n  } = await collectStagedSegmentData(\n    {\n      [RenderStage.Static]: accumulatedChunks.staticChunks,\n      [RenderStage.Runtime]: accumulatedChunks.runtimeChunks,\n      [RenderStage.Dynamic]: accumulatedChunks.dynamicChunks,\n    },\n    debugChunks,\n    startTime,\n    hasRuntimePrefetch,\n    clientReferenceManifest\n  )\n\n  const { implicitTags, nonce, workStore } = ctx\n  const isDebugChannelEnabled = !!ctx.renderOpts.setReactDebugChannel\n\n  /**\n   * Build and validate a combined payload at the given URL depth.\n   *\n   * Returns null if no instant config exists at this depth.\n   * Returns an empty array if validation passed.\n   * Returns a non-empty array of errors if validation failed.\n   *\n   * When the initial validation uses static segments and finds errors,\n   * automatically retries with runtime stages to discriminate between\n   * runtime and dynamic errors, returning the more specific result.\n   */\n  async function validateAtDepth(\n    depth: number,\n    groupDepthForValidation: number\n  ): Promise<Array<unknown> | null> {\n    return validateAtDepthImpl(depth, groupDepthForValidation, null)\n  }\n\n  async function validateAtDepthImpl(\n    depth: number,\n    groupDepthForValidation: number,\n    previousBoundaryState: null | ValidationBoundaryTracking\n  ): Promise<null | Array<unknown>> {\n    const extraChunksController = new AbortController()\n\n    const boundaryState = createValidationBoundaryTracking()\n    let useRuntimeStageForPartialSegments = false\n    if (previousBoundaryState) {\n      // We're doing a followup render to better discriminate error types\n      useRuntimeStageForPartialSegments = true\n      for (const id of previousBoundaryState.expectedIds) {\n        boundaryState.expectedIds.add(id)\n      }\n    }\n\n    const payloadResult = await createCombinedPayloadAtDepth(\n      initialRscPayload,\n      cache,\n      loaderTree,\n      ctx.getDynamicParamFromSegment,\n      ctx.query,\n      depth,\n      groupDepthForValidation,\n      extraChunksController.signal,\n      boundaryState,\n      clientReferenceManifest,\n      stageEndTimes,\n      useRuntimeStageForPartialSegments\n    )\n\n    if (payloadResult === null) {\n      return null\n    }\n\n    const reactController = new AbortController()\n    const renderController = new AbortController()\n    const preinitScripts = () => {}\n    const { ServerInsertedHTMLProvider } = createServerInsertedHTML()\n\n    const { stream: serverStream, debugStream } =\n      await createCombinedPayloadStream(\n        payloadResult.payload,\n        extraChunksController,\n        reactController.signal,\n        clientReferenceManifest,\n        startTime,\n        isDebugChannelEnabled\n      )\n\n    const instantValidationState = createInstantValidationState(\n      payloadResult.createInstantStack\n    )\n\n    const validationSampleTracking =\n      validationSamples !== null ? createValidationSampleTracking() : null\n\n    const clientDynamicTracking = createDynamicTrackingState(false)\n\n    const prerenderStore: PrerenderStore = {\n      type: 'validation-client',\n      phase: 'render',\n      rootParams,\n      implicitTags,\n      renderSignal: renderController.signal,\n      controller: reactController,\n      cacheSignal: null,\n      dynamicTracking: clientDynamicTracking,\n      revalidate: INFINITE_CACHE,\n      expire: INFINITE_CACHE,\n      stale: INFINITE_CACHE,\n      tags: [...implicitTags.tags],\n      prerenderResumeDataCache: null,\n      renderResumeDataCache: null,\n      hmrRefreshHash,\n      varyParamsAccumulator: null,\n      boundaryState,\n      fallbackRouteParams,\n      validationSamples,\n      validationSampleTracking,\n    }\n\n    let errors: Array<unknown>\n    try {\n      const { prelude: unprocessedPrelude } = await runInSequentialTasks(\n        () => {\n          const pendingResult = workUnitAsyncStorage.run(\n            prerenderStore,\n            getClientPrerender,\n            // eslint-disable-next-line @next/internal/no-ambiguous-jsx -- React Client\n            <App\n              reactServerStream={serverStream}\n              reactDebugStream={debugStream ?? undefined}\n              debugEndTime={undefined}\n              preinitScripts={preinitScripts}\n              ServerInsertedHTMLProvider={ServerInsertedHTMLProvider}\n              nonce={nonce}\n              images={ctx.renderOpts.images}\n            />,\n            {\n              signal: reactController.signal,\n              onError: (err: unknown, errorInfo: ErrorInfo) => {\n                if (\n                  isPrerenderInterruptedError(err) ||\n                  reactController.signal.aborted\n                ) {\n                  const componentStack = errorInfo.componentStack\n                  if (typeof componentStack === 'string') {\n                    trackDynamicHoleInNavigation(\n                      workStore,\n                      componentStack,\n                      instantValidationState,\n                      clientDynamicTracking,\n                      payloadResult.hasAmbiguousErrors\n                        ? DynamicHoleKind.Runtime\n                        : DynamicHoleKind.Dynamic,\n                      boundaryState\n                    )\n                  }\n                  return\n                } else if (!reactController.signal.aborted) {\n                  const componentStack = errorInfo.componentStack\n                  if (typeof componentStack === 'string') {\n                    let errorForDisplay = err\n                    if (process.env.NODE_ENV === 'production') {\n                      // In production (i.e. build validation), Flight omits everything except the digest\n                      // when serializing errors, which makes them very unfriendly for debugging.\n                      // Map the deserialized errors back to their original error object to make it more useful.\n                      if (\n                        err &&\n                        typeof err === 'object' &&\n                        'digest' in err &&\n                        typeof err.digest === 'string'\n                      ) {\n                        const serverError =\n                          workStore.reactServerErrorsByDigest.get(err.digest)\n                        if (serverError !== undefined) {\n                          errorForDisplay = serverError\n                        }\n                      }\n                    }\n\n                    trackThrownErrorInNavigation(\n                      workStore,\n                      instantValidationState,\n                      errorForDisplay,\n                      componentStack\n                    )\n                  }\n                }\n\n                if (isReactLargeShellError(err)) {\n                  console.error(err)\n                  return undefined\n                }\n\n                return getDigestForWellKnownError(err)\n              },\n            }\n          )\n\n          reactController.signal.addEventListener(\n            'abort',\n            () => {\n              renderController.abort()\n            },\n            { once: true }\n          )\n\n          return pendingResult\n        },\n        () => {\n          reactController.abort()\n        }\n      )\n\n      const { preludeIsEmpty } = await processPreludeOp(unprocessedPrelude)\n\n      errors = getNavigationDisallowedDynamicReasons(\n        workStore,\n        preludeIsEmpty ? PreludeState.Empty : PreludeState.Full,\n        instantValidationState,\n        validationSampleTracking,\n        boundaryState\n      )\n    } catch (thrownValue) {\n      errors = getNavigationDisallowedDynamicReasons(\n        workStore,\n        PreludeState.Errored,\n        instantValidationState,\n        validationSampleTracking,\n        boundaryState\n      )\n    }\n\n    // This prerender did not produce any errors\n    if (errors.length === 0) {\n      return []\n    }\n\n    if (previousBoundaryState === null && payloadResult.hasAmbiguousErrors) {\n      // This is the first validation attempt. we prepared a payload where dynamic holes might be runtime data dependencies\n      // or dynamic data dependencies. We do a followup validation using a payload with only Runtime segments to discriminate\n      const dynamicOnlyErrors = await validateAtDepthImpl(\n        depth,\n        groupDepthForValidation,\n        boundaryState\n      )\n\n      if (dynamicOnlyErrors !== null && dynamicOnlyErrors.length > 0) {\n        // The dynamic errors only validation found errors to report so we favor those\n        return dynamicOnlyErrors\n      }\n    }\n\n    // If we didn't return some other errors at this point the only thing to return is this validation's errors\n    return errors\n  }\n\n  // Discover validation depth bounds from the LoaderTree. The array\n  // length is the max URL depth; each entry is the max group depth\n  // (route group segments) between that URL depth and the next.\n  const groupDepthsByUrlDepth = discoverValidationDepths(loaderTree)\n  const maxDepth = groupDepthsByUrlDepth.length\n\n  for (let depth = maxDepth - 1; depth >= 0; depth--) {\n    const maxGroupDepth = groupDepthsByUrlDepth[depth]\n\n    for (\n      let currentGroupDepth = maxGroupDepth;\n      currentGroupDepth >= 0;\n      currentGroupDepth--\n    ) {\n      debug?.(\n        `Trying depth ${depth}` +\n          (currentGroupDepth > 0\n            ? ` + groupDepth ${currentGroupDepth}...`\n            : '...')\n      )\n\n      const errors = await validateAtDepth(depth, currentGroupDepth)\n\n      if (errors === null) {\n        debug?.(`  No config at depth ${depth}+${currentGroupDepth}, skipping.`)\n        continue\n      }\n\n      if (errors.length > 0) {\n        debug?.(\n          `  Depth ${depth}+${currentGroupDepth}: ❌ Failed (${errors.length} errors)`\n        )\n        return errors\n      }\n\n      debug?.(`  Depth ${depth}+${currentGroupDepth}: ✅ Passed`)\n    }\n  }\n\n  debug?.(`✅ All depths passed`)\n  return []\n}\n\n/**\n * Two-pass render for build-time instant validation.\n * The flow is similar to `renderWithRestartOnCacheMissInDev`: pass 1 warms caches,\n * pass 2 renders with warm caches. If pass 1 has no cache misses,\n * its result is returned directly.\n *\n * Differences from `renderWithRestartOnCacheMissInDev`:\n * - both renders are abortable: if we know that we can't use a stream, we can just\n *   throw it away, we don't have to render a complete result.\n * - We don't need to tee the stream, we only care about accumulating chunks.\n */\nasync function renderWithRestartOnCacheMissInValidation(\n  ctx: AppRenderContext,\n  initialRequestStore: RequestStore,\n  createRequestStore: () => RequestStore,\n  getPayload: (requestStore: RequestStore) => Promise<RSCPayload>,\n  createOnError: (\n    signal: AbortSignal,\n    isRestart: boolean\n  ) => (error: unknown) => void,\n  prefilledDataCache: RenderResumeDataCache | null\n): Promise<{\n  accumulatedChunksPromise: Promise<AccumulatedStreamChunks>\n  startTime: number\n  stageController: StagedRenderingController\n  requestStore: RequestStore\n}> {\n  const { componentMod: ComponentMod } = ctx\n  const { clientModules } = getClientReferenceManifest()\n\n  let startTime = -Infinity\n  let requestStore: RequestStore = initialRequestStore\n\n  //===============================================\n  // Initial render (prospective — may warm caches)\n  //===============================================\n\n  const cacheSignal = new CacheSignal()\n  trackPendingModules(cacheSignal)\n\n  // The prerender we rean before the validation probably already filled some caches,\n  // so we want to save work and re-use them.\n  const prerenderResumeDataCache = prefilledDataCache\n    ? createPrerenderResumeDataCache(prefilledDataCache)\n    : createPrerenderResumeDataCache()\n\n  const initialReactController = new AbortController()\n  const initialDataController = new AbortController()\n\n  const initialAbandonController = new AbortController()\n  const initialStageController = new StagedRenderingController(\n    initialDataController.signal,\n    initialAbandonController,\n    true // track sync IO\n  )\n\n  requestStore.prerenderResumeDataCache = prerenderResumeDataCache\n  requestStore.renderResumeDataCache = null\n  requestStore.stagedRendering = initialStageController\n  requestStore.cacheSignal = cacheSignal\n  requestStore.asyncApiPromises = createAsyncApiPromises(\n    initialStageController,\n    requestStore.cookies,\n    requestStore.mutableCookies,\n    requestStore.headers\n  )\n  // We don't set `requestStore.controller and requestStore.renderSignal here.\n  // Right now, we only abort for sync IO, and in the first render, that's just a restart\n  // (after waiting for caches)\n  requestStore.controller = undefined\n  requestStore.renderSignal = undefined\n\n  const initialRscPayload = await getPayload(requestStore)\n\n  const advanceStageIfNoCacheMiss = (\n    stage: Parameters<StagedRenderingController['advanceStage']>[0]\n  ) => {\n    if (initialAbandonController.signal.aborted === true) {\n      return\n    } else if (cacheSignal.hasPendingReads()) {\n      initialAbandonController.abort()\n    } else {\n      initialStageController.advanceStage(stage)\n    }\n  }\n\n  const initialResult = await runInSequentialTasks(\n    () => {\n      initialStageController.advanceStage(RenderStage.EarlyStatic)\n      startTime = performance.now() + performance.timeOrigin\n\n      const stream = workUnitAsyncStorage.run(\n        requestStore,\n        renderToFlightStream,\n        ComponentMod,\n        initialRscPayload,\n        clientModules,\n        {\n          onError: createOnError(initialReactController.signal, false),\n          startTime,\n          filterStackFrame,\n          signal: initialReactController.signal,\n        }\n      )\n\n      initialReactController.signal.addEventListener(\n        'abort',\n        () => {\n          const { reason } = initialReactController.signal\n          initialDataController.abort(reason)\n        },\n        { once: true }\n      )\n\n      const accumulatedChunksPromise = accumulateStreamChunks(\n        stream,\n        initialStageController,\n        initialDataController.signal\n      )\n      accumulatedChunksPromise.catch(() => {})\n      return { accumulatedChunksPromise }\n    },\n    () => {\n      advanceStageIfNoCacheMiss(RenderStage.Static)\n    },\n    () => {\n      advanceStageIfNoCacheMiss(RenderStage.EarlyRuntime)\n    },\n    () => {\n      advanceStageIfNoCacheMiss(RenderStage.Runtime)\n    },\n    () => {\n      advanceStageIfNoCacheMiss(RenderStage.Dynamic)\n    }\n  )\n\n  if (initialStageController.currentStage !== RenderStage.Abandoned) {\n    // No cache misses. Use the result as-is.\n    return {\n      accumulatedChunksPromise: initialResult.accumulatedChunksPromise,\n      startTime,\n      stageController: initialStageController,\n      requestStore,\n    }\n  }\n\n  // Cache miss. Wait for caches to fill, then re-render with warm caches.\n  await cacheSignal.cacheReady()\n  initialReactController.abort()\n\n  //===============================================\n  // Final render (restarted, with warm caches)\n  //===============================================\n\n  requestStore = createRequestStore()\n\n  // Unlike dev, where we're re-using the render that'll be visible in the browser,\n  // we *can* abort the validation render.\n\n  const finalReactController = new AbortController()\n  const finalDataController = new AbortController()\n  const finalStageController = new StagedRenderingController(\n    finalDataController.signal, // abortable\n    null, // no abandoning\n    true // track sync IO\n  )\n\n  requestStore.prerenderResumeDataCache = null\n  requestStore.renderResumeDataCache = createRenderResumeDataCache(\n    prerenderResumeDataCache\n  )\n  requestStore.stagedRendering = finalStageController\n  requestStore.cacheSignal = null\n  requestStore.asyncApiPromises = createAsyncApiPromises(\n    finalStageController,\n    requestStore.cookies,\n    requestStore.mutableCookies,\n    requestStore.headers\n  )\n  // Right now, we only abort for sync IO.\n  // If sync IO occurs in a place where it's not allowed, then we have to fail validation,\n  // and we can abort the render immediately, without waiting for anything else..\n  requestStore.controller = finalReactController\n  requestStore.renderSignal = finalDataController.signal\n\n  const finalRscPayload = await getPayload(requestStore)\n\n  const finalResult = await runInSequentialTasks(\n    () => {\n      finalStageController.advanceStage(RenderStage.EarlyStatic)\n      startTime = performance.now() + performance.timeOrigin\n\n      const stream = workUnitAsyncStorage.run(\n        requestStore,\n        renderToFlightStream,\n        ComponentMod,\n        finalRscPayload,\n        clientModules,\n        {\n          onError: createOnError(finalReactController.signal, true),\n          startTime,\n          filterStackFrame,\n          signal: finalReactController.signal,\n        }\n      )\n\n      finalReactController.signal.addEventListener(\n        'abort',\n        () => {\n          finalDataController.abort(finalReactController.signal.reason)\n        },\n        { once: true }\n      )\n\n      const accumulatedChunksPromise = accumulateStreamChunks(\n        stream,\n        finalStageController,\n        null\n      )\n      accumulatedChunksPromise.catch(() => {})\n\n      return {\n        accumulatedChunksPromise,\n      }\n    },\n    () => {\n      finalStageController.advanceStage(RenderStage.Static)\n    },\n    () => {\n      finalStageController.advanceStage(RenderStage.EarlyRuntime)\n    },\n    () => {\n      finalStageController.advanceStage(RenderStage.Runtime)\n    },\n    () => {\n      finalStageController.advanceStage(RenderStage.Dynamic)\n    }\n  )\n\n  return {\n    accumulatedChunksPromise: finalResult.accumulatedChunksPromise,\n    startTime,\n    stageController: finalStageController,\n    requestStore,\n  }\n}\n\nasync function validateInstantConfigsInBuild(\n  ctx: AppRenderContext,\n  prefilledDataCache: RenderResumeDataCache | null\n): Promise<void> {\n  const run = async () => {\n    let success: boolean\n    try {\n      // The validation renders are separate renders, and use a separate WorkStore.\n      // However, we defensively exit the existing workStore to avoid relying on something from there\n      // before we shadow it.\n      success = await workAsyncStorage.exit(async () =>\n        validateInstantConfigsInBuildImpl(ctx, prefilledDataCache)\n      )\n    } catch (err) {\n      console.error(\n        new InvariantError(\n          'An unexpected error occcured during instant validation',\n          { cause: err }\n        )\n      )\n      success = false\n    }\n    if (!success) {\n      console.error('Stopping prerender due to instant validation errors.')\n      throw new StaticGenBailoutError()\n    }\n  }\n\n  if (process.env.__NEXT_TEST_MODE && process.env.NEXT_TEST_LOG_VALIDATION) {\n    // In tests, we use these markers to extract the relevant portion of the CLI logs.\n    // We want consistent ordering of these messages and other console.error calls,\n    // so we use console.error here as well. Using console.log leads to non-deterministic\n    // log order, likely stdout/stderr can interleave in non-deterministic ways.\n    const requestId = Date.now()\n    const route = ctx.workStore.route\n    console.error(\n      '<VALIDATION_MESSAGE>' +\n        JSON.stringify({\n          type: 'validation_start',\n          requestId,\n          url: route,\n        }) +\n        '</VALIDATION_MESSAGE>'\n    )\n    try {\n      return await run()\n    } finally {\n      console.error(\n        '<VALIDATION_MESSAGE>' +\n          JSON.stringify({\n            type: 'validation_end',\n            requestId,\n            url: route,\n          }) +\n          '</VALIDATION_MESSAGE>'\n      )\n    }\n  } else {\n    return await run()\n  }\n}\n\n/**\n * Runs instant validation at build time using the `samples` from `unstable_instant`.\n *\n * For each sample, this creates a staged RSC render with a synthetic `RequestStore`\n * populated from sample data, then feeds the accumulated chunks to\n * `validateInstantConfigs` which handles the actual validation.\n */\nasync function validateInstantConfigsInBuildImpl(\n  ctx: AppRenderContext,\n  prefilledDataCache: RenderResumeDataCache | null\n): Promise<boolean> {\n  const debug =\n    process.env.NEXT_PRIVATE_DEBUG_VALIDATION === '1' ? console.log : undefined\n\n  const { workStore: outerWorkStore } = ctx\n  const route = outerWorkStore.route\n\n  const loaderTree = ctx.componentMod.routeModule.userland.loaderTree\n  let samples = await resolveInstantConfigSamplesForPage(loaderTree)\n  if (!samples || samples.length === 0) {\n    // No samples defined; use a single empty sample to still run validation\n    samples = [{}]\n  }\n  debug?.('Resolved samples:', samples)\n\n  const allPossibleFallbackRouteParams = getFallbackRouteParams(\n    route,\n    ctx.componentMod.routeModule\n  )\n\n  for (let sampleIndex = 0; sampleIndex < samples.length; sampleIndex++) {\n    const sample = samples[sampleIndex]\n    debug?.(`Validating sample (${sampleIndex + 1}/${samples.length}):`, sample)\n\n    let errors: unknown[]\n    try {\n      errors = await consoleAsyncStorage.run({ dim: true }, () =>\n        validateInstantConfigInBuildWithSample(\n          ctx,\n          sample,\n          allPossibleFallbackRouteParams,\n          prefilledDataCache\n        )\n      )\n    } catch (err) {\n      if (isInstantValidationError(err)) {\n        errors = [err]\n      } else {\n        throw err\n      }\n    }\n\n    if (errors.length > 0) {\n      debug?.(`❌ Sample failed validation (${errors.length} errors)`)\n      const sampleDesc =\n        samples.length > 1\n          ? ` (sample ${sampleIndex + 1} of ${samples.length})`\n          : ''\n      for (const err of errors) {\n        console.error(err)\n      }\n      console.error(\n        `Build-time instant validation failed for route \"${route}\"${sampleDesc}.`\n      )\n      return false\n    } else {\n      debug?.('✅ Sample validated successfully')\n    }\n  }\n  return true\n}\n\nasync function validateInstantConfigInBuildWithSample(\n  outerCtx: AppRenderContext,\n  sample: InstantSample,\n  allPossibleFallbackRouteParams: OpaqueFallbackRouteParams | null,\n  prefilledDataCache: RenderResumeDataCache | null\n): Promise<unknown[]> {\n  // The flow for build mirrors what we do when validating in dev.\n  // We have to perform a full dynamic render to get the RSC chunks for each stage.\n  // In order to do that, we have to set up a mock AppRenderContext, workStore, and requestStore\n  // based on the `sample` we're using.\n\n  const { workStore: outerWorkStore } = outerCtx\n\n  const loaderTree = outerCtx.componentMod.routeModule.userland.loaderTree\n  const route = outerWorkStore.route\n\n  const {\n    createCookiesFromSample,\n    createHeadersFromSample,\n    createDraftModeForValidation,\n    createRelativeURLFromSamples,\n    createValidationSampleTracking,\n  } =\n    require('./instant-validation/instant-samples') as typeof import('./instant-validation/instant-samples')\n\n  // TODO(instant-validation-build): it feels like this should happen higher up\n  // and go through existing URL parsing/generation logic?\n  const sampleUrl = createRelativeURLFromSamples(\n    route,\n    sample.params,\n    sample.searchParams\n  )\n\n  const sampleParams = sample.params ?? {}\n  let fallbackRouteParams: OpaqueFallbackRouteParams | null = null\n  if (allPossibleFallbackRouteParams) {\n    const fallbackRouteParamsMut = new Map()\n    for (const [paramKey, value] of allPossibleFallbackRouteParams) {\n      if (!(paramKey in sampleParams)) {\n        fallbackRouteParamsMut.set(paramKey, value)\n      }\n    }\n    fallbackRouteParams = fallbackRouteParamsMut\n  }\n\n  const getDynamicParamFromSegment = makeGetDynamicParamFromSegment(\n    sampleParams,\n    fallbackRouteParams,\n    false\n  )\n\n  const sampleRootParams = getRootParams(loaderTree, getDynamicParamFromSegment)\n\n  let sampleUrlWithoutQuery: Omit<ParsedRelativeUrl, 'query'>\n  let sampleQuery: ParsedRelativeUrl['query']\n  ;({ query: sampleQuery, ...sampleUrlWithoutQuery } = sampleUrl)\n\n  const { AfterContext } =\n    require('../after/after-context') as typeof import('../after/after-context')\n\n  // NOTE: Matching the field order in `createWorkStore` to avoid deopting.\n  const workStore: WorkStore = {\n    isStaticGeneration: false,\n    page: outerWorkStore.page,\n    route: outerWorkStore.route,\n    incrementalCache: outerWorkStore.incrementalCache,\n    cacheLifeProfiles: outerWorkStore.cacheLifeProfiles,\n    isBuildTimePrerendering: false,\n    fetchCache: outerWorkStore.fetchCache,\n    isOnDemandRevalidate: false,\n\n    isDraftMode: false,\n\n    isPrefetchRequest: false,\n    buildId: outerWorkStore.buildId,\n    deploymentId: outerWorkStore.deploymentId,\n    reactLoadableManifest: outerWorkStore.reactLoadableManifest,\n    assetPrefix: outerWorkStore.assetPrefix,\n    nonce: outerWorkStore.nonce,\n\n    // Never run `after()` for this validation render. by definition, `after` can't affect the rendered output.\n    afterContext: new AfterContext({\n      waitUntil(promise) {\n        promise.catch(() => {})\n      },\n      onClose() {},\n      onTaskError() {},\n    }),\n\n    cacheComponentsEnabled: outerWorkStore.cacheComponentsEnabled,\n    previouslyRevalidatedTags: [],\n    refreshTagsByCacheKind: new Map(),\n    runInCleanSnapshot: outerWorkStore.runInCleanSnapshot,\n    shouldTrackFetchMetrics: false,\n    reactServerErrorsByDigest: new Map(),\n  }\n\n  return workAsyncStorage.run(workStore, async () => {\n    // NOTE: match field order in renderToHTMLOrFlightImpl to avoid deopts\n    const validationCtx: AppRenderContext = {\n      componentMod: outerCtx.componentMod,\n      url: sampleUrlWithoutQuery,\n      renderOpts: outerCtx.renderOpts,\n      workStore,\n      parsedRequestHeaders: outerCtx.parsedRequestHeaders,\n      getDynamicParamFromSegment,\n      interpolatedParams: sampleParams,\n      query: sampleQuery,\n      isPrefetch: false,\n      isPossibleServerAction: false,\n      requestTimestamp: outerCtx.requestTimestamp,\n      appUsingSizeAdjustment: outerCtx.appUsingSizeAdjustment,\n      flightRouterState: undefined,\n      requestId: outerCtx.requestId,\n      htmlRequestId: outerCtx.htmlRequestId,\n      pagePath: outerCtx.pagePath,\n      assetPrefix: outerCtx.assetPrefix,\n      isNotFoundPath: outerCtx.isNotFoundPath,\n      nonce: outerCtx.nonce,\n      res: outerCtx.res,\n      sharedContext: outerCtx.sharedContext,\n      implicitTags: outerCtx.implicitTags,\n    }\n\n    const validationSamples: InstantValidationSamples = {\n      params: sample.params,\n      searchParams: sample.searchParams,\n    }\n\n    const createRequestStore = (): RequestStore => {\n      // Create exhaustive request data from sample\n      const sampleCookies = createCookiesFromSample(sample.cookies, route)\n\n      // We don't have to bother initializing these, pages can't access them anyway,\n      // we just need them because RequestStore requires them.\n      const unusedMutableCookies = new ResponseCookies(new Headers())\n\n      // Create headers.\n      const sampleHeaders = createHeadersFromSample(\n        sample.headers,\n        sample.cookies,\n        route\n      )\n\n      const draftMode = createDraftModeForValidation()\n\n      return {\n        type: 'request',\n        phase: 'render',\n        implicitTags: outerCtx.implicitTags,\n        url: {\n          pathname: sampleUrl.pathname,\n          search: sampleUrl.search,\n        },\n        headers: sampleHeaders,\n        cookies: sampleCookies,\n        mutableCookies: unusedMutableCookies,\n        userspaceMutableCookies: unusedMutableCookies,\n        draftMode,\n        rootParams: sampleRootParams,\n        validationSamples,\n        validationSampleTracking: createValidationSampleTracking(),\n        // These will be set when rendering\n        renderResumeDataCache: null,\n        prerenderResumeDataCache: null,\n        stagedRendering: null,\n        asyncApiPromises: undefined,\n      }\n    }\n\n    // Track server errors. If one of them surfaces during the client render\n    // in the deserialized form (with no message/stack) we'll use this to map it\n    // back to the original.\n    const onServerError = createReactServerErrorHandler(\n      true, // shouldFormatError\n      true, // isBuildTimePrerendering - disables tracing\n      workStore.reactServerErrorsByDigest,\n      () => {} // Don't report anything here. If needed, it will be reported in the client render.\n    )\n\n    const {\n      accumulatedChunksPromise,\n      startTime,\n      stageController,\n      requestStore: finalServerStore,\n    } = await renderWithRestartOnCacheMissInValidation(\n      validationCtx,\n      createRequestStore(),\n      createRequestStore,\n      (requestStore) =>\n        workUnitAsyncStorage.run(\n          requestStore,\n          getRSCPayload,\n          loaderTree,\n          validationCtx,\n          { is404: false }\n        ),\n      (signal) =>\n        function onError(err) {\n          const digest = getDigestForWellKnownError(err)\n          if (digest) {\n            return digest\n          }\n          if (signal.aborted) {\n            return\n          }\n          return onServerError(err)\n        },\n      prefilledDataCache\n    )\n\n    const accumulatedChunks = await accumulatedChunksPromise\n    const debugChunks = null // TODO(instant-validation-build): support debugChannel\n\n    // Missing sample errors take priority over everything else,\n    // because they prevent us from rendering everything we need to validate.\n    const serverValidationSampleTracking =\n      finalServerStore.validationSampleTracking!\n    if (serverValidationSampleTracking.missingSampleErrors.length > 0) {\n      return serverValidationSampleTracking.missingSampleErrors\n    }\n\n    // We also error for sync IO. This runs after the prerender,\n    // so if we get sync IO errors here, they're likely from the runtime stage --\n    // the prerender probably discovered sync IO in the static stage\n    if (\n      stageController.currentStage === RenderStage.Abandoned &&\n      stageController.syncInterruptReason\n    ) {\n      return [stageController.syncInterruptReason]\n    }\n\n    const allowEmptyStaticShell =\n      (validationCtx.renderOpts.allowEmptyStaticShell ?? false) ||\n      (await isPageAllowedToBlock(loaderTree))\n\n    // Now we the chunks of a fully rendered page, just like in dev.\n    // We can use them to validate all the navigations required by `instant` configs.\n    // Note that we're not performing static shell validation here -- that happens\n    // implicitly as part of the static prerender.\n\n    // The static prerender has warmed some client modules already,\n    // but we'll be reaching Runtime/Dynamic stages and thus rendering more content,\n    // so we need to warm again.\n    // TODO(instant-validation-build): This might warm too much, possibly hitting errors on code that didn't expect\n    // to run at build time. For example, we generally don't need to render leaf segments (e.g. __PAGE__) in\n    // the Dynamic stage, they're Runtime at best.\n\n    const warmupValidationSamplesTracking = createValidationSampleTracking()\n    await warmupClientModulesForStagedValidation(\n      'validation-client',\n      accumulatedChunks.dynamicChunks,\n      accumulatedChunks.dynamicChunks,\n      sampleRootParams,\n      fallbackRouteParams,\n      allowEmptyStaticShell,\n      validationCtx,\n      validationSamples,\n      warmupValidationSamplesTracking\n    )\n    if (warmupValidationSamplesTracking.missingSampleErrors.length > 0) {\n      return warmupValidationSamplesTracking.missingSampleErrors\n    }\n\n    return await validateInstantConfigs(\n      accumulatedChunks,\n      debugChunks,\n      startTime,\n      sampleRootParams,\n      fallbackRouteParams,\n      validationCtx,\n      undefined, // hmrRefreshHash,\n      validationSamples\n    )\n  })\n}\n\ntype PrerenderToStreamResult = {\n  stream: ReadableStream<Uint8Array>\n  digestErrorsMap: Map<string, DigestedError>\n  ssrErrors: Array<unknown>\n  dynamicAccess?: null | Array<DynamicAccess>\n  collectedRevalidate: number\n  collectedExpire: number\n  collectedStale: number\n  collectedTags: null | string[]\n  renderResumeDataCache?: RenderResumeDataCache\n}\n\n/**\n * Determines whether we should generate static flight data.\n */\nfunction shouldGenerateStaticFlightData(workStore: WorkStore): boolean {\n  const { isStaticGeneration } = workStore\n  if (!isStaticGeneration) return false\n\n  return true\n}\n\nasync function prerenderToStream(\n  req: BaseNextRequest,\n  res: BaseNextResponse,\n  ctx: AppRenderContext,\n  metadata: AppPageRenderResultMetadata,\n  tree: LoaderTree,\n  fallbackRouteParams: OpaqueFallbackRouteParams | null\n): Promise<PrerenderToStreamResult> {\n  // When prerendering formState is always null. We still include it\n  // because some shared APIs expect a formState value and this is slightly\n  // more explicit than making it an optional function argument\n  const formState = null\n\n  const {\n    assetPrefix,\n    getDynamicParamFromSegment,\n    implicitTags,\n    nonce,\n    pagePath,\n    renderOpts,\n    workStore,\n  } = ctx\n\n  const {\n    basePath,\n    buildManifest,\n    ComponentMod,\n    crossOrigin,\n    experimental,\n    isDebugDynamicAccesses,\n    isBuildTimePrerendering = false,\n    onInstrumentationRequestError,\n    page,\n    reactMaxHeadersLength,\n    subresourceIntegrityManifest,\n    cacheComponents,\n  } = renderOpts\n\n  const { cachedNavigations } = renderOpts.experimental\n\n  const allowEmptyStaticShell =\n    (renderOpts.allowEmptyStaticShell ?? false) ||\n    (await isPageAllowedToBlock(tree))\n\n  const rootParams = getRootParams(tree, getDynamicParamFromSegment)\n\n  const { ServerInsertedHTMLProvider, renderServerInsertedHTML } =\n    createServerInsertedHTML()\n  const getServerInsertedMetadata = createServerInsertedMetadata(nonce)\n\n  const tracingMetadata = getTracedMetadata(\n    getTracer().getTracePropagationData(),\n    experimental.clientTraceMetadata\n  )\n\n  const polyfills: JSX.IntrinsicElements['script'][] =\n    buildManifest.polyfillFiles\n      .filter(\n        (polyfill) =>\n          polyfill.endsWith('.js') && !polyfill.endsWith('.module.js')\n      )\n      .map((polyfill) => ({\n        src: `${assetPrefix}/_next/${polyfill}${getAssetQueryString(\n          ctx,\n          false\n        )}`,\n        integrity: subresourceIntegrityManifest?.[polyfill],\n        crossOrigin,\n        noModule: true,\n        nonce,\n      }))\n\n  const [preinitScripts, bootstrapScript] = getRequiredScripts(\n    buildManifest,\n    // Why is assetPrefix optional on renderOpts?\n    // @TODO make it default empty string on renderOpts and get rid of it from ctx\n    assetPrefix,\n    crossOrigin,\n    subresourceIntegrityManifest,\n    getAssetQueryString(ctx, true),\n    nonce,\n    page\n  )\n\n  const { reactServerErrorsByDigest } = workStore\n  // We don't report errors during prerendering through our instrumentation hooks\n  const reportErrors = !experimental.isRoutePPREnabled\n  function onHTMLRenderRSCError(err: DigestedError, silenceLog: boolean) {\n    if (reportErrors) {\n      return onInstrumentationRequestError?.(\n        err,\n        req,\n        createErrorContext(ctx, 'react-server-components'),\n        silenceLog\n      )\n    }\n  }\n  const serverComponentsErrorHandler = createReactServerErrorHandler(\n    process.env.NODE_ENV === 'development',\n    isBuildTimePrerendering,\n    reactServerErrorsByDigest,\n    onHTMLRenderRSCError\n  )\n\n  function onHTMLRenderSSRError(err: DigestedError) {\n    if (reportErrors) {\n      // We don't need to silence logs here. onHTMLRenderSSRError won't be\n      // called at all if the error was logged before in the RSC error handler.\n      const silenceLog = false\n      return onInstrumentationRequestError?.(\n        err,\n        req,\n        createErrorContext(ctx, 'server-rendering'),\n        silenceLog\n      )\n    }\n  }\n  const allCapturedErrors: Array<unknown> = []\n  const htmlRendererErrorHandler = createHTMLErrorHandler(\n    process.env.NODE_ENV === 'development',\n    isBuildTimePrerendering,\n    reactServerErrorsByDigest,\n    allCapturedErrors,\n    onHTMLRenderSSRError\n  )\n\n  let reactServerPrerenderResult: null | ReactServerPrerenderResult = null\n  const setMetadataHeader = (name: string) => {\n    metadata.headers ??= {}\n    metadata.headers[name] = res.getHeader(name)\n  }\n  const setHeader = (name: string, value: string | string[]) => {\n    res.setHeader(name, value)\n    setMetadataHeader(name)\n    return res\n  }\n  const appendHeader = (name: string, value: string | string[]) => {\n    if (Array.isArray(value)) {\n      value.forEach((item) => {\n        res.appendHeader(name, item)\n      })\n    } else {\n      res.appendHeader(name, value)\n    }\n    setMetadataHeader(name)\n  }\n\n  const selectStaleTime = createSelectStaleTime(experimental)\n  const { clientModules } = getClientReferenceManifest()\n\n  let prerenderStore: PrerenderStore | null = null\n\n  try {\n    if (cacheComponents) {\n      /**\n       * cacheComponents with PPR\n       *\n       * The general approach is to render the RSC stream first allowing any cache reads to resolve.\n       * Once we have settled all cache reads we restart the render and abort after a single Task.\n       *\n       * Unlike with the non PPR case we can't synchronously abort the render when a dynamic API is used\n       * during the initial render because we need to ensure all caches can be filled as part of the initial Task\n       * and a synchronous abort might prevent us from filling all caches.\n       *\n       * Once the render is complete we allow the SSR render to finish and use a combination of the postponed state\n       * and the reactServerIsDynamic value to determine how to treat the resulting render\n       */\n\n      // The prerender controller represents the lifetime of the prerender. It\n      // will be aborted when a task is complete or a synchronously aborting API\n      // is called. Notably, during prospective prerenders, this does not\n      // actually terminate the prerender itself, which will continue until all\n      // caches are filled.\n      const initialServerPrerenderController = new AbortController()\n\n      // This controller is used to abort the React prerender.\n      const initialServerReactController = new AbortController()\n\n      // This controller represents the lifetime of the React prerender. Its\n      // signal can be used for any I/O operation to abort the I/O and/or to\n      // reject, when prerendering aborts. This includes our own hanging\n      // promises for accessing request data, and for fetch calls. It might be\n      // replaced in the future by React.cacheSignal(). It's aborted after the\n      // React controller, so that no pending I/O can register abort listeners\n      // that are called before React's abort listener is called. This ensures\n      // that pending I/O is not rejected too early when aborting the prerender.\n      // Notably, during the prospective prerender, it is different from the\n      // prerender controller because we don't want to end the React prerender\n      // until all caches are filled.\n      const initialServerRenderController = new AbortController()\n\n      // The cacheSignal helps us track whether caches are still filling or we are ready\n      // to cut the render off.\n      const cacheSignal = new CacheSignal()\n\n      // Always start with a fresh prerender RDC so warmup can fill misses,\n      // even when we have a prefilled render RDC to seed from.\n      const prerenderResumeDataCache = createPrerenderResumeDataCache()\n      let renderResumeDataCache: RenderResumeDataCache | null =\n        renderOpts.renderResumeDataCache ?? null\n\n      const initialServerPayloadPrerenderStore: PrerenderStore = {\n        type: 'prerender',\n        phase: 'render',\n        rootParams,\n        fallbackRouteParams,\n        implicitTags,\n        // While this render signal isn't going to be used to abort a React render while getting the RSC payload\n        // various request data APIs bind to this controller to reject after completion.\n        renderSignal: initialServerRenderController.signal,\n        // When we generate the RSC payload we might abort this controller due to sync IO\n        // but we don't actually care about sync IO in this phase so we use a throw away controller\n        // that isn't connected to anything\n        controller: new AbortController(),\n        // During the initial prerender we need to track all cache reads to ensure\n        // we render long enough to fill every cache it is possible to visit during\n        // the final prerender.\n        cacheSignal,\n        dynamicTracking: null,\n        allowEmptyStaticShell,\n        revalidate: INFINITE_CACHE,\n        expire: INFINITE_CACHE,\n        stale: INFINITE_CACHE,\n        tags: [...implicitTags.tags],\n        prerenderResumeDataCache,\n        renderResumeDataCache,\n        hmrRefreshHash: undefined,\n        // We don't track vary params during initial prerender, only the final one\n        varyParamsAccumulator: null,\n      }\n\n      // We're not going to use the result of this render because the only time it could be used\n      // is if it completes in a microtask and that's likely very rare for any non-trivial app\n      const initialServerPayload = await workUnitAsyncStorage.run(\n        initialServerPayloadPrerenderStore,\n        getRSCPayload,\n        tree,\n        ctx,\n        { is404: res.statusCode === 404 }\n      )\n\n      const initialServerPrerenderStore: PrerenderStore = (prerenderStore = {\n        type: 'prerender',\n        phase: 'render',\n        rootParams,\n        fallbackRouteParams,\n        implicitTags,\n        renderSignal: initialServerRenderController.signal,\n        controller: initialServerPrerenderController,\n        // During the initial prerender we need to track all cache reads to ensure\n        // we render long enough to fill every cache it is possible to visit during\n        // the final prerender.\n        cacheSignal,\n        dynamicTracking: null,\n        allowEmptyStaticShell,\n        revalidate: INFINITE_CACHE,\n        expire: INFINITE_CACHE,\n        stale: INFINITE_CACHE,\n        tags: [...implicitTags.tags],\n        prerenderResumeDataCache,\n        renderResumeDataCache,\n        hmrRefreshHash: undefined,\n        // We don't track vary params during initial prerender, only the final one\n        varyParamsAccumulator: null,\n      })\n\n      const initialPrerenderOptions = {\n        filterStackFrame,\n        onError: (err: unknown) => {\n          const digest = getDigestForWellKnownError(err)\n\n          if (digest) {\n            return digest\n          }\n\n          if (isReactLargeShellError(err)) {\n            // TODO: Aggregate\n            console.error(err)\n            return undefined\n          }\n\n          if (initialServerPrerenderController.signal.aborted) {\n            // The render aborted before this error was handled which indicates\n            // the error is caused by unfinished components within the render\n            return\n          } else if (\n            process.env.NEXT_DEBUG_BUILD ||\n            process.env.__NEXT_VERBOSE_LOGGING\n          ) {\n            printDebugThrownValueForProspectiveRender(\n              err,\n              workStore.route,\n              Phase.ProspectiveRender\n            )\n          }\n        },\n        // We don't want to stop rendering until the cacheSignal is complete so we pass\n        // a different signal to this render call than is used by dynamic APIs to signify\n        // transitioning out of the prerender environment\n        signal: initialServerReactController.signal,\n      }\n\n      const pendingInitialServerResult = workUnitAsyncStorage.run(\n        initialServerPrerenderStore,\n        getServerPrerender(ComponentMod),\n        initialServerPayload,\n        clientModules,\n        initialPrerenderOptions\n      )\n\n      // The listener to abort our own render controller must be added after\n      // React has added its listener, to ensure that pending I/O is not\n      // aborted/rejected too early.\n      initialServerReactController.signal.addEventListener(\n        'abort',\n        () => {\n          initialServerRenderController.abort()\n          initialServerPrerenderController.abort()\n        },\n        { once: true }\n      )\n\n      // Wait for all caches to be finished filling and for async imports to resolve\n      trackPendingModules(cacheSignal)\n      await cacheSignal.cacheReady()\n\n      initialServerReactController.abort()\n\n      // We don't need to continue the prerender process if we already\n      // detected invalid dynamic usage in the initial prerender phase.\n      if (workStore.invalidDynamicUsageError) {\n        logDisallowedDynamicError(workStore, workStore.invalidDynamicUsageError)\n        throw new StaticGenBailoutError()\n      }\n\n      let initialServerResult\n      try {\n        initialServerResult = await createReactServerPrerenderResult(\n          pendingInitialServerResult\n        )\n      } catch (err) {\n        if (\n          initialServerReactController.signal.aborted ||\n          initialServerPrerenderController.signal.aborted\n        ) {\n          // These are expected errors that might error the prerender. we ignore them.\n        } else if (\n          process.env.NEXT_DEBUG_BUILD ||\n          process.env.__NEXT_VERBOSE_LOGGING\n        ) {\n          // We don't normally log these errors because we are going to retry anyway but\n          // it can be useful for debugging Next.js itself to get visibility here when needed\n          printDebugThrownValueForProspectiveRender(\n            err,\n            workStore.route,\n            Phase.ProspectiveRender\n          )\n        }\n      }\n\n      if (initialServerResult) {\n        const initialClientPrerenderController = new AbortController()\n        const initialClientReactController = new AbortController()\n        const initialClientRenderController = new AbortController()\n\n        const initialClientPrerenderStore: PrerenderStore = {\n          type: 'prerender-client',\n          phase: 'render',\n          rootParams,\n          fallbackRouteParams,\n          implicitTags,\n          renderSignal: initialClientRenderController.signal,\n          controller: initialClientPrerenderController,\n          // For HTML Generation the only cache tracked activity\n          // is module loading, which has it's own cache signal\n          cacheSignal: null,\n          dynamicTracking: null,\n          allowEmptyStaticShell,\n          revalidate: INFINITE_CACHE,\n          expire: INFINITE_CACHE,\n          stale: INFINITE_CACHE,\n          tags: [...implicitTags.tags],\n          prerenderResumeDataCache,\n          renderResumeDataCache,\n          hmrRefreshHash: undefined,\n          // Client prerenders don't track server param access\n          varyParamsAccumulator: null,\n        }\n\n        const pendingInitialClientResult = workUnitAsyncStorage.run(\n          initialClientPrerenderStore,\n          getClientPrerender,\n          // eslint-disable-next-line @next/internal/no-ambiguous-jsx\n          <App\n            reactServerStream={initialServerResult.asUnclosingStream()}\n            reactDebugStream={undefined}\n            debugEndTime={undefined}\n            preinitScripts={preinitScripts}\n            ServerInsertedHTMLProvider={ServerInsertedHTMLProvider}\n            nonce={nonce}\n            images={ctx.renderOpts.images}\n          />,\n          {\n            signal: initialClientReactController.signal,\n            onError: (err: unknown) => {\n              const digest = getDigestForWellKnownError(err)\n\n              if (digest) {\n                return digest\n              }\n\n              if (isReactLargeShellError(err)) {\n                // TODO: Aggregate\n                console.error(err)\n                return undefined\n              }\n\n              if (initialClientReactController.signal.aborted) {\n                // These are expected errors that might error the prerender. we ignore them.\n              } else if (\n                process.env.NEXT_DEBUG_BUILD ||\n                process.env.__NEXT_VERBOSE_LOGGING\n              ) {\n                // We don't normally log these errors because we are going to retry anyway but\n                // it can be useful for debugging Next.js itself to get visibility here when needed\n                printDebugThrownValueForProspectiveRender(\n                  err,\n                  workStore.route,\n                  Phase.ProspectiveRender\n                )\n              }\n            },\n            bootstrapScripts: [bootstrapScript],\n          }\n        )\n\n        // The listener to abort our own render controller must be added after\n        // React has added its listener, to ensure that pending I/O is not\n        // aborted/rejected too early.\n        initialClientReactController.signal.addEventListener(\n          'abort',\n          () => {\n            initialClientRenderController.abort()\n          },\n          { once: true }\n        )\n\n        pendingInitialClientResult.catch((err: unknown) => {\n          if (\n            initialClientReactController.signal.aborted ||\n            isPrerenderInterruptedError(err)\n          ) {\n            // These are expected errors that might error the prerender. we ignore them.\n          } else if (\n            process.env.NEXT_DEBUG_BUILD ||\n            process.env.__NEXT_VERBOSE_LOGGING\n          ) {\n            // We don't normally log these errors because we are going to retry anyway but\n            // it can be useful for debugging Next.js itself to get visibility here when needed\n            printDebugThrownValueForProspectiveRender(\n              err,\n              workStore.route,\n              Phase.ProspectiveRender\n            )\n          }\n        })\n\n        // This is mostly needed for dynamic `import()`s in client components.\n        // Promises passed to client were already awaited above (assuming that they came from cached functions)\n        trackPendingModules(cacheSignal)\n        await cacheSignal.cacheReady()\n        initialClientReactController.abort()\n      }\n\n      if (renderOpts.renderResumeDataCache) {\n        // Swap to the warmed cache so the final render uses entries produced during warmup.\n        renderResumeDataCache = createRenderResumeDataCache(\n          prerenderResumeDataCache\n        )\n      }\n\n      const finalServerReactController = new AbortController()\n      const finalServerRenderController = new AbortController()\n\n      const varyParamsAccumulator = createResponseVaryParamsAccumulator()\n\n      const finalServerPayloadPrerenderStore: PrerenderStore = {\n        type: 'prerender',\n        phase: 'render',\n        rootParams,\n        fallbackRouteParams,\n        implicitTags,\n        // While this render signal isn't going to be used to abort a React render while getting the RSC payload\n        // various request data APIs bind to this controller to reject after completion.\n        renderSignal: finalServerRenderController.signal,\n        // When we generate the RSC payload we might abort this controller due to sync IO\n        // but we don't actually care about sync IO in this phase so we use a throw away controller\n        // that isn't connected to anything\n        controller: new AbortController(),\n        // All caches we could read must already be filled so no tracking is necessary\n        cacheSignal: null,\n        dynamicTracking: null,\n        allowEmptyStaticShell,\n        revalidate: INFINITE_CACHE,\n        expire: INFINITE_CACHE,\n        stale: INFINITE_CACHE,\n        tags: [...implicitTags.tags],\n        prerenderResumeDataCache,\n        renderResumeDataCache,\n        hmrRefreshHash: undefined,\n        varyParamsAccumulator,\n      }\n\n      const finalAttemptRSCPayload = await workUnitAsyncStorage.run(\n        finalServerPayloadPrerenderStore,\n        getRSCPayload,\n        tree,\n        ctx,\n        { is404: res.statusCode === 404 }\n      )\n\n      let staleTimeIterable: StaleTimeIterable | undefined\n      if (cachedNavigations) {\n        staleTimeIterable = new StaleTimeIterable()\n        finalAttemptRSCPayload.s = staleTimeIterable\n      }\n\n      const serverDynamicTracking = createDynamicTrackingState(\n        isDebugDynamicAccesses\n      )\n      let serverIsDynamic = false\n\n      const finalServerPrerenderStore: PrerenderStore = (prerenderStore = {\n        type: 'prerender',\n        phase: 'render',\n        rootParams,\n        fallbackRouteParams,\n        implicitTags,\n        renderSignal: finalServerRenderController.signal,\n        controller: finalServerReactController,\n        // All caches we could read must already be filled so no tracking is necessary\n        cacheSignal: null,\n        dynamicTracking: serverDynamicTracking,\n        allowEmptyStaticShell,\n        revalidate: INFINITE_CACHE,\n        expire: INFINITE_CACHE,\n        stale: INFINITE_CACHE,\n        tags: [...implicitTags.tags],\n        prerenderResumeDataCache,\n        renderResumeDataCache,\n        hmrRefreshHash: undefined,\n        varyParamsAccumulator,\n      })\n\n      if (staleTimeIterable !== undefined) {\n        trackStaleTime(\n          finalServerPrerenderStore,\n          staleTimeIterable,\n          selectStaleTime\n        )\n      }\n\n      let prerenderIsPending = true\n      const finalRSCPrerenderOptions = {\n        filterStackFrame,\n        onError: (err: unknown) => {\n          return serverComponentsErrorHandler(err)\n        },\n        signal: finalServerReactController.signal,\n      }\n      const finalRSCAbortCallback = async () => {\n        // Now that the prerendering is complete, we know the final stale\n        // time and vary params. Close the stale time iterable and resolve\n        // the vary params thenable so Flight can serialize their values\n        // into the stream. The timing here is important: both were\n        // included in the Flight payload, but they can only be serialized\n        // at the very end, after all the components have finished.\n        //\n        // We resolve these directly here instead of reading from the work\n        // unit store because this callback runs in a separate task (via\n        // setTimeout) and may not have access to the async storage context.\n        const pendingFinishes: Promise<void>[] = [\n          finishAccumulatingVaryParams(varyParamsAccumulator),\n        ]\n        if (staleTimeIterable !== undefined) {\n          pendingFinishes.push(finishStaleTimeTracking(staleTimeIterable))\n        }\n        await Promise.all(pendingFinishes)\n\n        if (finalServerReactController.signal.aborted) {\n          // If the server controller is already aborted we must have called something\n          // that required aborting the prerender synchronously such as with new Date()\n          serverIsDynamic = true\n          return\n        }\n\n        if (prerenderIsPending) {\n          // If prerenderIsPending then we have blocked for longer than a Task and we assume\n          // there is something unfinished.\n          serverIsDynamic = true\n        }\n\n        finalServerReactController.abort()\n      }\n      const finalRSCPrerenderFn = async () => {\n        const pendingPrerenderResult = workUnitAsyncStorage.run(\n          // The store to scope\n          finalServerPrerenderStore,\n          // The function to run\n          getServerPrerender(ComponentMod),\n          // ... the arguments for the function to run\n          finalAttemptRSCPayload,\n          clientModules,\n          finalRSCPrerenderOptions\n        )\n\n        // The listener to abort our own render controller must be added\n        // after React has added its listener, to ensure that pending I/O\n        // is not aborted/rejected too early.\n        finalServerReactController.signal.addEventListener(\n          'abort',\n          () => {\n            finalServerRenderController.abort()\n          },\n          { once: true }\n        )\n\n        const prerenderResult = await pendingPrerenderResult\n        prerenderIsPending = false\n\n        return prerenderResult\n      }\n      const reactServerResult = (reactServerPrerenderResult =\n        await createReactServerPrerenderResult(\n          runInSequentialTasks(finalRSCPrerenderFn, finalRSCAbortCallback)\n        ))\n\n      const clientDynamicTracking = createDynamicTrackingState(\n        isDebugDynamicAccesses\n      )\n\n      const finalClientReactController = new AbortController()\n      const finalClientRenderController = new AbortController()\n\n      const finalClientPrerenderStore: PrerenderStore = {\n        type: 'prerender-client',\n        phase: 'render',\n        rootParams,\n        fallbackRouteParams,\n        implicitTags,\n        renderSignal: finalClientRenderController.signal,\n        controller: finalClientReactController,\n        // No APIs require a cacheSignal through the workUnitStore during the HTML prerender\n        cacheSignal: null,\n        dynamicTracking: clientDynamicTracking,\n        allowEmptyStaticShell,\n        revalidate: INFINITE_CACHE,\n        expire: INFINITE_CACHE,\n        stale: INFINITE_CACHE,\n        tags: [...implicitTags.tags],\n        prerenderResumeDataCache,\n        renderResumeDataCache,\n        hmrRefreshHash: undefined,\n        // Client prerenders don't track server param access\n        varyParamsAccumulator: null,\n      }\n\n      let dynamicValidation = createDynamicValidationState()\n\n      const finalClientOnHeaders = createOnHeadersCallback(appendHeader)\n\n      let { prelude: unprocessedPrelude, postponed } =\n        await runInSequentialTasks(\n          () => {\n            const pendingFinalClientResult = workUnitAsyncStorage.run(\n              finalClientPrerenderStore,\n              getClientPrerender,\n              // eslint-disable-next-line @next/internal/no-ambiguous-jsx\n              <App\n                reactServerStream={reactServerResult.asUnclosingStream()}\n                reactDebugStream={undefined}\n                debugEndTime={undefined}\n                preinitScripts={preinitScripts}\n                ServerInsertedHTMLProvider={ServerInsertedHTMLProvider}\n                nonce={nonce}\n                images={ctx.renderOpts.images}\n              />,\n              {\n                signal: finalClientReactController.signal,\n                onError: (err: unknown, errorInfo: ErrorInfo) => {\n                  if (\n                    isPrerenderInterruptedError(err) ||\n                    finalClientReactController.signal.aborted\n                  ) {\n                    const componentStack: string | undefined = (\n                      errorInfo as any\n                    ).componentStack\n                    if (typeof componentStack === 'string') {\n                      trackAllowedDynamicAccess(\n                        workStore,\n                        componentStack,\n                        dynamicValidation,\n                        clientDynamicTracking\n                      )\n                    }\n                    return\n                  }\n\n                  return htmlRendererErrorHandler(err, errorInfo)\n                },\n                onHeaders: finalClientOnHeaders,\n                maxHeadersLength: reactMaxHeadersLength,\n                bootstrapScripts: [bootstrapScript],\n              }\n            )\n\n            // The listener to abort our own render controller must be added\n            // after React has added its listener, to ensure that pending I/O is\n            // not aborted/rejected too early.\n            finalClientReactController.signal.addEventListener(\n              'abort',\n              () => {\n                finalClientRenderController.abort()\n              },\n              { once: true }\n            )\n\n            return pendingFinalClientResult\n          },\n          () => {\n            finalClientReactController.abort()\n          }\n        )\n\n      const { prelude, preludeIsEmpty } =\n        await processPreludeOp(unprocessedPrelude)\n\n      // If we've disabled throwing on empty static shell, then we don't need to\n      // track any dynamic access that occurs above the suspense boundary because\n      // we'll do so in the route shell.\n      if (!allowEmptyStaticShell) {\n        throwIfDisallowedDynamic(\n          workStore,\n          preludeIsEmpty ? PreludeState.Empty : PreludeState.Full,\n          dynamicValidation,\n          serverDynamicTracking\n        )\n      }\n\n      const getServerInsertedHTML = makeGetServerInsertedHTML({\n        polyfills,\n        renderServerInsertedHTML,\n        serverCapturedErrors: allCapturedErrors,\n        basePath,\n        tracingMetadata: tracingMetadata,\n      })\n\n      metadata.flightData = await streamToBuffer(\n        cachedNavigations\n          ? prependIsPartialByte(reactServerResult.asStream(), serverIsDynamic)\n          : reactServerResult.asStream()\n      )\n\n      // collectSegmentData needs the raw flight data without the marker byte.\n      const flightData = cachedNavigations\n        ? metadata.flightData.subarray(1)\n        : metadata.flightData\n\n      await collectSegmentData(\n        flightData,\n        finalServerPrerenderStore,\n        ComponentMod,\n        renderOpts,\n        ctx.pagePath,\n        metadata\n      )\n\n      if (serverIsDynamic) {\n        // Dynamic case\n        // We will always need to perform a \"resume\" render of some kind when this route is accessed\n        // because the RSC data itself is dynamic. We determine if there are any HTML holes or not\n        // but generally this is a \"partial\" prerender in that there will be a per-request compute\n        // concatenated to the static shell.\n        if (postponed != null) {\n          // Dynamic HTML case\n          metadata.postponed = await getDynamicHTMLPostponedState(\n            postponed,\n            preludeIsEmpty\n              ? DynamicHTMLPreludeState.Empty\n              : DynamicHTMLPreludeState.Full,\n            fallbackRouteParams,\n            prerenderResumeDataCache,\n            cacheComponents\n          )\n        } else {\n          // Dynamic Data case\n          metadata.postponed = await getDynamicDataPostponedState(\n            prerenderResumeDataCache,\n            cacheComponents\n          )\n        }\n        reactServerResult.consume()\n        const continueDynamicPrerenderOpts = {\n          getServerInsertedHTML,\n          getServerInsertedMetadata,\n          deploymentId: ctx.sharedContext.deploymentId,\n        }\n        return {\n          digestErrorsMap: reactServerErrorsByDigest,\n          ssrErrors: allCapturedErrors,\n          stream: await continueDynamicPrerender(\n            prelude,\n            continueDynamicPrerenderOpts\n          ),\n          dynamicAccess: consumeDynamicAccess(\n            serverDynamicTracking,\n            clientDynamicTracking\n          ),\n          // TODO: Should this include the SSR pass?\n          collectedRevalidate: finalServerPrerenderStore.revalidate,\n          collectedExpire: finalServerPrerenderStore.expire,\n          collectedStale: selectStaleTime(finalServerPrerenderStore.stale),\n          collectedTags: finalServerPrerenderStore.tags,\n          renderResumeDataCache: createRenderResumeDataCache(\n            prerenderResumeDataCache\n          ),\n        }\n      } else {\n        // Static case\n        // We will not perform resumption per request. The result can be served statically to the requestor\n        // and if there was anything dynamic it will only be rendered in the browser.\n        if (workStore.forceDynamic) {\n          throw new StaticGenBailoutError(\n            'Invariant: a Page with `dynamic = \"force-dynamic\"` did not trigger the dynamic pathway. This is a bug in Next.js'\n          )\n        }\n\n        let htmlStream: ReadableStream<Uint8Array> = prelude\n        if (postponed != null) {\n          // We postponed but nothing dynamic was used. We resume the render now and immediately abort it\n          // so we can set all the postponed boundaries to client render mode before we store the HTML response\n          const foreverStream = createPendingStream()\n          const resumePrelude = await resumeAndAbort(\n            // eslint-disable-next-line @next/internal/no-ambiguous-jsx\n            <App\n              reactServerStream={foreverStream}\n              reactDebugStream={undefined}\n              debugEndTime={undefined}\n              preinitScripts={() => {}}\n              ServerInsertedHTMLProvider={ServerInsertedHTMLProvider}\n              nonce={nonce}\n              images={ctx.renderOpts.images}\n            />,\n            JSON.parse(JSON.stringify(postponed)),\n            {\n              signal: createRenderInBrowserAbortSignal(),\n              onError: htmlRendererErrorHandler,\n              nonce,\n            }\n          )\n          // First we write everything from the prerender, then we write everything from the aborted resume render\n          htmlStream = chainStreams(prelude, resumePrelude)\n        }\n\n        let finalStream\n        const hasFallbackRouteParams =\n          fallbackRouteParams && fallbackRouteParams.size > 0\n        if (hasFallbackRouteParams) {\n          // This is a \"static fallback\" prerender: although the page didn't\n          // access any runtime params in a Server Component, it may have\n          // accessed a runtime param in a client segment.\n          //\n          // TODO: If there were no client segments, we can use the fully static\n          // path instead.\n          //\n          // Rather than use a dynamic server resume to fill in the params,\n          // we can rely on the client to parse the params from the URL and use\n          // that to hydrate the page.\n          //\n          // Send an empty InitialRSCPayload to the server component renderer\n          // The data will be fetched by the client instead.\n          // TODO: In the future, rather than defer the entire hydration payload\n          // to be fetched by the client, we should only defer the client\n          // segments, since those are the only ones whose data is not complete.\n          const emptyReactServerResult =\n            await createReactServerPrerenderResultFromRender(\n              renderToFlightStream(ComponentMod, [], clientModules, {\n                filterStackFrame,\n                onError: serverComponentsErrorHandler,\n              })\n            )\n          finalStream = await continueStaticFallbackPrerender(htmlStream, {\n            inlinedDataStream: createInlinedDataStream(\n              emptyReactServerResult.consumeAsStream(),\n              nonce,\n              formState\n            ),\n            getServerInsertedHTML,\n            getServerInsertedMetadata,\n            deploymentId: ctx.sharedContext.deploymentId,\n          })\n        } else {\n          // Normal static prerender case, no fallback param handling needed\n          finalStream = await continueStaticPrerender(htmlStream, {\n            inlinedDataStream: createInlinedDataStream(\n              reactServerResult.consumeAsStream(),\n              nonce,\n              formState\n            ),\n            getServerInsertedHTML,\n            getServerInsertedMetadata,\n            deploymentId: ctx.sharedContext.deploymentId,\n          })\n        }\n\n        return {\n          digestErrorsMap: reactServerErrorsByDigest,\n          ssrErrors: allCapturedErrors,\n          stream: finalStream,\n          dynamicAccess: consumeDynamicAccess(\n            serverDynamicTracking,\n            clientDynamicTracking\n          ),\n          // TODO: Should this include the SSR pass?\n          collectedRevalidate: finalServerPrerenderStore.revalidate,\n          collectedExpire: finalServerPrerenderStore.expire,\n          collectedStale: selectStaleTime(finalServerPrerenderStore.stale),\n          collectedTags: finalServerPrerenderStore.tags,\n          renderResumeDataCache: createRenderResumeDataCache(\n            prerenderResumeDataCache\n          ),\n        }\n      }\n    } else if (experimental.isRoutePPREnabled) {\n      // We're statically generating with PPR and need to do dynamic tracking\n      let dynamicTracking = createDynamicTrackingState(isDebugDynamicAccesses)\n\n      const prerenderResumeDataCache = createPrerenderResumeDataCache()\n      const reactServerPrerenderStore: PrerenderStore = (prerenderStore = {\n        type: 'prerender-ppr',\n        phase: 'render',\n        rootParams,\n        fallbackRouteParams,\n        implicitTags,\n        dynamicTracking,\n        revalidate: INFINITE_CACHE,\n        expire: INFINITE_CACHE,\n        stale: INFINITE_CACHE,\n        tags: [...implicitTags.tags],\n        prerenderResumeDataCache,\n      })\n      const RSCPayload = await workUnitAsyncStorage.run(\n        reactServerPrerenderStore,\n        getRSCPayload,\n        tree,\n        ctx,\n        { is404: res.statusCode === 404 }\n      )\n      let reactServerResult: ReactServerPrerenderResult\n      reactServerResult = reactServerPrerenderResult =\n        await createReactServerPrerenderResultFromRender(\n          workUnitAsyncStorage.run(\n            reactServerPrerenderStore,\n            renderToFlightStream,\n            ComponentMod,\n            RSCPayload,\n            clientModules,\n            {\n              filterStackFrame,\n              onError: serverComponentsErrorHandler,\n            }\n          )\n        )\n\n      const ssrPrerenderStore: PrerenderStore = {\n        type: 'prerender-ppr',\n        phase: 'render',\n        rootParams,\n        fallbackRouteParams,\n        implicitTags,\n        dynamicTracking,\n        revalidate: INFINITE_CACHE,\n        expire: INFINITE_CACHE,\n        stale: INFINITE_CACHE,\n        tags: [...implicitTags.tags],\n        prerenderResumeDataCache,\n      }\n      const pprOnHeaders = createOnHeadersCallback(appendHeader)\n      const { prelude: unprocessedPrelude, postponed } =\n        await workUnitAsyncStorage.run(\n          ssrPrerenderStore,\n          getClientPrerender,\n          // eslint-disable-next-line @next/internal/no-ambiguous-jsx\n          <App\n            reactServerStream={reactServerResult.asUnclosingStream()}\n            reactDebugStream={undefined}\n            debugEndTime={undefined}\n            preinitScripts={preinitScripts}\n            ServerInsertedHTMLProvider={ServerInsertedHTMLProvider}\n            nonce={nonce}\n            images={ctx.renderOpts.images}\n          />,\n          {\n            onError: htmlRendererErrorHandler,\n            onHeaders: pprOnHeaders,\n            maxHeadersLength: reactMaxHeadersLength,\n            bootstrapScripts: [bootstrapScript],\n          }\n        )\n      const getServerInsertedHTML = makeGetServerInsertedHTML({\n        polyfills,\n        renderServerInsertedHTML,\n        serverCapturedErrors: allCapturedErrors,\n        basePath,\n        tracingMetadata: tracingMetadata,\n      })\n\n      // After awaiting here we've waited for the entire RSC render to complete. Crucially this means\n      // that when we detect whether we've used dynamic APIs below we know we'll have picked up even\n      // parts of the React Server render that might not be used in the SSR render.\n      const flightData = await streamToBuffer(reactServerResult.asStream())\n\n      if (shouldGenerateStaticFlightData(workStore)) {\n        metadata.flightData = flightData\n        await collectSegmentData(\n          flightData,\n          ssrPrerenderStore,\n          ComponentMod,\n          renderOpts,\n          ctx.pagePath,\n          metadata\n        )\n      }\n\n      const { prelude, preludeIsEmpty } =\n        await processPreludeOp(unprocessedPrelude)\n\n      /**\n       * When prerendering there are three outcomes to consider\n       *\n       *   Dynamic HTML:      The prerender has dynamic holes (caused by using Next.js Dynamic Rendering APIs)\n       *                      We will need to resume this result when requests are handled and we don't include\n       *                      any server inserted HTML or inlined flight data in the static HTML\n       *\n       *   Dynamic Data:      The prerender has no dynamic holes but dynamic APIs were used. We will not\n       *                      resume this render when requests are handled but we will generate new inlined\n       *                      flight data since it is dynamic and differences may end up reconciling on the client\n       *\n       *   Static:            The prerender has no dynamic holes and no dynamic APIs were used. We statically encode\n       *                      all server inserted HTML and flight data\n       */\n      // First we check if we have any dynamic holes in our HTML prerender\n      if (accessedDynamicData(dynamicTracking.dynamicAccesses)) {\n        if (postponed != null) {\n          // Dynamic HTML case.\n          metadata.postponed = await getDynamicHTMLPostponedState(\n            postponed,\n            preludeIsEmpty\n              ? DynamicHTMLPreludeState.Empty\n              : DynamicHTMLPreludeState.Full,\n            fallbackRouteParams,\n            prerenderResumeDataCache,\n            cacheComponents\n          )\n        } else {\n          // Dynamic Data case.\n          metadata.postponed = await getDynamicDataPostponedState(\n            prerenderResumeDataCache,\n            cacheComponents\n          )\n        }\n        // Regardless of whether this is the Dynamic HTML or Dynamic Data case we need to ensure we include\n        // server inserted html in the static response because the html that is part of the prerender may depend on it\n        // It is possible in the set of stream transforms for Dynamic HTML vs Dynamic Data may differ but currently both states\n        // require the same set so we unify the code path here\n        reactServerResult.consume()\n        const pprDynamicOpts = {\n          getServerInsertedHTML,\n          getServerInsertedMetadata,\n          deploymentId: ctx.sharedContext.deploymentId,\n        }\n        return {\n          digestErrorsMap: reactServerErrorsByDigest,\n          ssrErrors: allCapturedErrors,\n          stream: await continueDynamicPrerender(prelude, pprDynamicOpts),\n          dynamicAccess: dynamicTracking.dynamicAccesses,\n          // TODO: Should this include the SSR pass?\n          collectedRevalidate: reactServerPrerenderStore.revalidate,\n          collectedExpire: reactServerPrerenderStore.expire,\n          collectedStale: selectStaleTime(reactServerPrerenderStore.stale),\n          collectedTags: reactServerPrerenderStore.tags,\n        }\n      } else if (fallbackRouteParams && fallbackRouteParams.size > 0) {\n        // Rendering the fallback case.\n        metadata.postponed = await getDynamicDataPostponedState(\n          prerenderResumeDataCache,\n          cacheComponents\n        )\n\n        const pprFallbackDynamicOpts = {\n          getServerInsertedHTML,\n          getServerInsertedMetadata,\n          deploymentId: ctx.sharedContext.deploymentId,\n        }\n        return {\n          digestErrorsMap: reactServerErrorsByDigest,\n          ssrErrors: allCapturedErrors,\n          stream: await continueDynamicPrerender(\n            prelude,\n            pprFallbackDynamicOpts\n          ),\n          dynamicAccess: dynamicTracking.dynamicAccesses,\n          // TODO: Should this include the SSR pass?\n          collectedRevalidate: reactServerPrerenderStore.revalidate,\n          collectedExpire: reactServerPrerenderStore.expire,\n          collectedStale: selectStaleTime(reactServerPrerenderStore.stale),\n          collectedTags: reactServerPrerenderStore.tags,\n        }\n      } else {\n        // Static case\n        // We still have not used any dynamic APIs. At this point we can produce an entirely static prerender response\n        if (workStore.forceDynamic) {\n          throw new StaticGenBailoutError(\n            'Invariant: a Page with `dynamic = \"force-dynamic\"` did not trigger the dynamic pathway. This is a bug in Next.js'\n          )\n        }\n\n        let htmlStream: ReadableStream<Uint8Array> = prelude\n        if (postponed != null) {\n          // We postponed but nothing dynamic was used. We resume the render now and immediately abort it\n          // so we can set all the postponed boundaries to client render mode before we store the HTML response\n          const foreverStream = createPendingStream()\n          const resumePrelude = await resumeAndAbort(\n            // eslint-disable-next-line @next/internal/no-ambiguous-jsx\n            <App\n              reactServerStream={foreverStream}\n              reactDebugStream={undefined}\n              debugEndTime={undefined}\n              preinitScripts={() => {}}\n              ServerInsertedHTMLProvider={ServerInsertedHTMLProvider}\n              nonce={nonce}\n              images={ctx.renderOpts.images}\n            />,\n            JSON.parse(JSON.stringify(postponed)),\n            {\n              signal: createRenderInBrowserAbortSignal(),\n              onError: htmlRendererErrorHandler,\n              nonce,\n            }\n          )\n          // First we write everything from the prerender, then we write everything from the aborted resume render\n          htmlStream = chainStreams(prelude, resumePrelude)\n        }\n\n        return {\n          digestErrorsMap: reactServerErrorsByDigest,\n          ssrErrors: allCapturedErrors,\n          stream: await continueStaticPrerender(htmlStream, {\n            inlinedDataStream: createInlinedDataStream(\n              reactServerResult.consumeAsStream(),\n              nonce,\n              formState\n            ),\n            getServerInsertedHTML,\n            getServerInsertedMetadata,\n            deploymentId: ctx.sharedContext.deploymentId,\n          }),\n          dynamicAccess: dynamicTracking.dynamicAccesses,\n          // TODO: Should this include the SSR pass?\n          collectedRevalidate: reactServerPrerenderStore.revalidate,\n          collectedExpire: reactServerPrerenderStore.expire,\n          collectedStale: selectStaleTime(reactServerPrerenderStore.stale),\n          collectedTags: reactServerPrerenderStore.tags,\n        }\n      }\n    } else {\n      const prerenderLegacyStore: PrerenderStore = (prerenderStore = {\n        type: 'prerender-legacy',\n        phase: 'render',\n        rootParams,\n        implicitTags,\n        revalidate: INFINITE_CACHE,\n        expire: INFINITE_CACHE,\n        stale: INFINITE_CACHE,\n        tags: [...implicitTags.tags],\n      })\n      // This is a regular static generation. We don't do dynamic tracking because we rely on\n      // the old-school dynamic error handling to bail out of static generation\n      const RSCPayload = await workUnitAsyncStorage.run(\n        prerenderLegacyStore,\n        getRSCPayload,\n        tree,\n        ctx,\n        { is404: res.statusCode === 404 }\n      )\n\n      let reactServerResult: ReactServerPrerenderResult\n      reactServerResult = reactServerPrerenderResult =\n        await createReactServerPrerenderResultFromRender(\n          workUnitAsyncStorage.run(\n            prerenderLegacyStore,\n            renderToFlightStream,\n            ComponentMod,\n            RSCPayload,\n            clientModules,\n            {\n              filterStackFrame,\n              onError: serverComponentsErrorHandler,\n            }\n          )\n        )\n\n      const { stream: htmlStream } = await workUnitAsyncStorage.run(\n        prerenderLegacyStore,\n        renderToFizzStream,\n        // eslint-disable-next-line @next/internal/no-ambiguous-jsx\n        <App\n          reactServerStream={reactServerResult.asUnclosingStream()}\n          reactDebugStream={undefined}\n          debugEndTime={undefined}\n          preinitScripts={preinitScripts}\n          ServerInsertedHTMLProvider={ServerInsertedHTMLProvider}\n          nonce={nonce}\n          images={ctx.renderOpts.images}\n        />,\n        {\n          onError: htmlRendererErrorHandler,\n          nonce,\n          bootstrapScripts: [bootstrapScript],\n        }\n      )\n\n      if (shouldGenerateStaticFlightData(workStore)) {\n        const flightData = await streamToBuffer(reactServerResult.asStream())\n        metadata.flightData = flightData\n        await collectSegmentData(\n          flightData,\n          prerenderLegacyStore,\n          ComponentMod,\n          renderOpts,\n          ctx.pagePath,\n          metadata\n        )\n      }\n\n      const getServerInsertedHTML = makeGetServerInsertedHTML({\n        polyfills,\n        renderServerInsertedHTML,\n        serverCapturedErrors: allCapturedErrors,\n        basePath,\n        tracingMetadata: tracingMetadata,\n      })\n      return {\n        digestErrorsMap: reactServerErrorsByDigest,\n        ssrErrors: allCapturedErrors,\n        stream: await continueFizzStream(htmlStream, {\n          inlinedDataStream: createInlinedDataStream(\n            reactServerResult.consumeAsStream(),\n            nonce,\n            formState\n          ),\n          isStaticGeneration: true,\n          getServerInsertedHTML,\n          getServerInsertedMetadata,\n          deploymentId: ctx.sharedContext.deploymentId,\n        }),\n        // TODO: Should this include the SSR pass?\n        collectedRevalidate: prerenderLegacyStore.revalidate,\n        collectedExpire: prerenderLegacyStore.expire,\n        collectedStale: selectStaleTime(prerenderLegacyStore.stale),\n        collectedTags: prerenderLegacyStore.tags,\n      }\n    }\n  } catch (err) {\n    if (\n      isStaticGenBailoutError(err) ||\n      (typeof err === 'object' &&\n        err !== null &&\n        'message' in err &&\n        typeof err.message === 'string' &&\n        err.message.includes(\n          'https://nextjs.org/docs/advanced-features/static-html-export'\n        ))\n    ) {\n      // Ensure that \"next dev\" prints the red error overlay\n      throw err\n    }\n\n    // If this is a static generation error, we need to throw it so that it\n    // can be handled by the caller if we're in static generation mode.\n    if (isDynamicServerError(err)) {\n      throw err\n    }\n\n    // If a bailout made it to this point, it means it wasn't wrapped inside\n    // a suspense boundary.\n    const shouldBailoutToCSR = isBailoutToCSRError(err)\n    if (shouldBailoutToCSR) {\n      const stack = getStackWithoutErrorMessage(err)\n      error(\n        `${err.reason} should be wrapped in a suspense boundary at page \"${pagePath}\". Read more: https://nextjs.org/docs/messages/missing-suspense-with-csr-bailout\\n${stack}`\n      )\n\n      throw err\n    }\n\n    // If we errored when we did not have an RSC stream to read from. This is\n    // not just a render error, we need to throw early.\n    if (reactServerPrerenderResult === null) {\n      throw err\n    }\n\n    let errorType: MetadataErrorType | 'redirect' | undefined\n\n    if (isHTTPAccessFallbackError(err)) {\n      res.statusCode = getAccessFallbackHTTPStatus(err)\n      metadata.statusCode = res.statusCode\n      errorType = getAccessFallbackErrorTypeByStatus(res.statusCode)\n    } else if (isRedirectError(err)) {\n      errorType = 'redirect'\n      res.statusCode = getRedirectStatusCodeFromError(err)\n      metadata.statusCode = res.statusCode\n\n      const redirectUrl = addPathPrefix(getURLFromRedirectError(err), basePath)\n\n      setHeader('location', redirectUrl)\n    } else if (!shouldBailoutToCSR) {\n      res.statusCode = 500\n      metadata.statusCode = res.statusCode\n    }\n\n    const [errorPreinitScripts, errorBootstrapScript] = getRequiredScripts(\n      buildManifest,\n      assetPrefix,\n      crossOrigin,\n      subresourceIntegrityManifest,\n      getAssetQueryString(ctx, false),\n      nonce,\n      '/_not-found/page'\n    )\n\n    const prerenderLegacyStore: PrerenderStore = (prerenderStore = {\n      type: 'prerender-legacy',\n      phase: 'render',\n      rootParams,\n      implicitTags: implicitTags,\n      revalidate:\n        typeof prerenderStore?.revalidate !== 'undefined'\n          ? prerenderStore.revalidate\n          : INFINITE_CACHE,\n      expire:\n        typeof prerenderStore?.expire !== 'undefined'\n          ? prerenderStore.expire\n          : INFINITE_CACHE,\n      stale:\n        typeof prerenderStore?.stale !== 'undefined'\n          ? prerenderStore.stale\n          : INFINITE_CACHE,\n      tags: [...(prerenderStore?.tags || implicitTags.tags)],\n    })\n    let prerenderHTTPError: PrerenderHTTPErrorState | undefined\n    if (cacheComponents && isHTTPAccessFallbackError(err)) {\n      const triggeredStatus = getAccessFallbackHTTPStatus(\n        err\n      ) as HTTPAccessErrorStatusCode\n      const boundaryTree = findPrerenderHTTPErrorBoundaryTree(\n        tree,\n        triggeredStatus,\n        ctx.renderOpts.experimental.authInterrupts\n      )\n\n      if (boundaryTree) {\n        prerenderHTTPError = {\n          boundaryTree,\n          triggeredStatus,\n        }\n      }\n    }\n\n    const errorRSCPayload = prerenderHTTPError\n      ? await workUnitAsyncStorage.run(\n          prerenderLegacyStore,\n          getRSCPayload,\n          tree,\n          ctx,\n          {\n            is404: errorType === 'not-found',\n            prerenderHTTPError,\n          }\n        )\n      : await workUnitAsyncStorage.run(\n          prerenderLegacyStore,\n          getErrorRSCPayload,\n          tree,\n          ctx,\n          reactServerErrorsByDigest.has((err as any).digest) ? undefined : err,\n          errorType\n        )\n\n    const errorServerStreamRaw = workUnitAsyncStorage.run(\n      prerenderLegacyStore,\n      renderToFlightStream,\n      ComponentMod,\n      errorRSCPayload,\n      clientModules,\n      {\n        filterStackFrame,\n        onError: serverComponentsErrorHandler,\n      }\n    )\n\n    let errorServerStream = errorServerStreamRaw\n    const errorFlightResultPromise = prerenderHTTPError\n      ? (() => {\n          // Fizz still needs to read the Flight stream to render ErrorApp, but\n          // the prerender path also needs a buffered Flight result for the HTML\n          // prelude and segment data collectors. Tee the stream so each consumer\n          // gets its own copy.\n          const [appStream, flightStream] = errorServerStreamRaw.tee()\n          errorServerStream = appStream\n          return createReactServerPrerenderResultFromRender(flightStream)\n        })()\n      : null\n\n    try {\n      const { stream: errorHtmlStream } = await workUnitAsyncStorage.run(\n        prerenderLegacyStore,\n        renderToFizzStream,\n        // eslint-disable-next-line @next/internal/no-ambiguous-jsx\n        <ErrorApp\n          reactServerStream={errorServerStream}\n          ServerInsertedHTMLProvider={ServerInsertedHTMLProvider}\n          preinitScripts={errorPreinitScripts}\n          nonce={nonce}\n          images={ctx.renderOpts.images}\n        />,\n        {\n          nonce,\n          bootstrapScripts: [errorBootstrapScript],\n          formState,\n        }\n      )\n\n      const resolvedFlightResult = errorFlightResultPromise\n        ? await errorFlightResultPromise\n        : reactServerPrerenderResult\n      if (errorFlightResultPromise) {\n        reactServerPrerenderResult.consume()\n      }\n\n      if (shouldGenerateStaticFlightData(workStore)) {\n        const flightData = await streamToBuffer(resolvedFlightResult.asStream())\n        metadata.flightData = flightData\n        await collectSegmentData(\n          flightData,\n          prerenderLegacyStore,\n          ComponentMod,\n          renderOpts,\n          ctx.pagePath,\n          metadata\n        )\n      }\n\n      const flightStream = resolvedFlightResult.consumeAsStream()\n\n      return {\n        digestErrorsMap: reactServerErrorsByDigest,\n        ssrErrors: allCapturedErrors,\n        stream: await continueFizzStream(errorHtmlStream, {\n          inlinedDataStream: createInlinedDataStream(\n            flightStream,\n            nonce,\n            formState\n          ),\n          isStaticGeneration: true,\n          getServerInsertedHTML: makeGetServerInsertedHTML({\n            polyfills,\n            renderServerInsertedHTML,\n            serverCapturedErrors: [],\n            basePath,\n            tracingMetadata: tracingMetadata,\n          }),\n          getServerInsertedMetadata,\n          validateRootLayout: !!process.env.__NEXT_DEV_SERVER,\n          deploymentId: ctx.sharedContext.deploymentId,\n        }),\n        dynamicAccess: null,\n        collectedRevalidate:\n          prerenderStore !== null ? prerenderStore.revalidate : INFINITE_CACHE,\n        collectedExpire:\n          prerenderStore !== null ? prerenderStore.expire : INFINITE_CACHE,\n        collectedStale: selectStaleTime(\n          prerenderStore !== null ? prerenderStore.stale : INFINITE_CACHE\n        ),\n        collectedTags: prerenderStore !== null ? prerenderStore.tags : null,\n      }\n    } catch (finalErr: any) {\n      if (\n        process.env.__NEXT_DEV_SERVER &&\n        isHTTPAccessFallbackError(finalErr)\n      ) {\n        const { bailOnRootNotFound } =\n          require('../../client/components/dev-root-http-access-fallback-boundary') as typeof import('../../client/components/dev-root-http-access-fallback-boundary')\n        bailOnRootNotFound()\n      }\n      throw finalErr\n    }\n  }\n}\n\nconst getGlobalErrorStyles = async (\n  tree: LoaderTree,\n  ctx: AppRenderContext\n): Promise<{\n  GlobalError: GlobalErrorComponent\n  styles: ReactNode | undefined\n}> => {\n  const globalErrorModule = parseLoaderTree(tree).modules['global-error']\n\n  if (!globalErrorModule) {\n    throw new Error(\n      'Invariant: global-error module is required but not found in loader tree'\n    )\n  }\n\n  const {\n    componentMod: { createElement },\n  } = ctx\n\n  // Get the GlobalError component and styles from the loader tree\n  const [GlobalErrorComponent, styles] = await createComponentStylesAndScripts({\n    ctx,\n    filePath: globalErrorModule[1],\n    getComponent: globalErrorModule[0],\n    injectedCSS: new Set(),\n    injectedJS: new Set(),\n  })\n\n  let globalErrorStyles: ReactNode = styles\n\n  if (process.env.__NEXT_DEV_SERVER) {\n    const dir =\n      (process.env.NEXT_RUNTIME === 'edge'\n        ? process.env.__NEXT_EDGE_PROJECT_DIR\n        : ctx.renderOpts.dir) || ''\n\n    const globalErrorModulePath = normalizeConventionFilePath(\n      dir,\n      globalErrorModule[1]\n    )\n    if (globalErrorModulePath) {\n      const SegmentViewNode = ctx.componentMod.SegmentViewNode\n      globalErrorStyles =\n        // This will be rendered next to GlobalError component under ErrorBoundary,\n        // it requires a key to avoid React warning about duplicate keys.\n        createElement(\n          SegmentViewNode,\n          {\n            key: 'ge-svn',\n            type: 'global-error',\n            pagePath: globalErrorModulePath,\n          },\n          globalErrorStyles\n        )\n    }\n  }\n\n  return {\n    GlobalError: GlobalErrorComponent,\n    styles: globalErrorStyles,\n  }\n}\n\nasync function collectSegmentData(\n  fullPageDataBuffer: Buffer,\n  prerenderStore: PrerenderStore,\n  ComponentMod: AppPageModule,\n  renderOpts: RenderOpts,\n  pagePath: string,\n  metadata: AppPageRenderResultMetadata\n): Promise<void> {\n  // Per-segment prefetch data\n  //\n  // All of the segments for a page are generated simultaneously, including\n  // during revalidations. This is to ensure consistency, because it's\n  // possible for a mismatch between a layout and page segment can cause the\n  // client to error during rendering. We want to preserve the ability of the\n  // client to recover from such a mismatch by re-requesting all the segments\n  // to get a consistent view of the page.\n  //\n  // For performance, we reuse the Flight output that was created when\n  // generating the initial page HTML. The Flight stream for the whole page is\n  // decomposed into a separate stream per segment.\n\n  const { clientModules, edgeRscModuleMapping, rscModuleMapping } =\n    getClientReferenceManifest()\n\n  // Manifest passed to the Flight client for reading the full-page Flight\n  // stream. Based off similar code in use-cache-wrapper.ts.\n  const isEdgeRuntime = process.env.NEXT_RUNTIME === 'edge'\n  const serverConsumerManifest = {\n    // moduleLoading must be null because we don't want to trigger preloads of ClientReferences\n    // to be added to the consumer. Instead, we'll wait for any ClientReference to be emitted\n    // which themselves will handle the preloading.\n    moduleLoading: null,\n    moduleMap: isEdgeRuntime ? edgeRscModuleMapping : rscModuleMapping,\n    serverModuleMap: getServerModuleMap(),\n  }\n\n  const selectStaleTime = createSelectStaleTime(renderOpts.experimental)\n  const staleTime = selectStaleTime(prerenderStore.stale)\n\n  // Resolve prefetch hints. At runtime (next start / ISR), the precomputed\n  // hints are already loaded from the prefetch-hints.json manifest. During\n  // build, compute them by measuring segment gzip sizes and write them to\n  // metadata so the build pipeline can persist them to the manifest.\n  let hints: PrefetchHints | null\n  const prefetchInlining = renderOpts.experimental.prefetchInlining\n  if (!prefetchInlining) {\n    hints = null\n  } else if (renderOpts.isBuildTimePrerendering) {\n    // Build time: compute fresh hints and store in metadata for the manifest.\n    hints = await ComponentMod.collectPrefetchHints(\n      fullPageDataBuffer,\n      staleTime,\n      clientModules,\n      serverConsumerManifest,\n      prefetchInlining.maxSize,\n      prefetchInlining.maxBundleSize\n    )\n    metadata.prefetchHints = hints\n  } else {\n    // Runtime: use hints from the manifest. Never compute fresh hints\n    // during ISR/revalidation.\n    hints = renderOpts.prefetchHints?.[pagePath] ?? null\n  }\n\n  // Pass the resolved hints so collectSegmentData can union them into\n  // the TreePrefetch. During the initial build the FlightRouterState in\n  // the buffer doesn't have inlining hints yet (they were just computed\n  // above), so we need to merge them in here. At runtime/ISR the hints\n  // are already embedded in the FlightRouterState, so this is null.\n  metadata.segmentData = await ComponentMod.collectSegmentData(\n    renderOpts.cacheComponents,\n    fullPageDataBuffer,\n    staleTime,\n    clientModules,\n    serverConsumerManifest,\n    Boolean(renderOpts.experimental.prefetchInlining),\n    hints\n  )\n}\n\nfunction isBypassingCachesInDev(requestStore: RequestStore): boolean {\n  return (\n    !!process.env.__NEXT_DEV_SERVER &&\n    requestStore.headers.get('cache-control') === 'no-cache'\n  )\n}\n\nfunction WarnForBypassCachesInDev({ route }: { route: string }) {\n  warnOnce(\n    `Route ${route} is rendering with server caches disabled. For this navigation, Component Metadata in React DevTools will not accurately reflect what is statically prerenderable and runtime prefetchable. See more info here: https://nextjs.org/docs/messages/cache-bypass-in-dev`\n  )\n  return null\n}\n\nfunction nodeStreamFromReadableStream<T>(stream: ReadableStream<T>) {\n  if (process.env.NEXT_RUNTIME === 'edge') {\n    throw new InvariantError(\n      'nodeStreamFromReadableStream cannot be used in the edge runtime'\n    )\n  } else {\n    const reader = stream.getReader()\n\n    const { Readable } = require('node:stream') as typeof import('node:stream')\n\n    return new Readable({\n      read() {\n        reader\n          .read()\n          .then(({ done, value }) => {\n            if (done) {\n              this.push(null)\n            } else {\n              this.push(value)\n            }\n          })\n          .catch((err) => this.destroy(err))\n      },\n    })\n  }\n}\n"],"names":["workAsyncStorage","ReactClient","RenderResult","chainStreams","continueFizzStream","continueDynamicPrerender","continueStaticPrerender","continueDynamicHTMLResume","continueStaticFallbackPrerender","streamToBuffer","streamToString","createInlinedDataStream","createPendingStream","createOnHeadersCallback","resumeAndAbort","renderToFlightStream","renderToFizzStream","resumeToFizzStream","getServerPrerender","getClientPrerender","processPrelude","processPreludeOp","createDocumentClosingStream","stripInternalQueries","NEXT_HMR_REFRESH_HEADER","NEXT_ROUTER_PREFETCH_HEADER","NEXT_ROUTER_STATE_TREE_HEADER","NEXT_ROUTER_STALE_TIME_HEADER","NEXT_URL","RSC_HEADER","NEXT_ROUTER_SEGMENT_PREFETCH_HEADER","NEXT_REQUEST_ID_HEADER","NEXT_HTML_REQUEST_ID_HEADER","createMetadataContext","createRequestStoreForRender","isRSCRequestHeader","createWorkStore","getAccessFallbackErrorTypeByStatus","getAccessFallbackHTTPStatus","isHTTPAccessFallbackError","getURLFromRedirectError","getRedirectStatusCodeFromError","isRedirectError","getImplicitTags","AppRenderSpan","NextNodeServerSpan","getTracer","SpanStatusCode","FlightRenderResult","createReactServerErrorHandler","createHTMLErrorHandler","isUserLandError","getDigestForWellKnownError","dynamicParamTypes","getSegmentParam","getScriptNonceFromHeader","parseAndValidateFlightRouterState","createFlightRouterStateFromLoaderTree","handleAction","isBailoutToCSRError","warn","error","appendMutableCookies","createServerInsertedHTML","getRequiredScripts","addPathPrefix","makeGetServerInsertedHTML","walkTreeWithFlightRouterState","createFullTreeFlightDataForNavigation","createComponentTree","getRootParams","getAssetQueryString","getClientReferenceManifest","getServerModuleMap","DynamicState","DynamicHTMLPreludeState","parsePostponedState","getDynamicDataPostponedState","getDynamicHTMLPostponedState","getPostponedFromState","isDynamicServerError","getFlightStream","StaticGenBailoutError","isStaticGenBailoutError","getStackWithoutErrorMessage","extractNextErrorCode","accessedDynamicData","createRenderInBrowserAbortSignal","formatDynamicAPIAccesses","isPrerenderInterruptedError","createDynamicTrackingState","createDynamicValidationState","trackAllowedDynamicAccess","throwIfDisallowedDynamic","PreludeState","consumeDynamicAccess","logDisallowedDynamicError","trackDynamicHoleInRuntimeShell","trackDynamicHoleInStaticShell","getStaticShellDisallowedDynamicReasons","getNavigationDisallowedDynamicReasons","trackDynamicHoleInNavigation","DynamicHoleKind","trackThrownErrorInNavigation","createInstantValidationState","getClientComponentLoaderMetrics","wrapClientComponentLoader","isNodeNextRequest","parseRelativeUrl","AppRouter","getIsPossibleServerAction","createInitialRouterState","createMutableActionQueue","getRevalidateReason","PAGE_SEGMENT_KEY","getFallbackRouteParams","createReactServerPrerenderResult","ReactServerResult","createReactServerPrerenderResultFromRender","Phase","printDebugThrownValueForProspectiveRender","runInSequentialTasks","waitAtLeastOneReactRenderTask","getHmrRefreshHash","workUnitAsyncStorage","consoleAsyncStorage","CacheSignal","createResponseVaryParamsAccumulator","finishAccumulatingVaryParams","getMetadataVaryParamsThenable","getTracedMetadata","InvariantError","StaleTimeIterable","createSelectStaleTime","trackStaleTime","finishStaleTimeTracking","HTML_CONTENT_TYPE_HEADER","INFINITE_CACHE","createComponentStylesAndScripts","parseLoaderTree","createPrerenderResumeDataCache","createRenderResumeDataCache","isError","createServerInsertedMetadata","getPreviouslyRevalidatedTags","executeRevalidates","trackPendingChunkLoad","trackPendingImport","trackPendingModules","isReactLargeShellError","normalizeConventionFilePath","getRequestMeta","getDynamicParam","interpolateParallelRouteParams","ImageConfigContext","imageConfigDefault","RenderStage","StagedRenderingController","anySegmentHasRuntimePrefetchEnabled","isPageAllowedToBlock","anySegmentNeedsInstantValidationInDev","anySegmentNeedsInstantValidationInBuild","resolveInstantConfigSamplesForPage","warnOnce","createDebugChannel","createNodeStreamWithLateRelease","createValidationBoundaryTracking","ResponseCookies","isInstantValidationError","maybeAppendBuildIdToRSCPayload","ctx","payload","sharedContext","deploymentId","b","buildId","flightDataPathHeadKey","getFlightViewportKey","requestId","getFlightMetadataKey","filterStackFrame","process","env","NODE_ENV","require","filterStackFrameDEV","undefined","parseRequestHeaders","headers","options","isPrefetchRequest","isRuntimePrefetchRequest","isHmrRefresh","isRSCRequest","shouldProvideFlightRouterState","isRoutePPREnabled","flightRouterState","isRouteTreePrefetchRequest","csp","nonce","previouslyRevalidatedTags","previewModeId","htmlRequestId","__NEXT_DEV_SERVER","getDynamicStaleTime","tree","page","parallelRoutes","result","pageMod","unstable_dynamicStaleTime","value","Math","min","childPromises","parallelRouteKey","push","childResults","Promise","all","childResult","createNotFoundLoaderTree","loaderTree","components","hasGlobalNotFound","notFoundTreeComponents","layout","children","hasPrerenderHTTPErrorBoundary","triggeredStatus","authInterrupts","forbidden","unauthorized","findPrerenderHTTPErrorBoundaryTree","boundaryTree","childrenTree","deeperBoundaryTree","makeGetDynamicParamFromSegment","interpolatedParams","fallbackRouteParams","optimisticRouting","getDynamicParamFromSegment","segment","staticSiblings","segmentParam","segmentKey","paramName","dynamicParamType","paramType","siblings","NonIndex","createElement","pagePath","statusCode","isPossibleServerAction","is404Page","isInvalidStatusCode","name","content","generateDynamicRSCPayload","flightData","componentMod","routeModule","userland","createMetadataComponents","Fragment","query","workStore","url","serveStreamingMetadata","renderOpts","skipPageRendering","preloadCallbacks","needsFullTree","cacheComponents","actionResult","metadataIsRuntimePrefetchable","Viewport","Metadata","MetadataOutlet","parsedQuery","pathname","metadataContext","isRuntimePrefetchable","rscHead","key","res","injectedCSS","Set","injectedJS","injectedFontPreloadTags","loaderTreeToFilter","parentParams","rootLayoutIncluded","hintTree","prefetchHints","map","path","slice","varyHeader","getHeader","couldBeIntercepted","includes","a","f","q","getRenderedSearch","i","baseResponse","S","isStaticGeneration","h","staleTimeIterable","s","staticStageByteLengthPromise","l","runtimePrefetchStream","p","dynamicStaleTime","d","createErrorContext","renderSource","routerKind","routePath","routeType","revalidateReason","generateDynamicFlightRenderResult","req","requestStore","onInstrumentationRequestError","setReactDebugChannel","isBuildTimePrerendering","onFlightDataRenderError","err","silenceLog","onError","reactServerErrorsByDigest","debugChannel","clientSide","clientModules","rscPayload","run","flightStream","temporaryReferences","serverSide","fetchMetrics","waitUntil","generateStagedDynamicFlightRenderResult","renderToReadableStream","experimental","selectStaleTime","shouldTrackSyncIO","stageController","stale","stagedRendering","asyncApiPromises","createAsyncApiPromises","cookies","mutableCookies","resolveStaticStageByteLength","resolve","hasRuntimePrefetch","prerenderResumeDataCache","cacheSignal","runtimePrefetchTransform","TransformStream","readable","cacheReady","then","spawnRuntimePrefetchWithFilledCaches","writable","flightReadableStream","advanceStage","Static","stream","dynamicStream","staticStream","tee","countStaticStageBytes","Dynamic","rootParams","finalRuntimeServerPrerender","bind","draftMode","prelude","pipeTo","close","stagedRenderToReadableStreamWithoutCachesInDev","getPayload","environmentName","currentStage","Before","EarlyStatic","EarlyRuntime","Runtime","Abandoned","generateDynamicFlightRenderResultWithStagesInDev","initialRequestStore","createRequestStore","fallbackParams","setCacheStatus","shouldValidate","isBypassingCachesInDev","_bypassCachesInDev","WarnForBypassCachesInDev","route","c","prepareInitialCanonicalUrl","serverStream","accumulatedChunksPromise","syncInterruptReason","startTime","staticStageEndTime","runtimeStageEndTime","returnedDebugChannel","finalRequestStore","renderWithRestartOnCacheMissInDev","validationDebugChannelClient","t1","t2","nodeStreamFromReadableStream","dim","spawnStaticShellValidationInDev","logValidationSkipped","generateRuntimePrefetchResult","metadata","renderResumeDataCache","prospectiveRuntimeServerPrerender","response","applyMetadataFromPrerenderResult","implicitTags","ComponentMod","initialServerPrerenderController","AbortController","initialServerRenderController","initialServerPrerenderStore","type","phase","renderSignal","signal","controller","dynamicTracking","revalidate","expire","tags","hmrRefreshHash","varyParamsAccumulator","initialServerPayload","prerenderOptions","digest","aborted","NEXT_DEBUG_BUILD","__NEXT_VERBOSE_LOGGING","ProspectiveRender","pendingInitialServerResult","abort","invalidDynamicUsageError","prependIsPartialByte","isPartial","byte","Uint8Array","pipeThrough","start","enqueue","isDebugDynamicAccesses","serverIsDynamic","finalServerController","serverDynamicTracking","finalStageController","finalServerPrerenderStore","finalRSCPayload","prerenderIsPending","prerenderResult","dynamicAccess","collectedRevalidate","collectedExpire","collectedStale","currentValue","collectedTags","search","split","pairs","Array","isArray","v","encodeURIComponent","String","length","join","getRSCPayload","is404","prerenderHTTPError","missingSlots","appUsingSizeAdjustment","hints","initialTree","errorType","seedData","parentOptionalCatchAllParamName","parentRuntimePrefetchable","initialHead","GlobalError","styles","globalErrorStyles","getGlobalErrorStyles","isPossiblyPartialHead","P","Preloads","m","G","forEach","preloadFn","getErrorRSCPayload","ssrError","errorHints","Error","id","message","stack","App","reactServerStream","reactDebugStream","debugEndTime","preinitScripts","ServerInsertedHTMLProvider","images","use","initialState","navigatedAt","initialRSCPayload","location","actionQueue","HeadManagerContext","Provider","appDir","globalErrorState","ErrorApp","renderToHTMLOrFlightImpl","parsedRequestHeaders","postponedState","serverComponentsHmrCache","isNotFoundPath","requestTimestamp","Date","now","nextFontManifest","serverActions","assetPrefix","enableTainting","setIsrStatus","cachedNavigations","__next_app__","instrumented","shouldTrackModuleLoading","workUnitStore","getStore","__next_require__","args","exportsOrPromise","globalThis","__next_chunk_load__","loadingChunk","loadChunk","URL","NEXT_RUNTIME","onClose","shouldTrackFetchMetrics","originalRequest","on","metrics","reset","startSpan","clientComponentLoading","clientComponentLoadStart","attributes","clientComponentLoadCount","end","clientComponentLoadTimes","appUsingSizeAdjust","patchFetch","taintObjectReference","Buffer","from","crypto","subtle","toString","randomUUID","nanoid","isPossibleActionRequest","resolvedPathname","isPrefetch","setRootSpanAttribute","prerenderToStreamWithTracing","wrap","getBodyResult","spanName","prerenderToStream","access","digestErrorsMap","size","buildFailingError","values","next","ssrErrors","find","contentType","maybeRevalidatesPromise","revalidatesPromise","finally","NEXT_PRIVATE_DEBUG_CACHE","console","log","href","streamString","cacheComponentsEnabled","runInstantValidation","validateInstantConfigsInBuild","onUpdateCookies","previewProps","isStatic","usedDynamic","forceDynamic","didExecuteServerAction","formState","actionRequestResult","generateFlight","notFoundLoaderTree","renderToStream","assignMetadata","renderToHTMLOrFlight","postponed","params","maxPostponedStateSizeBytes","definition","fetchTags","staleHeader","forceStatic","cacheControl","staticBailoutInfo","description","dynamicUsageDescription","dynamicUsageStack","basePath","buildManifest","crossOrigin","reactMaxHeadersLength","shouldWaitOnAllReady","subresourceIntegrityManifest","supportsDynamicResponse","renderServerInsertedHTML","getServerInsertedMetadata","tracingMetadata","getTracePropagationData","clientTraceMetadata","polyfills","polyfillFiles","filter","polyfill","endsWith","src","integrity","noModule","bootstrapScript","bootstrapScriptContent","JSON","stringify","renderSpan","endSpanWithError","isRecording","recordException","setAttribute","setStatus","code","ERROR","withSpan","onHTMLRenderRSCError","serverComponentsErrorHandler","onHTMLRenderSSRError","allCapturedErrors","htmlRendererErrorHandler","reactServerResult","setHeader","appendHeader","readableSsr","readableBrowser","RSCPayload","DATA","inlinedDataStream","preludeState","resumeAppElement","getServerInsertedHTML","serverCapturedErrors","htmlStream","allReady","delayDataUntilFirstHtmlChunk","Empty","consume","generateStaticHTML","appElement","fizzOptions","onHeaders","maxHeadersLength","bootstrapScripts","validateRootLayout","shouldBailoutToCSR","reason","redirectUrl","Headers","errorPreinitScripts","errorBootstrapScript","errorRSCPayload","errorServerStream","has","setupErr","errorHtmlStream","errorAllReady","finalErr","bailOnRootNotFound","Infinity","initialReactController","initialDataController","initialAbandonController","initialStageController","initialRscPayload","initialStreamResult","performance","timeOrigin","streamPair","addEventListener","once","accumulateStreamChunks","catch","cancel","hasPendingReads","getSyncInterruptReason","getStaticStageEndTime","getRuntimeStageEndTime","abortSignal","finalRscPayload","finalStreamResult","staticChunks","runtimeChunks","dynamicChunks","reader","getReader","cancelled","done","read","byteLength","onStage","delayUntilStage","earlyCookies","earlyMutableCookies","earlyHeaders","sharedParamsParent","earlySharedParamsParent","sharedSearchParamsParent","earlySharedSearchParamsParent","connection","logMessagesAndSendErrorsToBrowser","messages","sendErrorsToBrowser","errors","exit","errorCodes","Map","set","errorsFlightStream","__NEXT_TEST_MODE","NEXT_TEST_LOG_VALIDATION","spawnStaticShellValidationInDevImpl","debugChannelClient","debug","NEXT_PRIVATE_DEBUG_VALIDATION","allowEmptyStaticShell","debugChunks","accumulatedChunks","needsInstantValidation","validationSamples","validationSampleTracking","warmupClientModulesForStagedValidation","runtimeResult","validateStagedShell","staticResult","instantConfigsResult","validateInstantConfigs","storeType","partialServerChunks","allServerChunks","initialClientPrerenderController","initialClientReactController","initialClientRenderController","initialClientPrerenderStore","store","boundaryState","pendingInitialClientResult","stageChunks","trackDynamicHole","clientDynamicTracking","clientReactController","clientRenderController","finalClientPrerenderStore","dynamicValidation","unprocessedPrelude","pendingFinalClientResult","errorInfo","componentStack","preludeIsEmpty","Full","thrownValue","Errored","unshift","createCombinedPayloadAtDepth","createCombinedPayloadStream","collectStagedSegmentData","discoverValidationDepths","InstantValidation","createValidationSampleTracking","clientReferenceManifest","cache","stageEndTimes","isDebugChannelEnabled","validateAtDepth","depth","groupDepthForValidation","validateAtDepthImpl","previousBoundaryState","extraChunksController","useRuntimeStageForPartialSegments","expectedIds","add","payloadResult","reactController","renderController","debugStream","instantValidationState","createInstantStack","prerenderStore","pendingResult","hasAmbiguousErrors","errorForDisplay","serverError","get","dynamicOnlyErrors","groupDepthsByUrlDepth","maxDepth","maxGroupDepth","currentGroupDepth","renderWithRestartOnCacheMissInValidation","createOnError","prefilledDataCache","advanceStageIfNoCacheMiss","stage","initialResult","finalReactController","finalDataController","finalResult","success","validateInstantConfigsInBuildImpl","cause","outerWorkStore","samples","allPossibleFallbackRouteParams","sampleIndex","sample","validateInstantConfigInBuildWithSample","sampleDesc","outerCtx","createCookiesFromSample","createHeadersFromSample","createDraftModeForValidation","createRelativeURLFromSamples","sampleUrl","searchParams","sampleParams","fallbackRouteParamsMut","paramKey","sampleRootParams","sampleUrlWithoutQuery","sampleQuery","AfterContext","incrementalCache","cacheLifeProfiles","fetchCache","isOnDemandRevalidate","isDraftMode","reactLoadableManifest","afterContext","promise","onTaskError","refreshTagsByCacheKind","runInCleanSnapshot","validationCtx","sampleCookies","unusedMutableCookies","sampleHeaders","userspaceMutableCookies","onServerError","finalServerStore","serverValidationSampleTracking","missingSampleErrors","warmupValidationSamplesTracking","shouldGenerateStaticFlightData","reportErrors","reactServerPrerenderResult","setMetadataHeader","item","initialServerReactController","initialServerPayloadPrerenderStore","initialPrerenderOptions","initialServerResult","asUnclosingStream","finalServerReactController","finalServerRenderController","finalServerPayloadPrerenderStore","finalAttemptRSCPayload","finalRSCPrerenderOptions","finalRSCAbortCallback","pendingFinishes","finalRSCPrerenderFn","pendingPrerenderResult","finalClientReactController","finalClientRenderController","finalClientOnHeaders","asStream","subarray","collectSegmentData","continueDynamicPrerenderOpts","foreverStream","resumePrelude","parse","finalStream","hasFallbackRouteParams","emptyReactServerResult","consumeAsStream","reactServerPrerenderStore","ssrPrerenderStore","pprOnHeaders","dynamicAccesses","pprDynamicOpts","pprFallbackDynamicOpts","prerenderLegacyStore","errorServerStreamRaw","errorFlightResultPromise","appStream","resolvedFlightResult","globalErrorModule","modules","GlobalErrorComponent","filePath","getComponent","dir","__NEXT_EDGE_PROJECT_DIR","globalErrorModulePath","SegmentViewNode","fullPageDataBuffer","edgeRscModuleMapping","rscModuleMapping","isEdgeRuntime","serverConsumerManifest","moduleLoading","moduleMap","serverModuleMap","staleTime","prefetchInlining","collectPrefetchHints","maxSize","maxBundleSize","segmentData","Boolean","Readable","destroy"],"mappings":"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","ignoreList":[0]}