@@ -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
@@ -294,20 +292,17 @@ function parseRequestHeaders(
294
292
headers : IncomingHttpHeaders ,
295
293
options : ParseRequestHeadersOptions
296
294
) : ParsedRequestHeaders {
297
- const isDevWarmupRequest = options . isDevWarmup === true
298
-
299
295
// dev warmup requests are treated as prefetch RSC requests
300
296
// runtime prefetch requests are *not* treated as prefetch requests
301
297
// (TODO: this is confusing, we should refactor this to express this better)
302
- const isPrefetchRequest =
303
- isDevWarmupRequest || headers [ NEXT_ROUTER_PREFETCH_HEADER ] === '1'
298
+ const isPrefetchRequest = headers [ NEXT_ROUTER_PREFETCH_HEADER ] === '1'
304
299
305
300
const isRuntimePrefetchRequest = headers [ NEXT_ROUTER_PREFETCH_HEADER ] === '2'
306
301
307
302
const isHmrRefresh = headers [ NEXT_HMR_REFRESH_HEADER ] !== undefined
308
303
309
304
// dev warmup requests are treated as prefetch RSC requests
310
- const isRSCRequest = isDevWarmupRequest || headers [ RSC_HEADER ] !== undefined
305
+ const isRSCRequest = headers [ RSC_HEADER ] !== undefined
311
306
312
307
const shouldProvideFlightRouterState =
313
308
isRSCRequest && ( ! isPrefetchRequest || ! options . isRoutePPREnabled )
@@ -344,7 +339,6 @@ function parseRequestHeaders(
344
339
isRouteTreePrefetchRequest,
345
340
isHmrRefresh,
346
341
isRSCRequest,
347
- isDevWarmupRequest,
348
342
nonce,
349
343
previouslyRevalidatedTags,
350
344
htmlRequestId,
@@ -966,129 +960,6 @@ async function finalRuntimeServerPrerender(
966
960
}
967
961
}
968
962
969
- /**
970
- * Performs a "warmup" render of the RSC payload for a given route. This function is called by the server
971
- * prior to an actual render request in Dev mode only. It's purpose is to fill caches so the actual render
972
- * can accurately log activity in the right render context (Prerender vs Render).
973
- *
974
- * At the moment this implementation is mostly a fork of generateDynamicFlightRenderResult
975
- */
976
- async function warmupDevRender (
977
- req : BaseNextRequest ,
978
- ctx : AppRenderContext
979
- ) : Promise < RenderResult > {
980
- const {
981
- clientReferenceManifest,
982
- componentMod : ComponentMod ,
983
- getDynamicParamFromSegment,
984
- implicitTags,
985
- renderOpts,
986
- workStore,
987
- } = ctx
988
-
989
- const {
990
- allowEmptyStaticShell = false ,
991
- dev,
992
- onInstrumentationRequestError,
993
- } = renderOpts
994
-
995
- if ( ! dev ) {
996
- throw new InvariantError (
997
- 'generateDynamicFlightRenderResult should never be called in `next start` mode.'
998
- )
999
- }
1000
-
1001
- const rootParams = getRootParams (
1002
- ComponentMod . routeModule . userland . loaderTree ,
1003
- getDynamicParamFromSegment
1004
- )
1005
-
1006
- function onFlightDataRenderError ( err : DigestedError ) {
1007
- return onInstrumentationRequestError ?.(
1008
- err ,
1009
- req ,
1010
- createErrorContext ( ctx , 'react-server-components-payload' )
1011
- )
1012
- }
1013
- const onError = createFlightReactServerErrorHandler (
1014
- true ,
1015
- onFlightDataRenderError
1016
- )
1017
-
1018
- // We're doing a dev warmup, so we should create a new resume data cache so
1019
- // we can fill it.
1020
- const prerenderResumeDataCache = createPrerenderResumeDataCache ( )
1021
-
1022
- const renderController = new AbortController ( )
1023
- const prerenderController = new AbortController ( )
1024
- const reactController = new AbortController ( )
1025
- const cacheSignal = new CacheSignal ( )
1026
-
1027
- const prerenderStore : PrerenderStore = {
1028
- type : 'prerender' ,
1029
- phase : 'render' ,
1030
- rootParams,
1031
- implicitTags,
1032
- renderSignal : renderController . signal ,
1033
- controller : prerenderController ,
1034
- cacheSignal,
1035
- dynamicTracking : null ,
1036
- allowEmptyStaticShell,
1037
- revalidate : INFINITE_CACHE ,
1038
- expire : INFINITE_CACHE ,
1039
- stale : INFINITE_CACHE ,
1040
- tags : [ ] ,
1041
- prerenderResumeDataCache,
1042
- renderResumeDataCache : null ,
1043
- hmrRefreshHash : req . cookies [ NEXT_HMR_REFRESH_HASH_COOKIE ] ,
1044
- captureOwnerStack : ComponentMod . captureOwnerStack ,
1045
- // warmup is a dev only feature and no fallback params are used in the
1046
- // primary render which is static. We only use a prerender store here to
1047
- // allow the warmup to halt on Request data APIs and fetches.
1048
- fallbackRouteParams : null ,
1049
- }
1050
-
1051
- const rscPayload = await workUnitAsyncStorage . run (
1052
- prerenderStore ,
1053
- generateDynamicRSCPayload ,
1054
- ctx
1055
- )
1056
-
1057
- // For app dir, use the bundled version of Flight server renderer (renderToReadableStream)
1058
- // which contains the subset React.
1059
- workUnitAsyncStorage . run (
1060
- prerenderStore ,
1061
- ComponentMod . renderToReadableStream ,
1062
- rscPayload ,
1063
- clientReferenceManifest . clientModules ,
1064
- {
1065
- filterStackFrame,
1066
- onError,
1067
- signal : renderController . signal ,
1068
- }
1069
- )
1070
-
1071
- // Wait for all caches to be finished filling and for async imports to resolve
1072
- trackPendingModules ( cacheSignal )
1073
- await cacheSignal . cacheReady ( )
1074
-
1075
- // We unset the cache so any late over-run renders aren't able to write into this cache
1076
- prerenderStore . prerenderResumeDataCache = null
1077
- // Abort the render
1078
- reactController . abort ( )
1079
- renderController . abort ( )
1080
-
1081
- // We don't really want to return a result here but the stack of functions
1082
- // that calls into renderToHTML... expects a result. We should refactor this to
1083
- // lift the warmup pathway outside of renderToHTML... but for now this suffices
1084
- return new FlightRenderResult ( '' , {
1085
- fetchMetrics : workStore . fetchMetrics ,
1086
- renderResumeDataCache : createRenderResumeDataCache (
1087
- prerenderResumeDataCache
1088
- ) ,
1089
- } )
1090
- }
1091
-
1092
963
/**
1093
964
* Crawlers will inadvertently think the canonicalUrl in the RSC payload should be crawled
1094
965
* when our intention is to just seed the router state with the current URL.
@@ -1687,7 +1558,6 @@ async function renderToHTMLOrFlightImpl(
1687
1558
isPrefetchRequest,
1688
1559
isRuntimePrefetchRequest,
1689
1560
isRSCRequest,
1690
- isDevWarmupRequest,
1691
1561
isHmrRefresh,
1692
1562
nonce,
1693
1563
htmlRequestId = requestId ,
@@ -1854,8 +1724,7 @@ async function renderToHTMLOrFlightImpl(
1854
1724
// The type check here ensures that `req` is correctly typed, and the
1855
1725
// environment variable check provides dead code elimination.
1856
1726
process . env . NEXT_RUNTIME !== 'edge' &&
1857
- isNodeNextRequest ( req ) &&
1858
- ! isDevWarmupRequest
1727
+ isNodeNextRequest ( req )
1859
1728
) {
1860
1729
const setIsrStatus = renderOpts . setIsrStatus
1861
1730
req . originalRequest . on ( 'end' , ( ) => {
@@ -1867,9 +1736,7 @@ async function renderToHTMLOrFlightImpl(
1867
1736
} )
1868
1737
}
1869
1738
1870
- if ( isDevWarmupRequest ) {
1871
- return warmupDevRender ( req , ctx )
1872
- } else if ( isRSCRequest ) {
1739
+ if ( isRSCRequest ) {
1873
1740
if ( isRuntimePrefetchRequest ) {
1874
1741
return generateRuntimePrefetchResult ( req , res , ctx , requestStore )
1875
1742
} else {
@@ -1998,7 +1865,6 @@ export type AppPageRender = (
1998
1865
fallbackRouteParams : OpaqueFallbackRouteParams | null ,
1999
1866
renderOpts : RenderOpts ,
2000
1867
serverComponentsHmrCache : ServerComponentsHmrCache | undefined ,
2001
- isDevWarmup : boolean ,
2002
1868
sharedContext : AppSharedContext
2003
1869
) => Promise < RenderResult < AppPageRenderResultMetadata > >
2004
1870
@@ -2010,7 +1876,6 @@ export const renderToHTMLOrFlight: AppPageRender = (
2010
1876
fallbackRouteParams ,
2011
1877
renderOpts ,
2012
1878
serverComponentsHmrCache ,
2013
- isDevWarmup ,
2014
1879
sharedContext
2015
1880
) => {
2016
1881
if ( ! req . url ) {
@@ -2022,7 +1887,6 @@ export const renderToHTMLOrFlight: AppPageRender = (
2022
1887
// We read these values from the request object as, in certain cases,
2023
1888
// base-server will strip them to opt into different rendering behavior.
2024
1889
const parsedRequestHeaders = parseRequestHeaders ( req . headers , {
2025
- isDevWarmup,
2026
1890
isRoutePPREnabled : renderOpts . experimental . isRoutePPREnabled === true ,
2027
1891
previewModeId : renderOpts . previewProps ?. previewModeId ,
2028
1892
} )
0 commit comments