Skip to content

Commit a95280e

Browse files
committed
use stream helper to insert script
1 parent d90e04e commit a95280e

File tree

5 files changed

+97
-47
lines changed

5 files changed

+97
-47
lines changed

packages/next/src/client/components/metadata/async-metadata.tsx

+1-24
Original file line numberDiff line numberDiff line change
@@ -14,33 +14,10 @@ const IsomorphicAsyncMetadata =
1414

1515
export function AsyncMetadata({
1616
promise,
17-
nonce,
1817
}: {
1918
promise: Promise<StreamingMetadataResolvedState>
20-
nonce?: string
2119
}) {
22-
return (
23-
<>
24-
<IsomorphicAsyncMetadata promise={promise} />
25-
{/**
26-
* For chromium based browsers (Chrome, Edge, etc.) and Safari, icons need to stay under <head>
27-
* to be picked up by the browser. Firefox doesn't have this requirement.
28-
*
29-
* Firefox won't work if we insert those icons into head, it will still pick up default favicon.ico.
30-
* Because of this limitation, we just don't insert for firefox and leave the default behavior for it.
31-
*
32-
*/}
33-
<script
34-
async
35-
defer
36-
nonce={nonce}
37-
dangerouslySetInnerHTML={{
38-
__html: `!/firefox/i.test(navigator.userAgent) && \
39-
document.querySelectorAll('body link[rel="icon"], body link[rel="apple-touch-icon"]').forEach(el => document.head.appendChild(el.cloneNode()))`,
40-
}}
41-
/>
42-
</>
43-
)
20+
return <IsomorphicAsyncMetadata promise={promise} />
4421
}
4522

