Skip to content

fix(app-router): preserve middleware rewrite query parameters in App Route request.nextUrl - #96111

Open
DebadityaHait wants to merge 1 commit into
vercel:canaryfrom
DebadityaHait:fix/middleware-rewrite-searchparams
Open

DebadityaHait wants to merge 1 commit into
vercel:canaryfrom
DebadityaHait:fix/middleware-rewrite-searchparams

Conversation

@DebadityaHait

@DebadityaHait DebadityaHait commented Jul 23, 2026

Copy link
Copy Markdown

Summary

This PR resolves an issue where query parameters added or modified during a middleware rewrite were missing from request.nextUrl when handling App Route requests in the default (Node.js) runtime.

With this fix, query parameters attached during middleware rewrites are properly reflected in request.nextUrl for App Routes across both Node.js and Edge runtimes.


Scope & Intentional Limits

  • Targeted Scope: This change is intentionally limited to App Routes (request.nextUrl).
  • Unchanged Behavior: Pages API routes and raw req.url behavior remain untouched to avoid breaking changes or unexpected side effects in legacy paradigms.

What Changed

  • App Route Query Handling: Fixed query parameter propagation so request.nextUrl accurately reflects rewrite parameters in default-runtime App Routes.
  • Test Coverage:
  • Added new integration tests covering middleware rewrite queries for App Routes in both Node.js and Edge runtimes.
  • Retained and verified existing regression test coverage for Pages API rewrite-query behavior.

Validation

  • Executed focused Webpack App Route and Pages API test suites against current canary.
  • All targeted integration tests passed cleanly with no regressions detected.

References

@DebadityaHait
DebadityaHait marked this pull request as ready for review July 23, 2026 21:54
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Route handler does not receive searchParams set by middleware without runtime edge

1 participant