vercel / vercel/next.js

[Next.js 16] [App Router] searchParams empty on statically generated pages when Draft Mode is enabled (Vercel only)

Open
#92,562 12 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Draft Mode Dynamic Routes
Dominant language
JavaScript
Stars
142k
Forks
32.4k
Avg merge
2d 14h
Merged PRs (30d)
351

Description

Link to the code that reproduces this issue

https://github.com/illiakovalenko/app-router-draft-mode-proxy-bug

To Reproduce
  1. Deploy application to Vercel
  2. Visit <host>/api/render url
Current vs. Expected behavior

Current behaviour

I followed the documentation for draftMode and want to pass search parameters via redirect and access them on the page after I hit the route handler: https://nextjs.org/docs/app/guides/draft-mode#step-2-access-the-route-handler-from-your-headless-cms

On Next.js App Router v16 deployed to Vercel, searchParams are empty on a statically generated page, even when Draft Mode is enabled. The same setup works correctly on Next.js 15. This issue does not occur locally with next dev or next start - it only happens on Vercel production deployments.

The route handler redirects to: /test?language=en&timestamp=1775717500894

Image

Expected behaviour

When Draft Mode is enabled, the page should receive the full searchParams object, even if the route is statically generated. This allows the page to remain static (SSG) for normal traffic while switching to dynamic preview behavior in Draft Mode.

Image
Provide environment information
Operating System:
  Platform: win32
  Arch: x64
  Version: Windows 11 Enterprise
  Available memory (MB): 32213
  Available CPU cores: 16
Binaries:
  Node: 22.22.0
  npm: 10.9.4
  Yarn: 4.12.0
  pnpm: 10.33.0
Relevant Packages:
  next: 16.2.1-canary.29 // Latest available version is detected (16.2.1-canary.29).
  eslint-config-next: N/A
  react: 19.2.4
  react-dom: 19.2.4
  typescript: 5.9.3
Next.js Config:
  output: N/A
Which area(s) are affected? (Select all that apply)

Draft Mode, Dynamic Routes

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

Vercel (Deployed)

Additional context

I tested this using Next.js 15, and it becomes reproducible in Next.js 16.
The issue is reproducible when deployed to Vercel, but it does not occur locally.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start with the linked reproduction repository and trace the /api/render route handler, its redirect to /test, and how Draft Mode exposes searchParams. Compare Next.js 15 and 16 behavior in local and Vercel production deployments. Done means the deployed static page receives language and timestamp search parameters in Draft Mode without changing normal static behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
next.js
Domain
api, web-dev
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Quiet
Clarity
Mostly clear
Newbie friendliness
48/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.