Skip to content

Commit 4698ad6

Browse files
committed
[metadata] remove the default segement check for metadata rendering (#77119)
### What Remove the default segment checks for metadata rendering. When the `default.js` is rendered, it should still have the metadata. It was a condition added due to possible of duplicated metadata, but it's resolved by other conditions such as only rendering in child slot, and hoisting metadata into rsc head for navigation.
1 parent 1e1ff40 commit 4698ad6

File tree

19 files changed

+125
-18
lines changed

19 files changed

+125
-18
lines changed

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

Lines changed: 4 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,6 @@ import type { LoadingModuleData } from '../../shared/lib/app-router-context.shar
2121
import type { Params } from '../request/params'
2222
import { workUnitAsyncStorage } from './work-unit-async-storage.external'
2323
import { OUTLET_BOUNDARY_NAME } from '../../lib/metadata/metadata-constants'
24-
import { DEFAULT_SEGMENT_KEY } from '../../shared/lib/segment'
2524
import type { UseCachePageComponentProps } from '../use-cache/use-cache-wrapper'
2625

2726
/**
@@ -394,19 +393,12 @@ async function createComponentTreeInternal({
394393

395394
// Resolve the segment param
396395
const actualSegment = segmentParam ? segmentParam.treeSegment : segment
397-
398-
// Only render metadata on the actual SSR'd segment not the `default` segment,
399-
// as it's used as a placeholder for navigation.
400-
const isNotDefaultSegment = actualSegment !== DEFAULT_SEGMENT_KEY
401-
402-
const metadata =
403-
isNotDefaultSegment && StreamingMetadata ? <StreamingMetadata /> : undefined
396+
const metadata = StreamingMetadata ? <StreamingMetadata /> : undefined
404397

405398
// Use the same condition to render metadataOutlet as metadata
406-
const metadataOutlet =
407-
isNotDefaultSegment && StreamingMetadataOutlet ? (
408-
<StreamingMetadataOutlet />
409-
) : undefined
399+
const metadataOutlet = StreamingMetadataOutlet ? (
400+
<StreamingMetadataOutlet />
401+
) : undefined
410402

411403
const notFoundElement = NotFound ? (
412404
<>

test/e2e/app-dir/metadata-streaming/app/dynamic-api/page.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ async function SubComponent() {
2323

2424
export async function generateMetadata() {
2525
await connection()
26-
await new Promise((resolve) => setTimeout(resolve, 3000))
26+
await new Promise((resolve) => setTimeout(resolve, 800))
2727
return {
2828
title: `Dynamic api ${Math.random()}`,
2929
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export default function Page() {
2+
return 'default @bar'
3+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
export default function Layout({ children }) {
2+
return (
3+
<div>
4+
<h2>@bar Layout</h2>
5+
<div id="bar-children">{children}</div>
6+
</div>
7+
)
8+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export default function Page() {
2+
return 'page @bar'
3+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export default function Page() {
2+
return 'test-page @bar'
3+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export default function Page() {
2+
return 'default @foo'
3+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
export default function Layout({ children }) {
2+
return (
3+
<div>
4+
<h2>@foo Layout</h2>
5+
<div id="foo-children">{children}</div>
6+
</div>
7+
)
8+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export default function Page() {
2+
return 'no-bar @foo'
3+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
export default function Page() {
2+
return 'page @foo'
3+
}

0 commit comments

Comments
 (0)