@sentry/server-utils
11.9.0 · 23 Oct 2026MIT20.1M / weekRepositoryHomepagenpmAtom feed
35 stable releases, newest first, by release line. Notes are quoted as the maintainers published them.
- 11.x · latest line
11.9.0
23 Oct 2026Rename
diagnostic_channel, fetch and gRPC span originsSome span origins changed their names to match the other v11 origins:
If you have
ignoreSpansrules, queries or alerts on the old origins, change them to use the new origins.deno: Add incoming request options to
denoServeIntegrationdenoServeIntegrationnow acceptsignoreRequestBody,ignoreIncomingRequests,ignoreStaticAssets,spans,onSpanCreatedandonSpanEnd, with the same meaning as indenoHttpIntegration. The callbacks receive the webRequest.ignoreStaticAssetsdefaults totrue, soDeno.serveno longer creates spans forGETrequests to common static assets such asfavicon.ico,robots.txtor*.jsfiles. To keep these spans, setdenoServeIntegration({ ignoreStaticAssets: false }).Deno.servespans also follow the client's tracing configuration by default, so the integration does not start spans when tracing is disabled.deno: Record request sessions for
Deno.servedenoServeIntegrationnow records a request session for each incoming request, asdenoHttpIntegrationdoes fornode:http. This gives release health and crash-free rates forDeno.serveapps. Sessions are sent only when areleaseis set. To turn them off, setdenoServeIntegration({ sessions: false }).sessionFlushingDelayMSsets how long the SDK waits before it sends the session aggregate.
Important Changes
Rename
diagnostic_channel, fetch and gRPC span originsSome span origins changed their names to match the other v11 origins:
auto.graphql.diagnostic_channelis nowauto.graphql.graphql.auto.db.redis.diagnostic_channel,auto.db.mysql2.diagnostic_channelandauto.db.mongoose.diagnostic_channelnow end in.native_channel.auto.http.wintercg_fetchis nowauto.http.fetch, as on Bun, Deno and Cloudflare.auto.grpc.serverlessis nowauto.grpc.google_cloud.
If you have
ignoreSpansrules, queries or alerts on the old origins, change them to use the new origins.deno: Add incoming request options to
denoServeIntegrationdenoServeIntegrationnow acceptsignoreRequestBody,ignoreIncomingRequests,ignoreStaticAssets,spans,onSpanCreatedandonSpanEnd, with the same meaning as indenoHttpIntegration. The callbacks receive the webRequest.ignoreStaticAssetsdefaults totrue, soDeno.serveno longer creates spans forGETrequests to common static assets such asfavicon.ico,robots.txtor*.jsfiles. To keep these spans, setdenoServeIntegration({ ignoreStaticAssets: false }).Deno.servespans also follow the client's tracing configuration by default, so the integration does not start spans when tracing is disabled.deno: Record request sessions for
Deno.servedenoServeIntegrationnow records a request session for each incoming request, asdenoHttpIntegrationdoes fornode:http. This gives release health and crash-free rates forDeno.serveapps. Sessions are sent only when areleaseis set. To turn them off, setdenoServeIntegration({ sessions: false }).sessionFlushingDelayMSsets how long the SDK waits before it sends the session aggregate.deno: Register channel injection hooks from
init()Sentry.init()in@sentry/denonow registers the diagnostics-channel injection hooks, as@sentry/nodedoes. The channel integrations now record spans without--preload=npm:@sentry/deno/import, for modules that you import afterinit(). To also instrument modules that load beforeinit(), such as static imports in your entry module, keep the preload. Withdebug: true, the SDK logs a warning when no injection is active.On Node.js, tracing-hooks messages now show with
debug: trueinstead of withDEBUG=@apm-js-collab/*.nextjs: Add a tunnel route handler that sends only the event payload to Sentry
The
tunnelRouteoption can now send events through a route handler in your app. The handler forwards only the event payload to Sentry, and no request headers. To use it, add this file next to yourtunnelRouteoption:// app/sentry-tunnel/route.ts (or src/app/sentry-tunnel/route.ts) export { POST } from '@sentry/nextjs/tunnel';The handler accepts events for the DSN of your server SDK. To accept other DSNs, use
createSentryTunnelRoute({ allowedDsns })from the same import. Without the file, the tunnel route works as before.Also, the server no longer sends spans of tunnel requests when span streaming is on, because these spans only show the SDK's own traffic.
nextjs: Never emit trace meta tags from a prerender
Pageloads of apps with
cacheComponentsenabled are connected to their server request again. Pages that Next.js prerenders no longer carry trace information, so a cached page can no longer connect visitors to a request that was not theirs. This also applies to ISR pages. The pageload waits for the trace information when it arrives with the part of the page that streams in after a cached shell.If you set up OpenTelemetry yourself and register
SentryPropagator, registerNextSentryPropagatorinstead and pass your tracer provider tomarkPrerendersOnTracerProvider, so that your prerendered pages carry no trace information either.nextjs: Send tunnel route requests with
credentials: 'omit'With
tunnelRouteand no tunnel route handler,@sentry/nextjsnow sends events from the browser withcredentials: 'omit', because the tunnel route does not need cookies. If a layer in front of your app checks cookies before it lets requests through (for example Vercel Deployment Protection), you can send them again in your browserSentry.initcall:// instrumentation-client.ts Sentry.init({ transportOptions: { fetchOptions: { credentials: 'same-origin' } }, });nitro: Report a single
http.serverspan per requestA Nitro request now creates only one
http.serverspan. The nestedhttp.serverspans with the originsauto.http.nitro.srvxandauto.http.nitro.h3are removed. h3 route handlers now get ahandlerspan, and middleware spans are direct children of thehttp.serverspan. If you have queries or alerts on the removed spans, change them to use thehttp.serverspan or thehandlerspan.Use
auto.http.http_serverorigin for allnode:httpserver spansOn Bun and Deno,
node:httpserver spans now have the originauto.http.http_serverinstead ofauto.http.server, as on Node.js. On Node.js, nothing changes.Bun.servespans keepauto.http.bun.serveandDeno.servespans keepauto.http.deno. If you haveignoreSpansorbeforeSendSpanrules, queries or alerts onauto.http.server, change them to useauto.http.http_server.
Other Changes
browser: Add
LoaderSentrytype exportcloudflare: Add
isStreamingResponseoption and detect streamed RSC responsescore: Add
dataCollection.mcpoptioncore: Limit the body size of tunnel requests
nextjs: Link
use cachehits to their fill across instancesnextjs: Wait for the resumed part of a document before starting the pageload
nitro: Merge the nitro integrations into a single
nitroIntegrationserver-utils: Emit
execute_toolspans for Anthropic'sbeta.messages.toolRunner()astro: Defer to
@sentry/cloudflare/viteon Cloudflare Workersaws-serverless: End the
function.awsspan when a callback-style handler calls backbrowser: Skip profiling for unsampled active root spans
bundler-plugins: Check
globalThisbeforeglobalin the injected snippetbundler-plugins: Inject the release only into chunks that load at startup
cloudflare: auto-instrument a re-exported default export
cloudflare: Deliver check-ins and events from forked isolation scopes
cloudflare: Don't hold Durable Object invocations open with the segment-end flush timer
cloudflare: Keep default exports intact when auto-instrumenting
core: Use
trace_metricdata category for metrics rate limits and client reportsdeno: Re-export portable helpers that Cloudflare exposes
elysia: Set SDK metadata on the options passed to init
elysia: Use Node transport on Node runtimes
hono: Read connection info from the runtime instead of Hono helpers
nextjs: Only inject applicationKey metadata into browser bundles
nitro: Use forward slashes for resolved plugin paths on Windows
node,vercel-edge,bundler-plugins: Ignore commit env vars set to their own name
node: Guard user callbacks in the
node:httpserver instrumentationnode: Only read JavaScript and TypeScript source files in ContextLines
node: Restore tsx runtime instrumentation
nuxt: Delete Sentry-enabled source maps from Nitro output directories
nuxt: Keep sourcesContent in Nuxt 5 server source maps
react: Don't crash ErrorBoundary when
error.causeis not an Errorreact: Match React Router navigations against root routes only
server-runtime-injection: Load ESM hook without the build/esm package.json marker
server-utils: Bundle the CommonJS dependencies of instrumented packages on Vite 8
server-utils: Keep OpenAI decision confidence on Vercel AI decide spans
server-utils: Nest LangChain run spans under their parent run
server-utils: Stop the orchestrion Vite plugin from bundling the CJS build of @sentry/server-utils
solidstart: Read server action route from the request's root span
tanstackstart-react: Delete only the source maps that Sentry enabled
vercel-edge: Expose portable tracing and feature flag helpers
Internal Changes
Work in this release was contributed by @4ktLuffy, @adityareddy-dev, @dasilvaluis, @faizansaiyed123, @jpdefo, @Jxxunnn, @mikamikasuki, @philipatkinson, @rubas, and @Shubham-Padkonde. Thank you for your contributions!
bun: Add incoming request options and request sessions to
bunServerIntegrationbunServerIntegrationnow accepts the same options asdenoServeIntegration:ignoreRequestBody,ignoreIncomingRequests,ignoreStaticAssets,spans,onSpanCreated,onSpanEnd,sessionsandsessionFlushingDelayMS. The callbacks receive the webRequest.Bun.servenow records a request session for each incoming request. Sessions are sent only when areleaseis set. To turn them off, setbunServerIntegration({ sessions: false }).ignoreStaticAssetsdefaults totrue, soBun.serveno longer creates spans forGETrequests to common static assets such asfavicon.ico,robots.txtor*.jsfiles. To keep these spans, setbunServerIntegration({ ignoreStaticAssets: false }).Bun.servespans also follow the client's tracing configuration by default, so the integration does not start spans when tracing is disabled. Errors thrown forOPTIONSandHEADrequests are now captured.node: Add
onSpanEndtohttpIntegrationhttpIntegrationandhttpServerSpansIntegrationnow acceptonSpanEnd, a hook that runs when the response for an incoming request finishes, before its span ends. Use it to change the span based on the response. Deno and Bun already have this option.bun: Inject debug IDs and upload source maps in
sentryBunPluginsentryBunPluginfrom@sentry/bun/pluginnow accepts the same options assentryEsbuildPlugin(org,project,authToken,release,sourcemaps, ...). WhenBun.buildwrites source maps tooutdir, the plugin injects the debug ID that Bun writes into each bundle, injects the release, and uploads the source maps at the end of the build. You no longer need to runsentry sourcemap injectandsentry sourcemap uploadafter the build.Like the other bundler plugins,
sentryBunPluginnow sends build telemetry and injects the release it detects (for example, from git). To turn off telemetry, settelemetry: false.
11.8.0
15 Oct 2026bundler-plugins: Release
@sentry/webpack-plugin,@sentry/vite-plugin,@sentry/rollup-pluginand@sentry/esbuild-pluginfrom the SDK repositoryThe four standalone bundler plugins now release together with the SDK, so their version jumps from 5.4.1 to the SDK version. Each package re-exports the matching
@sentry/bundler-pluginsentry point, which we recommend for new projects. The plugin options do not change, but the update brings these breaking changes:server-utils: Instrument the OpenAI decisions API as
gen_ai.decidespansOpenAI
decisions.createcalls now creategen_ai.decidespans.core: Support SuppressedError in LinkedErrors integration
Important Changes
bundler-plugins: Release
@sentry/webpack-plugin,@sentry/vite-plugin,@sentry/rollup-pluginand@sentry/esbuild-pluginfrom the SDK repositoryThe four standalone bundler plugins now release together with the SDK, so their version jumps from 5.4.1 to the SDK version. Each package re-exports the matching
@sentry/bundler-pluginsentry point, which we recommend for new projects. The plugin options do not change, but the update brings these breaking changes:Node.js 20.19.0 or higher is required.
@sentry/webpack-pluginrequires webpack 5.1 or higher. The@sentry/webpack-plugin/webpack5entry point still works and exports the same plugin as@sentry/webpack-plugin.The plugins use the
sentryCLI SDK instead of@sentry/cli. Sentry self-hosted 26.4.2 or higher is supported. Lower versions may continue to work.Deploys that the plugins create on Vercel use the value of
VERCEL_TARGET_ENV(production,previewor a custom name) as their environment, instead ofvercel-productionorvercel-preview. To keep the old value, setrelease.deploy.env.
server-utils: Instrument the OpenAI decisions API as
gen_ai.decidespansOpenAI
decisions.createcalls now creategen_ai.decidespans.
Other Changes
core: Support SuppressedError in LinkedErrors integration
astro: Delete generated source maps for static output
astro: Upload source maps of Astro 7's prerender build
browser: Apply
urlQueryParamsto the Referer headercloudflare: auto-instrument when wrangler
mainis a packagehono: Expose runtime-specific SDK options
node: Instrument Prisma 8 CollectionBase from rc.15
nuxt: Skip 3xx/4xx Nuxt errors in the vue:error hook
server-utils: Read pi-durable 1.2.0 tool results from
outputserver-utils: Transform modules once when two Sentry Vite plugins add orchestrion
sveltekit: Add op and origin to Kit's
sveltekit.endpointspantanstackstart-react: Keep parametrized route names in Nitro 3 builds
tanstackstart-react: Rewrite source paths of split route modules
Internal Changes
license: Add cli FSL notice to package licenses
Work in this release was contributed by @kunal649 and @mketiku. Thank you for your contributions!
11.7.0
12 Oct 2026cloudflare: Add opt-in cron monitoring for Cron Triggers
The new
cronTriggersIntegrationsends check-ins for Cron Triggers. Each check-in includes the schedule fromcontroller.cron, so Sentry creates the monitor on the first run. The integration is opt-in, because monitors are billed.Cron Triggers have no names, so map each cron expression of your wrangler config to a monitor slug. With the Sentry Cloudflare Vite plugin, add the integration to
src/instrument.server.ts:// src/monitorSlugs.ts export const monitorSlugs: Record<string, string> = { '30 9 * * MON-FRI': 'daily-report', }; // src/instrument.server.ts import * as Sentry from '@sentry/cloudflare'; import { monitorSlugs } from './monitorSlugs'; export default Sentry.defineCloudflareOptions(env => ({ dsn: env.SENTRY_DSN, integrations: [Sentry.cronTriggersIntegration({ monitorSlug: cron => monitorSlugs[cron] })], })); // src/index.ts import { monitorSlugs } from './monitorSlugs'; export default { async scheduled(controller, env) { switch (monitorSlugs[controller.cron]) { case 'daily-report': // Your daily report job break; } }, };The
monitorSlugfunction can also return monitor settings, for example{ monitorSlug: 'daily-report', maxRuntime: 30 }, orundefinedto send no check-ins for a trigger. WithoutmonitorSlug, the SDK derives the slug from the cron expression. If you deploy withwranglerdirectly, pass the same integration toSentry.withSentry.node: Add neonIntegration for @neondatabase/serverless (#25164, #25176)
The new
neonIntegrationcreatesdbspans for queries of the@neondatabase/serverlessdriver: for the WebSocketClientandPool, and for the HTTPneon()function. This includes theneon-httpandneon-serverlessadapters of Drizzle. The integration is on by default when tracing is enabled.node: Stop sending the process session once request sessions are tracked
Node servers sent release health data two times: as request session aggregates, and as the process session of
processSessionIntegration. An error in a request also marked the process session as errored, so the SDK counted the error two times. Now the SDK drops the process session when it tracks the first request session. Scripts, CLIs and workers that do not serve requests keep the process session, and so do servers withhttpServerIntegration({ sessions: false }). This changes the release health numbers of Node servers, because they no longer send the errored or crashed update of the process session.
Important Changes
cloudflare: Add opt-in cron monitoring for Cron Triggers
The new
cronTriggersIntegrationsends check-ins for Cron Triggers. Each check-in includes the schedule fromcontroller.cron, so Sentry creates the monitor on the first run. The integration is opt-in, because monitors are billed.Cron Triggers have no names, so map each cron expression of your wrangler config to a monitor slug. With the Sentry Cloudflare Vite plugin, add the integration to
src/instrument.server.ts:// src/monitorSlugs.ts export const monitorSlugs: Record<string, string> = { '30 9 * * MON-FRI': 'daily-report', }; // src/instrument.server.ts import * as Sentry from '@sentry/cloudflare'; import { monitorSlugs } from './monitorSlugs'; export default Sentry.defineCloudflareOptions(env => ({ dsn: env.SENTRY_DSN, integrations: [Sentry.cronTriggersIntegration({ monitorSlug: cron => monitorSlugs[cron] })], })); // src/index.ts import { monitorSlugs } from './monitorSlugs'; export default { async scheduled(controller, env) { switch (monitorSlugs[controller.cron]) { case 'daily-report': // Your daily report job break; } }, };The
monitorSlugfunction can also return monitor settings, for example{ monitorSlug: 'daily-report', maxRuntime: 30 }, orundefinedto send no check-ins for a trigger. WithoutmonitorSlug, the SDK derives the slug from the cron expression. If you deploy withwranglerdirectly, pass the same integration toSentry.withSentry.node: Add neonIntegration for @neondatabase/serverless (#25164, #25176)
The new
neonIntegrationcreatesdbspans for queries of the@neondatabase/serverlessdriver: for the WebSocketClientandPool, and for the HTTPneon()function. This includes theneon-httpandneon-serverlessadapters of Drizzle. The integration is on by default when tracing is enabled.node: Stop sending the process session once request sessions are tracked
Node servers sent release health data two times: as request session aggregates, and as the process session of
processSessionIntegration. An error in a request also marked the process session as errored, so the SDK counted the error two times. Now the SDK drops the process session when it tracks the first request session. Scripts, CLIs and workers that do not serve requests keep the process session, and so do servers withhttpServerIntegration({ sessions: false }). This changes the release health numbers of Node servers, because they no longer send the errored or crashed update of the process session.server-utils: Record decide calls as
gen_ai.decidespans (#25270, #25272, #25274, #25281)Vercel AI
experimental_decidecalls, Mastra classifier evaluations, TypeSafe and LangChain Jev calls, and Workers AI calls to TypeSafe Jev and Cloudflare Clef models now createdecide <model>spans with the opgen_ai.decide. Before, these spans had the opgen_ai.evaluate, which is now deprecated in the Sentry conventions. If you usegen_ai.evaluatein queries, alerts or dashboards, change it togen_ai.decide.browser: Apply
urlQueryParamsto more URLs (#25262, #25289)The
dataCollection.urlQueryParamsoption now also filters the query parameters of these URLs:the page URL in
event.request.urlthe
browser.*andresource.*span names withtraceLifecycle: 'static'the LCP URL attributes
lcp.urlandbrowser.web_vital.lcp.urlthe URLs in fetch, XHR and navigation breadcrumbs
the
ui.element.urlattribute ofelementTimingIntegration
Before this fix, these URLs could send sensitive query values, for example
?jwt=..., to Sentry.nextjs: Apply top-level
bundleSizeOptimizationsto webpack and Turbopack buildsThe top-level
bundleSizeOptimizationsoption now removes unused SDK code in webpack and in Turbopack builds. Before, the tree-shaking options had no effect on Turbopack. Thewebpack.treeshakeoption is deprecated. It still works, but when you set both options,bundleSizeOptimizationstakes precedence.
Other Changes
nuxt: Detect the server API with
@nuxt/kit4.6bundler-plugins: Escape JSON in generated injection code
core: Don't mark http client spans as errors when the caller aborts
core: Record
spanclient report outcomes when discarding transactionscore: Record client outcomes when beforeSend callbacks return invalid values
core: Record span outcomes for spans dropped when building a transaction
core: Report actual item count in client reports of envelope send failures
core: Strip internal custom span name from streamed spans
nextjs: Filter query parameters in request error context
node: Don't mark fetch spans as errors when the caller aborts
nuxt: Delete public source maps before Nitro lists its public assets
nuxt: Keep
@sentry/server-runtime-injectionexternal on Nitro v3nuxt: Remove @opentelemetry/resources dev alias
profiling-node: Stop the trace lifecycle profiler when spans are unsampled
react-router: Respect custom default integrations
remix: Respect custom default integrations
server-utils: Avoid quadratic SQL summary regex backtracking
server-utils: End Express layer spans when the client aborts
server-utils: Record amqplib consumer info before the first delivery and instrument the callback API
server-utils: Stop treating previous_response_id as the OpenAI conversation id
sveltekit: Read load event pathname untracked
sveltekit: Stop adapter-node 6 output dir probe from deleting the build
Internal Changes
Work in this release was contributed by @Philip-Nwabuwa and @4ktLuffy. Thank you for your contributions!
11.6.0
8 Oct 2026nextjs: Add
@sentry/nextjs/cloudflareThe new
@sentry/nextjs/cloudflareentry point exportswithSentryfor the Worker entry of a Next.js app on Cloudflare Workers, for example.open-next/worker.jsof OpenNext. It iswithSentryof@sentry/cloudflarewith the Next.js server handling added, so a Next.js app on Workers gets the same spans as on Node.js.import * as Sentry from '@sentry/nextjs/cloudflare'; import handler from './.open-next/worker.js'; export default Sentry.withSentry( env => ({ dsn: env.SENTRY_DSN, tracesSampleRate: 1.0, }), handler, );server-utils: Add instrumentation for pi-durable
The new
piDurableIntegrationtraces agents built with pi-durable: each run, with its model requests and tool calls.core: Correct sleep clock drift on telemetry timestamps
When a device sleeps, the
performance.now()clock of the browser stops. Before this change, timestamps of spans and other telemetry recorded after the sleep could be too early. The SDK now detects this drift and corrects its time origin, also for spans created from performance entries. Span end times are now computed from theperformance.now()duration since the span start, like in OpenTelemetry (#24903).
Important Changes
nextjs: Add
@sentry/nextjs/cloudflareThe new
@sentry/nextjs/cloudflareentry point exportswithSentryfor the Worker entry of a Next.js app on Cloudflare Workers, for example.open-next/worker.jsof OpenNext. It iswithSentryof@sentry/cloudflarewith the Next.js server handling added, so a Next.js app on Workers gets the same spans as on Node.js.import * as Sentry from '@sentry/nextjs/cloudflare'; import handler from './.open-next/worker.js'; export default Sentry.withSentry( env => ({ dsn: env.SENTRY_DSN, tracesSampleRate: 1.0, }), handler, );server-utils: Add instrumentation for pi-durable
The new
piDurableIntegrationtraces agents built with pi-durable: each run, with its model requests and tool calls.core: Correct sleep clock drift on telemetry timestamps
When a device sleeps, the
performance.now()clock of the browser stops. Before this change, timestamps of spans and other telemetry recorded after the sleep could be too early. The SDK now detects this drift and corrects its time origin, also for spans created from performance entries. Span end times are now computed from theperformance.now()duration since the span start, like in OpenTelemetry (#24903).
Other Changes
cloudflare: Skip spans for the pi_ tables of PiHarness
remix: Propagate the server trace to Remix 3 page loads
server-utils: Map Mastra classifier evaluations to gen_ai.evaluate spans
server-utils: Record LangChain TypeSafeClassifier runs as gen_ai.evaluate spans
browser: Check for clock drift on page lifecycle events
core: Exclude attachments from internal exception events
effect: Convert Effect span times to the Sentry clock
effect: Detect HTTP spans named after the request method
node: Register Vercel keep-alive listeners once
replay: Place CLS and INP web vitals at the right time
server-utils: Record LangGraph span I/O for non-MessagesAnnotation state
sveltekit: Upload source maps with SvelteKit 3
Internal Changes
cloudflare: Wrap vinext Worker entries with
@sentry/nextjs/cloudflare
Work in this release was contributed by @zkasuran. Thank you for your contribution!
11.5.0
7 Oct 2026- deprecated
core: Deprecate SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN
core: Warn on repeated
Sentry.init()and unbind the client onclose()Sentry.init()now warns when it runs while a client is still active. For now, the new client still replaces the active client, but the active client is not closed, so state from both can mix. CallSentry.init()once, or callawait Sentry.close()before you call it again.Sentry.close()now unbinds the client it closes, so afterclose(),getClient()returnsundefined,isInitialized()returnsfalse, and a laterinit()sets up a new client. In@sentry/cloudflare, later requests no longer reuse the isolate's cached client once it is closed or closing. On the server,@sentry/nextjsand@sentry/remixnow return the active client from a repeatedinit()call, notundefined.bun: Keep server spans open until streaming responses finish
Important Changes
core: Warn on repeated
Sentry.init()and unbind the client onclose()Sentry.init()now warns when it runs while a client is still active. For now, the new client still replaces the active client, but the active client is not closed, so state from both can mix. CallSentry.init()once, or callawait Sentry.close()before you call it again.Sentry.close()now unbinds the client it closes, so afterclose(),getClient()returnsundefined,isInitialized()returnsfalse, and a laterinit()sets up a new client. In@sentry/cloudflare, later requests no longer reuse the isolate's cached client once it is closed or closing. On the server,@sentry/nextjsand@sentry/remixnow return the active client from a repeatedinit()call, notundefined.
Other Changes
bun: Keep server spans open until streaming responses finish
langchain: Derive gen_ai.conversation.id from the invoke config
nextjs: Add
code.file.pathtouse cachefill spansreact-router: Export createSentryServerInstrumentation from the Cloudflare entry
remix: Parameterize Remix 3 navigation spans
remix: Parameterize Remix 3 page load spans
remix: Report the matched route on Remix 3 HTML responses
ai: Normalize token usage and preserve cache breakdowns
browser-utils: Handle NS_ERROR_NOT_INITIALIZED from setTimeout in Firefox
bun: Add conversationIdIntegration to the default integrations
cloudflare: Detect TypeSafe Jev calls in Workers AI by model ID
cloudflare: Keep an installed OpenTelemetry async context strategy
feedback: Correct overlapping screenshot annotations and drag dimming
nextjs: Don't capture forbidden() and unauthorized() as errors
nextjs: Include basePath in request url of Pages Router errors
nextjs: Skip
initinside a request of@sentry/cloudflarenode: Flush telemetry before Vercel functions are suspended
nuxt: Do not inject debug IDs into the SSR build
react-router: Pass the project when creating a release
remix: Pass the project when creating a release
server-utils: Derive the Vercel AI conversation id from the OpenAI conversation option
server-utils: Instrument the Vercel AI experimental_decide channel event
server-utils: Map Flue messages and token usage to the gen_ai conventions
server-utils: Record Vercel AI
experimental_telemetry.metadataon gen_ai spanssveltekit: Export consoleLoggingIntegration from worker entry
tanstackstart-react: Fix server route parametrization gaps
- deprecated
core: Deprecate SEMANTIC_ATTRIBUTE_SENTRY_ORIGIN
Internal Changes
Work in this release was contributed by @minwookshin. Thank you for your contribution!
11.4.0
2 Oct 2026sveltekit: Support stable SvelteKit 3
remix: Match the Remix 3.0.0 package versions
11.3.0
2 Oct 2026- breaking
effect: Change peerDependency to v4 and fix currentSpan
@sentry/effectnow requires a stable Effect v4 release. Effect v4 beta and release candidate versions are no longer supported.@sentry/effectis in alpha, so this ships in a minor release. Remix 3 support (alpha, may break in minor releases)
nextjs: Add
cache_originspan links touse cachehit spansA
cache.getspan for a"use cache"hit now carries a span link (sentry.link.type: 'cache_origin') to thecache.putspan of the request that filled the cache entry, connecting the trace that reads a cached value to the trace that produced it.
Important Changes
Remix 3 support (alpha, may break in minor releases)
feat(remix): Add Remix 3 browser SDK with a bundled client entry
feat(remix): Add source map upload for Remix 3
feat(remix): Capture Remix 3 component render errors
feat(remix): Complete Remix 3 server error handling
feat(remix): Inject debug IDs through the Remix 3 asset server
feat(remix): Run the orchestrion transform on Remix 3 browser modules
nextjs: Add
cache_originspan links touse cachehit spansA
cache.getspan for a"use cache"hit now carries a span link (sentry.link.type: 'cache_origin') to thecache.putspan of the request that filled the cache entry, connecting the trace that reads a cached value to the trace that produced it.cloudflare: Don't treat DO constructor work as incoming RPC calls
Durable Object constructors now run in their own isolation scope. When work that the constructor starts, for example a
blockConcurrencyWhilecallback, calls a method of the instance, that call is no longer treated as an incoming RPC call, so an error the instance catches itself is no longer reported as unhandled. As a result,Sentry.setTag(),setUser()andsetContext()in a constructor now apply only to that constructor work. They no longer reach laterfetch, RPC oralarminvocations, because the scope they used to write to is shared by every Durable Object and handler in the isolate. UseinitialScopefor static data, and set per-instance data in each handler.- breaking
effect: Change peerDependency to v4 and fix currentSpan
@sentry/effectnow requires a stable Effect v4 release. Effect v4 beta and release candidate versions are no longer supported.@sentry/effectis in alpha, so this ships in a minor release.
Other Changes
astro: Register astro route provider
cloudflare: Trace TypeSafe Jev calls in Workers AI as evaluate spans
core: Add route provider API for parameterized route resolution
effect: Add opt-in for external span parents and isolate root spans
nextjs: Register nextjs route provider
nuxt: Register nuxt route provider
remix: Register remix route provider
vue: Register Vue route provider
bundler-plugins: Keep debug IDs on Vite source maps after the preload rewrite
bundler-plugins: Stabilize debug IDs for Rolldown and Vite 8 builds
cloudflare: Skip binding instrumentation work when spans are not sent
core, node, bun, deno: Align server span client address with event IP
hono: Return the existing client on repeated init in Bun and Deno
nitro: Capture errors only through the Nitro error hook
profiling-node: Send profile chunks with
client.sendEnvelopereact-router: Avoid duplicating Vite config arrays
react-router: Resolve the Cloudflare entry in Workers and skip trace meta tags in prerendered pages
server-utils: Match the Anthropic stream helper header regardless of case
server-utils: Skip Fastify 4xx errors raised before the reply status is set
tanstackstart-react: Avoid duplicating Vite config arrays
Internal Changes
license: Add cli FSL notice
Work in this release was contributed by @Shubham-Padkonde and @tobias-schnabel. Thank you for your contributions!
11.2.0
1 Oct 2026hono: Add orchestrion-based auto-instrumentation
Hono is now instrumented automatically. Request spans are named after the matched Hono route, each middleware gets its own span, and errors thrown in handlers are captured.
node/bun: Enable dedupeIntegration by default
@sentry/nodeand@sentry/bunnow includededupeIntegrationin their default integrations, like the browser, Deno, Vercel Edge and Cloudflare SDKs. When the same error is captured two times in a row, only the first event is sent. To keep the previous behavior, remove the integration:integrations: defaults => defaults.filter(integration => integration.name !== 'Dedupe').remix: Instrument Remix 3 server requests via fetch-router
On Remix 3, the SDK now adds the matched route as
http.route, the response status and a low-cardinality name to thehttp.serverspan of eachfetch-routerrequest. Start the app with--import @sentry/remix/v3/nodein place of--import remix/node-tsx.
Important Changes
hono: Add orchestrion-based auto-instrumentation
Hono is now instrumented automatically. Request spans are named after the matched Hono route, each middleware gets its own span, and errors thrown in handlers are captured.
node/bun: Enable dedupeIntegration by default
@sentry/nodeand@sentry/bunnow includededupeIntegrationin their default integrations, like the browser, Deno, Vercel Edge and Cloudflare SDKs. When the same error is captured two times in a row, only the first event is sent. To keep the previous behavior, remove the integration:integrations: defaults => defaults.filter(integration => integration.name !== 'Dedupe').remix: Instrument Remix 3 server requests via fetch-router
On Remix 3, the SDK now adds the matched route as
http.route, the response status and a low-cardinality name to thehttp.serverspan of eachfetch-routerrequest. Start the app with--import @sentry/remix/v3/nodein place of--import remix/node-tsx.
Other Changes
elysia: Export
bunRuntimeMetricsIntegrationreact-router: Support request-scoped CSP nonces in createSentryHandleRequest
aws-serverless: Keep Lambda extension polling past 300s
browser-utils: Stop leaking DOM instrumentation listeners on mismatched removals
core: Resolve escape sequences in
fmt/parameterizemessagesdeno: Flush buffered metrics and logs before process exit
node: End Express layer spans when
nextis callednode: Flush buffered metrics on process exit
nuxt: Fix CommonJS interop for force-inlined instrumented packages
server-utils: Preserve raw Anthropic response bodies
server-utils: Preserve raw Groq and Together response bodies
server-utils: Preserve raw OpenAI embeddings and conversation responses
server-utils: Preserve response bodies for OpenAI parse helpers
solidstart: Support
rolldownOptionsin instrumentation file pluginsveltekit: Skip trace meta tags when prerendering
vue: Share one root render span debounce timer across components
server-utils: Avoid quadratic SQL sanitizer output handling
Internal Changes
Work in this release was contributed by @nabi-noor, @LuccaRebelloToledo, @andasan, @breken-ai, @EmileBrunelle, and @diobriggs. Thank you for your contributions!
11.1.0
28 Sep 2026server-utils: Auto-instrument MCP servers via orchestrion
A new default
mcpServerIntegrationwraps everyMcpServerinstance (from@modelcontextprotocol/serverand@modelcontextprotocol/sdk) when it is created. You no longer need to callwrapMcpServerWithSentrymanually. You can still callwrapMcpServerWithSentryto override options, for examplerecordInputs: false.node: Support Prisma 8 in
prismaIntegrationprismaIntegrationnow creates aprisma:client:operationspan for each Prisma 8 ORM call, with the database query spans nested below it. No code changes are necessary.server-utils: Add TypeSafe integration
A new default
typesafeIntegrationcreates agen_ai.evaluatespan for each TypeSafe Jev call through@typesafe-ai/sdk(TypeSafeClient.systemOne). For runtimes without auto-instrumentation, useinstrumentTypeSafeClient().
Important Changes
server-utils: Auto-instrument MCP servers via orchestrion
A new default
mcpServerIntegrationwraps everyMcpServerinstance (from@modelcontextprotocol/serverand@modelcontextprotocol/sdk) when it is created. You no longer need to callwrapMcpServerWithSentrymanually. You can still callwrapMcpServerWithSentryto override options, for examplerecordInputs: false.node: Support Prisma 8 in
prismaIntegrationprismaIntegrationnow creates aprisma:client:operationspan for each Prisma 8 ORM call, with the database query spans nested below it. No code changes are necessary.server-utils: Add TypeSafe integration
A new default
typesafeIntegrationcreates agen_ai.evaluatespan for each TypeSafe Jev call through@typesafe-ai/sdk(TypeSafeClient.systemOne). For runtimes without auto-instrumentation, useinstrumentTypeSafeClient().server-utils: Instrument Vercel AI
experimental_evaluateVercel AI
experimental_evaluatecalls now create agen_ai.evaluatespan, with the state and questions as input messages and the answers as output messages.
Other Changes
browser: Add
onErrorcallback toshowReportDialogbun: Add client address, port and protocol to Bun.serve spans
cloudflare: Re-export httpServerIntegration from /request
remix: Add Remix 3 export subpaths and optional peer deps
server-utils: Support amqplib v2
server-utils: Support tedious v20
Injection silently no-ops on Windows (
registerHookspath)bun: Keep diagnostics channel subscriptions alive
cloudflare: Call connect() on the binding for service bindings and DO stubs
cloudflare: Keep the user's class name when auto-wrapping an export
core: Support joined set-cookie headers (split them)
nextjs: Don't prepend basePath to absolute router navigation URLs
nextjs: Limit Turbopack orchestrion loader to instrumented packages
nextjs: Stop Turbopack loaders from loading the Sentry CLI
server-runtime-injection: Keep ES modules working on Deno
server-utils: Deduplicate Google GenAI streaming tool calls
sveltekit,remix: Export Mistral manual wrapper
sveltekit: Resolve
@opentelemetry/apivia the SDK on SvelteKit 3wasm: Map wasm:// stack frames to registered debug images
bundler-plugins: Use fast component annotation for HTML injection mode
bundler-plugins: Use fast component annotation for Webpack and Turbopack
Internal Changes
server-utils: Use Bun-safe diagnostics channel wrappers in MCP integration
Work in this release was contributed by @camc314, @ihsraham, @zkasuran, @Shubham-Padkonde, and @itz-puneet. Thank you for your contributions!
11.0.0
23 Sep 2026- breaking
Remove support for initialising via
--require - breaking
Rename deprecated
http.*span attributes - breaking
Rename deprecated
net.span attributes
Version
11.0.0marks a major release of the Sentry JavaScript SDKs containing breaking changes. The goal of this release is to be better compatible with OpenTelemetry, make our integrations work across Node.js, Cloudflare, Bun and Deno through run-time and build-time instrumentation, and make span streaming and more permissive data collection the default.How To Upgrade
Please carefully read through the migration guide in the Sentry docs on how to upgrade from version 10 to version 11. Make sure to select your specific platform/framework in the top left corner: docs.sentry.io/platforms/javascript/migration/v…
A comprehensive migration guide outlining all changes can be found within the Sentry JavaScript SDK Repository: github.com/getsentry/sentry-javascript/blob/dev…
Breaking Changes
All SDKs
- breaking
Remove support for initialising via
--require - breaking
Rename deprecated
http.*span attributes - breaking
Rename deprecated
net.span attributes - breaking
Replace
skipOpenTelemetrySetupwithenableOpenTelemetrySetup - breaking
Replace the deprecated
http.targetspan attribute - breaking
Require Node
>=20.19.0as minimum supported version - breaking
Use
handlerspan op for terminal request handlers - breaking
Use
middlewarespan op for web-server middleware - breaking
frameworks: Use
functionop for framework functions - breaking
node/cloudflare: Remove deprecated
honoIntegration - breaking
v11: Drop TypeScript 3.8 support
AI integrations
- breaking
langchain: Emit gen_ai.pipeline.name instead of langchain.chain.name
- breaking
anthropic: Move Anthropic AI integration to
@sentry/server-utils - breaking
google-genai: Move Google GenAI integration to
@sentry/server-utils - breaking
langchain: Move LangChain and LangGraph integrations to
@sentry/server-utils - breaking
langgraph: Drop gen_ai.create_agent spans
- breaking
openai: Move OpenAI AI integration to
@sentry/server-utils - breaking
vercel-ai: Move Vercel AI integration to
@sentry/server-utils - breaking
workers-ai: Move Workers AI integration to
@sentry/server-utils
@sentry/angular
- breaking
angular,ember,sveltekit: Use
routerspan op for frontend routers - breaking
angular: Use
ui.mountandfunctionspan ops for tracing decorators
@sentry/astro
- breaking
astro: Drop support for Astro 3
- breaking
astro: Enable orchestrion instrumentation on Cloudflare Workers
- breaking
astro: Remove deprecated
sourceMapsUploadOptionsbuild option - breaking
astro: Remove unstable_sentryVitePluginOptions
- breaking
astro: Migrate import hook to makeOrchestrionLoader
- breaking
astro: Remove deprecated release/debug conflict workaround from BuildTimeOptionsBase
@sentry/aws-serverless
- breaking
aws-serverless: Drop
nodejs18.xfrom the Lambda layer runtimes - breaking
aws-serverless: Remove deprecated
disableAwsContextPropagationoption - breaking
aws-serverless: Emit
faas.invocation_idandcloud.resource_id - breaking
aws-serverless: Remove unused
startTraceoption andtryPatchHandler - breaking
aws-serverless: Use
function.awsspan op for Lambda invocations - breaking
aws: Use
queueSpan OP for AWS SQS & SNS messaging - breaking
aws-serverless: Migrate import hook to makeOrchestrionLoader
@sentry/browser
- breaking
browser: Remove legacy profiling option
profilesSampleRate - breaking
browser: Do not include metrics in base CDN bundle
- breaking
browser: Drop browser support for AI integrations
- breaking
browser: Extract
performance.{mark,measure}spans into newuserTimingSpansIntegration - breaking
browser: Extract interaction spans into new
interactionsIntegration - breaking
browser: Record console breadcrumbs via consoleIntegration
- breaking
browser: Rename
bfcacheIntegrationtobfcacheMetricsIntegration - breaking
browser: Report
browser.navigation.typeexactly as web-vitals does - breaking
browser: Report web vitals for bfcache restores by default
- breaking
browser: Send session status
unhandledinstead ofcrashedfor unhandled errors - breaking
browser: Switch default browser session lifecycle mode to
page - breaking
browser: Use
browser.paintspan op for paint entries - breaking
browser: Stop tagging DOMException.code on events
- breaking
browser: Use snake_case consistently for ops
- breaking
browser: Remove the web vital report event attribute
- breaking
browser: Remove deprecated
trackFetchStreamPerformanceflag - breaking
browser: Drop Safari 14 support - remove
navigationStartfallback andpagehidelisteners - breaking
browser: Remove
beforeSpanEndcallback in favor ofbeforeIdleSpanEndhook
@sentry/bundler-plugins
- breaking
bundler-plugins: Migrate from @sentry/cli to the sentry CLI SDK
- breaking
bundler-plugins: Require webpack 5.1 and remove the
webpack5entry point
@sentry/cloudflare
- breaking
cf/vercel-edge: Align request data collection with v11 defaults
- breaking
cloudflare: Auto-instrument the Worker by default in the Vite plugin
- breaking
cloudflare: Enable build-time instrumentation by default in Vite plugin
- breaking
cloudflare: Make the nodejs_compat entrypoint the default
- breaking
cloudflare: Match rpcTracePropagationBindings case-insensitively
- breaking
cloudflare: Replace enableRpcTracePropagation with rpcTracePropagationBindings
- breaking
cloudflare: Skip rate limit spans
- breaking
cloudflare: Use
functionspan op for cron, email and workflow steps - breaking
cloudflare: Remove deprecated
instrumentD1WithSentryexport - breaking
cloudflare: Remove instrumentPrototypeMethods option
- breaking
cloudflare: Remove wrapRequestHandler from main entrypoint
- breaking
cloudflare: Use shared
SentryTracerProviderfor OpenTelemetry interop
@sentry/core
- breaking
core: Remove
spanfromScopeData - breaking
core: Align request data collection with v11 defaults
- breaking
core: Default
attachStacktraceto true - breaking
core: Enable data collection by default
- breaking
core: Enable span streaming by default
- breaking
core: Flip
genAIdefaults to collect it by default - breaking
core: Gate incoming HTTP body capture on
dataCollection.httpBodies - breaking
core: Make
beforeSendSpancompatible with streamed spans by default - breaking
core: Make
tracePropagationTargetsmatching case-insensitive - breaking
core: Remove
enableMetricsoption - breaking
core: Remove
enableTruncationflag and all AI integrations truncation logic - breaking
core: Remove
endTimestampfromSentrySpanArguments - breaking
core: Remove
kindfor spans, move tosentry.kindattribute - breaking
core: Remove
queryParamsin favor ofurlQueryParams - breaking
core: Remove
scope.clear()method - breaking
core: Remove
sendDefaultPiiin favor ofdataCollection - breaking
core: Remove
sentry.sdk_meta.gen_ai.input.messages.original_lengthattribute - breaking
core: Remove
streamGenAiSpansflag - breaking
core: Remove deprecated
_experiments.enableLogsoption - breaking
core: Remove deprecated
inboundFiltersIntegration - breaking
core: Remove deprecated
instrumentLangGraph - breaking
core: Remove Unstable*PluginOptions build option types
- breaking
core: Return
StreamedSpanJSONfromspanToJSON - breaking
core: Update all spans to use
url.full,url.fragmentandurl.query - breaking
core: Use
rpcspan op for tRPC spans - breaking
server-utils,core: Use
routerspan op for backend router layers - breaking
core: Remove
enableLogsoption - breaking
core: Make
attributesin sampling context required - breaking
core: Align gen_ai cache token attributes with conventions
- breaking
core: Make
attributesrequired onScopeData - breaking
core: Migrate to SENTRY_SEGMENT_NAME_SOURCE
- breaking
core: Move
getComponentNameto browser-utils - breaking
core: Remove
getLocationHrefexport from core - breaking
core: Remove
startIdleSpanfrom server exports - breaking
core: Remove
supportsDOMError,supportsHistory,supportsReportingObserverexports - breaking
core: Remove
supportsNativeFetchexport - breaking
core: Remove deprecated
addAutoIpAddressToUserexport - breaking
core: Remove deprecated
htmlTreeAsStringfrom core - breaking
core: Remove deprecated
patchExpressModule(options)signature - breaking
core: Remove deprecated positional
spanOriginargument frominstrumentFetchRequest - breaking
core: Remove experimental
enableMetrics/beforeSendMetricflags - breaking
core: Remove orphaned deprecated Express patch APIs
- breaking
core: Rename
gen_ai.request.available_toolstogen_ai.tool.definitions - breaking
core: Rename
gen_ai.systemtogen_ai.provider.name - breaking
core: Rename
gen_ai.tool.inputtogen_ai.tool.call.arguments - breaking
core: Rename
gen_ai.tool.outputtogen_ai.tool.call.result - breaking
core: Rename Vercel AI cache/reasoning token attributes
- breaking
core: Replace deprecated
code.*andfs_errorspan attributes - breaking
core: Split browser/server-only exports out of the default entrypoint
- breaking
core: Stop setting deprecated
gen_ai.tool.typespan attribute - breaking
core: Unify
tracePropagationvspropagateTraceoption names
@sentry/deno
- breaking
deno: Align remaining denoHttpIntegration options with httpIntegration
- breaking
deno: Record console breadcrumbs via consoleIntegration
- breaking
deno: Rename orchestrion integrations to match other SDKs
- breaking
deno: Enable sessions for HTTP requests and align option names
- breaking
deno: Require deno >=2.8.3
@sentry/ember
- breaking
angular,ember,sveltekit: Use
routerspan op for frontend routers - breaking
ember: Update to v2 addon format
- breaking
ember: Use
functionandui.taskspan ops for route hooks and runloop - breaking
ember: Change
'ui.ember.component.render'toui.render
@sentry/feedback
- breaking
feedback: Always reject sendFeedback with an Error
@sentry/google-cloud-serverless
- breaking
google-cloud-serverless: Use
function.gcpop for GCP functions - breaking
google-cloud-serverless: Use
grpcspan op for GCP gRPC calls - breaking
google-cloud-serverless: Use
http.clientspan op for GCP HTTP requests - breaking
google-cloud-serverless: Migrate import hook to makeOrchestrionLoader
@sentry/nestjs
- breaking
nestjs: Remove import-in-the-middle instrumentation
- breaking
nestjs: Use
functionspan op for setup & lifecycle handlers
@sentry/nextjs
- breaking
nextjs: Auto-wire orchestrion build-time instrumentation
- breaking
nextjs: Drop
vercel-prefix from default environment and deploys - breaking
nextjs: Drop support for Next.js 13
- breaking
nextjs: Remove deprecated build-time config options
- breaking
nextjs: Remove middleware bypass for tunnel route requests
- breaking
nextjs: Remove unstable_sentryWebpackPluginOptions
- breaking
nextjs: Use
middlewarespan op for Next.js middleware - breaking
nextjs: Migrate import hook to makeOrchestrionLoader
- breaking
nextjs: Move
withSentryConfigto@sentry/nextjs/config
@sentry/nitro
- breaking
nuxt, nitro: Use convention cache ops for storage spans
@sentry/node
- breaking
node: Remove legacy profiling options (
profilesSampleRateandprofilesSampler) - breaking
express: Remove
shouldHandleErrorfromsetupExpressErrorHandler - breaking
node: Always report the encoded body size on HTTP spans
- breaking
node: Default most SDKs to a no-tracer-provider setup
- breaking
node: Drop support for Fastify
<3.21.0 - breaking
node: Make channel-based instrumentation the default
- breaking
node: Make dataloader and knex integrations channel-only
- breaking
node: Remove
init,preloadentry points andpreloadOpenTelemetry - breaking
node: Remove connect integration
- breaking
node: Remove import-in-the-middle ESM loader and deprecated instrumentation base
- breaking
node: Split childProcess integration into childProcess and worker integrations
- breaking
node: Stop inferring name for spans
- breaking
node: Use
db.queryanddbspan ops for Redis - breaking
node: Rejection warning in strict mode
- breaking
Ref!(node): Remove Fastify error handler setter
- breaking
express: Export a single ExpressIntegrationOptions type
- breaking
node: Merge
@sentry/node-coreback into@sentry/node - breaking
node: Consolidate httpIntegration options
- breaking
node: Remove
@opentelemetry/instrumentationdependency - breaking
node: Remove deprecated
prismaInstrumentationoption - breaking
node: Remove deprecated fastify exports, deprecate
setupFastifyErrorHandler - breaking
node: Remove legacy incoming HTTP span hooks and default keepAlive to true
@sentry/nuxt
- breaking
nuxt, nitro: Use convention cache ops for storage spans
- breaking
nuxt: Auto-wire orchestrion build-time instrumentation
- breaking
nuxt: Bundle server config into Nitro build
- breaking
nuxt: Enable orchestrion instrumentation on Cloudflare
- breaking
nuxt: Remove deprecated
sourceMapsUploadOptionsmodule option - breaking
nuxt: Remove unstable_sentryBundlerPluginOptions
@sentry/opentelemetry
- breaking
opentelemetry: Remove
setupEventContextTrace - breaking
opentelemetry: Remove unused exports
- breaking
opentelemetry: Drop
.prefetchsuffix from inferred HTTP span ops - breaking
opentelemetry: Infer op from
faas.trigger - breaking
opentelemetry: Remove
SentrySpanProcessor&SentrySampler - breaking
opentelemetry: Simplify propagation and remove custom OTel tracing utils
- breaking
opentelemetry: Drop OTel resource and
contexts.otel.resource - breaking
opentelemetry: Remove
OpenTelemetrySpanContext - breaking
opentelemetry: Streamline OTEL context managment into
setOpenTelemetryContextAsyncContextStrategy()
@sentry/profiling-node
- breaking
profiling-node: Remove
prune-profiler-binariesbin script
@sentry/react
- breaking
react: Drop support for React 16
- breaking
vue,svelte,react: Use
ui.*ops for component lifecycles - breaking
react: Remove redundant
url.path.params.<key>attribute
@sentry/react-router
- breaking
react-router: Raise minimum supported React Router (framework mode) version to >= 7.15
- breaking
react-router: Remove deprecated server wrappers
- breaking
react-router: Remove server OTel instrumentation
- breaking
react-router: Remove unstable_sentryVitePluginOptions
- breaking
react-router: Move Vite plugin exports to subpath
@sentry/react-router/vite - breaking
react-router: Remove deprecated Vite build options and back-compat shims
@sentry/remix
- breaking
remix: Do not double gate action form data capture
- breaking
remix: Move the Vite plugin to
@sentry/remix/vite - breaking
remix: Remove import-in-the-middle instrumentation
- breaking
remix: Drop Remix v1 route-convention handling
- breaking
remix: Align action form-data span attribute with conventions
- breaking
remix: Migrate import hook to makeOrchestrionLoader
@sentry/server-utils
- breaking
server-utils,core: Use
routerspan op for backend router layers - breaking
server-utils: Align AMQP and Redis span attributes
- breaking
server-utils: Clean up gen ai ops
- breaking
server-utils: Emit
queue.*span ops for messaging spans - breaking
server-utils: Emit low cardinality postgres db span names
- breaking
server-utils: Rename
otlpIntegrationtoopenTelemetryIntegration - breaking
server-utils: Start Redis spans as
cachespans - breaking
server-utils: Register channel integrations on versions with native channels
- breaking
server-utils: Replace deprecated
ai.*andgen_ai.promptattributes - breaking
server-utils: Replace deprecated
db.*span attributes - breaking
server-utils: Replace deprecated
net.*span attributes on db and messaging spans - breaking
server-utils: Stop setting
koa.nameon Koa spans - breaking
server-utils: Use
function.gcpop for firebase function spans
@sentry/solidstart
- breaking
solidstart: Align v1 build options with BuildTimeOptionsBase
- breaking
solidstart: Remove unstable_sentryVitePluginOptions
@sentry/svelte
- breaking
vue,svelte,react: Use
ui.*ops for component lifecycles
@sentry/sveltekit
- breaking
angular,ember,sveltekit: Use
routerspan op for frontend routers - breaking
sveltekit: Enable orchestrion instrumentation on Cloudflare
- breaking
sveltekit: Remove deprecated
sourceMapsUploadOptionsVite plugin option - breaking
sveltekit: Remove unstable_sentryVitePluginOptions
- breaking
sveltekit: Move
sentrySvelteKitoff the runtime entry to@sentry/sveltekit/vite
@sentry/tanstackstart-react
- breaking
tanstackstart: Remove deprecated
@sentry/tanstackstartutility package - breaking
tanstackstart-react: Migrate import hook to makeOrchestrionLoader
@sentry/types
- breaking
types: Stop publishing
@sentry/types
@sentry/vercel-edge
- breaking
cf/vercel-edge: Align request data collection with v11 defaults
@sentry/vue
- breaking
vue,svelte,react: Use
ui.*ops for component lifecycles
Other Changes
browser: Emit low cardinality
browserrequest timing span namesbrowser: Emit low-cardinality
uispan namesbrowser: Report
browser.navigation.typeon the pageload spanbrowser: Report the INP target and interaction type as attributes
cloudflare: Auto-register Flue instrumentation in bundled workers
core: Consolidate fetch integrations
core: Send
sentry.is_localhoston every streamed spannestjs: Emit low cardinality
@OnEventfunction span namenode: Add eveInstrumentation and eveIntegration for eve apps
node: Add Groq and Together AI integrations
react-router: Emit low-cardinality names for
functionspansremix: Upload source maps from the Vite plugin
tanstackstart-react: Emit low-cardinality names for
functionspansvue,nuxt: Record default UI spans without Options API (mixins)
Add
url.fullandurl.pathattributes tohttp.serverspansAlways stream INP and remove standalone v1 spans
Emit low-cardinality http.client span names for fetch and XHR
Emit low-cardinality http.client span names for node:http and undici
Emit low-cardinality http.server span names in framework SDKs
Emit low-cardinality pageload span names when streaming spans
Emit low-cardinality span names for messaging spans (amqplib, kafka, ...)
angular: Emit low cardinality
TraceMethodspan name and preserve descriptionastro: Auto-wire orchestrion build-time instrumentation
aws-serverless: Emit low cardinality
function.awsspan namesbrowser: Add
bfcacheIntegrationbrowser: Add shim for metrics
browser: Emit low cardinality navigation span names
browser: Emit low cardinality resource span names
browser: Report web vitals for bfcache restores
browser: Report web vitals for soft navigations
browser: Run static beforeSendSpan for INP spans
browser: Start a navigation span for bfcache restores
bun: Add
bunHttpServerIntegrationbun: Capture Bun.serve request bodies with
maxRequestBodySizebun: Instrument outgoing fetch requests
bundler-plugins: Frameworks use
@sentry/bundler-pluginsbundler: Add Node bundler plugins
cloudflare: Add cacheClient to reuse the client across invocations
cloudflare: Add span ops for rate limit and Durable Object WebSocket spans
cloudflare: Bootstrap Mastra observability in bundled workers
cloudflare: Derive rpcTracePropagationBindings from the wrangler config
cloudflare: Emit low cardinality
functionspan names and preserve span descriptionscloudflare: Emit low cardinality D1 db span names
cloudflare: Instrument module-scope orchestrion channels on workerd
cloudflare: Make vercelAIIntegration the default
cloudflare: Prepare for nodejs_compat entrypoint
core: Accept
CollectBehaviorshorthand fordataCollection.httpHeaderscore: Add
afterEnvelopeandflushTraceSpansclient hookscore: Add
filterUrlQueryutilcore: Add
refsfield toScopefor non-serialized referencescore: Add
safeCallbackhelper for isolating user-provided callbackscore: Add build-time options for bundler plugin parity
core: Add low cardinality span name fallbacks
core: Add the
dataCollection.queuesoptioncore: Allow to pass scope to
getActiveSpancore: Always flush streamed span traces after segment end by default
core: Default span status to
okin transaction mode- deprecated
core: Deprecate
beforeSendTransactionandignoreTransactionsand log warnings if used with streaming - deprecated
core: Deprecate
forceTransactionoption inStartSpanOptions core: Emit low cardinality mcp notification span names
core: Emit low cardinality mcp.server span names
core: Emit low cardinality request handler span names
core: Emit low cardinality router span names
core: Emit low cardinality supabase db span names
core: Emit low-cardinality
cache.*span namescore: Emit low-cardinality gen_ai inference span names when streaming
core: Emit low-cardinality http.server span names when streaming
core: Expose
sentry.opattribute to samplerscore: Isolate throwing user callbacks instead of capturing them as events
core: Only check for native fetch in browser
core: Record
callback_errorclient reports for throwing user callbackscore: Streamline tracing channel bindings
core: Use
getActiveSpaninstead of_getSpanFromScopefor logs & metricsdeno: Add
maxRequestBodySizeto capture HTTP bodiesdeno: Add anthropic integration
deno: Add aws integration
deno: Add conversationIdIntegration to default integrations
deno: Add express integration
deno: Add genericPool integration
deno: Add google-genai integration
deno: Add graphql integration
deno: Add hapi integration
deno: Add kafkajs integration
deno: Add langchain integration
deno: Add langgraph integration
deno: Add lruMemoizer integration
deno: Add mysql2 integration
deno: Add postgresjs integration
deno: Add tedious integration
deno: Add vercelai integration
deno: Instrument outgoing fetch requests
effect: Derive span ops for Effect tracer spans
ember: Give component definition lookups their own span op
google-cloud-serverless: Emit low cardinality
function.gcpspan nameshono: Support
.query()handlersnestjs: Add
code.function.nameattribute tofunctionspans for description inferencenestjs: Add support for NestJS v12
nextjs: Align build options with BuildTimeOptionsBase
nextjs: Emit low cardinality
functionspan namesnextjs: Emit low cardinality
functionspan names for server componentsnextjs: Record cache spans for
use cachefunctions- removed
nextjs: Remove tracing from pages router API routes
nextjs: Unify reactComponentAnnotation across webpack and Turbopack
node: Add
eveConversationHook()to link eve sessions as Sentry conversationsnode: Add
getInstrumentedModuleNames()node: Add build-time instrumentation opt-out to bundler plugins
node: Add build-time opt-out for runtime channel injection
node: Add first-party Mastra integration
node: Add Mistral AI integration
node: Always set up express, fastify, koa, hapi integrations
node: Auto-register Hapi error handler on server start
node: Auto-register Koa error handler on app start
node: Capture Express errors automatically via
expressIntegration- deprecated
node: Deprecate
ignoreStatusCodesin http integrations node: Enable dataloader and knex integrations by default
nuxt: Emit low cardinality db span names
nuxt: Enable server-side Sentry during
nuxt devon Nitro v3 (Nuxt 5)react-router: Auto-wire orchestrion build-time instrumentation
react-router: Capture server build in dev mode for middleware names
react: Add
@sentry/react/react-routerentry with automatic React Router hooksremix: Auto-wire orchestrion build-time instrumentation
remix: Emit low cardinality
functionspan namesserver-runtime-injection: Split runtime orchestrion injection into a dedicated package
server-utils: Add
dbspan op for generic-pool acquire spansserver-utils: Add
otlpIntegrationto connect Sentry to an existing OpenTelemetry setupserver-utils: Add cache span ops for DataLoader
prime,clearandclearAllserver-utils: Add first-party Flue instrumentation
server-utils: Add more channel integration definitions
server-utils: Emit low cardinality
function.gcpspan names for firebase functionsserver-utils: Emit low cardinality graphql span names
server-utils: Emit low cardinality knex, tedious and prisma db span names
server-utils: Emit low cardinality mongodb span names
server-utils: Emit low cardinality mongoose db span names
server-utils: Emit low cardinality mysql db span names
server-utils: Emit low cardinality redis span names
server-utils: Emit low-cardinality gen_ai agent span names when streaming
server-utils: Implement
setAsyncLocalStorageAsyncContextStrategysolid-start: Add
code.function.nameattribute to solid-startfunctionspanssolidstart: Add SolidStart 2 support
solidstart: Auto-wire orchestrion build-time instrumentation
sveltekit: Auto-wire orchestrion build-time instrumentation
sveltekit: Emit low cardinality
functionspanstanstackstart: Auto-wire orchestrion build-time instrumentation
vue: Add Options API detection guard
wasm: Patch non-streaming load paths
astro: Fall back to
dataCollection.userInfofortrackClientIpbrowser: Default pageload span start time to
timeOriginbrowser: End the active idle span on pagehide
browser: Forward uncaught worker errors with their stack
browser: Keep the best element name captured for an interaction
browser: Respect
dataCollection.httpHeaders.requestinhttpContextIntegrationbrowser: Source FCP from web-vitals
onFCPand rebase FP againstactivationStartbrowser-utils: Fix soft navigation vital correlation race
bun: Respect caller-supplied
runtimeoptionbun: Use namespace imports for
node:httpinbunHttpServerIntegrationbundler-plugins: Do not warn on known sourcemap-less chunks
bundler-plugins: Preserve directive prologues during bundle injection
cloudflare: Bind pass-through Queue producer methods to the binding
cloudflare: Remove conflicting
faas.queueop on queue consumer spanscore: Apply the sensitive denylist to cookie headers and configured fetch headers
core: Avoid retrying failing MCP handlers
core: Correct MCP error and request attribution
core: Instrument MCP transports before start
core: Stop sending client reports for breadcrumbs
core: Apply
dataCollection.urlQueryParamstourl.fullandurl.querycore: Apply capture mechanism to originally captured exception
core: Attribute errors to the span they escaped
core: Catch
beforeSendSpancallback throwscore: Do not activate ignored spans in the tracing-channel binding
core: Do not unnecessarily defer offline transport send
core: Filter query params in
url.fullon request data and navigate errorscore: Normalize http header attribute keys according to OTel spec
core: Propagate sample_rand when continuing a trace without incoming baggage
core: Read external propagation context from the carrier
core: Set http cookie header attributes as string arrays
core: Set http header span attributes as string arrays
core: Stop
supabaseIntegrationfrom ending spans twicecore: Track quote state when sanitizing SQL literals
deno: Don't throw in Deno.serve wrapper when no client is bound
deno: Gate tracing integrations on hasSpansEnabled
deno: Propagate stream cancellation
effect: Remove span op fallback to
functionember: Add route IDs to pageload and navigation spans
ember: Guard
routerService.recognize()against unrecognizable URLsember: Stop retaining component render payloads in beforeEntries
feedback: Stop long error messages from resizing the feedback dialog
google-genai: Map messages to the gen_ai conventions
nextjs: Apply
silentto the SDK's own build logsnextjs: Correct in_app for Turbopack dev server stack frames
nextjs: Don't report Next.js prerender control flow errors
nextjs: Keep router.back/forward navigation type under span streaming
nextjs: Make request data available to
tracesSamplerfor edge middleware root spansnextjs: Parameterize
[lng]locale routes and prefer narrower routes over catch-allsnextjs: Prevent sourceMappingURL stripping from truncating minified chunks
nextjs: Print unsupported Turbopack warning once
nextjs: Stop baking absolute paths into server chunks
nextjs: Treat static route span names as low-cardinality names
node: Build-time instrument the ESM build of graphql
node: Move Async context strategy setup to NodeClient.init()
node: Register diagnostics-channel injection in
NodeClientcon…node: Support @google/genai v2 in auto-instrumentation
nuxt: Import from
#imports/serverinaddMiddlewareImports()nuxt: Remove setting
moduleSideEffectsin Nuxt 5 / Nitro 3nuxt: Stop flushing the client on every HTTP response
nuxt: Stop importing h3 in the Nitro error hook
react-router: Key server middleware counter by root span, not OTel context
react: Don't rename a navigation span with another location's route
remix: Prefer narrower routes over splats when both match
remix: Strip trailing underscore from route segments
remix: Treat static route span names as low-cardinality names
replay: Attach replay ID from when the feedback widget opened
server-runtime-injection: Keep
require()of JSON working on Denoserver-utils: Always sanitize inline literals out of
db.query.textserver-utils: Don't capture caller-handled LangChain errors
server-utils: Don't capture caller-handled LangGraph errors
server-utils: Forward
resolveIdoptions in the orchestrion Rollup pluginserver-utils: Gate
gen_ai.tool.definitionsondataCollection.genAI.inputsserver-utils: Keep qualified table names in
db.query.summaryserver-utils: Pass the SQL dialect when summarizing Prisma queries
server-utils: Read AI SDK cache token counts in Vercel AI channel subscriber
server-utils: Restore request config attributes on google-genai chat spans
server-utils: Sanitize PostgreSQL dollar-quoted strings in `db.q…
server-utils: Sanitize SQL Server bracketed identifiers
server-utils: Stop reporting caller-handled errors from the OpenAI, Anthropic & Google GenAI instrumentations
server-utils: Stop the orchestrion Vite plugin from adding an empty ssr environment
server-utils: Surface deferred span-end errors on the channel payload
sveltekit: Register the OpenTelemetry tracer provider on Cloudflare
sveltekit: Resolve the Cloudflare execution context without
event.platformtanstackstart-react: Reject non-POST requests to the managed tunnel route
wasm: Forward compile options and patch frames of all exception values
Remove by accident exported convention
bundler-plugins: Use fast component annotation for all Rollup and Vite versions
- deprecated
core: Deprecate
includefrom RequestData
Internal Changes
- breaking
deps: Bump eslint-plugin-simple-import-sort from 12.1.1 to 14.0.0
server-utils: Capture errors thrown in Mastra
server-utils: Ensure Mastra tool/model spans are correctly nested
skills: Add backport-pr skill
bundler-plugin-tests: Normalize prerelease versions in telemetry snapshots
cloudflare: Reject unknown keys in options callbacks
cloudflare: Restore env type inference for options callbacks
cloudflare: Use correct types for Vite plugin
nextjs: Add orchestrion bundling regression tests and import.meta.url shim
node: Bootstrap Mastra observability under ESM
node: Detect + warn when the orchestrion runtime hook is bundled
node: Distinguish isolated transform failures from bundling in the runtime warning
node: Skip registration-only instrumentations in the runtime loader
- security
nuxt: Dev dependency security fixes - bump nuxt to 3.21.11
orchestrion: Stop force-bundling instrumented deps in dev servers
server-runtime-injection: Resolve the orchestrion ESM hook by path so build tracers follow it
server-utils,nuxt: Update SQL helper imports after move from core
server-utils: Ensure all orchestrion instrumentation lazy registers
server-utils: Stop orchestrion rollup plugin from crashing under Rolldown
- breaking
Remove
.orchestrion.from span origins - breaking
ai: Drop core's duplicate AI base copy
- breaking
cloudflare: Remove wrapRequestHandlerWithInit as export
Work in this release was contributed by @AG0708, @AI-DEV-BOT, @aklkv, @Andarist, @atharv-sys32, @birkskyum, @chiliec, @davidmurdoch, @Dextheking1, @eddie333016, @hafzism, @halillusion, @ihsraham, @JealousGx, @JosephDoUrden, @Jxxunnn, @kamilogorek, @lux-in-tenebris-lucet, @matthewbjones, @mcbbugu, @mkly, @mohd-akram, @msnelling, @nehaprasad-dev, @oesnuj, @psang39, @psh4607, @RealBhupesh, @rytkhs, @suhailopensource, @thijsw, @trinitiwowka, @Tyagiquamar, @wittachai-as, @yashschandra, and @zkasuran. Thank you for your contributions!
- 10.x
10.77.1
27 Oct 2026Reading the note…
10.76.2
8 Oct 2026Reading the note…
10.76.1
6 Oct 2026Reading the note…
10.76.0
2 Oct 2026Reading the note…
10.75.3
23 Sep 2026Reading the note…
10.75.2
22 Sep 2026v10/cloudflare: Enforce flush timeout across Workflow lifecycle
v10/core: Apply
dataCollection.urlQueryParamsto collected URLs and query stringsv10/nextjs: Align tunnel request matching in middleware with tunnel rewrite
v10/cloudflare: Enforce flush timeout across Workflow lifecycle
v10/core: Apply
dataCollection.urlQueryParamsto collected URLs and query stringsv10/nextjs: Align tunnel request matching in middleware with tunnel rewrite
v10/node: Stop leaking unhandled rejections on aborted Vercel AI streams
10.75.1
21 Sep 2026v10/cloudflare: Capture telemetry from untraced Durable Object RPC calls
v10/cloudflare: Instrument namespaces returned by jurisdiction()
v10/hono: Allow @cloudflare/workers-types v5 as peer dependency
v10/cloudflare: Capture telemetry from untraced Durable Object RPC calls
v10/cloudflare: Instrument namespaces returned by jurisdiction()
v10/hono: Allow @cloudflare/workers-types v5 as peer dependency
v10/nextjs: Resolve Next.js version relative to the SDK when cwd differs
10.75.0
16 Sep 2026v10/effect: Capture errors through the Effect v4
ErrorReporterAPIOn Effect v4,
Sentry.effectLayernow registers a SentryErrorReporter. Failures that pass throughEffect.withErrorReporting,ErrorReporter.reportor the built-in HTTP and RPC reporting boundaries are captured automatically, withErrorReporter.ignore,ErrorReporter.severityandErrorReporter.attributesannotations respected. Nothing changes on Effect v3.v10/core: Accept a
CollectBehaviorshorthand fordataCollection.httpHeadersv10/browser: Release the XHR
virtualErroronce the request completed
Important Changes
v10/effect: Capture errors through the Effect v4
ErrorReporterAPIOn Effect v4,
Sentry.effectLayernow registers a SentryErrorReporter. Failures that pass throughEffect.withErrorReporting,ErrorReporter.reportor the built-in HTTP and RPC reporting boundaries are captured automatically, withErrorReporter.ignore,ErrorReporter.severityandErrorReporter.attributesannotations respected. Nothing changes on Effect v3.
Other Changes
v10/core: Accept a
CollectBehaviorshorthand fordataCollection.httpHeadersv10/browser: Release the XHR
virtualErroronce the request completedv10/browser-utils: Skip nullish LCP entries in vendored web-vitals
v10/bundler-plugins: Stamp debug IDs onto emitted source maps when
disable-uploadis setv10/core: Don't instrument the SDK's own envelope requests
v10/nextjs: Only include emitted chunk directories in Turbopack sourcemap upload
v10/nitro: Import from nitro/h3 instead of h3 directly
v10/node-core: Don't recurse in logAndExitProcess on a broken stdio pipe
v10/nuxt: Detect Nitro version via the app's Nuxt dependency chain
v10/replay: Don't rewrite already-emitted nodes when syncing mirror attributes
10.74.0
9 Sep 2026v10: Streamline isolation scope handling & reset in isolation scopes
server-utils: Include Gemini reasoning tokens in Vercel AI token usage
v10/browser: Set
user_agent.originalon all spans for consistent filtering
v10: Streamline isolation scope handling & reset in isolation scopes
server-utils: Include Gemini reasoning tokens in Vercel AI token usage
v10/browser: Set
user_agent.originalon all spans for consistent filteringv10/cloudflare: Auto-instrument classes re-exported from the worker entry
v10/core: Guard
loadModuledefault parameter against ESM scopev10/core: Match wrapped Facebook Mobile browser errors in
DEFAULT_IGNORE_ERRORSv10/core: Resolve MCP capture policy per operation
v10/nextjs: Fix SDK import crashing under jsdom/happy-dom
v10/nextjs: Keep the Pages Router runtime out of App Router client bundles
v10/nextjs: Register Vercel AI span processors on Next.js
v10/nuxt: Windows file:// for import-in-the-middle hook and isAbsolute for C:\
v10/sveltekit: Handle SvelteKit 3 error kinds in handleErrorWithSentry
v10/sveltekit: Read Cloudflare execution context from platform.ctx
v10/sveltekit: Read SvelteKit config from the Vite plugin
Internal Changes
Work in this release was contributed by @halillusion and @zkasuran. Thank you for your contributions!
10.73.0
31 Aug 2026- deprecated
v10/node: Deprecate
shouldHandleErroronsetupExpressErrorHandlerandsetupFasitfyErrorHandler v10/nextjs: Add
@sentry/nextjs/configentry pointwithSentryConfigis now available from@sentry/nextjs/config, the path it moves to in v11. Importing it from@sentry/nextjsstill works on v10 but logs a warning once, so you can change yournext.configfile today and upgrade to v11 without touching it again.// next.config.mjs - import { withSentryConfig } from '@sentry/nextjs'; + import { withSentryConfig } from '@sentry/nextjs/config';v10/cloudflare: Instrument Durable Object handlers installed as read-only properties
Important Changes
v10/nextjs: Add
@sentry/nextjs/configentry pointwithSentryConfigis now available from@sentry/nextjs/config, the path it moves to in v11. Importing it from@sentry/nextjsstill works on v10 but logs a warning once, so you can change yournext.configfile today and upgrade to v11 without touching it again.// next.config.mjs - import { withSentryConfig } from '@sentry/nextjs'; + import { withSentryConfig } from '@sentry/nextjs/config';
Other Changes
- deprecated
v10/node: Deprecate
shouldHandleErroronsetupExpressErrorHandlerandsetupFasitfyErrorHandler v10/cloudflare: Instrument Durable Object handlers installed as read-only properties
Internal Changes
10.72.0
28 Aug 2026AI integrations no longer report errors that propagate to the caller (#23638, #23639, #23640)
Across all AI integrations (OpenAI, Anthropic, Google GenAI, LangChain, and LangGraph), the SDK no longer sends an event to Sentry for errors that the AI framework propagates to your code. Previously the instrumentation reported these as unhandled (
handled: false) before your own error handling ran, so an error your code caught still showed up in Sentry as an unhandled crash. The span is still marked as errored and the error still propagates, so reporting is left to your application: if your code does not handle the error, it reaches Sentry's global error handlers and is captured as unhandled, just like any other uncaught error. Errors that a provider surfaces as data on an otherwise successful response (such as Anthropic error-shaped responses or Google GenAI blocked content) are still captured, since your code never sees them propagate.v10/cloudflare: Add
rpcTracePropagationBindings(#23737, #23738)The new
rpcTracePropagationBindingsoption names theenvbindings that outgoing RPC calls propagate trace context to. Strings match a binding name exactly, regular expressions match by pattern, and the default empty array propagates to nothing. RPC has no headers to carry trace context, so the SDK appends it as a trailing argument that only a Sentry-instrumented receiver removes again. List only the bindings whose receiver you know runs Sentry. Setting the option takes precedence overenableRpcTracePropagation, which is now deprecated. When you build with the Sentry Cloudflare Vite plugin, the bindings that resolve to this worker (its own Durable Objects and self service bindings) are derived from your wrangler config and added for you.v10/astro: Support astro v7 route patterns properly
Important Changes
AI integrations no longer report errors that propagate to the caller (#23638, #23639, #23640)
Across all AI integrations (OpenAI, Anthropic, Google GenAI, LangChain, and LangGraph), the SDK no longer sends an event to Sentry for errors that the AI framework propagates to your code. Previously the instrumentation reported these as unhandled (
handled: false) before your own error handling ran, so an error your code caught still showed up in Sentry as an unhandled crash. The span is still marked as errored and the error still propagates, so reporting is left to your application: if your code does not handle the error, it reaches Sentry's global error handlers and is captured as unhandled, just like any other uncaught error. Errors that a provider surfaces as data on an otherwise successful response (such as Anthropic error-shaped responses or Google GenAI blocked content) are still captured, since your code never sees them propagate.v10/cloudflare: Add
rpcTracePropagationBindings(#23737, #23738)The new
rpcTracePropagationBindingsoption names theenvbindings that outgoing RPC calls propagate trace context to. Strings match a binding name exactly, regular expressions match by pattern, and the default empty array propagates to nothing. RPC has no headers to carry trace context, so the SDK appends it as a trailing argument that only a Sentry-instrumented receiver removes again. List only the bindings whose receiver you know runs Sentry. Setting the option takes precedence overenableRpcTracePropagation, which is now deprecated. When you build with the Sentry Cloudflare Vite plugin, the bindings that resolve to this worker (its own Durable Objects and self service bindings) are derived from your wrangler config and added for you.
Other Changes
v10/astro: Support astro v7 route patterns properly
v10/bundler-plugins: Preserve full file path in component annotation source maps
v10/core: Store child span timeout handle in
_childSpanTimeoutIDv10/node: Only end the process session when it is still ok
v10/react-router: Use react-router's own instrumentation types instead of a mirrored copy
v10/replay: Suppress Worker destroyed error on session expiry
v10/server-utils: Keep orchestrion registration out of tree-shaking
v10/server-utils: Stop shipping orchestrion bundler plugins as production dependencies
v10/server-utils: Support openai v7 in auto-instrumentation
v10/sveltekit: Detect native tracing in flattened SvelteKit 3 config
Internal Changes
Work in this release was contributed by @ryanrho-mercor, @lux-in-tenebris-lucet, and @suhailopensource. Thank you for your contributions!
10.71.0
24 Aug 2026- breaking
v10/core: Enable logs by default
- deprecated
v10/core: Deprecate
scope.clear()method v10/core: Bound child span tracking on long-lived spans
Important Changes
- breaking
v10/core: Enable logs by default
The
enableLogsclient option now defaults totrue, so Sentry Logs work without any manual opt-in. Nothing is captured unless you call theSentry.logger.*APIs or add a log-forwarding integration (such asconsoleLoggingIntegration,pinoIntegration, or the winston transport), and you can setenableLogs: falseto opt out. Although a default change like this would normally land in a major release, we are shipping it in a minor after careful consideration, since it sends no data on its own and only takes effect once you actively use the logging APIs or a logging integration.Other Changes
- deprecated
v10/core: Deprecate
scope.clear()method v10/core: Bound child span tracking on long-lived spans
v10/core: Read Supabase PostgREST headers from
Headersinstancesv10/hono: Use
captureExceptionfrom scope, not fromClientv10/nuxt: Delete source maps after Nitro finishes building
v10/react-router: Carry multi-byte UTF-8 across SSR stream chunk boundaries
v10/react: Match TanStack Router pageload against the router location
Internal Changes
10.70.0
10 Aug 2026v10/core: Support stable MCP SDK v2
v10/solid,solidstart: Support
@solidjs/routerv1v10/cloudflare: Fork the isolation scope for Durable Object methods
v10/core: Support stable MCP SDK v2
v10/solid,solidstart: Support
@solidjs/routerv1v10/cloudflare: Fork the isolation scope for Durable Object methods
v10/cloudflare: Get original waituntil in workflows
v10/cloudflare: Instrument DO RPC methods on the prototype, not a Proxy
v10/cloudflare: Set agent conversation id on the
onRequestpathv10/cloudflare: Set conversation id independent of session name
v10/cloudflare: Try/catch on non-configurable prototypes
v10/cloudflare: Use gen_ai.agent.name for class names
v10/core,browser: Handle errors from other realms
v10/core: Sample errors after
beforeSendwhile preserving session updatesv10/hono: Include originalException in captured exception hint
v10/nextjs:
meriyahissue forstandalonebuildv10/nextjs: Remove tracing from middleware wrappers
v10/profiling-node: Respect profileSessionSampleRate in trace profile lifecycle
v10/react-router: Preserve
sourcemaps.disablewhenunstable_sentryVitePluginOptionsis setv10/react: Remove routes from shared set on
<Routes>unmountv10/sveltekit: Export
metricsfrom worker entry point
Internal Changes
Work in this release was contributed by @davidmurdoch, @Jxxunnn, and @kamilogorek. Thank you for your contributions!
10.69.0
29 Jul 2026Reading the note…
10.68.0
24 Jul 2026Reading the note…
10.67.0
20 Jul 2026Reading the note…
10.66.0
16 Jul 2026Reading the note…
10.65.0
10 Jul 2026Reading the note…
10.64.0
7 Jul 2026Reading the note…
10.63.0
1 Jul 2026Reading the note…
10.62.0
26 Jun 2026Reading the note…
10.61.0
25 Jun 2026Reading the note…
10.60.0
23 Jun 2026Reading the note…
10.59.0
19 Jun 2026Reading the note…
10.58.0
15 Jun 2026Reading the note…