Skip to content

docs: streaming metadata, dynamic pages and generateMetadata#80453

Merged
icyJoseph merged 4 commits intocanaryfrom
docs/getting-started-streaming-metadata
Jun 17, 2025
Merged

docs: streaming metadata, dynamic pages and generateMetadata#80453
icyJoseph merged 4 commits intocanaryfrom
docs/getting-started-streaming-metadata

Conversation

@icyJoseph
Copy link
Copy Markdown
Member

@icyJoseph icyJoseph self-assigned this Jun 12, 2025
@ijjk ijjk added created-by: Next.js DevEx team PRs by the DX team. Documentation Related to Next.js' official documentation. labels Jun 12, 2025
Since page metadata primarily targets bots and crawlers, Next.js will stream metadata for bots that can execute JavaScript and inspect the full page DOM (e.g. `Googlebot`). However, metadata will continue blocking the render of the page for **HTML-limited** bots (e.g. `Twitterbot`) as these cannot execute JavaScript while crawling.
Streamed metadata may end up in the `<body>` tag. Since metadata mainly targets bots and crawlers, Next.js streams metadata for bots that can execute JavaScript and inspect the full DOM (e.g. `Googlebot`). We have verified that these bots, interpret the metadata correctly.

For **HTML-limited** bots that can’t run JavaScript (e.g. `Twitterbot`), metadata continues to block page rendering and is placed in the `<head>` tag.
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍🏼 Good distinction

@icyJoseph icyJoseph merged commit 4fa1c16 into canary Jun 17, 2025
71 checks passed
@icyJoseph icyJoseph deleted the docs/getting-started-streaming-metadata branch June 17, 2025 08:45
egermano added a commit to egermano/next.js that referenced this pull request Jun 17, 2025
* canary: (77 commits)
  [devtools] fork next-logo (vercel#80457)
  [devtools] fork devtools-indicator (vercel#80456)
  [devtools] add feature flag for new panel ui (vercel#80251)
  Improve Incremental Cache Locking Algorithm (vercel#80497)
  [fix] clone the config module to avoid mutation (vercel#80573)
  fix: mark file system incremental cache as external so it's memory is shared (vercel#80586)
  Ensure custom relative distDir resolves properly (vercel#80569)
  Turbopack: correct export usage in EcmascriptModulePartReference (vercel#80526)
  docs: streaming metadata, dynamic pages and generateMetadata (vercel#80453)
  fix: Rspack dev gets stuck after removing a page (vercel#80555)
  perf(turbopack): Detect more immutable tasks (vercel#80423)
  test: fix failures caused by format discrepancies between rspack and other bundlers (vercel#80314)
  perf(turbopack): Do not allocate vectors if we are not going to use it (vercel#80504)
  perf(turbopack): Introduce runtime analysis for immutable tasks (vercel#80422)
  [devtools] Port cache invalidation logic from turbopack to webpack (vercel#80184)
  v15.4.0-canary.84
  Update Turbopack production test manifest (vercel#80562)
  Update Rspack production test manifest (vercel#80561)
  Update Rspack development test manifest (vercel#80560)
  [turbopack] Simplify `Request::parse(Pattern)` the recursive portion doesn't need to be async (vercel#80510)
  ...
@github-actions github-actions bot added the locked label Jul 1, 2025
@github-actions github-actions bot locked as resolved and limited conversation to collaborators Jul 1, 2025
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

created-by: Next.js DevEx team PRs by the DX team. Documentation Related to Next.js' official documentation. locked

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants