#98750·Next.js

[PPR] Search crawlers bypass static shell cache and trigger dynamic re-renders

Author: agentHitsCreated Sep 16, 2026Updated Sep 17, 2026

Link to the code that reproduces this issue

https://github.com/agentHits/next.js/tree/perf/bot-ppr-cache-bypass

To Reproduce

  1. Enable experimental.ppr = true in next.config.js.
  2. Send an HTTP GET request with User-Agent: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html).
  3. Inspect server execution and response caching headers.

Current vs. Expected behavior

  • Current: Bot requests bypass the prerendered static shell cache and trigger full dynamic SSR execution on the server.
  • Expected: Search crawlers receive the cached static shell directly with x-nextjs-cache: HIT and s-maxage=31536000, eliminating server overhead during indexing.

Provide environment information

bash
Operating System:
  Platform: darwin
  Arch: arm64
  Version: Darwin Kernel Version 24.2.0
Binaries:
  Node: 24.21.0
  pnpm: 10.33.0
Relevant Packages:
  next: 16.4.0-canary.32
  react: 19.3.0
  react-dom: 19.3.0

Which area(s) are affected? (Select all that apply)

App Router, Partial Prerendering (PPR)

Which stage(s) are affected? (Select all that apply)

next start (production mode)

Additional context

Verified with E2E suite: test/e2e/app-dir/ppr-bot-cache-bypass/ppr-bot-cache-bypass.test.ts and test/production/app-dir/ppr-bot-cache/ppr-bot-cache.test.ts.