Skip to content

fix(nextjs): Make request data available to tracesSampler for edge middleware root spans#22232

Open
s1gr1d wants to merge 4 commits into
developfrom
sig/nextjs-edge-middleware
Open

fix(nextjs): Make request data available to tracesSampler for edge middleware root spans#22232
s1gr1d wants to merge 4 commits into
developfrom
sig/nextjs-edge-middleware

Conversation

@s1gr1d

@s1gr1d s1gr1d commented Jul 13, 2026

Copy link
Copy Markdown
Member

On the edge runtime, Next.js's OTel instrumentation creates and samples the Middleware.execute root span before the Sentry middleware wrapper runs. So normalizedRequest was never on the isolation scope at sampling time, and tracesSampler received undefined.

This adds a beforeSampling hook in the edge SDK which populates normalizedRequest (method, URL, query string) based on HTTP span attributes. It also extends the edge spanStart handler to fork the isolation scope for Middleware.execute root spans (similar to what #22013 did on the Node side after vercel/next.js#95357 made middleware a detached root span).

The isolation-scope fork is extracted into a shared maybeForkIsolationScopeForRootSpan utility used by both the Node and edge handlers.

Fixes #22200

@s1gr1d
s1gr1d requested a review from a team as a code owner July 13, 2026 15:42
@s1gr1d
s1gr1d requested review from chargome, mydea and nicohrubec and removed request for a team July 13, 2026 15:42
Comment thread packages/nextjs/src/edge/index.ts Outdated

@chargome chargome left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we add one (unskipped) test case to verify the intent of this pr works correctly e2e in a non-cf scenario?

@github-actions

Copy link
Copy Markdown
Contributor

👋 @mydea, @nicohrubec — Please review this PR when you get a chance!

Comment thread packages/nextjs/src/edge/index.ts Outdated
Comment thread packages/nextjs/src/edge/index.ts Outdated
@chargome
chargome force-pushed the sig/nextjs-edge-middleware branch from 37ad847 to 4c49615 Compare July 21, 2026 08:45
Comment thread packages/nextjs/src/edge/index.ts Outdated
@github-actions

Copy link
Copy Markdown
Contributor

👋 @mydea, @nicohrubec — Please review this PR when you get a chance!

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.

Next.js middleware: normalizedRequest never reaches tracesSampler on the edge runtime, so #21833 has no effect there

2 participants