@@ -259,7 +259,6 @@ export type AppRenderContext = {
259
259
}
260
260
261
261
interface ParseRequestHeadersOptions {
262
- readonly isDevWarmup : undefined | boolean
263
262
readonly isRoutePPREnabled : boolean
264
263
readonly previewModeId : string | undefined
265
264
}
@@ -285,7 +284,6 @@ interface ParsedRequestHeaders {
285
284
readonly isPrefetchRequest : boolean
286
285
readonly isRuntimePrefetchRequest : boolean
287
286
readonly isRouteTreePrefetchRequest : boolean
288
- readonly isDevWarmupRequest : boolean
289
287
readonly isHmrRefresh : boolean
290
288
readonly isRSCRequest : boolean
291
289
readonly nonce : string | undefined
@@ -298,20 +296,17 @@ function parseRequestHeaders(
298
296
headers : IncomingHttpHeaders ,
299
297
options : ParseRequestHeadersOptions
300
298
) : ParsedRequestHeaders {
301
- const isDevWarmupRequest = options . isDevWarmup === true
302
-
303
299
// dev warmup requests are treated as prefetch RSC requests
304
300
// runtime prefetch requests are *not* treated as prefetch requests
305
301
// (TODO: this is confusing, we should refactor this to express this better)
306
- const isPrefetchRequest =
307
- isDevWarmupRequest || headers [ NEXT_ROUTER_PREFETCH_HEADER ] === '1'
302
+ const isPrefetchRequest = headers [ NEXT_ROUTER_PREFETCH_HEADER ] === '1'
308
303
309
304
const isRuntimePrefetchRequest = headers [ NEXT_ROUTER_PREFETCH_HEADER ] === '2'
310
305
311
306
const isHmrRefresh = headers [ NEXT_HMR_REFRESH_HEADER ] !== undefined
312
307
313
308
// dev warmup requests are treated as prefetch RSC requests
314
- const isRSCRequest = isDevWarmupRequest || headers [ RSC_HEADER ] !== undefined
309
+ const isRSCRequest = headers [ RSC_HEADER ] !== undefined
315
310
316
311
const shouldProvideFlightRouterState =
317
312
isRSCRequest && ( ! isPrefetchRequest || ! options . isRoutePPREnabled )
@@ -363,7 +358,6 @@ function parseRequestHeaders(
363
358
isRouteTreePrefetchRequest,
364
359
isHmrRefresh,
365
360
isRSCRequest,
366
- isDevWarmupRequest,
367
361
nonce,
368
362
previouslyRevalidatedTags,
369
363
requestId,
@@ -970,129 +964,6 @@ async function finalRuntimeServerPrerender(
970
964
}
971
965
}
972
966
973
- /**
974
- * Performs a "warmup" render of the RSC payload for a given route. This function is called by the server
975
- * prior to an actual render request in Dev mode only. It's purpose is to fill caches so the actual render
976
- * can accurately log activity in the right render context (Prerender vs Render).
977
- *
978
- * At the moment this implementation is mostly a fork of generateDynamicFlightRenderResult
979
- */
980
- async function warmupDevRender (
981
- req : BaseNextRequest ,
982
- ctx : AppRenderContext
983
- ) : Promise < RenderResult > {
984
- const {
985
- clientReferenceManifest,
986
- componentMod : ComponentMod ,
987
- getDynamicParamFromSegment,
988
- implicitTags,
989
- renderOpts,
990
- workStore,
991
- } = ctx
992
-
993
- const {
994
- allowEmptyStaticShell = false ,
995
- dev,
996
- onInstrumentationRequestError,
997
- } = renderOpts
998
-
999
- if ( ! dev ) {
1000
- throw new InvariantError (
1001
- 'generateDynamicFlightRenderResult should never be called in `next start` mode.'
1002
- )
1003
- }
1004
-
1005
- const rootParams = getRootParams (
1006
- ComponentMod . routeModule . userland . loaderTree ,
1007
- getDynamicParamFromSegment
1008
- )
1009
-
1010
- function onFlightDataRenderError ( err : DigestedError ) {
1011
- return onInstrumentationRequestError ?.(
1012
- err ,
1013
- req ,
1014
- createErrorContext ( ctx , 'react-server-components-payload' )
1015
- )
1016
- }
1017
- const onError = createFlightReactServerErrorHandler (
1018
- true ,
1019
- onFlightDataRenderError
1020
- )
1021
-
1022
- // We're doing a dev warmup, so we should create a new resume data cache so
1023
- // we can fill it.
1024
- const prerenderResumeDataCache = createPrerenderResumeDataCache ( )
1025
-
1026
- const renderController = new AbortController ( )
1027
- const prerenderController = new AbortController ( )
1028
- const reactController = new AbortController ( )
1029
- const cacheSignal = new CacheSignal ( )
1030
-
1031
- const prerenderStore : PrerenderStore = {
1032
- type : 'prerender' ,
1033
- phase : 'render' ,
1034
- rootParams,
1035
- implicitTags,
1036
- renderSignal : renderController . signal ,
1037
- controller : prerenderController ,
1038
- cacheSignal,
1039
- dynamicTracking : null ,
1040
- allowEmptyStaticShell,
1041
- revalidate : INFINITE_CACHE ,
1042
- expire : INFINITE_CACHE ,
1043
- stale : INFINITE_CACHE ,
1044
- tags : [ ] ,
1045
- prerenderResumeDataCache,
1046
- renderResumeDataCache : null ,
1047
- hmrRefreshHash : req . cookies [ NEXT_HMR_REFRESH_HASH_COOKIE ] ,
1048
- captureOwnerStack : ComponentMod . captureOwnerStack ,
1049
- // warmup is a dev only feature and no fallback params are used in the
1050
- // primary render which is static. We only use a prerender store here to
1051
- // allow the warmup to halt on Request data APIs and fetches.
1052
- fallbackRouteParams : null ,
1053
- }
1054
-
1055
- const rscPayload = await workUnitAsyncStorage . run (
1056
- prerenderStore ,
1057
- generateDynamicRSCPayload ,
1058
- ctx
1059
- )
1060
-
1061
- // For app dir, use the bundled version of Flight server renderer (renderToReadableStream)
1062
- // which contains the subset React.
1063
- workUnitAsyncStorage . run (
1064
- prerenderStore ,
1065
- ComponentMod . renderToReadableStream ,
1066
- rscPayload ,
1067
- clientReferenceManifest . clientModules ,
1068
- {
1069
- filterStackFrame,
1070
- onError,
1071
- signal : renderController . signal ,
1072
- }
1073
- )
1074
-
1075
- // Wait for all caches to be finished filling and for async imports to resolve
1076
- trackPendingModules ( cacheSignal )
1077
- await cacheSignal . cacheReady ( )
1078
-
1079
- // We unset the cache so any late over-run renders aren't able to write into this cache
1080
- prerenderStore . prerenderResumeDataCache = null
1081
- // Abort the render
1082
- reactController . abort ( )
1083
- renderController . abort ( )
1084
-
1085
- // We don't really want to return a result here but the stack of functions
1086
- // that calls into renderToHTML... expects a result. We should refactor this to
1087
- // lift the warmup pathway outside of renderToHTML... but for now this suffices
1088
- return new FlightRenderResult ( '' , {
1089
- fetchMetrics : workStore . fetchMetrics ,
1090
- renderResumeDataCache : createRenderResumeDataCache (
1091
- prerenderResumeDataCache
1092
- ) ,
1093
- } )
1094
- }
1095
-
1096
967
/**
1097
968
* Crawlers will inadvertently think the canonicalUrl in the RSC payload should be crawled
1098
969
* when our intention is to just seed the router state with the current URL.
@@ -1667,7 +1538,6 @@ async function renderToHTMLOrFlightImpl(
1667
1538
isPrefetchRequest,
1668
1539
isRuntimePrefetchRequest,
1669
1540
isRSCRequest,
1670
- isDevWarmupRequest,
1671
1541
isHmrRefresh,
1672
1542
nonce,
1673
1543
} = parsedRequestHeaders
@@ -1865,9 +1735,7 @@ async function renderToHTMLOrFlightImpl(
1865
1735
} )
1866
1736
}
1867
1737
1868
- if ( isDevWarmupRequest ) {
1869
- return warmupDevRender ( req , ctx )
1870
- } else if ( isRSCRequest ) {
1738
+ if ( isRSCRequest ) {
1871
1739
if ( isRuntimePrefetchRequest ) {
1872
1740
return generateRuntimePrefetchResult ( req , res , ctx , requestStore )
1873
1741
} else {
@@ -1996,7 +1864,6 @@ export type AppPageRender = (
1996
1864
fallbackRouteParams : OpaqueFallbackRouteParams | null ,
1997
1865
renderOpts : RenderOpts ,
1998
1866
serverComponentsHmrCache : ServerComponentsHmrCache | undefined ,
1999
- isDevWarmup : boolean ,
2000
1867
sharedContext : AppSharedContext
2001
1868
) => Promise < RenderResult < AppPageRenderResultMetadata > >
2002
1869
@@ -2008,7 +1875,6 @@ export const renderToHTMLOrFlight: AppPageRender = (
2008
1875
fallbackRouteParams ,
2009
1876
renderOpts ,
2010
1877
serverComponentsHmrCache ,
2011
- isDevWarmup ,
2012
1878
sharedContext
2013
1879
) => {
2014
1880
if ( ! req . url ) {
@@ -2020,7 +1886,6 @@ export const renderToHTMLOrFlight: AppPageRender = (
2020
1886
// We read these values from the request object as, in certain cases,
2021
1887
// base-server will strip them to opt into different rendering behavior.
2022
1888
const parsedRequestHeaders = parseRequestHeaders ( req . headers , {
2023
- isDevWarmup,
2024
1889
isRoutePPREnabled : renderOpts . experimental . isRoutePPREnabled === true ,
2025
1890
previewModeId : renderOpts . previewProps ?. previewModeId ,
2026
1891
} )
0 commit comments