@@ -256,7 +256,6 @@ export type AppRenderContext = {
256
256
}
257
257
258
258
interface ParseRequestHeadersOptions {
259
- readonly isDevWarmup : undefined | boolean
260
259
readonly isRoutePPREnabled : boolean
261
260
readonly previewModeId : string | undefined
262
261
}
@@ -282,7 +281,6 @@ interface ParsedRequestHeaders {
282
281
readonly isPrefetchRequest : boolean
283
282
readonly isRuntimePrefetchRequest : boolean
284
283
readonly isRouteTreePrefetchRequest : boolean
285
- readonly isDevWarmupRequest : boolean
286
284
readonly isHmrRefresh : boolean
287
285
readonly isRSCRequest : boolean
288
286
readonly nonce : string | undefined
@@ -295,20 +293,17 @@ function parseRequestHeaders(
295
293
headers : IncomingHttpHeaders ,
296
294
options : ParseRequestHeadersOptions
297
295
) : ParsedRequestHeaders {
298
- const isDevWarmupRequest = options . isDevWarmup === true
299
-
300
296
// dev warmup requests are treated as prefetch RSC requests
301
297
// runtime prefetch requests are *not* treated as prefetch requests
302
298
// (TODO: this is confusing, we should refactor this to express this better)
303
- const isPrefetchRequest =
304
- isDevWarmupRequest || headers [ NEXT_ROUTER_PREFETCH_HEADER ] === '1'
299
+ const isPrefetchRequest = headers [ NEXT_ROUTER_PREFETCH_HEADER ] === '1'
305
300
306
301
const isRuntimePrefetchRequest = headers [ NEXT_ROUTER_PREFETCH_HEADER ] === '2'
307
302
308
303
const isHmrRefresh = headers [ NEXT_HMR_REFRESH_HEADER ] !== undefined
309
304
310
305
// dev warmup requests are treated as prefetch RSC requests
311
- const isRSCRequest = isDevWarmupRequest || headers [ RSC_HEADER ] !== undefined
306
+ const isRSCRequest = headers [ RSC_HEADER ] !== undefined
312
307
313
308
const shouldProvideFlightRouterState =
314
309
isRSCRequest && ( ! isPrefetchRequest || ! options . isRoutePPREnabled )
@@ -360,7 +355,6 @@ function parseRequestHeaders(
360
355
isRouteTreePrefetchRequest,
361
356
isHmrRefresh,
362
357
isRSCRequest,
363
- isDevWarmupRequest,
364
358
nonce,
365
359
previouslyRevalidatedTags,
366
360
requestId,
@@ -969,129 +963,6 @@ async function finalRuntimeServerPrerender(
969
963
}
970
964
}
971
965
972
- /**
973
- * Performs a "warmup" render of the RSC payload for a given route. This function is called by the server
974
- * prior to an actual render request in Dev mode only. It's purpose is to fill caches so the actual render
975
- * can accurately log activity in the right render context (Prerender vs Render).
976
- *
977
- * At the moment this implementation is mostly a fork of generateDynamicFlightRenderResult
978
- */
979
- async function warmupDevRender (
980
- req : BaseNextRequest ,
981
- ctx : AppRenderContext
982
- ) : Promise < RenderResult > {
983
- const {
984
- clientReferenceManifest,
985
- componentMod : ComponentMod ,
986
- getDynamicParamFromSegment,
987
- implicitTags,
988
- renderOpts,
989
- workStore,
990
- } = ctx
991
-
992
- const {
993
- allowEmptyStaticShell = false ,
994
- dev,
995
- onInstrumentationRequestError,
996
- } = renderOpts
997
-
998
- if ( ! dev ) {
999
- throw new InvariantError (
1000
- 'generateDynamicFlightRenderResult should never be called in `next start` mode.'
1001
- )
1002
- }
1003
-
1004
- const rootParams = getRootParams (
1005
- ComponentMod . routeModule . userland . loaderTree ,
1006
- getDynamicParamFromSegment
1007
- )
1008
-
1009
- function onFlightDataRenderError ( err : DigestedError ) {
1010
- return onInstrumentationRequestError ?.(
1011
- err ,
1012
- req ,
1013
- createErrorContext ( ctx , 'react-server-components-payload' )
1014
- )
1015
- }
1016
- const onError = createFlightReactServerErrorHandler (
1017
- true ,
1018
- onFlightDataRenderError
1019
- )
1020
-
1021
- // We're doing a dev warmup, so we should create a new resume data cache so
1022
- // we can fill it.
1023
- const prerenderResumeDataCache = createPrerenderResumeDataCache ( )
1024
-
1025
- const renderController = new AbortController ( )
1026
- const prerenderController = new AbortController ( )
1027
- const reactController = new AbortController ( )
1028
- const cacheSignal = new CacheSignal ( )
1029
-
1030
- const prerenderStore : PrerenderStore = {
1031
- type : 'prerender' ,
1032
- phase : 'render' ,
1033
- rootParams,
1034
- implicitTags,
1035
- renderSignal : renderController . signal ,
1036
- controller : prerenderController ,
1037
- cacheSignal,
1038
- dynamicTracking : null ,
1039
- allowEmptyStaticShell,
1040
- revalidate : INFINITE_CACHE ,
1041
- expire : INFINITE_CACHE ,
1042
- stale : INFINITE_CACHE ,
1043
- tags : [ ] ,
1044
- prerenderResumeDataCache,
1045
- renderResumeDataCache : null ,
1046
- hmrRefreshHash : req . cookies [ NEXT_HMR_REFRESH_HASH_COOKIE ] ,
1047
- captureOwnerStack : ComponentMod . captureOwnerStack ,
1048
- // warmup is a dev only feature and no fallback params are used in the
1049
- // primary render which is static. We only use a prerender store here to
1050
- // allow the warmup to halt on Request data APIs and fetches.
1051
- fallbackRouteParams : null ,
1052
- }
1053
-
1054
- const rscPayload = await workUnitAsyncStorage . run (
1055
- prerenderStore ,
1056
- generateDynamicRSCPayload ,
1057
- ctx
1058
- )
1059
-
1060
- // For app dir, use the bundled version of Flight server renderer (renderToReadableStream)
1061
- // which contains the subset React.
1062
- workUnitAsyncStorage . run (
1063
- prerenderStore ,
1064
- ComponentMod . renderToReadableStream ,
1065
- rscPayload ,
1066
- clientReferenceManifest . clientModules ,
1067
- {
1068
- filterStackFrame,
1069
- onError,
1070
- signal : renderController . signal ,
1071
- }
1072
- )
1073
-
1074
- // Wait for all caches to be finished filling and for async imports to resolve
1075
- trackPendingModules ( cacheSignal )
1076
- await cacheSignal . cacheReady ( )
1077
-
1078
- // We unset the cache so any late over-run renders aren't able to write into this cache
1079
- prerenderStore . prerenderResumeDataCache = null
1080
- // Abort the render
1081
- reactController . abort ( )
1082
- renderController . abort ( )
1083
-
1084
- // We don't really want to return a result here but the stack of functions
1085
- // that calls into renderToHTML... expects a result. We should refactor this to
1086
- // lift the warmup pathway outside of renderToHTML... but for now this suffices
1087
- return new FlightRenderResult ( '' , {
1088
- fetchMetrics : workStore . fetchMetrics ,
1089
- renderResumeDataCache : createRenderResumeDataCache (
1090
- prerenderResumeDataCache
1091
- ) ,
1092
- } )
1093
- }
1094
-
1095
966
/**
1096
967
* Crawlers will inadvertently think the canonicalUrl in the RSC payload should be crawled
1097
968
* when our intention is to just seed the router state with the current URL.
@@ -1656,7 +1527,6 @@ async function renderToHTMLOrFlightImpl(
1656
1527
isPrefetchRequest,
1657
1528
isRuntimePrefetchRequest,
1658
1529
isRSCRequest,
1659
- isDevWarmupRequest,
1660
1530
isHmrRefresh,
1661
1531
nonce,
1662
1532
} = parsedRequestHeaders
@@ -1847,8 +1717,7 @@ async function renderToHTMLOrFlightImpl(
1847
1717
// The type check here ensures that `req` is correctly typed, and the
1848
1718
// environment variable check provides dead code elimination.
1849
1719
process . env . NEXT_RUNTIME !== 'edge' &&
1850
- isNodeNextRequest ( req ) &&
1851
- ! isDevWarmupRequest
1720
+ isNodeNextRequest ( req )
1852
1721
) {
1853
1722
const setIsrStatus = renderOpts . setIsrStatus
1854
1723
req . originalRequest . on ( 'end' , ( ) => {
@@ -1860,9 +1729,7 @@ async function renderToHTMLOrFlightImpl(
1860
1729
} )
1861
1730
}
1862
1731
1863
- if ( isDevWarmupRequest ) {
1864
- return warmupDevRender ( req , ctx )
1865
- } else if ( isRSCRequest ) {
1732
+ if ( isRSCRequest ) {
1866
1733
if ( isRuntimePrefetchRequest ) {
1867
1734
return generateRuntimePrefetchResult ( req , res , ctx , requestStore )
1868
1735
} else {
@@ -1991,7 +1858,6 @@ export type AppPageRender = (
1991
1858
fallbackRouteParams : OpaqueFallbackRouteParams | null ,
1992
1859
renderOpts : RenderOpts ,
1993
1860
serverComponentsHmrCache : ServerComponentsHmrCache | undefined ,
1994
- isDevWarmup : boolean ,
1995
1861
sharedContext : AppSharedContext
1996
1862
) => Promise < RenderResult < AppPageRenderResultMetadata > >
1997
1863
@@ -2003,7 +1869,6 @@ export const renderToHTMLOrFlight: AppPageRender = (
2003
1869
fallbackRouteParams ,
2004
1870
renderOpts ,
2005
1871
serverComponentsHmrCache ,
2006
- isDevWarmup ,
2007
1872
sharedContext
2008
1873
) => {
2009
1874
if ( ! req . url ) {
@@ -2015,7 +1880,6 @@ export const renderToHTMLOrFlight: AppPageRender = (
2015
1880
// We read these values from the request object as, in certain cases,
2016
1881
// base-server will strip them to opt into different rendering behavior.
2017
1882
const parsedRequestHeaders = parseRequestHeaders ( req . headers , {
2018
- isDevWarmup,
2019
1883
isRoutePPREnabled : renderOpts . experimental . isRoutePPREnabled === true ,
2020
1884
previewModeId : renderOpts . previewProps ?. previewModeId ,
2021
1885
} )
0 commit comments