4623
function MetadataOutlet({

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

+5-5
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ export function createMetadataComponents({
7474
ViewportBoundary: (props: { children: React.ReactNode }) => React.ReactNode
7575
serveStreamingMetadata: boolean
7676
}): {
77-
MetadataTree: React.ComponentType<{ nonce?: string }>
77+
MetadataTree: React.ComponentType
7878
ViewportTree: React.ComponentType
7979
getMetadataReady: () => Promise<void>
8080
getViewportReady: () => Promise<void>
@@ -94,10 +94,10 @@ export function createMetadataComponents({
9494
)
9595
}
9696

97-
function MetadataTree(props: { nonce?: string }) {
97+
function MetadataTree() {
9898
return (
9999
<MetadataBoundary>
100-
<Metadata {...props} />
100+
<Metadata />
101101
</MetadataBoundary>
102102
)
103103
}
@@ -201,12 +201,12 @@ export function createMetadataComponents({
201201
}
202202
}
203203
}
204-
async function Metadata({ nonce }: { nonce?: string }) {
204+
async function Metadata() {
205205
const promise = resolveFinalMetadata()
206206
if (serveStreamingMetadata) {
207207
return (
208208
<Suspense fallback={null}>
209-
<AsyncMetadata promise={promise} nonce={nonce} />
209+
<AsyncMetadata promise={promise} />
210210
</Suspense>
211211
)
212212
}

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

+14-3
Original file line numberDiff line numberDiff line change
@@ -507,7 +507,7 @@ async function generateDynamicRSCPayload(
507507
createDivergedMetadataComponents(() => {
508508
return (
509509
// Adding requestId as react key to make metadata remount for each render
510-
<MetadataTree key={requestId} nonce={ctx.nonce} />
510+
<MetadataTree key={requestId} />
511511
)
512512
}, serveStreamingMetadata)
513513

@@ -827,7 +827,7 @@ async function getRSCPayload(
827827
createDivergedMetadataComponents(() => {
828828
return (
829829
// Not add requestId as react key to ensure segment prefetch could result consistently if nothing changed
830-
<MetadataTree nonce={ctx.nonce} />
830+
<MetadataTree />
831831
)
832832
}, serveStreamingMetadata)
833833

@@ -955,7 +955,7 @@ async function getErrorRSCPayload(
955955
() => (
956956
<React.Fragment key={flightDataPathHeadKey}>
957957
{/* Adding requestId as react key to make metadata remount for each render */}
958-
<MetadataTree key={requestId} nonce={ctx.nonce} />
958+
<MetadataTree key={requestId} />
959959
</React.Fragment>
960960
),
961961
serveStreamingMetadata
@@ -1935,6 +1935,7 @@ async function renderToStream(
19351935
),
19361936
getServerInsertedHTML,
19371937
getServerInsertedMetadata,
1938+
nonce: ctx.nonce,
19381939
})
19391940
}
19401941
}
@@ -2007,6 +2008,7 @@ async function renderToStream(
20072008
getServerInsertedHTML,
20082009
getServerInsertedMetadata,
20092010
validateRootLayout,
2011+
nonce: ctx.nonce,
20102012
})
20112013
} catch (err) {
20122014
if (
@@ -2158,6 +2160,7 @@ async function renderToStream(
21582160
}),
21592161
getServerInsertedMetadata,
21602162
validateRootLayout,
2163+
nonce: ctx.nonce,
21612164
})
21622165
} catch (finalErr: any) {
21632166
if (
@@ -3089,6 +3092,7 @@ async function prerenderToStream(
30893092
stream: await continueDynamicPrerender(prelude, {
30903093
getServerInsertedHTML,
30913094
getServerInsertedMetadata,
3095+
nonce: ctx.nonce,
30923096
}),
30933097
dynamicAccess: consumeDynamicAccess(
30943098
serverDynamicTracking,
@@ -3151,6 +3155,7 @@ async function prerenderToStream(
31513155
),
31523156
getServerInsertedHTML,
31533157
getServerInsertedMetadata,
3158+
nonce: ctx.nonce,
31543159
}),
31553160
dynamicAccess: consumeDynamicAccess(
31563161
serverDynamicTracking,
@@ -3572,6 +3577,7 @@ async function prerenderToStream(
35723577
getServerInsertedHTML,
35733578
getServerInsertedMetadata,
35743579
validateRootLayout,
3580+
nonce: ctx.nonce,
35753581
}),
35763582
dynamicAccess: consumeDynamicAccess(
35773583
serverDynamicTracking,
@@ -3724,6 +3730,7 @@ async function prerenderToStream(
37243730
stream: await continueDynamicPrerender(prelude, {
37253731
getServerInsertedHTML,
37263732
getServerInsertedMetadata,
3733+
nonce: ctx.nonce,
37273734
}),
37283735
dynamicAccess: dynamicTracking.dynamicAccesses,
37293736
// TODO: Should this include the SSR pass?
@@ -3744,6 +3751,7 @@ async function prerenderToStream(
37443751
stream: await continueDynamicPrerender(prelude, {
37453752
getServerInsertedHTML,
37463753
getServerInsertedMetadata,
3754+
nonce: ctx.nonce,
37473755
}),
37483756
dynamicAccess: dynamicTracking.dynamicAccesses,
37493757
// TODO: Should this include the SSR pass?
@@ -3804,6 +3812,7 @@ async function prerenderToStream(
38043812
),
38053813
getServerInsertedHTML,
38063814
getServerInsertedMetadata,
3815+
nonce: ctx.nonce,
38073816
}),
38083817
dynamicAccess: dynamicTracking.dynamicAccesses,
38093818
// TODO: Should this include the SSR pass?
@@ -3898,6 +3907,7 @@ async function prerenderToStream(
38983907
isStaticGeneration: true,
38993908
getServerInsertedHTML,
39003909
getServerInsertedMetadata,
3910+
nonce: ctx.nonce,
39013911
}),
39023912
// TODO: Should this include the SSR pass?
39033913
collectedRevalidate: prerenderLegacyStore.revalidate,
@@ -4075,6 +4085,7 @@ async function prerenderToStream(
40754085
}),
40764086
getServerInsertedMetadata,
40774087
validateRootLayout,
4088+
nonce: ctx.nonce,
40784089
}),
40794090
dynamicAccess: null,
40804091
collectedRevalidate:

packages/next/src/server/app-render/create-component-tree.tsx

+3-5
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ export function createComponentTree(props: {
4040
missingSlots?: Set<string>
4141
preloadCallbacks: PreloadCallbacks
4242
authInterrupts: boolean
43-
StreamingMetadata: React.ComponentType<{ nonce?: string }> | null
43+
StreamingMetadata: React.ComponentType | null
4444
StreamingMetadataOutlet: React.ComponentType
4545
}): Promise<CacheNodeSeedData> {
4646
return getTracer().trace(
@@ -92,7 +92,7 @@ async function createComponentTreeInternal({
9292
missingSlots?: Set<string>
9393
preloadCallbacks: PreloadCallbacks
9494
authInterrupts: boolean
95-
StreamingMetadata: React.ComponentType<{ nonce?: string }> | null
95+
StreamingMetadata: React.ComponentType | null
9696
StreamingMetadataOutlet: React.ComponentType | null
9797
}): Promise<CacheNodeSeedData> {
9898
const {
@@ -400,9 +400,7 @@ async function createComponentTreeInternal({
400400
const isNotDefaultSegment = actualSegment !== DEFAULT_SEGMENT_KEY
401401

402402
const metadata =
403-
isNotDefaultSegment && StreamingMetadata ? (
404-
<StreamingMetadata nonce={ctx.nonce} />
405-
) : undefined
403+
isNotDefaultSegment && StreamingMetadata ? <StreamingMetadata /> : undefined
406404

407405
// Use the same condition to render metadataOutlet as metadata
408406
const metadataOutlet =

0 commit comments

Comments
 (0)