Skip to content

meta(changelog): Update changelog for 11.7.0 - #25296

Merged
JPeer264 merged 85 commits into
masterfrom
prepare-release/11.7.0
Oct 12, 2026
Merged

JPeer264 merged 85 commits into
masterfrom
prepare-release/11.7.0

Conversation

@JPeer264

Copy link
Copy Markdown
Member

No description provided.

nicohrubec and others added 30 commits October 8, 2026 13:20
Port Prisma v5–v7 tests to default span streaming and fold their
query-name checks into the existing tests.

Part of #24137

---------

Co-authored-by: GPT-6 <codex@openai.com>
…sts/test-applications/nextjs-16 (#25179)

Bumps [next](https://github.com/vercel/next.js) from 16.2.11 to 16.3.8.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/vercel/next.js/releases">next's
releases</a>.</em></p>
<blockquote>
<h2>v16.3.8</h2>
<p>This release contains security fixes for the following
advisories:</p>
<p>High:</p>
<ul>
<li><a
href="https://github.com/vercel/next.js/security/advisories/GHSA-cjq9-62q9-8jv4">Server-Side
Request Forgery in Image Optimization</a></li>
</ul>
<p>Medium:</p>
<ul>
<li><a
href="https://github.com/vercel/next.js/security/advisories/GHSA-f87g-xv8r-7p7x">Information
disclosure in Next.js App Router metadata image routes via dynamicParams
bypass</a></li>
<li><a
href="https://github.com/vercel/next.js/security/advisories/GHSA-4jqv-mc3x-m676">Cache
poisoning of SSG and ISR pages in self-hosted Next.js
applications</a></li>
<li><a
href="https://github.com/vercel/next.js/security/advisories/GHSA-mcj8-r9mp-w47p">Cache
poisoning in Next.js SSG/ISR rendering leads to cross-user content
substitution and persistent denial of service</a></li>
<li><a
href="https://github.com/vercel/next.js/security/advisories/GHSA-3w37-wq28-93x7">Pending
<code>use cache</code> fill can leak Draft Mode content into regular
responses and persisted pages</a></li>
<li><a
href="https://github.com/vercel/next.js/security/advisories/GHSA-h694-7cp9-m8p3">Cache
leak across root param values in nested 'use cache' functions</a></li>
</ul>
<p>Low:</p>
<ul>
<li><a
href="https://github.com/vercel/next.js/security/advisories/GHSA-39w2-rjm5-chcv">Information
disclosure in the Next.js development server's Model Context Protocol
endpoint</a></li>
</ul>
<h2>v16.3.7</h2>
<blockquote>
<p>[!NOTE]
This release is backporting bug fixes. It does <strong>not</strong>
include all pending features/changes on canary.</p>
</blockquote>
<h3>Core Changes</h3>
<ul>
<li>turbo-tasks-backend: fix strongly consistent read hanging on a
canceled task (<a
href="https://redirect.github.com/vercel/next.js/issues/98931">#98931</a>)</li>
</ul>
<h3>Credits</h3>
<p>Huge thanks to <a
href="https://github.com/lukesandberg"><code>@​lukesandberg</code></a>
for helping!</p>
<h2>v16.3.6</h2>
<p>This release contains a security fix for <a
href="https://github.com/vercel/next.js/security/advisories/GHSA-vcvr-r3jv-pc5j">GHSA-vcvr-r3jv-pc5j:
Remote Code Execution in next/og ImageResponse</a></p>
<h2>v16.3.5</h2>
<p>The following bug fixes have been backported. It does not include all
pending features/changes on canary.</p>
<ul>
<li>next/image: Skip 0-byte entries when initializing disk LRU cache (<a
href="https://redirect.github.com/vercel/next.js/issues/98185">#98185</a>)</li>
<li>next/image: Reject empty images when reading/writing to the disk
cache (<a
href="https://redirect.github.com/vercel/next.js/issues/98186">#98186</a>)</li>
<li>Emit whole-app server NFTs when <code>output: 'standalone'</code> is
used with an adapter (<a
href="https://redirect.github.com/vercel/next.js/issues/98167">#98167</a>)</li>
<li>Add CSP nonce to script tags of loading and template files (<a
href="https://redirect.github.com/vercel/next.js/issues/98403">#98403</a>)</li>
<li>Fix <code>use cache</code> prerender signal retention (<a
href="https://redirect.github.com/vercel/next.js/issues/98448">#98448</a>)</li>
</ul>
<h2>v16.3.4</h2>
<p>Follow-up release to <a
href="https://github.com/vercel/next.js/releases/tag/v16.3.3">v16.3.3</a>
re-enabling AVIF Image Optimization (<a
href="https://redirect.github.com/vercel/next.js/pull/97949">#97949</a>).</p>
<p>The following bug fixes have been backported. It does
<strong>not</strong> include all pending features/changes on canary.</p>
<ul>
<li>testmode: Fix infinite recursion in testmode passthrough fetch (<a
href="https://redirect.github.com/vercel/next.js/issues/97691">#97691</a>)</li>
<li>Fix build error when aliasing typescript to
<code>@​typescript/typescript6</code> (<a
href="https://redirect.github.com/vercel/next.js/issues/97997">#97997</a>)</li>
<li>Fix unset crossOrigin in Turbopack manifests (<a
href="https://redirect.github.com/vercel/next.js/issues/97930">#97930</a>)</li>
</ul>
<h3>Credits</h3>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/vercel/next.js/commit/b0fad0d45eb4c4430fda5eeeb442e8a5af08a5f6"><code>b0fad0d</code></a>
v16.3.8</li>
<li><a
href="https://github.com/vercel/next.js/commit/719e4c67d6e92df60246f95e1d96e2dd60789a52"><code>719e4c6</code></a>
[lts-active] Scope response cache keys to their source route (<a
href="https://redirect.github.com/vercel/next.js/issues/218">#218</a>)</li>
<li><a
href="https://github.com/vercel/next.js/commit/e92db4536a7f34ae2dbda583cfa1b4e0d06d1865"><code>e92db45</code></a>
[lts-active] Fix metadata propagation for deduplicated nested caches (<a
href="https://redirect.github.com/vercel/next.js/issues/223">#223</a>)</li>
<li><a
href="https://github.com/vercel/next.js/commit/40c2ba904289a65ed2fd4633c5dfb1bdc29b52de"><code>40c2ba9</code></a>
[lts-active] Match Next data paths case-sensitively (<a
href="https://redirect.github.com/vercel/next.js/issues/196">#196</a>)</li>
<li><a
href="https://github.com/vercel/next.js/commit/2d9f50a409312696145b82b3157aadb6b1fef476"><code>2d9f50a</code></a>
[lts-active] Fix MCP middleware DNS rebinding (<a
href="https://redirect.github.com/vercel/next.js/issues/213">#213</a>)</li>
<li><a
href="https://github.com/vercel/next.js/commit/bd9214f9a32854a011bf5fe58e481dffe1bbf598"><code>bd9214f</code></a>
[lts-active] Fix draft mode leaks through cross-request <code>'use
cache'</code> dedupli...</li>
<li><a
href="https://github.com/vercel/next.js/commit/8db4a627c91e718514406ff5644ea4985dcaaae0"><code>8db4a62</code></a>
[lts-active][webpack] Ensure <code>dynamicParams</code> is respected in
`opengraph-image...</li>
<li><a
href="https://github.com/vercel/next.js/commit/e002ad68bd676bb0ed0c87bb22e3590304763e0b"><code>e002ad6</code></a>
[lts-active] fix(next/image): Pin DNS resolution when fetching external
image...</li>
<li><a
href="https://github.com/vercel/next.js/commit/4c20699e29178d444994cf5a31b8a617ca3a2c80"><code>4c20699</code></a>
v16.3.7</li>
<li><a
href="https://github.com/vercel/next.js/commit/2521aec5815e7de2121db253d12dae9f13e25361"><code>2521aec</code></a>
[backport] turbo-tasks-backend: fix strongly consistent read hanging on
a can...</li>
<li>Additional commits viewable in <a
href="https://github.com/vercel/next.js/compare/v16.2.11...v16.3.8">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=next&package-manager=npm_and_yarn&previous-version=16.2.11&new-version=16.3.8)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/getsentry/sentry-javascript/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
[Gitflow] Merge master into develop
…25197)

Run propagation-target, baggage org ID, proxy, and IPv6 coverage with
span streaming.

Part of #24135

---------

Co-authored-by: GPT-6 <codex@openai.com>
My agent keeps running the full repository test suite locally before
opening PRs, which is quite the waste of time and CPU.

---------

Co-authored-by: GPT-6 <codex@openai.com>
The Lint job ran its three lint steps one after another, about 59s in
total on `develop` (source 10s, ES compatibility 17s, types 32s). They
don't depend on each other, so this uses the new [parallel
steps](https://github.blog/changelog/2026-06-25-actions-steps-can-now-be-run-in-parallel/)
to run them together. The job should take about as long as the slowest
step, around 32s.

This is the first of several small PRs that use parallel steps in CI. I
kept each one separate so a problem with the new syntax only affects one
job.

Refs
[JS-3888](https://linear.app/getsentry/issue/JS-3888/investigate-running-action-steps-in-parallel-for-ci-wall-time)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Bumps `@nuxt/kit` to `^4.6.0` for `resolveServerVariant`. The Vite
server and other non-Nitro builders need this server-API detection.

Looks like a lot of code changes, but most of it is just moved code.
Those are the important parts:

- `resolveServerApi()` replaces `getNitroMajorVersion` and the
`local-pkg` dependency (we can get the nitro version from there). This
is actually the most important and biggest change in the PR.
- On the `nuxt` server API (no Nitro), the module skips all Nitro setup.
With this, Kit prints no `NUXT_B8024` warnings
- `addServerPlugin` → `addNitroPlugin`. Kit 4.6 deprecates the old name,
and the behavior is the same
- all nitro-related code moves to `nitroServer.ts`

Part of #25072
…very and instrument the callback API (#25047)

When a worker subscribes to a queue that already has messages, amqplib
can decode `BasicConsumeOk` and the first message in one socket read. We
recorded each consumer's queue and `noAck` flag when `consume()`
resolved. That happens too late:

```
one socket read, decoded synchronously
│
├─ BasicConsumeOk ─► registerConsumer(tag)         ◄─ now: info recorded here
├─ BasicDeliver   ─► dispatchMessage(tag)          ◄─ lookup missed here
│
└─ decode ends ─► microtasks ─► consume().then()   ◄─ before: info recorded here
```

The first message's span got the routing key as its name, and `noAck`
spans ended as errors at channel close. Now we record the info in
`registerConsumer`, which amqplib always calls before dispatch.

This PR also instruments the callback API (`lib/callback_model.js`). It
has the same classes and signatures as the promise API.

Follow-up on this PR (noticed the bug while working on this):
#23652
Port incoming HTTP behavior test suites to span streaming.

Part of #24135

---------

Co-authored-by: GPT-6 <codex@openai.com>
Consolidate Orchestrion payload types into a shared interface used by
server-utils, NestJS, and Remix. Integrations extend it only for
narrower payload types or local bookkeeping, keeping the common fields
consistent without changing instrumentation behavior.

Fixes #25173

Co-authored-by: GPT-6 <codex@openai.com>
… unsampled (#25210)

With `profileLifecycle: 'trace'`, the profiler counted every `spanStart`
and `spanEnd`. Unsampled child spans emit `spanStart` but never
`spanEnd`, so the count never got back to 0. The profiler kept running,
and Node never exited.

- Trace mode now tracks only sampled spans, by span ID.
- A stop just before the next 60s chunk started did not prevent that
chunk, so profiling started again (manual and trace mode). A stop now
cancels the scheduled chunk.
- New debug logs show skipped unsampled traces and cancelled chunks.

A fake-timer test stops profiling in the gap between two chunks and
checks that no new chunk starts.

Fixes #25174
Exercise HTTP hooks, ignored requests, and static-asset handling with
streamed spans.

Part of #24135

---------

Co-authored-by: GPT-6 <codex@openai.com>
E2E jobs installed Playwright after the app build. This uses the new
[parallel
steps](https://github.blog/changelog/2026-06-25-actions-steps-can-now-be-run-in-parallel/)
to install the root workspace's Playwright version in the background
while the app builds. Apps on a different version still get theirs
installed after the build. This saves about 16-19s per E2E job.

The background install starts after the artifact downloads on purpose.
Starting it next to `download-artifact` made about 5% of jobs fail with
"Unexpected end of JSON input".

Refs #25134

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Exercise outgoing request hooks, header collection, query handling, and
fetch errors through streamed spans. Preserve the existing basic HTTP
and fetch transaction suites as static coverage, along with the request
and correlation checks in the migrated cases.

Part of #24135

---------

Co-authored-by: GPT-6 <codex@openai.com>
Run the HTTP request suites with the default span-streaming lifecycle.

Part of #24135

---------

Co-authored-by: GPT-6 <codex@openai.com>
Co-authored-by: Lukas Stracke <lukas.stracke@sentry.io>
Run the fetch request suites with the default span-streaming lifecycle.

Part of #24135

---------

Co-authored-by: GPT-6 <codex@openai.com>
## Size limit auto-bump

| Entry | Old limit | New limit | Δ |
| --- | --- | --- | --- |
| @sentry/browser (incl. Tracing, Replay with Canvas) | 101 KB | 102 KB
| +1 KB |
| @sentry/browser (incl. Tracing, Replay, Feedback) | 114 KB | 115 KB |
+1 KB |
| @sentry/browser (incl. Logs) | 36 KB | 37 KB | +1 KB |
| @sentry/react (incl. Tracing) | 59 KB | 60 KB | +1 KB |
| @sentry/remix (Remix 3 client bundle) | 61 KB | 62 KB | +1 KB |
| CDN Bundle (incl. Tracing) | 57 KB | 58 KB | +1 KB |
| CDN Bundle (incl. Tracing, Logs, Metrics) | 59 KB | 60 KB | +1 KB |
| CDN Bundle (incl. Tracing, Replay) | 95 KB | 96 KB | +1 KB |
| CDN Bundle (incl. Tracing, Replay, Feedback) | 101 KB | 102 KB | +1 KB
|
| CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) | 103 KB |
104 KB | +1 KB |
| CDN Bundle (incl. Tracing) - uncompressed | 160 KB | 161 KB | +1 KB |
| CDN Bundle (incl. Logs, Metrics) - uncompressed | 104 KB | 105 KB | +1
KB |
| CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed | 166 KB |
167 KB | +1 KB |
| CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed | 234 KB | 235
KB | +1 KB |
| CDN Bundle (incl. Tracing, Replay) - uncompressed | 280 KB | 281 KB |
+1 KB |
| CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed | 286
KB | 287 KB | +1 KB |
| CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed | 293 KB |
295 KB | +2 KB |
| CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) -
uncompressed | 299 KB | 301 KB | +2 KB |
| @sentry/sveltekit (client) | 57 KB | 58 KB | +1 KB |
| @sentry/node | 151 KB | 156 KB | +5 KB |
| @sentry/node - without tracing | 99 KB | 100 KB | +1 KB |
| @sentry/node - without channel injection | 130 KB | 135 KB | +5 KB |
| @sentry/aws-serverless | 107 KB | 108 KB | +1 KB |
| @sentry/cloudflare (withSentry) - minified | 209 KiB | 210 KiB | +1
KiB |
| @sentry/cloudflare (withSentry) | 512 KiB | 514 KiB | +2 KiB |
| @sentry/nextjs/cloudflare (withSentry) - minified | 223 KiB | 228 KiB
| +5 KiB |

Co-authored-by: chargome <20254395+chargome@users.noreply.github.com>
…5221)

Run sample-rate and sample-rand propagation scenarios with the default
streaming lifecycle.

Part of #24140

Co-authored-by: GPT-6 <codex@openai.com>
Since #24903 a span's end time is its start time plus the
`performance.now()` duration, which can differ from a
`timestampInSeconds()` value taken mid-span by fractions of a
microsecond in either direction. Basically because a double can't
reliably hold the very minimal time difference here. This PR relaxes the
test assertion a bit while still asserting that the span ended at the
current time.

---------

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Exports the pg query-channel binding, the connection attribute builder
and `PgConnectionParams` so a driver that bundles its own copy of pg can
emit the same span shape. The Neon integration in #25164 is the first
consumer.

The deprecated `db.connection_string` attribute moves behind an opt-in.
Only the pg integration sets it, for parity with its OTel predecessor,
so new callers describe the connection with `server.address` and
`server.port` alone. No behavior change for pg.

Refs #25144

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
…erless (#25176)

Adds the orchestrion config for `@neondatabase/serverless`, so the
bundler plugins and the runtime hook can inject channels into it. The
integration that subscribes to those channels follows in #25164 and
registers the config there, which keeps every layer's CI green on its
own.

The package ships two minified esbuild bundles with mangled identifiers
that differ between CJS and ESM, so the name-based matchers find
nothing. The selectors key on property names and string literals that
survive minification: pg's `_pulseQueryQueue` sibling method for
`Client.prototype.query`, the `Neon-Connection-String` header literal
for the HTTP executor, and the `resolvedURL` return shape for the
connection resolver.

`@neondatabase/serverless` becomes a dev dependency of server-utils for
a test that transforms and executes the published bundles, so a Neon
release that reshapes them fails CI. The version range is capped at
`<2`.

Stacked on #25163.

Refs #25144

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
Adds `neonIntegration` for `@neondatabase/serverless`. Both drivers emit
`db` spans with the pg span shape: the WebSocket `Client`/`Pool` and the
HTTP `neon()` function, including Drizzle's `neon-http` and
`neon-serverless` adapters.

Subscribes to the channels from #25176 and registers the config, so
build-time bundler plugins get the same coverage as the runtime hook.

- The HTTP span wraps the executor inside `neon()`, not the lazy query
promise, so `transaction()` batches get one span instead of one per
statement plus one for the batch.
- Connection attributes for HTTP come from the connection resolver,
which runs inside the query span. The executor itself never sees the
connection string.
- `db.connection_string` is deprecated and not emitted.

End-to-end tests follow in #25177.

Stacked on #25176.

Fixes #25144

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
)

Runs both Neon drivers end to end against Neon's own proxy
(`ghcr.io/timowilhelm/local-neon-http-proxy`) in front of a local
Postgres, so the HTTP `/sql` and WebSocket `/v2` wire protocols are the
real ones. Covers `sql.query()`, tagged templates, `transaction()`
batches, a failing statement and pool queries, in ESM and CJS under the
default span lifecycle.

The suite is excluded on Bun like the other database suites, since `bun
run` cannot inject the diagnostics channels; the Bun plugin build does
run it. The pool test is Node only, because on Bun and Deno the pool's
connect callback runs outside the segment's async context. `ws` is added
because Node 20 has no global `WebSocket`.

Stacked on #25164.

Refs #25144

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
In dev mode the Nuxt module aliased `@opentelemetry/resources` to
`@opentelemetry/resources/build/src/index.js`. Nuxt writes every alias
into the `paths` of the generated `.nuxt/tsconfig.*.json` files. Those
configs have no `baseUrl`, so with `typescript: { typeCheck: true }`
vue-tsc fails with TS5090 ("Non-relative paths are not allowed when
'baseUrl' is not set").

The alias was a workaround for incomplete ESM imports in
`@opentelemetry/resources` (#15204). In v11 nothing in the Nuxt SDK's
dependency tree uses that package anymore, so the alias can be removed
instead of rewritten.

Fixes #25188

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…d failures (#25185)

When sending an envelope fails (network error, 413, or a full buffer),
the transport recorded every item with quantity 1. This undercounts
span, log and metric discard quantities. Same for transactions that
[should
also](https://develop.sentry.dev/sdk/telemetry/client-reports/#span-outcomes)
report `span` counts. Containers now report their `item_count`, and
transactions also report `spans.length + 1` `span` outcomes, matching
how the client counts dropped transactions in `beforeSend`.

For transactions, we also record `span` outcomes on envelope send
failures, analogously to what
#25006 adds to other
discard reasons

---------

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Exercise scope and span suites with the default streaming lifecycle.

Part of #24140

Co-authored-by: GPT-6 <codex@openai.com>
#24881)

Run the browser trace lifecycle and public span API tests with default
span streaming, asserting across envelopes as roots and children are
sent independently. Retain the existing transaction counterparts as
explicitly pinned `*-static` suites so both lifecycles keep regression
coverage for sampling, propagation, linking, and span APIs.

Cover circular attributes in both lifecycles: streamed spans drop
unsupported objects while preserving primitive attributes, and static
transactions retain circular-reference normalization. Filter feedback
waits by envelope type so unrelated span envelopes cannot satisfy them.

Keep `public-api/startSpan/setMeasurement` on the static lifecycle
because the legacy measurement API has no span v2 representation.

Fixes #24144

---------

Co-authored-by: GPT-6 <codex@openai.com>
Exercise browserTracingIntegration with default span streaming,
including low-cardinality names and children sent across envelopes.
Retain the existing transaction counterparts as explicitly pinned
`*-static` suites to preserve compatibility coverage for navigation,
pageloads, linked traces, timing, and sampling.

Stacked on #24881 for the shared span collector and dynamic sampling
context helpers.

Fixes #24142

---------

Co-authored-by: GPT-6 <codex@openai.com>
Exercise request instrumentation, web vitals, interactions, and user
timing with default span streaming. Retain the existing transaction
counterparts for fetch, XHR, resource timing, and TTFB as explicitly
pinned `*-static` suites so the migration preserves coverage of both
lifecycles. Check RTT as a span attribute on pageload and navigation.

Fixes #24143

---------

Co-authored-by: GPT-6 <codex@openai.com>
Exercise baggage and trace metadata propagation with the default
streaming lifecycle.

Part of #24140

---------

Co-authored-by: GPT-6 <codex@openai.com>
Lms24 and others added 8 commits October 12, 2026 15:40
…nsaction (#25048)

With the static trace lifecycle, building a transaction silently dropped
two kinds of child spans without a client outcome: children that hadn't
finished yet, and spans beyond the 1000 span cap. These are now recorded
as `invalid` (span lacks an end timestamp, so it fails validation) and
`buffer_overflow` (the transaction's fixed-size span buffer overflowed),
so dropped span counts show up in client reports.

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…_ai.decide spans (#25274)

## What

Vercel AI `experimental_decide` calls now create `decide <model>` spans
with op `gen_ai.decide`, instead of `gen_ai.evaluate`.

## Why

`gen_ai.evaluate` is deprecated in favor of `gen_ai.decide`
(getsentry/sentry-conventions#696), to match the Vercel AI rename to
`experimental_decide`.

Closes: #25251

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…e spans (#25281)

## What

Mastra classifier evaluations now create `decide <model>` spans with op
`gen_ai.decide`, instead of `gen_ai.evaluate`.

## Why

`gen_ai.evaluate` is deprecated in favor of `gen_ai.decide`
(getsentry/sentry-conventions#696), to match the Vercel AI rename to
`experimental_decide`.

Closes: #25252

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…rom the test utils (#25292)

follow up to #25202

This stops exporting `NODE_VERSION` and `RUNTIME` from the Node
integration test utils, so suites limit tests with
`test.runIf(supports({ ... }))`. It moves `thread-blocked-native`, the
last suite that checked `NODE_VERSION` itself, to `supports`, and adds a
Bugbot rule that flags suites that check the Node version or the runtime
in other ways, for example with `process.versions`.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…v3 (#24901)

On Nuxt 5 (Nitro v3) with Node < 24.13, server startup logged `Failed to
register diagnostics-channel injection hooks`. Nitro v3 bundles every
dependency, including `@sentry/server-runtime-injection`. Without
`Module.registerHooks`, it registers its ESM loader hook through
`Module.register`, which needs `hook.js` on disk. The bundled copy has
no such file, and the fallback `@sentry/server-runtime-injection/hook`
specifier can't resolve because the output has no `node_modules`. Node
24.13+ takes the `registerHooks` path and was unaffected, as were Nuxt
3/4, since Nitro v2 keeps dependencies external.

The fix adds the package to Nitro's `traceDeps`, so it ships in
`.output/server/node_modules`. Note that a Nuxt app with a local module
still gets it bundled: Nuxt adds the app root to `build.transpile`,
which Nitro v3 turns into an unanchored `noExternals` pattern. The
traced copy still makes the fallback specifier resolve, so registration
works there too.

The e2e runner uses Node 24, so the nuxt-5 regression test asserts the
hook specifier resolves from the server output rather than checking for
the missing warning. The warning now also includes the underlying error,
which previously only showed with `debug: true`.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
… and LCP URLs (#25262)

closes #25247
closes
[JS-3907](https://linear.app/getsentry/issue/JS-3907/sensitive-url-query-params-leak-to-sentry-in-transaction-events)

## Description

This applies `dataCollection.urlQueryParams` to the URLs that the
browser SDK still sent unfiltered: the page URL in `event.request.url`,
the `browser.*` and `resource.*` span names in the static trace
lifecycle, and the LCP URL attributes (`lcp.url`,
`browser.web_vital.lcp.url`). `event.request.url` leaked on error events
with every trace lifecycle, the span names only with `traceLifecycle:
'static'` (the v10 default).

Most of the added lines are tests.

## Sentry traces

Before (11.6.0), `jwt=sensitive-jwt-value` in `request.url` and span
names:
https://sentry-sdks.sentry.io/explore/traces/trace/056ddfee720849c78e4e0b68f9da8c5b/?project=4510555608449024&timestamp=1791796663
After (this PR), `jwt=[Filtered]`:
https://sentry-sdks.sentry.io/explore/traces/trace/ea9fd2cc90de4343bf5bfb6eb0d923ad/?project=4510555608449024&timestamp=1791796677

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
… URLs (#25289)

follow up to #25262

This applies `dataCollection.urlQueryParams` to the URLs in the fetch,
XHR and navigation breadcrumbs and to the `ui.element.url` attribute of
`elementTimingIntegration`. These still sent sensitive query values such
as `?jwt=...` to Sentry.

## Sentry events

Before (11.6.0), `jwt=sensitive-jwt-value` in the breadcrumbs:
https://sentry-sdks.sentry.io/issues/7787761489/events/2bfc6630501c4314bf84b884a4afb1e9/
After (this PR), `jwt=[Filtered]`:
https://sentry-sdks.sentry.io/issues/7787761463/events/6ae067a147b84e6eb33553ae7ce217c7/

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
…onversation id (#25269)

The OpenAI integration filled `gen_ai.conversation.id` from
`previous_response_id`. That id names the previous response, so it
changes on every turn and never groups two spans. Same flaw #24979
removed from Vercel AI, flagged there by isaacs.

The id now comes only from the Conversations API: the `conversation`
request parameter or a `conversations.create()` response. The response's
own id stays on `gen_ai.response.id`.

Part of #24832

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
@JPeer264 JPeer264 self-assigned this Oct 12, 2026
@JPeer264
JPeer264 requested review from a team as code owners October 12, 2026 14:31
@JPeer264
JPeer264 requested review from isaacs, msonnb, mydea, nicohrubec and s1gr1d and removed request for a team October 12, 2026 14:31
`JSON.stringify` leaves HTML script delimiters intact, allowing
attacker-controlled injected values to break out if a consumer inlines
the generated bundle into HTML. Escape `<` in metadata, release names,
and build information so HTML parsing cannot reinterpret those values,
while preserving their exact JavaScript runtime values.

Fixes [code-scanning alert
#467](https://github.com/getsentry/sentry-javascript/security/code-scanning/467).

Co-authored-by: GPT-6 <codex@openai.com>
@JPeer264
JPeer264 force-pushed the prepare-release/11.7.0 branch from a486cde to 5289615 Compare October 12, 2026 14:38
@github-actions

github-actions Bot commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

size-limit report 📦

⚠️ Warning: Base artifact is not the latest one, because the latest workflow run is not done yet. This may lead to incorrect results. Try to re-run all tests to get up to date results.

Path Size % Change Change
@sentry/browser 29.83 kB +0.11% +31 B 🔺
@sentry/browser - with treeshaking flags 27.96 kB +0.13% +34 B 🔺
@sentry/browser - with treeshaking flags tracing without tracing 27.87 kB +0.13% +35 B 🔺
@sentry/browser (incl. Tracing) 52.02 kB +0.33% +167 B 🔺
@sentry/browser (incl. Tracing + Span Streaming) 52.02 kB +0.29% +149 B 🔺
@sentry/browser (incl. Tracing, Profiling) 54.96 kB +0.3% +162 B 🔺
@sentry/browser (incl. Tracing, Replay) 91.75 kB +0.19% +165 B 🔺
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags 80.62 kB +0.22% +171 B 🔺
@sentry/browser (incl. Tracing, Replay with Canvas) 96.47 kB +0.19% +182 B 🔺
@sentry/browser (incl. Tracing, Replay, Feedback) 109.43 kB +0.15% +159 B 🔺
@sentry/browser (incl. Feedback) 47.35 kB +0.07% +33 B 🔺
@sentry/browser (incl. sendFeedback) 34.88 kB +0.13% +44 B 🔺
@sentry/browser (incl. FeedbackAsync) 40 kB +0.13% +51 B 🔺
@sentry/browser (incl. Metrics) 30.85 kB +0.09% +25 B 🔺
@sentry/browser (incl. Logs) 31.13 kB +0.08% +24 B 🔺
@sentry/browser (incl. Metrics & Logs) 31.78 kB +0.1% +29 B 🔺
@sentry/react 31.64 kB +0.03% +9 B 🔺
@sentry/react (incl. Tracing) 54.34 kB +0.32% +173 B 🔺
@sentry/vue 37.98 kB +0.38% +140 B 🔺
@sentry/vue (incl. Tracing) 54.95 kB +0.32% +171 B 🔺
@sentry/svelte 29.85 kB +0.09% +26 B 🔺
@sentry/remix (Remix 3 client bundle) 57.02 kB +0.34% +188 B 🔺
CDN Bundle 31.56 kB +0.1% +30 B 🔺
CDN Bundle (incl. Tracing) 52.52 kB +0.33% +172 B 🔺
CDN Bundle (incl. Logs, Metrics) 33.77 kB +0.15% +48 B 🔺
CDN Bundle (incl. Tracing, Logs, Metrics) 54.46 kB +0.3% +161 B 🔺
CDN Bundle (incl. Replay, Logs, Metrics) 74.7 kB +0.08% +56 B 🔺
CDN Bundle (incl. Tracing, Replay) 90.19 kB +0.2% +175 B 🔺
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) 92.11 kB +0.16% +147 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) 96.34 kB +0.17% +163 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) 98.28 kB +0.14% +130 B 🔺
CDN Bundle - uncompressed 92.98 kB +0.07% +60 B 🔺
CDN Bundle (incl. Tracing) - uncompressed 155.83 kB +0.24% +372 B 🔺
CDN Bundle (incl. Logs, Metrics) - uncompressed 99.52 kB +0.07% +64 B 🔺
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed 161.79 kB +0.24% +376 B 🔺
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed 229.56 kB +0.03% +64 B 🔺
CDN Bundle (incl. Tracing, Replay) - uncompressed 276 kB +0.14% +372 B 🔺
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed 281.94 kB +0.14% +376 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed 289.7 kB +0.13% +372 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed 295.63 kB +0.13% +376 B 🔺
@sentry/nextjs (client) 56.75 kB +0.39% +217 B 🔺
@sentry/sveltekit (client) 52.41 kB +0.34% +175 B 🔺
@sentry/core/server 40.99 kB +0.33% +134 B 🔺
@sentry/core/browser 13.81 kB +0.71% +97 B 🔺
@sentry/node 151.96 kB +0.74% +1.11 kB 🔺
@sentry/node/import (ESM hook with diagnostics-channel injection) 83.78 kB +0.27% +220 B 🔺
@sentry/node - without tracing 94.53 kB +0.6% +560 B 🔺
@sentry/node - without channel injection 130.14 kB +0.9% +1.15 kB 🔺
@sentry/aws-serverless 102.7 kB +0.55% +558 B 🔺
@sentry/cloudflare (withSentry) - minified 210.38 kB +0.28% +568 B 🔺
@sentry/cloudflare (withSentry) 521.61 kB +0.27% +1.38 kB 🔺
@sentry/nextjs/cloudflare (withSentry) - minified 228.06 kB +0.26% +576 B 🔺

View base workflow run

@JPeer264
JPeer264 force-pushed the prepare-release/11.7.0 branch from 5289615 to 323307a Compare October 12, 2026 14:40
@JPeer264
JPeer264 enabled auto-merge October 12, 2026 14:41
@JPeer264
JPeer264 merged commit 72588e6 into master Oct 12, 2026
708 of 711 checks passed
@JPeer264
JPeer264 deleted the prepare-release/11.7.0 branch October 12, 2026 15:00
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.