You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Metadata streaming: parallel route slot metadata not emitted #1341
This issue was created by an agent analysing CI failures from the Next.js Deploy Suite (vinext main vs Next.js v16.2.6, 2026-05-20).
Problem
Metadata from parallel route slots is not properly emitted or updated:
Empty title in parallel routes. When a parallel routes layout sets metadata but does not render children, the <title> tag is empty instead of containing the layout's metadata.
Stale metadata on slot navigation. Navigating between pages under a parallel route slot does not update the <title> tag. It stays on the layout's default title instead of switching to the page-specific title.
Missing charset meta. The root not-found page renders without <meta charset="utf-8"> when metadata streaming is active.
Reproduce first in vinext's own test suite. Add a test with parallel routes that set different metadata at each level and verify the correct title renders. Confirm it fails.
Study Next.js metadata resolution for parallel routes. The metadata resolution logic needs to walk all slots, not just the children slot, when determining which metadata to emit.
Fix client-side metadata updates during slot navigation. When navigating within a parallel route slot, the metadata should update to reflect the new page's metadata.
This may be regressing - observed again in the Next.js Deploy Suite nightly run on 2026-05-22 (vinext main vs Next.js v16.2.6): 8 failures across 5 test suites with symptoms matching this issue.
Triage update (agent investigation): the localized part of this issue — parallel route slot title emission when a slot layout doesn't render children — is already fixed on main by #1399 (fix(metadata): emit metadata from parallel route slots, which refs this issue): app-page-head.tscontributesTitle logic + tests/app-page-head.test.ts coverage. Verified passing on main for both SSR render and slot-to-slot navigation (@bar/first→@bar/second updates the title correctly).
The residual deploy-suite failures (metadata-navigation, metadata-streaming-static-generation, metadata-static-generation, global-not-found/metadata) are a narrower, harder problem: <meta charset="utf-8"> / head ordering under React streaming suspension during production static generation on the not-found path — not reproducible in dev SSR and not a small localized patch. Repro recipe: prod build (vp build + Workers/static-generation Playwright project) with a not-found.tsx/global-not-found.tsx exporting generateMetadata, then assert meta[charset=utf-8] count === 1 in the streamed HTML. Likely belongs in the static-generation/streaming head emission, not app-page-head.ts. Leaving open for that residual.
Closing as passing in the Next.js Deploy Suite run https://github.com/cloudflare/vinext/actions/runs/28692899743 (vinext main at 54497d42e7fa0effd567950534a3b6f562c14218, July 4, 2026). The assertions tracked by this issue passed in that run. The run still has unrelated failures, which remain tracked separately.
Activity
fix(metadata): emit metadata from parallel route slots (#1399)
james-elicx commentedon May 22, 2026
This may be regressing - observed again in the Next.js Deploy Suite nightly run on 2026-05-22 (vinext
mainvs Next.jsv16.2.6): 8 failures across 5 test suites with symptoms matching this issue.Affected suites this run
test/e2e/app-dir/metadata-navigation/metadata-navigation.test.ts(3 failures)test/e2e/app-dir/metadata-streaming-static-generation/metadata-streaming-static-generation.test.ts(2 failures)test/e2e/app-dir/global-not-found/metadata/metadata.test.ts(1 failures)test/e2e/app-dir/metadata-static-generation/metadata-static-generation.test.ts(1 failures)test/e2e/app-dir/metadata-streaming-parallel-routes/metadata-streaming-parallel-routes.test.ts(1 failures)james-elicx commentedon Jun 8, 2026
Triage update (agent investigation): the localized part of this issue — parallel route slot title emission when a slot layout doesn't render
children— is already fixed onmainby #1399 (fix(metadata): emit metadata from parallel route slots, which refs this issue):app-page-head.tscontributesTitlelogic +tests/app-page-head.test.tscoverage. Verified passing on main for both SSR render and slot-to-slot navigation (@bar/first→@bar/secondupdates the title correctly).The residual deploy-suite failures (
metadata-navigation,metadata-streaming-static-generation,metadata-static-generation,global-not-found/metadata) are a narrower, harder problem:<meta charset="utf-8">/ head ordering under React streaming suspension during production static generation on the not-found path — not reproducible in dev SSR and not a small localized patch. Repro recipe: prod build (vp build+ Workers/static-generation Playwright project) with anot-found.tsx/global-not-found.tsxexportinggenerateMetadata, then assertmeta[charset=utf-8]count === 1 in the streamed HTML. Likely belongs in the static-generation/streaming head emission, notapp-page-head.ts. Leaving open for that residual.james-elicx commentedon Jul 4, 2026
Closing as passing in the Next.js Deploy Suite run https://github.com/cloudflare/vinext/actions/runs/28692899743 (vinext main at
54497d42e7fa0effd567950534a3b6f562c14218, July 4, 2026). The assertions tracked by this issue passed in that run. The run still has unrelated failures, which remain tracked separately.