Skip to content

meta(changelog): Update changelog for 11.1.0 - #24796

Merged
andreiborza merged 86 commits into
masterfrom
prepare-release/11.1.0
Sep 28, 2026
Merged

andreiborza merged 86 commits into
masterfrom
prepare-release/11.1.0

Conversation

@andreiborza

@andreiborza andreiborza commented Sep 28, 2026 •

Copy link
Copy Markdown
Member

No description provided.

timfish and others added 30 commits September 23, 2026 11:23
…on mode (#24440)

Stacked on #24437. 

When `reactComponentAnnotation._experimentalInjectIntoHtml` was set,
annotation always went through Babel, even on Vite 8. This PR ports that
mode to the fast walker, so every Rollup and Vite build now uses the
fast path. The next step moves Webpack and the Next.js Turbopack loader
over, and after that Babel can be removed.

HTML mode finds components the same way as the normal mode. The
difference is in how it handles JSX. It adds only
`data-sentry-component`, and only to the first HTML elements below each
component root, looking through fragments and component elements to find
them. The port keeps two Babel quirks so the output stays the same:
element names starting with `_` or `$` count as HTML elements, and
anonymous classes get `data-sentry-component=""`.

The new tests compare the walker with the Babel HTML plugin on both
`@babel/parser` and `oxc-parser` output.

Ref #24415
…Turbopack (#24448)

Stacked on #24440. Webpack and the Next.js Turbopack loader still
annotated React components with Babel. This PR moves them to the fast
oxc-based path, so every bundler integration now uses it. Babel stays as
the fallback when `oxc-parser` cannot load or cannot parse a file. The
next PR in the stack removes that fallback.

`createComponentNameAnnotateHooks` now tries the fast path first and
uses Babel only when the fast path does not handle the file. Webpack,
the Rollup and Vite plugins, and the Turbopack loader already call this
function, so the Rollup plugin no longer needs its own fast-path setup.

The fast path's source maps listed each annotated file by its base name
only, which dropped the directory. That is the bug from #23561, which
was fixed for the Babel path, and it would have come back for Webpack.
The maps now keep the full path, so Rollup and Vite builds that use the
fast path get full paths too.

Ref #24415
…#24449)

Stacked on #24448. Every bundler integration now annotates React
components with the fast oxc-based path. This PR removes the Babel
fallback from that path, so `@babel/core` is no longer a runtime
dependency of `@sentry/bundler-plugins`.

The `@sentry/bundler-plugins/babel-plugin` export stays, because the
React Native SDK uses it with Metro. The plugin only imports Babel types
and runs inside the user's own Babel. So `@babel/core` moves to
`devDependencies` and becomes an optional peer dependency, and the
export keeps working.

Without the fallback, `oxc-parser` leaves a file it cannot parse
unchanged, and the bundler reports the syntax error. If no parser can
load, for example on a platform without an `oxc-parser` native binary,
the plugin logs one warning and skips annotations.

Fixes #24415
# Conflicts:
#	packages/bundler-plugins/package.json
Widens the tedious version range to `<21` so tedious 20.x gets
instrumented. tedious 20 only drops support for Node < 22; the
`Connection` methods and fields we use are unchanged.

Adds a test that runs the tedious suite against v20. It only runs on
Node 22+, because tedious 20 requires Node 22.

Fixes #24643

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
chore: Manually sync master into develop
This is an initial proposal for a minimal package README format that
keeps detailed guidance in the docs, starting off with simplifying the
NestJS SDK README. Once this is in, I'll get started on updating the
remaining package README's.

---------

Co-authored-by: GPT-6 <codex@openai.com>
similar to #24618 but for @sentry/hono

Co-authored-by: GPT-6 <codex@openai.com>
similar to #24618 but for @sentry/solidstart

---------

Co-authored-by: GPT-6 <codex@openai.com>
similar to #24618 but for @sentry/angular

Co-authored-by: GPT-6 <codex@openai.com>
similar to #24618 but for @sentry/cloudflare

Co-authored-by: GPT-6 <codex@openai.com>
similar to #24618 but for @sentry/react-router

---------

Co-authored-by: GPT-6 <codex@openai.com>
similar to #24618 but for @sentry/astro

---------

Co-authored-by: GPT-6 <codex@openai.com>
similar to #24618 but for @sentry/aws-serverless

Co-authored-by: GPT-6 <codex@openai.com>
similar to #24618 but for @sentry/ember

Co-authored-by: GPT-6 <codex@openai.com>
similar to #24618 but for @sentry/remix

Co-authored-by: GPT-6 <codex@openai.com>
similar to #24618 but for @sentry/nextjs, @sentry/nuxt,
@sentry/sveltekit, and @sentry/tanstackstart-react

---------

Co-authored-by: GPT-6 <codex@openai.com>
similar to #24618 but for @sentry/browser, @sentry/react, @sentry/vue,
@sentry/svelte, @sentry/solid, and @sentry/gatsby

---------

Co-authored-by: GPT-6 <codex@openai.com>
similar to #24618 but for @sentry/node, @sentry/bun, @sentry/deno, and
@sentry/google-cloud-serverless

---------

Co-authored-by: GPT-6 <codex@openai.com>
similar to #24618 but for @sentry/effect, @sentry/elysia, and
@sentry/wasm

---------

Co-authored-by: GPT-6 <codex@openai.com>
similar to #24618 but for @sentry/core, @sentry/browser-utils,
@sentry/server-utils, @sentry/vercel-edge,
@sentry/server-runtime-injection, @sentry-internal/integration-shims,
and @sentry-internal/replay-worker

---------

Co-authored-by: GPT-6 <codex@openai.com>
similar to #24618 but for @sentry/replay, @sentry/replay-canvas, and
@sentry/feedback

Co-authored-by: GPT-6 <codex@openai.com>
similar to #24618 but for @sentry/nitro

---------

Co-authored-by: GPT-6 <codex@openai.com>
Export `instrumentMistralAiClient` from the SvelteKit and Remix server
entry points, matching their existing AI manual wrappers. Completes the
wrapper exports for #24243.

---------

Co-authored-by: GPT-6 <codex@openai.com>
Widens the amqplib range to `<3`. amqplib 2 only changes what
`heartbeat: 0` means; the code we instrument is unchanged. Adds 2.x to
the integration test matrix and relabels the old `v2` row, which
actually ran 0.10.x, as `v0`.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Bumps conventions and uses the newly released attributes:
- `BROWSER_WEB_VITAL_INP_TARGET`,
- `BROWSER_WEB_VITAL_INP_INTERACTION_TYPE`, 
- `SENTRY_IS_LOCALHOST` and 
- `UI_RESOLVE`

Co-authored-by: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
similar to #24618 but for @sentry/opentelemetry

---------

Co-authored-by: GPT-6 <codex@openai.com>
Our Turbopack loaders imported helpers from
`@sentry/bundler-plugins/core`, which also loads the `sentry` CLI
package. The loaders need only two small helpers, so this adds a
separate internal entry point, `@sentry/bundler-plugins/loader-utils`,
that exports just those and doesn't touch the CLI.

This came up because the Next.js 16 canary build with Turbopack fails:
Turbopack follows the loaders' imports into the CLI package and tries to
compile one of its TypeScript type files (`index.d.cts`) as code. That's
a bug on the Next.js side, but the loaders shouldn't pull in the CLI in
the first place.

Fixes #24650

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
similar to #24618 but for @sentry/bundler-plugins, @sentry/typescript,
@sentry/eslint-config-sdk, and @sentry/eslint-plugin-sdk

---------

Co-authored-by: GPT-6 <codex@openai.com>
similar to #24618 but for @sentry/profiling-node and @sentry/node-native

---------

Co-authored-by: GPT-6 <codex@openai.com>
andreiborza and others added 5 commits September 28, 2026 12:30
## What

`showReportDialog` accepts a new `onError` callback. The SDK calls it
when the dialog cannot be shown: the dialog script fails to load, or
there is no event ID.

## Why

Ad blockers or network problems can block the dialog script, and there
was no way to detect it. Apps can now tell users why the dialog did not
open.

Closes: #24765

---------

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
Adds a `cloudflare-think` e2e app that records what a Think agent
produces with the SDK as it stands today, before any Think-specific code
exists. Same shape as `node-eve` and `cloudflare-mastra`.

The setup is the whole point: the worker imports no Sentry API at all.

```ts
// vite.config.mts
export default defineConfig({
  plugins: [cloudflare(), sentryCloudflareVitePlugin()],
});
```

```ts
// src/index.ts
export class ThinkAgent extends Think<Env> {
  getModel() { return openrouter('openai/gpt-4o-mini'); }
  getSystemPrompt() { /* ... */ }
  getTools() { /* get_weather, fail_now */ }
}
```

`sentryCloudflareVitePlugin()` detects `extends Think` and wraps the
export at build time, and `ai` publishes the telemetry
`vercelAIIntegration` already consumes. Options come from
`src/instrument.server.ts` by convention.

## What works today

Five checks, the same set the other AI apps cover:

1. **The gen_ai hierarchy.** `gen_ai.invoke_agent`, one
`gen_ai.generate_content` per step, and `gen_ai.execute_tool`, correctly
nested and all with origin `auto.vercelai.channel`. Token usage is right
per step and rolls up onto the agent span; prompts, tool arguments and
results, tool definitions and finish reasons are all present.
2. **Tool errors.** A throw becomes an issue with mechanism
`auto.vercelai.channel` and marks only its own span errored, leaving the
model calls `ok`.
3. **Manual spans.** A `Sentry.startSpan` raised inside a tool nests
under that tool's span, so Think runs tools inside the async context the
SDK opened.
4. **The provider request.** The outgoing model call joins the turn's
trace rather than running beside it.
5. **Other instrumented libraries.** `dataloader` spans land in the same
trace, so the orchestrion module transform reaches a bundled Think
worker with no `--import` bootstrap, unlike the Node apps.

## What does not

The provider HTTP call nests under `gen_ai.generate_content` on `ai` v7
but is a sibling of it on v4 to v6. That difference is ours: only v7's
native channel binds the model-call span into async context. Asserted
per lane so the gap is recorded rather than hidden.

The agent span is named from `this.constructor.name`, which the Vite
plugin's class rename currently mangles into `invoke_agent
__SENTRY_ORIGINAL_ThinkAgent__`. Not asserted here. A follow-up fixes it
and adds the assertion.

There is no `gen_ai.agent.name`, and none of the
`cloudflare.agents.turn.*` context Think supplies (agent id, Durable
Object conversation id, turn trigger, continuation) reaches a span.
Think sends all of it, as `runtimeContext` on v7 and
`experimental_telemetry.metadata` on v6, and neither subscriber reads
either field.

## Notes

`sentryTest.optional: true` keeps this in the optional matrix like
`node-eve`, since it makes real OpenRouter calls. The v6 lane rides
along as an `optionalVariants` entry rather than a second app.
`E2E_OPENROUTER_API_KEY` is already wired in `build.yml` from the eve
PR, so CI needs no change.

ref JS-3568

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

---------

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
…ges (#24792)

Turbopack runs webpack loaders in a separate process, once per matched
file. Our orchestrion rule matched every server-side JS file, including
all of `node_modules`. Large apps paid that cost for files the transform
never touches. The reporter's build went from 2 minutes to a 45 minute
Vercel timeout after upgrading to v11, where build-time instrumentation
is on by default.

The rule now has a `path` condition that only matches files inside
instrumented packages. It matches `node_modules/<name>/` anywhere in the
path, so hoisted, workspace, scoped and pnpm layouts all work. The
loader already skipped every other file, so the set of transformed
modules does not change. Next.js 16.0.0 already supports RegExp `path`
conditions.

The webpack path is unchanged. Webpack runs loaders in process, so the
broad rule is cheap there.

Fixes #24764

Co-authored-by: Claude Fable 5.1 <noreply@anthropic.com>
`McpServer` instances currently only produce spans when the user
manually calls `wrapMcpServerWithSentry`. This adds an `mcpServer`
integration (default, tracing) that wraps every `McpServer` at
construction through an orchestrion constructor hook, so no manual call
is needed.

Both SDK families are covered: `@modelcontextprotocol/server` (v2) —
whose `McpServer` lives in a content-hashed tsdown chunk, so it's
matched by a regex `filePath` with `className: 'McpServer'` as the real
selector, the same shape `mastra.ts` uses — and
`@modelcontextprotocol/sdk` (v1). The subscriber just hands the
constructed instance to the existing `wrapMcpServerWithSentry`, reusing
all of its transport/handler instrumentation rather than reimplementing
anything.

`wrapMcpServerWithSentry` stays fully supported. Re-wrapping an
already-wrapped instance never patches it twice, but capture options are
tracked per server (WeakMap): a later call fills in
`recordInputs`/`recordOutputs` left unset by an earlier wrap. So the
auto-wrap's defaults yield to a later manual override — a user can still
`wrapMcpServerWithSentry(server, { recordInputs: false })` to opt out —
while an explicit first wrap still wins. The transport reads these
options per message.

`mcpServerIntegration` is re-exported from the runtime packages that
surface the other tracing integrations (node, bun, deno, elysia, aws/gcp
serverless, astro), alongside `mastraIntegration`.

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

---------

Co-authored-by: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
#24680)

This PR fixes a bug where a potentially set `basePath` would be
preprended to absolute URL router pushes, resulting in incorrect
navigation spans. This is done by hardening the check whether to apply
the `basePath` or not.

Fixes #24672
@andreiborza
andreiborza force-pushed the prepare-release/11.1.0 branch from 87af887 to 76df2a3 Compare September 28, 2026 13:52
@andreiborza
andreiborza marked this pull request as ready for review September 28, 2026 13:55
@andreiborza
andreiborza requested review from a team as code owners September 28, 2026 13:55
@andreiborza
andreiborza requested review from JPeer264, Lms24, isaacs, logaretm, nicohrubec and s1gr1d and removed request for a team September 28, 2026 13:55
@github-actions

github-actions Bot commented Sep 28, 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.24 kB +0.03% +6 B 🔺
@sentry/browser - with treeshaking flags 27.5 kB +0.04% +10 B 🔺
@sentry/browser - with treeshaking flags tracing without tracing 27.4 kB +0.01% +1 B 🔺
@sentry/browser (incl. Tracing) 51.15 kB -0.01% -3 B 🔽
@sentry/browser (incl. Tracing + Span Streaming) 51.17 kB +0.02% +8 B 🔺
@sentry/browser (incl. Tracing, Profiling) 54.18 kB +0.03% +12 B 🔺
@sentry/browser (incl. Tracing, Replay) 90.76 kB +0.02% +15 B 🔺
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags 79.86 kB +0.02% +11 B 🔺
@sentry/browser (incl. Tracing, Replay with Canvas) 95.46 kB +0.02% +18 B 🔺
@sentry/browser (incl. Tracing, Replay, Feedback) 108.41 kB -0.01% -9 B 🔽
@sentry/browser (incl. Feedback) 46.76 kB +0.02% +8 B 🔺
@sentry/browser (incl. sendFeedback) 34.3 kB +0.03% +10 B 🔺
@sentry/browser (incl. FeedbackAsync) 39.41 kB +0.06% +22 B 🔺
@sentry/browser (incl. Metrics) 30.25 kB +0.01% +2 B 🔺
@sentry/browser (incl. Logs) 30.51 kB +0.05% +14 B 🔺
@sentry/browser (incl. Metrics & Logs) 31.18 kB +0.05% +14 B 🔺
@sentry/react 31.08 kB +0.33% +102 B 🔺
@sentry/react (incl. Tracing) 53.54 kB +0.18% +96 B 🔺
@sentry/vue 36.74 kB +0.05% +15 B 🔺
@sentry/vue (incl. Tracing) 53.7 kB +0.03% +12 B 🔺
@sentry/svelte 29.26 kB +0.03% +8 B 🔺
CDN Bundle 31.02 kB +0.27% +83 B 🔺
CDN Bundle (incl. Tracing) 51.77 kB +0.16% +82 B 🔺
CDN Bundle (incl. Logs, Metrics) 33.29 kB +0.3% +98 B 🔺
CDN Bundle (incl. Tracing, Logs, Metrics) 53.75 kB +0.18% +92 B 🔺
CDN Bundle (incl. Replay, Logs, Metrics) 74 kB +0.12% +88 B 🔺
CDN Bundle (incl. Tracing, Replay) 89.36 kB +0.11% +97 B 🔺
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) 91.33 kB +0.11% +98 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) 95.53 kB +0.11% +100 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) 97.5 kB +0.1% +92 B 🔺
CDN Bundle - uncompressed 91.66 kB +0.3% +267 B 🔺
CDN Bundle (incl. Tracing) - uncompressed 154.03 kB +0.18% +267 B 🔺
CDN Bundle (incl. Logs, Metrics) - uncompressed 98.23 kB +0.28% +267 B 🔺
CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed 159.99 kB +0.17% +267 B 🔺
CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed 227.8 kB +0.12% +267 B 🔺
CDN Bundle (incl. Tracing, Replay) - uncompressed 273.76 kB +0.1% +267 B 🔺
CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed 279.7 kB +0.1% +267 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed 287.46 kB +0.1% +267 B 🔺
CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed 293.39 kB +0.1% +267 B 🔺
@sentry/nextjs (client) 55.78 kB - -
@sentry/sveltekit (client) 51.59 kB +0.03% +11 B 🔺
@sentry/core/server 39.99 kB +0.17% +65 B 🔺
@sentry/core/browser 13.63 kB - -
@sentry/node 141.89 kB +6.01% +8.04 kB 🔺
@sentry/node/import (ESM hook with diagnostics-channel injection) 82.88 kB +0.59% +481 B 🔺
@sentry/node - without tracing 90.9 kB +0.59% +526 B 🔺
@sentry/node - without channel injection 120.26 kB +7.01% +7.87 kB 🔺
@sentry/aws-serverless 99.14 kB +0.47% +460 B 🔺
@sentry/cloudflare (withSentry) - minified 206.62 kB +0.12% +236 B 🔺
@sentry/cloudflare (withSentry) 514.02 kB +0.11% +527 B 🔺

View base workflow run

…ntegration (#24797)

## What

The MCP server integration now uses the shared diagnostics channel
wrappers, so its subscription stays alive on Bun.

## Why

#24529 and #24632 merged at the same time, and the direct
`node:diagnostics_channel` import now fails lint on `develop` and on the
11.1.0 release PR.

Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com>
@andreiborza
andreiborza force-pushed the prepare-release/11.1.0 branch from 76df2a3 to c977a05 Compare September 28, 2026 14:23
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@andreiborza
andreiborza force-pushed the prepare-release/11.1.0 branch from c977a05 to 816e546 Compare September 28, 2026 14:24
@andreiborza
andreiborza merged commit c25a856 into master Sep 28, 2026
337 checks passed
@andreiborza
andreiborza deleted the prepare-release/11.1.0 branch September 28, 2026 14:40
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.