Skip to content

Commit d279c31

Browse files
committed
remove dev warmup codepaths
1 parent 600238f commit d279c31

File tree

5 files changed

+3
-179
lines changed

5 files changed

+3
-179
lines changed

packages/next/src/build/templates/app-page.ts

Lines changed: 0 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -402,26 +402,6 @@ export async function handler(
402402
const nextReq = new NodeNextRequest(req)
403403
const nextRes = new NodeNextResponse(res)
404404

405-
// TODO: adapt for putting the RDC inside the postponed data
406-
// If we're in dev, and this isn't a prefetch or a server action,
407-
// we should seed the resume data cache.
408-
if (process.env.NODE_ENV === 'development') {
409-
if (
410-
nextConfig.experimental.cacheComponents &&
411-
!isPrefetchRSCRequest &&
412-
!context.renderOpts.isPossibleServerAction
413-
) {
414-
const warmup = await routeModule.warmup(nextReq, nextRes, context)
415-
416-
// If the warmup is successful, we should use the resume data
417-
// cache from the warmup.
418-
if (warmup.metadata.renderResumeDataCache) {
419-
context.renderOpts.renderResumeDataCache =
420-
warmup.metadata.renderResumeDataCache
421-
}
422-
}
423-
}
424-
425405
return routeModule.render(nextReq, nextRes, context).finally(() => {
426406
if (!span) return
427407

packages/next/src/export/routes/app-page.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,6 @@ export async function exportAppPage(
8484
fallbackRouteParams,
8585
renderOpts,
8686
undefined,
87-
false,
8887
sharedContext
8988
)
9089

packages/next/src/server/app-render/app-render.tsx

Lines changed: 3 additions & 138 deletions
Original file line numberDiff line numberDiff line change
@@ -259,7 +259,6 @@ export type AppRenderContext = {
259259
}
260260

261261
interface ParseRequestHeadersOptions {
262-
readonly isDevWarmup: undefined | boolean
263262
readonly isRoutePPREnabled: boolean
264263
readonly previewModeId: string | undefined
265264
}
@@ -285,7 +284,6 @@ interface ParsedRequestHeaders {
285284
readonly isPrefetchRequest: boolean
286285
readonly isRuntimePrefetchRequest: boolean
287286
readonly isRouteTreePrefetchRequest: boolean
288-
readonly isDevWarmupRequest: boolean
289287
readonly isHmrRefresh: boolean
290288
readonly isRSCRequest: boolean
291289
readonly nonce: string | undefined
@@ -298,20 +296,17 @@ function parseRequestHeaders(
298296
headers: IncomingHttpHeaders,
299297
options: ParseRequestHeadersOptions
300298
): ParsedRequestHeaders {
301-
const isDevWarmupRequest = options.isDevWarmup === true
302-
303299
// dev warmup requests are treated as prefetch RSC requests
304300
// runtime prefetch requests are *not* treated as prefetch requests
305301
// (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'
308303

309304
const isRuntimePrefetchRequest = headers[NEXT_ROUTER_PREFETCH_HEADER] === '2'
310305

311306
const isHmrRefresh = headers[NEXT_HMR_REFRESH_HEADER] !== undefined
312307

313308
// dev warmup requests are treated as prefetch RSC requests
314-
const isRSCRequest = isDevWarmupRequest || headers[RSC_HEADER] !== undefined
309+
const isRSCRequest = headers[RSC_HEADER] !== undefined
315310

316311
const shouldProvideFlightRouterState =
317312
isRSCRequest && (!isPrefetchRequest || !options.isRoutePPREnabled)
@@ -363,7 +358,6 @@ function parseRequestHeaders(
363358
isRouteTreePrefetchRequest,
364359
isHmrRefresh,
365360
isRSCRequest,
366-
isDevWarmupRequest,
367361
nonce,
368362
previouslyRevalidatedTags,
369363
requestId,
@@ -970,129 +964,6 @@ async function finalRuntimeServerPrerender(
970964
}
971965
}
972966

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-
1096967
/**
1097968
* Crawlers will inadvertently think the canonicalUrl in the RSC payload should be crawled
1098969
* when our intention is to just seed the router state with the current URL.
@@ -1667,7 +1538,6 @@ async function renderToHTMLOrFlightImpl(
16671538
isPrefetchRequest,
16681539
isRuntimePrefetchRequest,
16691540
isRSCRequest,
1670-
isDevWarmupRequest,
16711541
isHmrRefresh,
16721542
nonce,
16731543
} = parsedRequestHeaders
@@ -1865,9 +1735,7 @@ async function renderToHTMLOrFlightImpl(
18651735
})
18661736
}
18671737

1868-
if (isDevWarmupRequest) {
1869-
return warmupDevRender(req, ctx)
1870-
} else if (isRSCRequest) {
1738+
if (isRSCRequest) {
18711739
if (isRuntimePrefetchRequest) {
18721740
return generateRuntimePrefetchResult(req, res, ctx, requestStore)
18731741
} else {
@@ -1996,7 +1864,6 @@ export type AppPageRender = (
19961864
fallbackRouteParams: OpaqueFallbackRouteParams | null,
19971865
renderOpts: RenderOpts,
19981866
serverComponentsHmrCache: ServerComponentsHmrCache | undefined,
1999-
isDevWarmup: boolean,
20001867
sharedContext: AppSharedContext
20011868
) => Promise<RenderResult<AppPageRenderResultMetadata>>
20021869

@@ -2008,7 +1875,6 @@ export const renderToHTMLOrFlight: AppPageRender = (
20081875
fallbackRouteParams,
20091876
renderOpts,
20101877
serverComponentsHmrCache,
2011-
isDevWarmup,
20121878
sharedContext
20131879
) => {
20141880
if (!req.url) {
@@ -2020,7 +1886,6 @@ export const renderToHTMLOrFlight: AppPageRender = (
20201886
// We read these values from the request object as, in certain cases,
20211887
// base-server will strip them to opt into different rendering behavior.
20221888
const parsedRequestHeaders = parseRequestHeaders(req.headers, {
2023-
isDevWarmup,
20241889
isRoutePPREnabled: renderOpts.experimental.isRoutePPREnabled === true,
20251890
previewModeId: renderOpts.previewProps?.previewModeId,
20261891
})

packages/next/src/server/next-server.ts

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -709,7 +709,6 @@ export default class NextNodeServer extends BaseServer<
709709
null,
710710
renderOpts,
711711
this.getServerComponentsHmrCache(),
712-
false,
713712
{
714713
buildId: this.buildId,
715714
}

packages/next/src/server/route-modules/app-page/module.ts

Lines changed: 0 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -114,25 +114,6 @@ export class AppPageRouteModule extends RouteModule<
114114
context.fallbackRouteParams,
115115
context.renderOpts,
116116
context.serverComponentsHmrCache,
117-
false,
118-
context.sharedContext
119-
)
120-
}
121-
122-
public warmup(
123-
req: BaseNextRequest,
124-
res: BaseNextResponse,
125-
context: AppPageRouteHandlerContext
126-
): Promise<RenderResult> {
127-
return renderToHTMLOrFlight(
128-
req,
129-
res,
130-
context.page,
131-
context.query,
132-
context.fallbackRouteParams,
133-
context.renderOpts,
134-
context.serverComponentsHmrCache,
135-
true,
136117
context.sharedContext
137118
)
138119
}

0 commit comments

Comments
 (0)