Skip to content

Commit e9a3c72

Browse files
authored
directly import search param resolver in metadata (#77402)
like with params in the prior change searchParams does not need to be created from outside the metadata components when the metadata component factory is already part of the RSC layer. We can just directly import this dependeny rather than route it through entry-base and expose it in app-render.
1 parent 5fffc9b commit e9a3c72

File tree

3 files changed

+12
-13
lines changed

3 files changed

+12
-13
lines changed

packages/next/src/lib/metadata/metadata.tsx

+9-2
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import type { ParsedUrlQuery } from 'querystring'
33
import type { GetDynamicParamFromSegment } from '../../server/app-render/app-render'
44
import type { LoaderTree } from '../../server/lib/app-dir-module'
55
import type { StreamingMetadataResolvedState } from '../../client/components/metadata/types'
6+
import type { SearchParams } from '../../server/request/search-params'
67
import {
78
AppleWebAppMeta,
89
FormatDetectionMeta,
@@ -42,6 +43,7 @@ import {
4243
AsyncMetadataOutlet,
4344
} from '../../client/components/metadata/async-metadata'
4445
import { isPostpone } from '../../server/lib/router-utils/is-postpone'
46+
import { createServerSearchParamsForMetadata } from '../../server/request/search-params'
4547

4648
// Use a promise to share the status of the metadata resolving,
4749
// returning two components `MetadataTree` and `MetadataOutlet`
@@ -51,7 +53,7 @@ import { isPostpone } from '../../server/lib/router-utils/is-postpone'
5153
// and the error will be caught by the error boundary and trigger fallbacks.
5254
export function createMetadataComponents({
5355
tree,
54-
searchParams,
56+
parsedQuery,
5557
metadataContext,
5658
getDynamicParamFromSegment,
5759
appUsingSizeAdjustment,
@@ -62,7 +64,7 @@ export function createMetadataComponents({
6264
serveStreamingMetadata,
6365
}: {
6466
tree: LoaderTree
65-
searchParams: Promise<ParsedUrlQuery>
67+
parsedQuery: SearchParams
6668
metadataContext: MetadataContext
6769
getDynamicParamFromSegment: GetDynamicParamFromSegment
6870
appUsingSizeAdjustment: boolean
@@ -78,6 +80,11 @@ export function createMetadataComponents({
7880
getViewportReady: () => Promise<void>
7981
StreamingMetadataOutlet: React.ComponentType
8082
} {
83+
const searchParams = createServerSearchParamsForMetadata(
84+
parsedQuery,
85+
workStore
86+
)
87+
8188
function ViewportTree() {
8289
return (
8390
<>

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

+3-9
Original file line numberDiff line numberDiff line change
@@ -468,7 +468,6 @@ async function generateDynamicRSCPayload(
468468
const {
469469
componentMod: {
470470
tree: loaderTree,
471-
createServerSearchParamsForMetadata,
472471
createMetadataComponents,
473472
MetadataBoundary,
474473
ViewportBoundary,
@@ -487,7 +486,6 @@ async function generateDynamicRSCPayload(
487486
if (!options?.skipFlight) {
488487
const preloadCallbacks: PreloadCallbacks = []
489488

490-
const searchParams = createServerSearchParamsForMetadata(query, workStore)
491489
const {
492490
ViewportTree,
493491
MetadataTree,
@@ -496,7 +494,7 @@ async function generateDynamicRSCPayload(
496494
StreamingMetadataOutlet,
497495
} = createMetadataComponents({
498496
tree: loaderTree,
499-
searchParams,
497+
parsedQuery: query,
500498
metadataContext: createTrackedMetadataContext(
501499
url.pathname,
502500
ctx.renderOpts,
@@ -786,7 +784,6 @@ async function getRSCPayload(
786784
appUsingSizeAdjustment,
787785
componentMod: {
788786
GlobalError,
789-
createServerSearchParamsForMetadata,
790787
createMetadataComponents,
791788
MetadataBoundary,
792789
ViewportBoundary,
@@ -802,7 +799,6 @@ async function getRSCPayload(
802799
)
803800
const serveStreamingMetadata = !!ctx.renderOpts.serveStreamingMetadata
804801

805-
const searchParams = createServerSearchParamsForMetadata(query, workStore)
806802
const {
807803
ViewportTree,
808804
MetadataTree,
@@ -812,7 +808,7 @@ async function getRSCPayload(
812808
} = createMetadataComponents({
813809
tree,
814810
errorType: is404 ? 'not-found' : undefined,
815-
searchParams,
811+
parsedQuery: query,
816812
metadataContext: createTrackedMetadataContext(
817813
url.pathname,
818814
ctx.renderOpts,
@@ -926,7 +922,6 @@ async function getErrorRSCPayload(
926922
appUsingSizeAdjustment,
927923
componentMod: {
928924
GlobalError,
929-
createServerSearchParamsForMetadata,
930925
createMetadataComponents,
931926
MetadataBoundary,
932927
ViewportBoundary,
@@ -937,10 +932,9 @@ async function getErrorRSCPayload(
937932
} = ctx
938933

939934
const serveStreamingMetadata = !!ctx.renderOpts.serveStreamingMetadata
940-
const searchParams = createServerSearchParamsForMetadata(query, workStore)
941935
const { MetadataTree, ViewportTree } = createMetadataComponents({
942936
tree,
943-
searchParams,
937+
parsedQuery: query,
944938
// We create an untracked metadata context here because we can't postpone
945939
// again during the error render.
946940
metadataContext: createMetadataContext(url.pathname, ctx.renderOpts),

packages/next/src/server/app-render/entry-base.ts

-2
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@ import { ClientSegmentRoot } from '../../client/components/client-segment'
2020
import {
2121
createServerSearchParamsForServerPage,
2222
createPrerenderSearchParamsForClientPage,
23-
createServerSearchParamsForMetadata,
2423
} from '../request/search-params'
2524
import {
2625
createServerParamsForServerSegment,
@@ -59,7 +58,6 @@ export {
5958
workUnitAsyncStorage,
6059
actionAsyncStorage,
6160
createServerSearchParamsForServerPage,
62-
createServerSearchParamsForMetadata,
6361
createPrerenderSearchParamsForClientPage,
6462
createServerParamsForServerSegment,
6563
createPrerenderParamsForClientSegment,

0 commit comments

Comments
 (0)