Skip to content

Rule · Lint

Request-time generateMetadata without htmlLimitedBots

lint/dynamic-metadata-streamingwarnvoid lintupdated

Why it matters

Since Next 15.2 metadata of dynamic routes is streamed into . Next's default bot list doesn't include AI crawlers (GPTBot, ClaudeBot, PerplexityBot) or plain Googlebot, so they receive a without title/canonical.

How to fix it

Make the route static (generateStaticParams, 'use cache'), or set htmlLimitedBots in next.config to Next's default list plus AI crawlers.

Example

ts
const nextConfig: NextConfig = {
  htmlLimitedBots: /Googlebot|GPTBot|OAI-SearchBot|ChatGPT-User|ClaudeBot|Claude-User|PerplexityBot|Bingbot|facebookexternalhit|Twitterbot|LinkedInBot|Slackbot/i,
}

References

void lint reports 67 rules in this category. Static source checks with no browser: Tailwind v4 silent failures, Next.js 16 API traps, React render-body bugs, accessibility markup, SEO files and motion hygiene.