Skip to content

docs: streaming metadata, dynamic pages and generateMetadata #80453

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 4 commits into from
Jun 17, 2025

Conversation

icyJoseph
Copy link
Contributor

@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
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)
  ...
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
created-by: Next.js DevEx team PRs by the DX team. Documentation Related to Next.js' official documentation.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants