Changelog
June 2, 2026 · View on GitHub
Unreleased
-
"You miss 100 percent of the chances you don't take. — Wayne Gretzky" — Michael Scott
-
ref(core): Deprecate
sendDefaultPiiin favor ofdataCollection#21277sendDefaultPiiis deprecated and will be removed in v11. The newdataCollectionoption lets you control each category of collected data.sendDefaultPii: truestill works and maps to enabling alldataCollectioncategories.dataCollection.userInfodefaults tofalseand only gates auto-populateduser.*fields (e.g. IP address from a request). Data you set explicitly viaSentry.setUser()is always sent regardless.Note that an empty
dataCollection: {}falls back to more permissive defaults thansendDefaultPii: false, so replicate the old behavior by opting out explicitly:Sentry.init({ dataCollection: { genAI: { inputs: false, outputs: false }, httpHeaders: { deny: ['forwarded', '-ip', 'remote-', 'via', '-user'] }, cookies: { deny: ['forwarded', '-ip', 'remote-', 'via', '-user'] }, queryParams: { deny: ['forwarded', '-ip', 'remote-', 'via', '-user'] }, }, });
10.56.0
Important Changes
-
feat(deno): Redis diagnostics channel based integration for Deno (#21087)
Adds Redis integration support for Deno, covering both
redisandioredisclients.
Other Changes
- feat(cloudflare): Only capture workflow step error on final retry attempt (#21025)
- feat(hono): Emit warning if
@sentry/nodewas imported instead of@sentry/hono/node(#21240) - feat(node): Use ioredis tracing channels (#21187)
- fix(browser): Correctly parse sampleRate when
consistentTraceSamplingis enabled (#21281) - fix(cloudflare): Fix
instrumentDurableObjectWithSentrybreaking Cloudflare Agents (#21101) - fix(cloudflare): Wait for span links to be set (#21167)
- fix(core): Use
WeakReffor Span-Scope circular references (#21242) - fix(node): Vendor
InstrumentationNodeModuleFileto fix Bun--bytecodecrash (#21262) - fix(profiling-node): Ensure node version support warning includes latest 26 (#21229)
Internal Changes
- chore: Ignore scheduled_tasks.lock (#21252)
- chore: Promote lint warnings to errors (#21213)
- chore(docs): Document how to support a new node version (#21228)
- chore(size-limit): Weekly auto-bump (#21243)
- chore(skills): Add linear-project-status skill (#21214)
- chore(skills): Add linear-project-update skill (#21233)
- chore(skills): Improve triage-issue skill (#21257)
- chore(skills): Update linear-project-status skill with more details & context (#21234)
- feat(deps): Bump axios from 1.15.0 to 1.16.0 in /dev-packages/e2e-tests/test-applications/nestjs-basic (#21263)
- feat(server-utils): Initial scaffolding (#21200)
- ref(cloudflare): Move D1 instrumentation (#21266)
- ref(node): Refactor usage of
hrTimeutilities from@opentelemetry/core(#21191) - ref(node): Stop mutating OTel RPC metadata to set
http.route(#21193) - ref(opentelemetry): Vendor minimal
TraceStateimplementation (#21192) - test(browser): Add unit test for http client header collection behavior (#21273)
- test(browser): Move browser integration tests to
dataCollection(#21282) - test(cloudflare): Remove vitest in CF e2e tests (#21259)
10.55.0
Important Changes
-
feat(hono): Promote
@sentry/honoto stable and deprecatehonoIntegration(#21208)The
@sentry/honoSDK is now stable. See the Sentry Hono SDK docs to get started. -
docs(tanstackstart-react): Promote SDK status to beta (#21175)
This release promotes the
@sentry/tanstackstart-reactSDK to beta. For details on how to use it, check out the Sentry TanStack Start SDK docs. Please reach out on GitHub if you have any feedback or concerns. -
feat(hono): Add
shouldHandleErroroption tosentry()middleware (#21205)The
sentry()middleware now accepts ashouldHandleErrorcallback to control which errors are captured and sent to Sentry. By default, 3xx/4xx HTTP errors are ignored and 5xx errors and plainErrorobjects are captured. Returntruefrom the callback to capture an error,falseto suppress it.app.use( sentry(app, { dsn: '__DSN__', shouldHandleError(error) { const status = (error as { status?: number })?.status; // Capture 401/403 in addition to the default 5xx errors return status === 401 || status === 403 || typeof status !== 'number' || status >= 500; }, }), ); -
test(tanstackstart-react): Move initialization to client entry point (#21161)
Change the recommended setup for the SDK to do
Sentry.init()in the client entry file to capture telemetry that is emitted ahead of page hydration. -
feat(tanstackstart-react): Add distributed tracing (#21144)
Server and client traces are now automatically connected, allowing you to see the full request lifecycle from server-side rendering through client-side hydration in a single trace.
-
feat(tanstackstart-react): Add server-side route parametrization (#21147)
Server transaction names are now parametrized automatically (e.g.,
GET /users/123becomesGET /users/$userId), improving transaction grouping in Sentry. -
feat(tanstackstart-react): Show readable server function names in traces (#21190)
Server function spans now show human-readable names (e.g.,
GET /_serverFn/greetinstead ofGET /_serverFn/a10e70b3...). Thetanstackstart.function.hash.sha256span attribute has been renamed totanstackstart.function.id.
Other Changes
- feat(core): Migrate request data to
dataCollection(#21071) - feat(hono): Add warning in Bun for double init (#21195)
- feat(hono): Instrument main-app inline middleware spans (#20999)
- feat(metrics): Migrate metrics to use
dataCollectioninstead ofsendDefaultPii(#21078) - feat(tanstackstart-react): Enable component tracking (#21149)
- feat(tanstackstart-react): Filter noisy dev transactions (#21145)
- fix(cloudflare): Use original waitUntil to not create a deadlock (#21197)
- fix(elysia): Widen accepted
Elysiaapp type to support Elysia options (#21164) - fix(tanstackstart-react): Add server-side replayIntegration no-op stub (#21148)
Internal Changes
- chore(changelog): clarify array attributes impact on
beforeSend*callbacks (#21186) - chore(ci): Update bugbot instructions (#21168)
- chore(sentry-cli): Upgrade to 2.58.6 (#21165)
- chore(size-limit): weekly auto-bump (#21123)
- feat(deps-dev): Bump @sveltejs/kit from 2.52.2 to 2.60.1 in /dev-packages/e2e-tests/test-applications/sveltekit-cloudflare-pages (#21162)
- fix(e2e): Fix
astro-6e2e test build by relaxing astro version range (#21211) - meta(agents): Update AI commit attribution guidance (#21166)
- ref(browser): Extract browser-specific
normalizecode out of core (#21172) - ref(node): Stop custom-handling normalization of Domain/DomainEmitter (#21182)
- ref(node): Stop using
registerSpanErrorInstrumentation()on server (#21169) - test(nitro-3): Update e2e tests for h3 route handler tracing (#21152)
- test(nuxt): Fix flaky test and add note about hydration timing to skill (#21054)
10.54.0
Important Changes
-
feat(core): Support array attributes for spans, logs, and metrics (#20427)
Arrays of primitive values (
string,number,boolean) are now accepted as attribute values. Arrays containing non-primitive elements will be dropped and won't show up in Sentry. Array attributes on logs and metrics were previously stringified and will now be sent as actual arrays instead. If you have custom rules that process attribute values in anybeforeSend*callbacks (e.g., data scrubbing), you may need to update them to correctly handle array values.For instance, here's how you can update a
beforeSendLogcallback to handle arrays:beforeSendLog: log => { const attributes = log.attributes; Object.keys(attributes).forEach(key => { const value = attributes[key]; if (typeof value === 'string') { attributes[key] = scrubData(value); } if (Array.isArray(value)) { attributes[key] = value.map(v => (typeof v === 'string' ? scrubData(v) : v)); } }); return log; }; -
feat(browser): Add
fetchStreamPerformanceIntegrationfor streamed response tracking (#20778)A new integration that tracks the performance of streamed fetch responses. Use this to measure time-to-first-byte and streaming duration for APIs that return chunked/streamed data. This replaces the now deprecated
trackFetchStreamPerformanceoption. -
feat(core): Add
dataCollectionclient option (#20965)Adds a new
dataCollectionclient option for controlling what data the SDK collects and sends to Sentry. This provides a centralized way to configure data collection behavior across different SDK features. In the future, this option will be used for fine-granular data filtering, while the simplesendDefaultPiiboolean option will be deprecated and removed in a future release. -
feat(hono): Add
hono.requestspans for internal.request()calls (#20843)The Hono SDK now creates spans for internal
.request()calls, providing better visibility into request handling within Hono applications.
Other Changes
- feat(core): Add data collection filtering utilities (#20989)
- feat(core): Convert scope contexts to segment span attributes in span streaming (#20828)
- feat(core): Emit
sentry.sdk.integrationson streamed segment spans (#20428) - feat(core): HTTP server diagnostics channel utility (#20779)
- feat(core): Migrate span streaming envelope to
dataCollection(#21080) - feat(core): Migrate Supabase integration to
dataCollection(#21085) - feat(core): Migrate trpc to
dataCollection(#21072) - feat(deno): Instrument
node:httpon versions that support it (#21009) - feat(ember): Extract ember-specific logic into custom
browserTracingIntegration(#20702) - feat(logs): Migrate log envelope user inference to
dataCollection(#21073) - feat(nuxt): Allow custom configuration files paths in Nuxt module (#20650)
- feat(replay): Update example worker script (#20899)
- feat(serverless): Add server-only context span attributes via processSegmentSpan hooks (#20842)
- fix(astro): Avoid injecting meta tags into
<head>inside attribute values (#21089) - fix(astro): Use explicit ResponseInit when injecting meta tags in response (#21021)
- fix(browser): Add a synthetic stack trace to DOMException with empty stack traces if
attachStacktraceis true (#19988) - fix(browser): Fix internal frame detection in minified bundles (#20802)
- fix(cloudflare): Avoid repeated flush lock wrapping (#21156)
- fix(cloudflare): Skip SDK initialization for OPTIONS/HEAD requests (#21090)
- fix(cloudflare, vercel-edge): Disable timer-based flush for serverless runtimes (#20889)
- fix(core): Sanitize lone surrogates in log body and attributes (#20245)
- fix(deno): Support
Deno.serveinstrumentation on Deno 2.8 (#21155) - fix(hono): Preserve middleware handler metadata (#20954)
- fix(hono): Use generic Hono type in Bun/Node (#21060)
- fix(nextjs): Widen
projectoption type tostring | string[](#21067) - fix(node): Improve
http.clientdouble-wrap message (#20705) - fix(node): Preserve CallbackManager handlers in LangChain instrumentation (#20849)
- fix(react-router): Do not re-write origin on router state changes (#21056)
- fix(replay): Set
sentry.replay_idattribute on streamed spans (#20897) - fix(replay): Set
replay_idon DSC after buffer-to-session conversion (#20686) - fix(solidstart): Use nitro module for build hooks to preserve preset hooks (#20861)
- ref(core): Rename
types-hoisttotypes(#20979)
Internal Changes
- chore: Add compatibility function for
sendDefaultPii(#20967) - chore: Add size-limit for core/server, core/browser (#20990)
- chore: Bump rrweb deps to v2.43.0 (#20844)
- chore(build): Replace sucrase with esbuild (#20865)
- chore(deps): Bump nitropack from 2.13.1 to 2.13.4 (#20713)
- chore(deps): Bump ws from 8.20.0 to 8.20.1 (#20998)
- chore(deps): Remove redundant yarn resolutions (#20877)
- feat(deps): Bump @tootallnate/once from 1.1.2 to 2.0.1 (#21108)
- feat(deps): Bump devalue from 4.3.3 to 5.8.1 (#20893)
- feat(deps): Bump protobufjs from 7.5.5 to 7.5.9 (#20846)
- ref(aws-serverless): Vendor aws-sdk instrumentation (#20988)
- ref(http): Use shared snippets for filtering headers and cookies (#20970)
- ref(nestjs): Vendor nestjs-core instrumentation (#20996)
- ref(node): Remove unused
@opentelemetry/instrumentation-httpdependency (#21113) - ref(node): Vendor
@fastify/otel(#21099) - ref(node): Vendor
@opentelemetry/instrumentation-pg(#21102) - ref(node): Vendor
@opentelemetry/sql-common(#21140) - ref(node): Vendor
@prisma/instrumentation(#21098) - ref(node): Vendor amqplib instrumentation (#21003)
- ref(node): Vendor connect instrumentation (#20955)
- ref(node): Vendor dataloader instrumentation (#20950)
- ref(node): Vendor fs instrumentation (#20964)
- ref(node): Vendor generic-pool instrumentation (#20949)
- ref(node): Vendor graphql instrumentation (#21096)
- ref(node): Vendor hapi instrumentation (#21057)
- ref(node): Vendor kafkajs instrumentation (#21005)
- ref(node): Vendor knex instrumentation (#20963)
- ref(node): Vendor koa instrumentation (#20956)
- ref(node): Vendor lru-memoizer instrumentation (#20948)
- ref(node): Vendor minimal types for dataloader and generic-pool instrumentations (#21013)
- ref(node): Vendor mongodb instrumentation (#20966)
- ref(node): Vendor mongoose instrumentation (#21058)
- ref(node): Vendor mysql instrumentation (#21016)
- ref(node): Vendor mysql2 instrumentation (#21031)
- ref(node): Vendor tedious instrumentation (#21010)
Work in this release was contributed by @abcang, @ahmadio, @delorge, @mdnanocom, and @victorgarciaesgi. Thank you for your contributions!
10.53.1
- fix(core): Don't gate user data for streamed spans at scope read time (#20827)
- fix(core): Include subpath type shims in published package (#20835)
- ref(hono): Consolidate route patching and add clarification comments (#20829)
Internal Changes
- chore(deps): Bump next from 15.5.15 to 15.5.18 in /dev-packages/e2e-tests/test-applications/nextjs-15-intl (#20821)
10.53.0
Important Changes
-
feat(core): Add
streamGenAiSpansoptions to stream gen_ai spans (#20785)Adds a new
streamGenAiSpansoption that controls howgen_aispans are sent to Sentry. When set, the SDK extracts allgen_aispans out of a transaction and sends them as v2 envelope items.Enable this option if gen_ai spans are being dropped because the transaction payload exceeds size limits.
Sentry.init({ dsn: 'https://examplePublicKey@o0.ingest.sentry.io/0', streamGenAiSpans: true, });
Other Changes
- feat(browser): Migrate browser profiling thread data to span attributes (#20800)
- feat(core): Add
addConsoleInstrumentationFilterutility (#20790) - feat(core): Add
applicationKeytoBuildTimeOptionsBase(#20789) - feat(core): split exports by browser/server for bundle size (#20435)
- feat(nextjs): Add top-level
applicationKeyoption (#20794) - feat(node): Support Node 26 (#20710)
- feat(profiling-node): Bump
@sentry-internal/node-cpu-profilerto 2.4.0 (#20720) - fix(cloudflare): avoid flush lock self-wait (#20719)
- fix(hono): Capture transaction name on request for correct culprit (#20801)
- fix(mcp): retroactively wrap handlers registered before wrapMcpServerWithSentry (#20699)
- fix(node-core): Guard against undefined util.getSystemErrorMap (#20660)
- fix(replay): Capture aborted/errored fetch requests in replay network tab (#20722)
Internal Changes
- chore: bump replay dependencies (#20746)
- chore: Typo intergation -> integration (#20799)
- chore(deps): Bump @babel/plugin-transform-modules-systemjs from 7.24.1 to 7.29.4 (#20773)
- chore(deps): Bump next from 15.5.15 to 15.5.18 in /dev-packages/e2e-tests/test-applications/nextjs-15 (#20818)
- chore(deps): Bump next from 16.2.4 to 16.2.6 in /dev-packages/e2e-tests/test-applications/nextjs-16-streaming (#20811)
- chore(deps): Bump rollup from 4.59.0 to 4.60.3 (#20716)
- ci: Ensure PR reminder workflow considers new sub teams (#20814)
- ci: Remove codecov reporting (#20803)
- feat(deps): Bump bundler plugins to 5.3.0 (#20820)
- feat(deps): Bump fast-uri from 3.0.6 to 3.1.2 (#20774)
- feat(deps): Bump hono from 4.12.16 to 4.12.18 (#20777)
- test(cloudflare-hono): fix 'occured' -> 'occurred' typo in error log (#20783)
- test(deps): Bump hono from 4.12.14 to 4.12.16 (#20712)
- test(deps): Bump hono from 4.12.14 to 4.12.18 in /dev-packages/e2e-tests/test-applications/cloudflare-hono (#20776)
- test(e2e): Pin astro version in astro-6 test app (#20709)
Work in this release was contributed by @dmmulroy and @SAY-5. Thank you for your contributions!
10.52.0
Important Changes
-
Beta release of the official Hono Sentry SDK
This release marks the beta release of the
@sentry/honoSentry SDK. For details on how to use it, check out the Sentry Hono SDK docs. Please reach out on GitHub if you have any feedback or concerns. -
feat(browser): Add
ingest_settingsto v2 log envelope payload (#20453)Inference of user data (e.g. IP address, browser name/version) on log events is now gated behind the
sendDefaultPiioption. Previously, this data was always inferred by default.
Other Changes
- docs(hono): Add new docs link and move to BETA release (#20666)
- feat(browser): Add
ingest_settingsto v2 metrics envelope payload (#20454) - feat(browser): Migrate spotlight event processor to
ignoreSpans(#20595) - feat(cloudflare): Capture request body via httpServerIntegration (#20614)
- feat(cloudflare): Support rpc trace propagation for WorkerEntrypoint (#20523)
- feat(cloudflare): Support tracing for queue producer (#20529)
- feat(core): Apply request data to segment spans in span streaming (#20654)
- feat(core): Migrate Vercel AI event processor to span streaming (#20608)
- feat(deno): Add
processSegmentSpanto Deno context integration (#20613) - feat(http): Portable node:http client instrumentation (#20393)
- feat(nitro): Add unstorage tracing channel instrumentation (#20615)
- feat(node-core): Add
processSegmentSpanto node context integration (#20678) - feat(node): Use diagnostics_channel for redis >= 5.12.0 (#20573)
- feat(node): Vendor ioredis, redis instrumentations (#20510)
- feat(replay): Reset replay id from DSC on session expiry/refresh (#20129)
- fix: Bump fast-xml-parser to fix vulnerability (#20644)
- fix: Bump vite versions to fix vulnerability (#20646)
- fix(core): Drain buffers in flush() when there is no transport (#20207)
- fix(core): Guard against undefined chained in copyProps (#20637)
- fix(deps): Bump rollup-plugin-license to fix lodash vulnerabilities (#20636)
- fix(deps): Bump transitive deps for medium security fixes (#20683)
- fix(hono): Do not capture 3xx and 4xx errors and add tests (#20640)
- fix(nextjs): Skip build modification when SRI is enabled (#20694)
- fix(opentelemetry): Respect OTEL_SERVICE_NAME, OTEL_RESOURCE_ATTRIBUTES (#20509)
Internal Changes
- chore: Remove
bundle-analyzer-scenariosdev packages (#20680) - chore(deps): Bump @hono/node-server from 1.19.10 to 1.19.13 (#20117)
- chore(deps): Bump @nestjs packages to fix path-to-regexp ReDoS (#20642)
- chore(deps): Bump axios from 1.15.0 to 1.15.2 (#20665)
- chore(deps): Bump ip-address from 10.1.0 to 10.2.0 (#20695)
- chore(deps): Bump simple-git from 3.33.0 to 3.36.0 (#20696)
- chore(deps): Bump vulnerable testem version (#20634)
- ci(deps): Bump actions/checkout from 4 to 6 (#20620)
- ci(deps): Bump actions/create-github-app-token from 2 to 3 (#20079)
- ci(deps): Bump denoland/setup-deno from 2.0.3 to 2.0.4 (#20080)
- ci(deps): Bump getsentry/craft from 2.24.1 to 2.26.2 (#20621)
- feat(deps): Bump @xmldom/xmldom from 0.8.12 to 0.8.13 (#20457)
- feat(deps): Bump follow-redirects from 1.15.11 to 1.16.0 (#20267)
- feat(deps): Bump hono from 4.12.12 to 4.12.14 (#20340)
- fix(tests): Use stable instrumentations api in rr tests (#20690)
- ref(tests): Rename streamed http.client span test folders (#20602)
- test(browser): Fix browserTracingIntegration unit test (#20604)
- test(browser): Fix flaky browser integration test for profiles (#20587)
- test(browser): Fix flaky loader test (#20596)
- test(browser): Fix flaky loader test (#20655)
- test(browser): Make browser profiling test less flaky (#20664)
- test(cloudflare): Add e2e test for MCPAgent with DurableObject instrumentation (#20601)
- test(cloudflare): Add integration tests for scheduled, D1, and workflow (#20609)
- test(cloudflare): Reduce flakiness for cloudflare with sub workers (#20632)
- test(cloudflare): Use Node v24 for Cloudflare e2e tests (#20628)
- test(deps): Bump Next.js in E2E test apps to fix Server Components DoS (#20633)
- test(e2e): Add node-express-streaming E2E test app (#20684)
- test(e2e): Add span streaming test app for Cloudflare Workers (#20681)
- test(e2e): Add span streaming test app for next 16 (#20648)
- test(e2e): Add span streaming test app for React Router 7 SPA (#20677)
- test(e2e): Remove remaining
npmrcpointing to Verdaccio (#20611) - test(nextjs): Fix flaky node runtime metrics E2E tests (#20624)
- test(node): Fix ANR test for flakiness (#20656)
- test(node): Fix flaky node cron test (#20661)
- test(node): Unflake mongodb test (#20662)
- test(react-router): Fix flaky E2E tests (#20630)
- test(test-utils): Add MemoryProfiler for heap snapshot testing via CDP (#20555)
Work in this release was contributed by @sbs44. Thank you for your contribution!
10.51.0
Important Changes
-
feat(cloudflare): Add trace propagation for RPC method calls (#20343)
Trace context is now propagated across Cloudflare Workers RPC calls, connecting traces between Workers and Durable Objects. This feature is opt-in and requires setting
enableRpcTracePropagation: truein your SDK configuration:// Worker export default Sentry.withSentry( env => ({ dsn: env.SENTRY_DSN, enableRpcTracePropagation: true, }), handler, ); // Durable Object export const MyDurableObject = Sentry.instrumentDurableObjectWithSentry( env => ({ dsn: env.SENTRY_DSN, enableRpcTracePropagation: true, }), MyDurableObjectBase, ); -
feat(hono)!: Change setup for
@sentry/hono/node(initin external file) (#20497)To improve Node.js instrumentation, the
sentry()middleware exported from@sentry/hono/nodeno longer accepts configuration options. Instead, you must configure the SDK by callingSentry.init()in a dedicated instrumentation file that runs before your application code (read more in the Hono SDK readme:// instrument.mjs (or instrument.ts) import * as Sentry from '@sentry/hono/node'; Sentry.init({ dsn: '__DSN__', tracesSampleRate: 1.0, }); -
feat(nitro): Add
@sentry/nitroSDK (#19224)A new
@sentry/nitropackage provides first-class Sentry support for Nitro applications, with HTTP handler and error instrumentation, middleware tracing, request isolation, and build-time source map uploading viawithSentryConfig. Read more in the Nitro SDK docs and the Nitro SDK readme.
Other Changes
- deps(minimatch): Upgrade patch version to use new
brace-expansionpeer-dep (#20198) - docs: Add deprecation notices to
binscripts (#20570) - feat(astro): Drop prerendered http.server filter via
ignoreSpans(#20513) - feat(aws-serverless): Validate extension tunnel DSN against
SENTRY_DSN(#20528) - feat(browser): Add
ingest_settingsto span v2 envelope payload (#20411) - feat(browser): Add support for streamed spans in
httpContextIntegration(#20464) - feat(core): Backfill otel attributes on streamed spans (#20439)
- feat(core): clear up integrations on dispose (#20407)
- feat(core): Instrument langgraph createReactAgent (#20344)
- feat(core): Support attribute matching in
ignoreSpans(#20512) - feat(feedback): allow error messages to be customized (#20474)
- feat(hono): Support middleware spans defined in app groups (#20465)
- feat(nextjs): Filter unwanted segments when span streaming is enabled (#20384)
- feat(nextjs): Migrate edge event processors to span-first APIs (#20551)
- feat(nextjs): Migrate server event processors to span-first APIs (#20527)
- feat(nextjs): Set global attribute for turbopack usage (#20558)
- feat(nitro): Nitro SDK (#19224)
- feat(react-router): Clean up bogus
*http.route attribute on segment spans (#20471) - feat(react-router): Drop low-quality transactions via
ignoreSpans(#20514) - feat(sveltekit): Support span streaming in
svelteKitSpansEnhancementintegration (#20496) - feat(tanstackstart-react): Add dynamic tunnel route helper and generator (#20264)
- fix: update prisma v7 spans descriptions (#20456)
- fix(core): Avoid parse-time SyntaxError on Safari <16.4 in postgresjs (#20498)
- fix(core): Ensure
isSentryRequesthandles subdomains properly (#20530) - fix(core): Ensure ip address headers are stripped when lower case (#20484)
- fix(core): Filter more cookie names for PII (#20485)
- fix(core): Use symbol for normalization checks (#20486)
- fix(hono): Distinguish
.use()middleware in sub-apps from.all()handlers (#20554) - fix(nextjs): Ensure we do not match tunnel endpoints too broadly (#20488)
- fix(opentelemetry): Add conditional browser export to avoid node deps (#20556)
- fix(replay): Avoid main-thread blocking in WorkerHandler under event bursts (#20548)
- fix(replay): Ensure
maskAttributesworks withmaskAllText=false(#20491) - fix(supabase): Consider
sendDefaultPiifor supabase integration (#20490)
Internal Changes
- chore: Add size limit reports on PRs for Cloudflare (#20055)
- chore: Update CODEOWNERS (#20559)
- chore(build): Opt-out of nx analytics (#20487)
- chore(ci): Automatically bump size limit every week (#20531)
- chore(ci): Bump pnpm/action-setup to v5 and pin to commit SHA (#20462)
- chore(ci): Do not report flaky test issues if we cannot find a test name (#20589)
- chore(ci): Streamline CI setup to split bundle, layer, tarball generation (#20396)
- chore(ci): Vendor nx-affected-list action, drop dkhunt27 dependency (#20463)
- chore(e2e): Add vue and vue-router to nuxt-4 canary build step to fix rollup resolution (#20519)
- chore(e2e): Remove @tanstack/start-plugin-core override (#20518)
- chore(size-limit): weekly auto-bump (#20572)
- chore(skill): Add skill for writing unit and E2E tests (#20561)
- chore(test): Reduce unneeded
idleTimeouttest config (#20467) - ci(size-bump): Fix path in size-limit auto-bump workflow (#20566)
- fix(e2e/tanstackstart-react): pin @tanstack/start-plugin-core to unblock CI (#20482)
- fix(tests): Remove nitro canary test job (#20473)
- ref(browser): Use
safeSetSpanJSONAttributesin cultureContext integration (#20481) - test(browser): Unflake some more tests (#20591)
- test(nextjs): Pin
eslint-config-nextpackage to major (#20552) - test(node): Fix flaky ANR test (#20592)
- test(node): Fix flaky worker thread integration test (#20588)
- test(node): Unflake postgres tests (#20593)
- test(node): Update timeout for cron integration tests (#20586)
- test(supabase): Stop supabase before initializing (#20563)
- test(tanstack): Prefix test labels (#20569)
10.50.0
Important Changes
-
feat(effect): Support v4 beta (#20394)
The
@sentry/effectintegration now supports Effect v4 beta, enabling Sentry instrumentation for the latest Effect framework version. Read more in the Effect SDK readme. -
feat(hono): Add
@sentry/hono/bunfor Bun runtime (#20355)A new
@sentry/hono/bunentry point adds first-class support for running Hono applications instrumented with Sentry on the Bun runtime. Read more in the Hono SDK readme. -
feat(replay): Add replayStart/replayEnd client lifecycle hooks (#20369)
New
replayStartandreplayEndclient lifecycle hooks let you react to replay session start and end events in your application.
Other Changes
- feat(core): Emit
no_parent_spanclient outcomes for discarded spans requiring a parent (#20350) - feat(deps): Bump protobufjs from 7.5.4 to 7.5.5 (#20372)
- feat(hono): Add runtime packages as optional peer dependencies (#20423)
- feat(opentelemetry): Add tracingChannel utility for context propagation (#20358)
- fix(browser): Enrich graphqlClient spans for relative URLs (#20370)
- fix(browser): Filter implausible LCP values (#20338)
- fix(cloudflare): Use TransformStream to keep track of streams (#20452)
- fix(console): Re-patch console in AWS Lambda runtimes (#20337)
- fix(core): Correct
GoogleGenAIIstrumentedMethodtypo in type name - fix(core): Handle stateless MCP wrapper transport correlation (#20293)
- fix(hono): Remove undefined from options type (#20419)
- fix(node): Guard against null
httpVersionin outgoing request span attributes (#20430) - fix(node-core): Pass rejection reason instead of Promise as originalException (#20366)
Internal Changes
- chore: Ignore claude worktrees (#20440)
- chore: Prevent test from creating zombie process (#20392)
- chore: Update size-limit (#20412)
- chore(dev-deps): Bump nx from 22.5.0 to 22.6.5 (#20458)
- chore(e2e-tests): Use tarball symlinks for E2E tests instead of verdaccio (#20386)
- chore(lint): Remove lint warnings (#20413)
- chore(test): Remove empty variant tests (#20443)
- chore(tests): Use verdaccio as node process instead of docker image (#20336)
- docs(readme): Update usage instructions for binary scripts (#20426)
- ref(node): Vendor undici instrumentation (#20190)
- test(aws-serverless): Ensure aws-serverless E2E tests run locally (#20441)
- test(aws-serverless): Split npm & layer tests (#20442)
- test(browser): Fix flaky sessions route-lifecycle test + upgrade axios (#20197)
- test(cloudflare): Use
.makeRequestAndWaitForEnvelopeto wait for envelopes (#20208) - test(effect): Rename effect e2e tests to a versioned folder (#20390)
- test(hono): Add E2E test for Hono on Cloudflare, Node and Bun (#20406)
- test(hono): Add E2E tests for middleware spans (#20451)
- test(nextjs): Unskip blocked cf tests (#20356)
- test(node): Refactor integration tests for
honoIntegration(#20397) - test(node): Use docker-compose healthchecks for service readiness (#20429)
- test(node-core): Fix minute-boundary race in session-aggregate tests (#20437)
- test(nuxt): Fix flaky database error test (#20447)
10.49.0
Important Changes
-
feat(browser): Add View Hierarchy integration (#14981)
A new
viewHierarchyIntegrationcaptures the DOM structure when an error occurs, providing a snapshot of the page state for debugging. Enable it in your Sentry configuration:import * as Sentry from '@sentry/browser'; Sentry.init({ dsn: '__DSN__', integrations: [Sentry.viewHierarchyIntegration()], }); -
feat(cloudflare): Split alarms into multiple traces and link them (#19373)
Durable Object alarms now create separate traces for each alarm invocation, with proper linking between related alarms for better observability.
-
feat(cloudflare): Enable RPC trace propagation with
enableRpcTracePropagation(#19991, #20345)A new
enableRpcTracePropagationoption enables automatic trace propagation for Cloudflare RPC calls via.fetch(), ensuring distributed traces flow correctly across service bindings. -
feat(core): Add
enableTruncationoption to AI integrations (#20167, #20181, #20182, #20183, #20184)All AI integrations (OpenAI, Anthropic, Google GenAI, LangChain, LangGraph) now support an
enableTruncationoption to control whether large AI inputs/outputs are truncated. -
feat(opentelemetry): Vendor
AsyncLocalStorageContextManager(#20243)The OpenTelemetry context manager is now vendored internally, reducing external dependencies and ensuring consistent behavior across environments.
Other Changes
- feat(core): Export a reusable function to add tracing headers (#20076)
- feat(core): Expose
rewriteSourcestop level option (#20142) - feat(deps): bump defu from 6.1.4 to 6.1.6 (#20104)
- feat(node-native): Add support for V8 v14 (Node v25+) (#20125)
- feat(node): Include global scope for
eventLoopBlockIntegration(#20108) - fix(core, node): Support loading Express options lazily (#20211)
- fix(core): Set
conversation_idonly ongen_aispans (#20274) - fix(core): Use
ai.operationIdfor Vercel AI V6 operation name mapping (#20285) - fix(deno): Avoid inferring invalid span op from Deno tracer (#20128)
- fix(deno): Handle
reader.closedrejection fromreleaseLock()in streaming (#20187) - fix(nextjs): Preserve directive prologues in turbopack loaders (#20103)
- fix(nextjs): Skip custom browser tracing setup for bot user agents (#20263)
- fix(opentelemetry): Use WeakRef for context stored on scope to prevent memory leak (#20328)
- fix(replay): Use live click attributes in breadcrumbs (#20262)
Internal Changes
- chore: Add PR review reminder workflow (#20175)
- chore: Fix lint warnings (#20250)
- chore(bugbot): Add rules to flag test-flake-provoking patterns (#20192)
- chore(ci): Bump actions/cache to v5 and actions/download-artifact to v7 (#20249)
- chore(ci): Bump dorny/paths-filter from v3.0.1 to v4.0.1 (#20251)
- chore(ci): Remove codecov steps from jobs that produce no coverage/JUnit data (#20244)
- chore(ci): Remove craft changelog preview (#20271)
- chore(ci): Remove node-overhead GitHub Action (#20246)
- chore(ci): Replace pr-labels-action with native GitHub expressions (#20252)
- chore(ci): Skip flaky issue creation for optional tests (#20288)
- chore(deps-dev): Bump @sveltejs/kit from 2.53.3 to 2.57.1 (#20216)
- chore(deps-dev): Bump vite from 7.2.0 to 7.3.2 in /dev-packages/e2e-tests/test-applications/tanstackstart-react (#20107)
- chore(deps): Bump axios from 1.13.5 to 1.15.0 (#20180)
- chore(deps): Bump axios from 1.13.5 to 1.15.0 in /dev-packages/e2e-tests/test-applications/nestjs-basic (#20179)
- chore(deps): Bump hono from 4.12.7 to 4.12.12 (#20118)
- chore(deps): Bump hono from 4.12.7 to 4.12.12 in /dev-packages/e2e-tests/test-applications/cloudflare-hono (#20119)
- chore(deps): Bump next from 16.1.7 to 16.2.3 in nextjs-16-cf-workers (#20289)
- chore(size-limit): Bump failing size limit scenario (#20186)
- ci: Add automatic flaky test detector (#18684)
- ci: Extract test names for flaky test issues (#20298)
- ci: Remove Docker container for Verdaccio package publishing (#20329)
- fix(ci): Prevent command injection in ci-metadata workflow (#19899)
- fix(e2e-tests): Remove flaky navigation breadcrumb assertions from parameterized-routes tests (#20202)
- fix(e2e): Add op check to waitForTransaction in React Router e2e tests (#20193)
- fix(node-integration-tests): Fix flaky kafkajs test race condition (#20189)
- ref(core): Add registry in Vercel ai integration (#20098)
- ref(core): Automatically disable truncation when span streaming is enabled in Anthropic AI integration (#20228)
- ref(core): Automatically disable truncation when span streaming is enabled in Google GenAI integration (#20229)
- ref(core): Automatically disable truncation when span streaming is enabled in LangChain integration (#20230)
- ref(core): Automatically disable truncation when span streaming is enabled in LangGraph integration (#20231)
- ref(core): Automatically disable truncation when span streaming is enabled in OpenAI integration (#20227)
- ref(core): Automatically disable truncation when span streaming is enabled in Vercel AI integration (#20232)
- ref(core): Merge embeddings operations constants (#20095)
- ref(core): Remove unused constants from vercel-ai-attributes.ts (#20096)
- ref(nextjs): Refactor
findInjectionIndexAfterDirectivesfor better readability (#20310) - ref(opentelemetry): Replace
@opentelemetry/resourceswith inlinegetSentryResource()(#20327) - test: Fix flaky ANR test by increasing blocking duration (#20239)
- test(bun): Add bun integration test folder (#20286)
- test(cloudflare): Skip flaky durableobject-spans test (#20282)
- test(openai): Use multi-message scenario in no-truncation test (#20194)
- test(react): Remove duplicated test mock (#20200)
- tests(ai): Fix streaming+truncation integration tests across AI integrations (#20326)
10.48.0
Important Changes
-
feat(aws-serverless): Ship Lambda extension in npm package for container image Lambdas (#20133)
The Sentry Lambda extension is now included in the npm package, enabling container image-based Lambda functions to use it. Copy the extension files into your Docker image and set the
tunneloption:RUN mkdir -p /opt/sentry-extension COPY node_modules/@sentry/aws-serverless/build/lambda-extension/sentry-extension /opt/extensions/sentry-extension COPY node_modules/@sentry/aws-serverless/build/lambda-extension/index.mjs /opt/sentry-extension/index.mjs RUN chmod +x /opt/extensions/sentry-extension /opt/sentry-extension/index.mjsSentry.init({ dsn: '__DSN__', tunnel: 'http://localhost:9000/envelope', });This works with any Sentry SDK (
@sentry/aws-serverless,@sentry/sveltekit,@sentry/node, etc.). -
feat(cloudflare): Support basic WorkerEntrypoint (#19884)
withSentrynow supports instrumenting classes extending Cloudflare'sWorkerEntrypoint. This instrumentsfetch,scheduled,queue, andtailhandlers.import * as Sentry from '@sentry/cloudflare'; import { WorkerEntrypoint } from 'cloudflare:workers'; class MyWorker extends WorkerEntrypoint { async fetch(request: Request): Promise<Response> { return new Response('Hello World!'); } } export default Sentry.withSentry(env => ({ dsn: env.SENTRY_DSN, tracesSampleRate: 1.0 }), MyWorker); -
ref(core): Unify .do* span ops to
gen_ai.generate_content(#20074)All Vercel AI
do*spans (ai.generateText.doGenerate,ai.streamText.doStream,ai.generateObject.doGenerate,ai.streamObject.doStream) now use a single unified span opgen_ai.generate_contentinstead of separate ops likegen_ai.generate_text,gen_ai.stream_text,gen_ai.generate_object, andgen_ai.stream_object. -
ref(core): Remove provider-specific AI span attributes in favor of
gen_aiattributes in sentry conventions (#20011)The following provider-specific span attributes have been removed from the OpenAI and Anthropic AI integrations. Use the standardized
gen_ai.*equivalents instead:Removed attribute Replacement openai.response.idgen_ai.response.idopenai.response.modelgen_ai.response.modelopenai.usage.prompt_tokensgen_ai.usage.input_tokensopenai.usage.completion_tokensgen_ai.usage.output_tokensopenai.response.timestamp(removed, no replacement) anthropic.response.timestamp(removed, no replacement) If you reference these attributes in hooks (e.g.
beforeSendTransaction), update them to thegen_ai.*equivalents. -
feat(core): Support embeddings in LangChain (#20017)
Adds instrumentation for LangChain embeddings (
embedQuery,embedDocuments), creatinggen_ai.embeddingsspans. In Node.js, embedding classes from@langchain/openai,@langchain/google-genai,@langchain/mistralai, and@langchain/google-vertexaiare auto-instrumented. For other runtimes, use the newinstrumentLangChainEmbeddingsAPI:import * as Sentry from '@sentry/cloudflare'; import { OpenAIEmbeddings } from '@langchain/openai'; const embeddings = Sentry.instrumentLangChainEmbeddings(new OpenAIEmbeddings({ model: 'text-embedding-3-small' })); await embeddings.embedQuery('Hello world');
Other Changes
- feat(core): Support registerTool/registerResource/registerPrompt in MCP integration (#20071)
- feat(core, node): Portable Express integration (#19928)
- feat(deno): Add
denoRuntimeMetricsIntegration(#20023) - feat(deps): Bump bundler plugins to
5.2.0(#20122) - feat(deps): bump @hapi/content from 6.0.0 to 6.0.1 (#20102)
- feat(node, bun): Enforce minimum collection interval in runtime metrics integrations (#20068)
- feat(nuxt): Exclude tracing meta tags on cached pages in Nuxt 5 (#20168)
- feat(react-router): Export
sentryOnError(#20120) - fix(aws-serverless): Add timeout to _endSpan forceFlush to prevent Lambda hanging (#20064)
- fix(cloudflare): Ensure every request instruments functions (#20044)
- fix(core): Only attach
flagscontext to error events (#20116) - fix(core): Replace regex with string check in stack parser to prevent main thread blocking (#20089)
- fix(core): set span.status to error when MCP tool returns JSON-RPC error response (#20082)
- fix(gatsby): Fix errorHandler signature to match bundler-plugin-core API (#20048)
- ref(core): Do not emit spans for chats.create in google-genai (#19990)
Internal Changes
- chore: Remove unused
tsconfig-templatefolder (#20067) - chore: Update validate-pr workflow (#20072)
- chore(deps-dev): Bump effect from 3.20.0 to 3.21.0 (#19999)
- chore(deps): Bump @xmldom/xmldom from 0.8.3 to 0.8.12 (#20066)
- chore(deps): Bump lodash.template from 4.5.0 to 4.18.1 (#20085)
- chore(oxlint): Add typeawareness into oxlintrc (#20075)
- ci(deps): Bump getsentry/craft/.github/workflows/changelog-preview.yml from 2.24.1 to 2.25.2 (#20081)
- ci(deps): Bump
mshick/add-pr-comment(#20078) - ref(core): Extract shared endStreamSpan for AI integrations (#20021)
- ref(core): Simplify addResponseAttributes in openai integration (#20013)
- test(angular): Bump TypeScript to ~6.0.0 in angular-21 E2E test app (#20134)
- test(nuxt): Make Nuxt 5 (nightly) E2E optional (#20113)
- tests(node): Add node integration tests for Vercel
ToolLoopAgent(#20087)
10.47.0
Important Changes
-
feat(node-core): Add OTLP integration for node-core/light (#19729)
Added
otlpIntegrationat@sentry/node-core/light/otlpfor users who manage their own OpenTelemetry setup and want to send trace data to Sentry without adopting the full@sentry/nodeSDK.import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node'; import * as Sentry from '@sentry/node-core/light'; import { otlpIntegration } from '@sentry/node-core/light/otlp'; const provider = new NodeTracerProvider(); provider.register(); Sentry.init({ dsn: '__DSN__', integrations: [ otlpIntegration({ // Export OTel spans to Sentry via OTLP (default: true) setupOtlpTracesExporter: true, }), ], });The integration links Sentry errors to OTel traces and exports spans to Sentry via OTLP.
-
feat(node, bun): Add runtime metrics integrations for Node.js and Bun (#19923, #19979)
New
nodeRuntimeMetricsIntegrationandbunRuntimeMetricsIntegrationautomatically collect runtime health metrics and send them to Sentry on a configurable interval (default: 30s). Collected metrics include memory (RSS, heap used/total), CPU utilization, event loop utilization, and process uptime. Node additionally collects event loop delay percentiles (p50, p99). Extra metrics like CPU time and external memory are available as opt-in.// Node.js import * as Sentry from '@sentry/node'; Sentry.init({ dsn: '...', integrations: [Sentry.nodeRuntimeMetricsIntegration()], }); // Bun import * as Sentry from '@sentry/bun'; Sentry.init({ dsn: '...', integrations: [Sentry.bunRuntimeMetricsIntegration()], }); -
feat(core): Support embedding APIs in google-genai (#19797)
Adds instrumentation for the Google GenAI
embedContentAPI, creatinggen_ai.embeddingsspans. -
feat(browser): Add
elementTimingIntegrationfor tracking element render and load times (#19869)The new
elementTimingIntegrationcaptures Element Timing API data as Sentry metrics. It emitselement_timing.render_timeandelement_timing.load_timedistribution metrics for elements annotated with theelementtimingHTML attribute.import * as Sentry from '@sentry/browser'; Sentry.init({ dsn: '__DSN__', integrations: [Sentry.browserTracingIntegration(), Sentry.elementTimingIntegration()], });<img src="hero.jpg" elementtiming="hero-image" />
Other Changes
- feat(nuxt): Add middleware instrumentation compatibility for Nuxt 5 (#19968)
- feat(nuxt): Support parametrized SSR routes in Nuxt 5 (#19977)
- feat(solid): Add route parametrization for Solid Router (#20031)
- fix(core): Guard nullish response in supabase PostgREST handler (#20033)
- fix(node): Deduplicate
sentry-traceandbaggageheaders on outgoing requests (#19960) - fix(node): Ensure startNewTrace propagates traceId in OTel environments (#19963)
- fix(nuxt): Use virtual module for Nuxt pages data (SSR route parametrization) (#20020)
- fix(opentelemetry): Convert seconds timestamps in span.end() to milliseconds (#19958)
- fix(profiling): Disable profiling in worker threads (#20040)
- fix(react-router): Disable debug ID injection in Vite plugin to prevent double injection (#19890)
- refactor(browser): Reduce browser package bundle size (#19856)
- feat(deps): Bump OpenTelemetry dependencies (#20046)
Internal Changes
- chore: Add shared validate-pr composite action (#20025)
- chore: Update validate-pr action to latest version (#20027)
- chore(deps): Bump @apollo/server from 5.4.0 to 5.5.0 (#20007)
- chore(deps): Bump amqplib from 0.10.7 to 0.10.9 (#20000)
- chore(deps): Bump srvx from 0.11.12 to 0.11.13 (#20001)
- chore(deps-dev): Bump node-forge from 1.3.2 to 1.4.0 (#20012)
- chore(deps-dev): Bump yaml from 2.8.2 to 2.8.3 (#19985)
- ci(deps): Bump actions/upload-artifact from 6 to 7 (#19569)
- docs(release): Update publishing-a-release.md (#19982)
- feat(deps): Bump babel-loader from 10.0.0 to 10.1.1 (#19997)
- feat(deps): Bump handlebars from 4.7.7 to 4.7.9 (#20008)
- fix(browser-tests): Pin axios to 1.13.5 to avoid compromised 1.14.1 (#20047)
- fix(ci): Update validate-pr action to remove draft enforcement (#20035)
- fix(ci): Update validate-pr action to remove draft enforcement (#20037)
- fix(e2e): Pin @opentelemetry/api to 1.9.0 in ts3.8 test app (#19992)
- ref(browser-tests): Add waitForMetricRequest helper (#20002)
- ref(core): Consolidate getOperationName into one shared utility (#19971)
- ref(core): Introduce instrumented method registry for AI integrations (#19981)
- test(deno): Expand Deno E2E test coverage (#19957)
- test(e2e): Add e2e tests for
nodeRuntimeMetricsIntegration(#19989)
10.46.0
Important Changes
-
feat(elysia):
@sentry/elysia- Alpha Release (#19509)New Sentry SDK for the Elysia web framework, supporting both Bun and Node.js runtimes.
Note: This is an alpha release. Please report any issues or feedback on GitHub.
Features
- Automatic error capturing — 5xx errors captured via global
onErrorhook; 3xx/4xx ignored by default. Customizable withshouldHandleError. - Automatic tracing — Lifecycle spans for every Elysia phase (Request, Parse, Transform, BeforeHandle, Handle, AfterHandle, MapResponse, AfterResponse, Error) with parameterized route names (e.g.
GET /users/:id). - Distributed tracing —
sentry-traceandbaggageheaders propagated automatically on incoming/outgoing requests.
Usage
import * as Sentry from '@sentry/elysia'; import { Elysia } from 'elysia'; Sentry.init({ dsn: '__DSN__', tracesSampleRate: 1.0 }); const app = Sentry.withElysia(new Elysia()); app.get('/', () => 'Hello World'); app.listen(3000); - Automatic error capturing — 5xx errors captured via global
Other Changes
- feat(nuxt): Conditionally use plugins based on Nitro version (v2/v3) (#19955)
- fix(cloudflare): Forward
ctxargument toWorkflow.douser callback (#19891) - fix(cloudflare): Send correct events in local development (#19900)
- fix(core): Do not overwrite user provided conversation id in Vercel (#19903)
- fix(core): Preserve
.withResponse()on Anthropic instrumentation (#19935) - fix(core): Send
internal_erroras span status for Vercel error spans (#19921) - fix(core): Truncate content array format in Vercel (#19911)
- fix(deps): bump fast-xml-parser to 5.5.8 in @azure/core-xml chain (#19918)
- fix(deps): bump socket.io-parser to 4.2.6 to fix CVE-2026-33151 (#19880)
- fix(nestjs): Add
nodeto nest metadata (#19875) - fix(serverless): Add node to metadata (#19878)
Internal Changes
- chore(ci): Fix "Gatbsy" typo in issue package label workflow (#19905)
- chore(claude): Enable Claude Code Intelligence (LSP) (#19930)
- chore(deps): bump mongodb-memory-server-global from 10.1.4 to 11.0.1 (#19888)
- chore(deps-dev): bump @react-router/node from 7.13.0 to 7.13.1 (#19544)
- chore(deps-dev): bump effect from 3.19.19 to 3.20.0 (#19926)
- chore(deps-dev): bump qunit-dom from 3.2.1 to 3.5.0 (#19546)
- chore(node-integration-tests): Remove unnecessary
file-typedependency (#19824) - chore(remix): Replace glob with native recursive fs walk (#19531)
- feat(deps): bump stacktrace-parser from 0.1.10 to 0.1.11 (#19887)
- fix(craft): Add missing mainDocsUrl for @sentry/effect SDK (#19860)
- fix(deps): bump next to 15.5.14 in nextjs-15 and nextjs-15-intl E2E test apps (#19917)
- fix(deps): update lockfile to resolve h3@1.15.10 (#19933)
- ref(core): Remove duplicate
buildMethodPathutility from openai (#19969) - ref(elysia): Drop
@elysiajs/opentelemetrydependency (#19947) - ref(nuxt): Extract core logic for storage/database to prepare for Nuxt v5 (#19920)
- ref(nuxt): Extract handler patching to extra plugin for Nitro v2/v3 (#19915)
- ref(sveltekit): Replace recast + @babel/parser with acorn (#19533)
- test(astro): Re-enable server island tracing e2e test in Astro 6 (#19872)
- test(cloudflare): Enable multi-worker tests for CF integration tests (#19938)
Work in this release was contributed by @roli-lpci. Thank you for your contributions!
Important Changes
-
feat(node): Add
nodeRuntimeMetricsIntegrationfor automatic Node.js runtime metrics (#19923)The new
nodeRuntimeMetricsIntegrationautomatically collects Node.js runtime health metrics and sends them to Sentry. Eight metrics are emitted by default every 30 seconds: memory (RSS, heap used/total), CPU utilization, event loop delay (p50, p99), event loop utilization, and process uptime. Additional metrics are available as opt-in.import * as Sentry from '@sentry/node'; Sentry.init({ dsn: '...', integrations: [Sentry.nodeRuntimeMetricsIntegration()], });
10.45.0
Important Changes
-
feat(remix): Server Timing Headers Trace Propagation (#18653)
The Remix SDK now supports automatic trace propagation via
Server-Timingresponse headers to continue pageload traces on the client side. This means, you no longer have to define a custommetafunction to add Sentry<meta>tags to your page as previously. We'll update out Remix tracing docs after this release.
Other Changes
- fix(cloudflare): Use correct env types for
withSentry(#19836) - fix(core): Align error span status message with core
SpanStatusTypefor langchain/google-genai (#19863) - fix(deno): Clear pre-existing OTel global before registering TracerProvider (#19723)
- fix(nextjs): Skip tracing for tunnel requests (#19861)
- fix(node-core): Recycle propagationContext for each request (#19835)
- ref(core): Simplify core utility functions for smaller bundle (#19854)
Internal Changes
- chore(deps): bump next from 16.1.5 to 16.1.7 in /dev-packages/e2e-tests/test-applications/nextjs-16 (#19851)
- ci(release): Switch from action-prepare-release to Craft (#18763)
- fix(deps): bump devalue 5.6.3 to 5.6.4 to fix CVE-2026-30226 (#19849)
- fix(deps): bump file-type to 21.3.2 and @nestjs/common to 11.1.17 (#19847)
- fix(deps): bump flatted 3.3.1 to 3.4.2 to fix CVE-2026-32141 (#19842)
- fix(deps): bump hono 4.12.5 to 4.12.7 in cloudflare-hono E2E test app (#19850)
- fix(deps): bump next to 15.5.13/16.1.7 to fix CVE-2026-1525, CVE-202-33036 and related (#19870)
- fix(deps): bump tar 7.5.10 to 7.5.11 to fix CVE-2026-31802 (#19846)
- fix(deps): bump undici 6.23.0 to 6.24.1 to fix multiple CVEs (#19841)
- fix(deps): bump unhead 2.1.4 to 2.1.12 to fix CVE-2026-31860 and CVE-2026-31873 (#19848)
- test(nextjs): Skip broken ISR tests (#19871)
- test(react): Add gql tests for react router (#19844)
10.44.0
Important Changes
-
feat(effect): Add
@sentry/effectSDK (Alpha) (#19644)This release introduces
@sentry/effect, a new SDK for Effect.ts applications. The SDK provides Sentry integration via composable Effect layers for both Node.js and browser environments.Compose the
effectLayerwith optional tracing, logging, and metrics layers to instrument your Effect application:import * as Sentry from '@sentry/effect'; import * as Layer from 'effect/Layer'; import * as Logger from 'effect/Logger'; const SentryLive = Layer.mergeAll( Sentry.effectLayer({ dsn: '__DSN__', tracesSampleRate: 1.0, enableLogs: true }), Layer.setTracer(Sentry.SentryEffectTracer), Logger.replace(Logger.defaultLogger, Sentry.SentryEffectLogger), Sentry.SentryEffectMetricsLayer, );Alpha features are still in progress, may have bugs and might include breaking changes. Please reach out on GitHub if you have any feedback or concerns.
-
feat(astro): Add Astro 6 support (#19745)
This release enables full support for Astro v6 by adjusting our Astro SDK's middleware to some Astro-internal changes. We cannot yet guarantee full support for server-islands, due to a bug in Astro v6 but we'll follow up on this once the bug is fixed.
-
feat(hono): Add basic instrumentation for Node runtime (#19817)
Adds a new package
@sentry/hono/node(alpha) with basic instrumentation for Hono applications running in Node.js. The Hono middleware for Cloudflare (@sentry/hono/cloudflare- alpha) comes with fixes, and it's now possible to access the Cloudflare Worker Bindings (env) from the options' callback.Start using the new Hono middlewares by installing
@sentry/honoand importing the respective middleware for your runtime. More instructions can be found in the Hono readme.Alpha features are still in progress, may have bugs and might include breaking changes. Please reach out on GitHub if you have any feedback or concerns.
-
feat(nestjs): Instrument
@nestjs/bullmq@Processordecorator (#19759)Automatically capture exceptions and create transactions for BullMQ queue processors in NestJS applications.
When using the
@Processordecorator from@nestjs/bullmq, the SDK now automatically wraps theprocess()method to createqueue.processtransactions with proper isolation scopes, preventing breadcrumb and scope leakage between jobs and HTTP requests. Errors thrown in processors are captured with theauto.queue.nestjs.bullmqmechanism type.Requires
@nestjs/bullmqv10.0.0 or later. -
feat(nestjs): Instrument
@nestjs/scheduledecorators (#19735)Automatically capture exceptions thrown in
@Cron,@Interval, and@Timeoutdecorated methods.Previously, exceptions in
@Cronmethods were only captured if you used theSentryCrondecorator. Now they are captured automatically. The exception mechanism type changed fromauto.cron.nestjs.asynctoauto.function.nestjs.cron. If you have Sentry queries or alerts that filter on the old mechanism type, update them accordingly. -
feat(node): Expose
headersToSpanAttributesoption onnativeNodeFetchIntegration()(#19770)Response headers like
http.response.header.content-lengthwere previously captured automatically on outgoing fetch spans but are now opt-in since@opentelemetry/instrumentation-undici@0.22.0. You can now configure which headers to capture via theheadersToSpanAttributesoption.Sentry.init({ integrations: [ Sentry.nativeNodeFetchIntegration({ headersToSpanAttributes: { requestHeaders: ['x-custom-header'], responseHeaders: ['content-length', 'content-type'], }, }), ], });
Other Changes
- feat(browser/cloudflare): Export conversation id from browser and cloudflare runtimes (#19820)
- feat(bun): Set http response header attributes instead of response context headers (#19821)
- feat(core): Add
sentry.timestamp.sequenceattribute for timestamp tie-breaking (#19421) - feat(deno): Set http response header attributes instead of response context headers (#19822)
- feat(deps): Bump OpenTelemetry dependencies (#19682)
- feat(nestjs): Use more specific span origins for NestJS guards, pipes, interceptors, and exception filters (#19751)
- feat(nextjs): Vercel queue instrumentation (#19799)
- feat(node): Avoid OTEL instrumentation for outgoing requests on Node 22+ (#17355)
- feat(deps): bump hono from 4.12.5 to 4.12.7 (#19747)
- feat(deps): bump mysql2 from 3.14.4 to 3.19.1 (#19787)
- feat(deps): bump simple-git from 3.30.0 to 3.33.0 (#19744)
- feat(deps): bump yauzl from 3.2.0 to 3.2.1 (#19809)
- fix(browser): Skip browserTracingIntegration setup for bot user agents (#19708)
- fix(cloudflare): Recreate client when previous one was disposed (#19727)
- fix(core): Align Vercel embedding spans with semantic conventions (#19795)
- fix(core): Fallback to
sendDefaultPiisetting in langchain and langgraph in non-node environments (#19813) - fix(core): Improve Vercel AI SDK instrumentation attributes (#19717)
- fix(hono): Align error mechanism (#19831)
- fix(hono): Allow passing env and fix type issues (#19825)
- fix(nestjs): Fork isolation scope in
@nestjs/event-emitterinstrumentation (#19725) - fix(nextjs): Log correct
lastEventIdwhen error is thrown in component render (#19764) - fix(nextjs): Strip sourceMappingURL comments after deleting source maps in turbopack builds (#19814)
- fix(nuxt): Upload client source maps (#19805)
- fix(profiling-node): Fix NODE_VERSION rendered as [object Object] in warning (#19788)
Internal Changes
- chore: Add oxlint migration commits to blame ignore (#19784)
- chore: add oxlint typescript program suppression to workspace settings (#19692)
- chore: Bump oxlint and oxfmt (#19771)
- chore: Clean up lint and format script names (#19719)
- chore(agents): Be more explicit on linting and formatting (#19803)
- chore(ci): Extract metadata workflow (#19680)
- chore(deps): bump tedious from 18.6.1 to 19.2.1 (#19786)
- chore(deps-dev): bump file-type from 20.5.0 to 21.3.1 (#19748)
- chore(effect): Add Effect to craft, README and issue templates (#19837)
- chore(lint): Rule adjustments and fix warnings (#19612)
- chore(skills): Add
skill-creatorand update managed agent skills (#19713) - docs(changelog): Add entry for
@sentry/honoalpha release (#19828) - docs(hono): Document usage without
"*"(#19756) - docs(new-release): Document
sdkNamefor craft (#19736) - docs(new-release): Update docs based on new Craft flow (#19731)
- ref(cloudflare): Prepare for WorkerEntrypoint (#19742)
- ref(nestjs): Move event instrumentation unit tests to separate file (#19738)
- style: Auto changes made from "yarn fix" (#19710)
- test(astro,cloudflare): Add an E2E test for Astro 6 on Cloudflare (#19781)
- test(browser): Add simulated mfe integration test (#19768)
- test(e2e): Add MFE e2e test using
vite-plugin-federation(#19778) - test(nextjs): Add vercel queue tests to next-16 (#19798)
- tests(core): Fix flaky metric sequence number test (#19754)
10.43.0
Important Changes
-
feat(nextjs): Add Turbopack support for React component name annotation (#19604)
We added experimental support for React component name annotation in Turbopack builds. When enabled, JSX elements are annotated with
data-sentry-component,data-sentry-element, anddata-sentry-source-fileattributes at build time. This enables searching Replays by component name, seeing component names in breadcrumbs, and performance monitoring — previously only available with webpack builds.This feature requires Next.js 16+ and is currently behind an experimental flag:
// next.config.ts import { withSentryConfig } from '@sentry/nextjs'; export default withSentryConfig(nextConfig, { _experimental: { turbopackReactComponentAnnotation: { enabled: true, ignoredComponents: ['Header', 'Footer'], // optional }, }, }); -
feat(hono): Instrument middlewares
app.use()(#19611)Hono middleware registered via
app.use()is now automatically instrumented, creating spans for each middleware invocation.
Other Changes
- feat(node-core,node): Add
tracePropagationoption to http and fetch integrations (#19712) - feat(hono): Use parametrized names for errors (#19577)
- fix(browser): Fix missing traces for user feedback (#19660)
- fix(cloudflare): Use correct Proxy receiver in
instrumentDurableObjectStorage(#19662) - fix(core): Standardize Vercel AI span descriptions to align with GenAI semantic conventions (#19624)
- fix(deps): Bump hono to 4.12.5 to fix multiple vulnerabilities (#19653)
- fix(deps): Bump svgo to 4.0.1 to fix DoS via entity expansion (#19651)
- fix(deps): Bump tar to 7.5.10 to fix hardlink path traversal (#19650)
- fix(nextjs): Align Turbopack module metadata injection with webpack behavior (#19645)
- fix(node): Prevent duplicate LangChain spans from double module patching (#19684)
- fix(node-core,vercel-edge): Use HEROKU_BUILD_COMMIT env var for default release (#19617)
- fix(sveltekit): Fix file system race condition in source map cleaning (#19714)
- fix(tanstackstart-react): Add workerd and worker export conditions (#19461)
- fix(vercel-ai): Prevent tool call span map memory leak (#19328)
- feat(deps): Bump @sentry/rollup-plugin from 5.1.0 to 5.1.1 (#19658)
Internal Changes
- chore: Migrate to oxlint (#19134)
- chore(aws-serverless): Don't build layer in
build:devcommand (#19586) - chore(ci): Allow triage action to run on issues from external users (#19701)
- chore(deps): Bump immutable from 4.0.0 to 4.3.8 (#19637)
- chore(e2e): Expand microservices E2E application with auto-tracing tests (#19652)
- chore(hono): Prepare readme and add craft entry (#19583)
- chore(sourcemaps): Make sourcemaps e2e test more generic (#19678)
- chore(tanstackstart-react): Add link to docs in README (#19697)
- feat(deps): Bump @hono/node-server from 1.19.4 to 1.19.10 (#19634)
- feat(deps): Bump underscore from 1.12.1 to 1.13.8 (#19616)
- test(angular): Fix failing canary test (#19639)
- test(nextjs): Add sourcemaps test for nextjs turbopack (#19647)
- tests(e2e): Add microservices e2e for nestjs (#19642)
- tests(e2e): Add websockets e2e for nestjs (#19630)
Work in this release was contributed by @dmmulroy, @lithdew, and @smorimoto. Thank you for your contributions!
10.42.0
- feat(consola): Enhance Consola integration to extract first-param object as searchable attributes (#19534)
- fix(astro): Do not inject withSentry into Cloudflare Pages (#19558)
- fix(core): Do not remove promiseBuffer entirely (#19592)
- fix(deps): Bump fast-xml-parser to 4.5.4 for CVE-2026-25896 (#19588)
- fix(react-router): Set correct transaction name when navigating with object argument (#19590)
- ref(nuxt): Use
addVitePlugininstead of deprecatedvite:extendConfig(#19464)
Internal Changes
10.41.0
Important Changes
-
feat(core,cloudflare,deno): Add
instrumentPostgresJsSqlinstrumentation (#19566)Added a new instrumentation helper for the
postgres(postgres.js) library, designed for SDKs that are not based on OpenTelemetry (e.g. Cloudflare, Deno). This wraps a postgres.jssqltagged template instance so that all queries automatically create Sentry spans.import postgres from 'postgres'; import * as Sentry from '@sentry/cloudflare'; // or '@sentry/deno' export default Sentry.withSentry(env => ({ dsn: '__DSN__' }), { async fetch(request, env, ctx) { const sql = Sentry.instrumentPostgresJsSql(postgres(env.DATABASE_URL)); // All queries now create Sentry spans const users = await sql`SELECT * FROM users WHERE id = ${userId}`; return Response.json(users); }, });The instrumentation is available in
@sentry/core,@sentry/cloudflare, and@sentry/deno. -
feat(nextjs): Add Turbopack support for
thirdPartyErrorFilterIntegration(#19542)We added experimental support for the
thirdPartyErrorFilterIntegrationwith Turbopack builds.This feature requires Next.js 16+ and is currently behind an experimental flag:
// next.config.ts import { withSentryConfig } from '@sentry/nextjs'; export default withSentryConfig(nextConfig, { _experimental: { turbopackApplicationKey: 'my-app-key', }, });Then configure the integration in your client instrumentation file with a matching key:
// instrumentation-client.ts import * as Sentry from '@sentry/nextjs'; Sentry.init({ integrations: [ Sentry.thirdPartyErrorFilterIntegration({ filterKeys: ['my-app-key'], behaviour: 'apply-tag-if-exclusively-contains-third-party-frames', }), ], });
Other Changes
- feat(core,cloudflare): Add dispose to the client for proper cleanup (#19506)
- feat(deps): Bump rxjs from 7.8.1 to 7.8.2 (#19545)
- feat(nextjs): Use
not: foreigncondition in turbopack loaders (#19502) - feat(react-router): Include middleware function names and indices (#19109)
- fix(consola): Normalize extra keys from consola (#19511)
- fix(core): Improve message truncation for multimodal content and normalize streaming span names (#19500)
- fix(core): Strip inline media from multimodal content before stringification (#19540)
- fix(deps): Bump transitive rollup deps to patch CVE-2026-27606 (#19565)
- fix(langchain): Use runName argument in handleChainStart to fix unknown_chain spans (#19554)
- fix(nestjs): Improve control flow exception filtering (#19524)
- fix(tanstackstart-react): Flush events in server entry point for serverless environments (#19513)
- fix(vue): Avoid triggering deprecated next callback from router instrumentation (#19476)
Internal Changes
- chore: Updating minimatch (#19434)
- chore(agents): Add
dotagents(#19526) - chore(agents): Add nested
AGENTS.mdfor browser (#19551) - chore(agents): Add nested
AGENTS.mdfor nextjs (#19556) - chore(agents): Consolidate SDK dev rules into
AGENTS.md(#19521) - chore(agents): Migrate repo-wide cursor rules to skills (#19549)
- chore(agents): Remove stale cursor commands (#19560)
- chore(ci): Validate alert id (#19499)
- chore(deps): Bump rollup to 4.59.0 to fix path traversal vulnerability (#19538)
- chore(lint): Remove junit report file (#19491)
- chore(svelte,sveltekit): Use version range for magic-string (#19520)
- chore(tanstackstart): Fix leftover formatting issue (#19536)
- test(consola): Restructure tests (#19517)
- test(node): Test runName parameter in handleChainStart for langchain (#19562)
Work in this release was contributed by @YevheniiKotyrlo. Thank you for your contribution!
10.40.0
Important Changes
-
feat(tanstackstart-react): Add global sentry exception middlewares (#19330)
The
sentryGlobalRequestMiddlewareandsentryGlobalFunctionMiddlewareglobal middlewares capture unhandled exceptions thrown in TanStack Start API routes and server functions. Add them as the first entries in therequestMiddlewareandfunctionMiddlewarearrays ofcreateStart():import { createStart } from '@tanstack/react-start/server'; import { sentryGlobalRequestMiddleware, sentryGlobalFunctionMiddleware } from '@sentry/tanstackstart-react/server'; export default createStart({ requestMiddleware: [sentryGlobalRequestMiddleware, myRequestMiddleware], functionMiddleware: [sentryGlobalFunctionMiddleware, myFunctionMiddleware], }); -
feat(tanstackstart-react)!: Export Vite plugin from
@sentry/tanstackstart-react/vitesubpath (#19182)The
sentryTanstackStartVite plugin is now exported from a dedicated subpath. Update your import:- import { sentryTanstackStart } from '@sentry/tanstackstart-react'; + import { sentryTanstackStart } from '@sentry/tanstackstart-react/vite'; -
fix(node-core): Reduce bundle size by removing apm-js-collab and requiring pino >= 9.10 (#18631)
In order to keep receiving pino logs, you need to update your pino version to >= 9.10, the reason for the support bump is to reduce the bundle size of the node-core SDK in frameworks that cannot tree-shake the apm-js-collab dependency.
-
fix(browser): Ensure user id is consistently added to sessions (#19341)
Previously, the SDK inconsistently set the user id on sessions, meaning sessions were often lacking proper coupling to the user set for example via
Sentry.setUser(). Additionally, the SDK incorrectly skipped starting a new session for the first soft navigation after the pageload. This patch fixes these issues. As a result, metrics around sessions, like "Crash Free Sessions" or "Crash Free Users" might change. This could also trigger alerts, depending on your set thresholds and conditions. We apologize for any inconvenience caused!While we're at it, if you're using Sentry in a Single Page App or meta framework, you might want to give the new
'page'session lifecycle a try! This new mode no longer creates a session per soft navigation but continues the initial session until the next hard page refresh. Check out the docs to learn more! -
ref!(gatsby): Drop Gatsby v2 support (#19467)
We drop support for Gatsby v2 (which still relies on webpack 4) for a critical security update in https://github.com/getsentry/sentry-javascript-bundler-plugins/releases/tag/5.0.0
Other Changes
- feat(astro): Add support for Astro on CF Workers (#19265)
- feat(cloudflare): Instrument async KV API (#19404)
- feat(core): Add framework-agnostic tunnel handler (#18892)
- feat(deno): Export logs API from Deno SDK (#19313)
- feat(deno): Export metrics API from Deno SDK (#19305)
- feat(deno): instrument Deno.serve with async context support (#19230)
- feat(deps): bump babel-loader from 8.2.5 to 10.0.0 (#19303)
- feat(deps): bump body-parser from 1.20.4 to 2.2.2 (#19191)
- feat(deps): Bump hono from 4.11.7 to 4.11.10 (#19440)
- feat(deps): bump qs from 6.14.1 to 6.14.2 (#19310)
- feat(deps): bump the opentelemetry group with 4 updates (#19425)
- feat(feedback): Add
setTheme()to dynamically update feedback widget color scheme (#19430) - feat(nextjs): Add
sourcemaps.filesToDeleteAfterUploadas a top-level option (#19280) - feat(node): Add
ignoreConnectSpansoption topostgresIntegration(#19291) - feat(node): Bump to latest @fastify/otel (#19452)
- fix: Bump bundler plugins to v5 (#19468)
- fix: updated the codecov config (#19350)
- fix(aws-serverless): Prevent crash in
isPromiseAllSettledResultwith null/undefined array elements (#19346) - fix(bun) Export pinoIntegration from @sentry/node (#17990)
- fix(core,browser): Delete SentryNonRecordingSpan from fetch/xhr map (#19336)
- fix(core): Explicitly flush log buffer in
client.close()(#19371) - fix(core): Langgraph state graph invoke accepts null to resume (#19374)
- fix(core): Wrap decodeURI in node stack trace parser to handle malformed URIs (#19400)
- fix(deps): Bump nuxt devDependency to fix CVE-2026-24001 (#19249)
- fix(deps): Bump to latest version of each minimatch major (#19486)
- fix(nextjs): Apply environment from
optionsif set (#19274) - fix(nextjs): Don't set
sentry.drop_transactionattribute on spans whenskipOpenTelemetrySetupis enabled (#19333) - fix(nextjs): Normalize trailing slashes in App Router route parameterization (#19365)
- fix(nextjs): Return correct lastEventId for SSR pages (#19240)
- fix(nextjs): Set parameterized transaction name for non-transaction events (#19316)
- fix(node-core): Align pino mechanism type with spec conventions (#19363)
- fix(nuxt): Use
options.rootDirinstead ofoptions.srcDir(#19343)
Internal Changes
- test(nextjs): Add bun e2e test app ([#19318](https://github.com/getsentry/sentry-javascript/pull/19318)) - test(nextjs): Deactivate canary test for cf-workers ([#19483](https://github.com/getsentry/sentry-javascript/pull/19483)) - tests(langchain): Fix langchain v1 internal error tests ([#19409](https://github.com/getsentry/sentry-javascript/pull/19409)) - ref(nuxt): Remove `defineNitroPlugin` wrapper ([#19334](https://github.com/getsentry/sentry-javascript/pull/19334)) - ref(cloudflare): Move internal files and functions around ([#19369](https://github.com/getsentry/sentry-javascript/pull/19369)) - chore: Add external contributor to CHANGELOG.md ([#19395](https://github.com/getsentry/sentry-javascript/pull/19395)) - chore: Add github action to notify stale PRs ([#19361](https://github.com/getsentry/sentry-javascript/pull/19361)) - chore: add oxfmt changes to blame ignore rev list ([#19366](https://github.com/getsentry/sentry-javascript/pull/19366)) - chore: Enhance AI integration guidelines with runtime-specific placem… ([#19296](https://github.com/getsentry/sentry-javascript/pull/19296)) - chore: Ignore `lerna.json` for prettier ([#19288](https://github.com/getsentry/sentry-javascript/pull/19288)) - chore: migrate to oxfmt ([#19200](https://github.com/getsentry/sentry-javascript/pull/19200)) - chore: Revert to lerna v8 ([#19294](https://github.com/getsentry/sentry-javascript/pull/19294)) - chore: Unignore HTML files and reformat with oxfmt ([#19311](https://github.com/getsentry/sentry-javascript/pull/19311)) - chore(ci): Adapt max turns of triage issue agent ([#19473](https://github.com/getsentry/sentry-javascript/pull/19473)) - chore(ci): Add `environment` to triage action ([#19375](https://github.com/getsentry/sentry-javascript/pull/19375)) - chore(ci): Add `id-token: write` permission to triage workflow ([#19381](https://github.com/getsentry/sentry-javascript/pull/19381)) - chore(ci): Move monorepo to nx ([#19325](https://github.com/getsentry/sentry-javascript/pull/19325)) - chore(cursor): Add rules for fetching develop docs ([#19377](https://github.com/getsentry/sentry-javascript/pull/19377)) - chore(deps-dev): Bump @sveltejs/kit from 2.49.5 to 2.52.2 in /dev-packages/e2e-tests/test-applications/sveltekit-2 ([#19441](https://github.com/getsentry/sentry-javascript/pull/19441)) - chore(deps-dev): Bump @sveltejs/kit from 2.49.5 to 2.52.2 in /dev-packages/e2e-tests/test-applications/sveltekit-2-kit-tracing ([#19446](https://github.com/getsentry/sentry-javascript/pull/19446)) - chore(deps-dev): Bump @sveltejs/kit from 2.49.5 to 2.52.2 in /dev-packages/e2e-tests/test-applications/sveltekit-cloudflare-pages ([#19462](https://github.com/getsentry/sentry-javascript/pull/19462)) - chore(deps-dev): Bump @sveltejs/kit from 2.50.1 to 2.52.2 ([#19442](https://github.com/getsentry/sentry-javascript/pull/19442)) - chore(deps-dev): bump @testing-library/react from 13.0.0 to 15.0.5 ([#19194](https://github.com/getsentry/sentry-javascript/pull/19194)) - chore(deps-dev): bump @types/ember__debug from 3.16.5 to 4.0.8 ([#19429](https://github.com/getsentry/sentry-javascript/pull/19429)) - chore(deps-dev): bump ember-resolver from 13.0.2 to 13.1.1 ([#19301](https://github.com/getsentry/sentry-javascript/pull/19301)) - chore(deps): Bump @actions/glob from 0.4.0 to 0.6.1 ([#19427](https://github.com/getsentry/sentry-javascript/pull/19427)) - chore(deps): bump agents from 0.2.32 to 0.3.10 in /dev-packages/e2e-tests/test-applications/cloudflare-mcp ([#19326](https://github.com/getsentry/sentry-javascript/pull/19326)) - chore(deps): Bump hono from 4.11.7 to 4.11.10 in /dev-packages/e2e-tests/test-applications/cloudflare-hono ([#19438](https://github.com/getsentry/sentry-javascript/pull/19438)) - chore(deps): Bump Sentry CLI to latest v2 ([#19477](https://github.com/getsentry/sentry-javascript/pull/19477)) - chore(deps): Bump transitive dep `fast-xml-parser` ([#19433](https://github.com/getsentry/sentry-javascript/pull/19433)) - chore(deps): upgrade tar to 7.5.9 to fix CVE-2026-26960 ([#19445](https://github.com/getsentry/sentry-javascript/pull/19445)) - chore(github): Add `allowedTools` to Claude GitHub action ([#19386](https://github.com/getsentry/sentry-javascript/pull/19386)) - chore(github): Add workflow to trigger `triage-issue` skill ([#19358](https://github.com/getsentry/sentry-javascript/pull/19358)) - chore(github): Add write tool for markdown report ([#19387](https://github.com/getsentry/sentry-javascript/pull/19387)) - chore(github): Change tool permission path ([#19389](https://github.com/getsentry/sentry-javascript/pull/19389)) - chore(llm): Add `triage-issue` skill ([#19356](https://github.com/getsentry/sentry-javascript/pull/19356)) - chore(llm): Better defense against prompt injection in triage skill ([#19410](https://github.com/getsentry/sentry-javascript/pull/19410)) - chore(llm): Make cross-repo search optional and remove file cleanup ([#19401](https://github.com/getsentry/sentry-javascript/pull/19401)) - chore(node-core): Make @sentry/opentelemetry not a peer dep in node… ([#19308](https://github.com/getsentry/sentry-javascript/pull/19308)) - chore(repo): Allow WebFetch for Sentry docs in Claude settings ([#18890](https://github.com/getsentry/sentry-javascript/pull/18890)) - chore(repo): Increase number of concurrently running nx tasks ([#19443](https://github.com/getsentry/sentry-javascript/pull/19443)) - chore(skills): Add security notes for injection defense ([#19379](https://github.com/getsentry/sentry-javascript/pull/19379)) - chore(triage-action): Fix JSON parsing ([#19471](https://github.com/getsentry/sentry-javascript/pull/19471)) - chore(triage-issue): Improve triage prompt for accuracy ([#19454](https://github.com/getsentry/sentry-javascript/pull/19454)) - chore(triage-skill): Add GitHub parsing python util script ([#19405](https://github.com/getsentry/sentry-javascript/pull/19405)) - chore(triage-skill): Increase `num_turns` and add script to post summary ([#19456](https://github.com/getsentry/sentry-javascript/pull/19456)) - ci(fix-security-vulnerability): Add id token write permission ([#19412](https://github.com/getsentry/sentry-javascript/pull/19412)) - ci(fix-security-vulnerability): Be specific about how to fetch the alert page ([#19414](https://github.com/getsentry/sentry-javascript/pull/19414)) - ci(fix-security-vulnerability): Run fetch alert first before executing skill ([#19418](https://github.com/getsentry/sentry-javascript/pull/19418)) - ci(fix-security-vulnerability): Use opus 4.6 ([#19416](https://github.com/getsentry/sentry-javascript/pull/19416)) - ci(github): Add tilde to file path to not exact-match ([#19392](https://github.com/getsentry/sentry-javascript/pull/19392)) - ci(triage-skill): Allow `Write` and remove `rm` permission ([#19397](https://github.com/getsentry/sentry-javascript/pull/19397)) - ci(triage-skill): Run on opened issues ([#19423](https://github.com/getsentry/sentry-javascript/pull/19423)) - docs(nuxt): Remove duplicated setup instructions ([#19422](https://github.com/getsentry/sentry-javascript/pull/19422)) - feat(ci): Add security vulnerability skill action ([#19355](https://github.com/getsentry/sentry-javascript/pull/19355))Work in this release was contributed by @LudvigHz and @jadengis. Thank you for your contributions!
10.39.0
Important Changes
-
feat(tanstackstart-react): Auto-instrument server function middleware (#19001)
The
sentryTanstackStartVite plugin now automatically instruments middleware increateServerFn().middleware([...])calls. This captures performance data without requiring manual wrapping withwrapMiddlewaresWithSentry(). -
feat(nextjs): New experimental automatic vercel cron monitoring (#19192)
Setting
_experimental.vercelCronMonitoringtotruein your Sentry configuration will automatically create Sentry cron monitors for your Vercel Cron Jobs.Please note that this is an experimental unstable feature and subject to change.
// next.config.ts export default withSentryConfig(nextConfig, { _experimental: { vercelCronMonitoring: true, }, }); -
feat(node-core): Add node-core/light (#18502)
This release adds a new light-weight
@sentry/node-core/lightexport to@sentry/node-core. The export acts as a light-weight SDK that does not depend on OpenTelemetry and emits no spans.Use this SDK when:
- You only need error tracking, logs or metrics without tracing data (no spans)
- You want to minimize bundle size and runtime overhead
- You don't need spans emitted by OpenTelemetry instrumentation
It supports error tracking and reporting, logs, metrics, automatic request isolation (requires Node.js 22+) and basic tracing via our
Sentry.startSpan*APIs.Install the SDK by running
npm install @sentry/node-coreand add Sentry at the top of your application's entry file:
import * as Sentry from '@sentry/node-core/light'; Sentry.init({ dsn: '__DSN__', });
Other Changes
- feat(browser): Add mode option for the browser session integration (#18997)
- feat(browser): Include culture context with events (#19148)
- feat(browser): Trace continuation from server-timing headers (#18673)
- feat(core,cloudflare): Enable certain fields with env variables (#19245)
- feat(deps): bump @isaacs/brace-expansion from 5.0.0 to 5.0.1 (#19149)
- feat(deps): bump @sentry/bundler-plugin-core from 4.8.0 to 4.9.0 (#19190)
- feat(deps): Bump
globin@sentry/react-router(#19162) - feat(deps): bump hono from 4.11.1 to 4.11.7 (#19068)
- feat(hono): Add base for Sentry Hono middleware (Cloudflare) (#18787)
- feat(nextjs): Set cloudflare runtime (#19084)
- feat(node-core): Add outgoing fetch trace propagation to light mode (#19262)
- feat(react): Add
lazyRouteManifestoption to resolve lazy-route names (#19086) - feat(vercel-ai): Add rerank support and fix token attribute mapping (#19144)
- fix(core): Avoid blocking the process for weightBasedFlushing (#19174)
- fix(core): Avoid blocking the process when calling
flushon empty buffer (#19062) - fix(core): Ensure partially set SDK metadata options are preserved (#19102)
- fix(core): Fix truncation to only keep last message in vercel (#19080)
- fix(core): Intercept .withResponse() to preserve OpenAI stream instrumentation (#19122)
- fix(core): Prevent infinite recursion when event processor throws (#19110)
- fix(core): Record client report with reason for HTTP 413 responses (#19093)
- fix(core): Remove outdated
_experiments.enableMetricsreferences from metrics JSDoc (#19252) - fix(core): Respect event.event_id in scope.captureEvent return value (#19113)
- fix(core): use sessionId for MCP transport correlation (#19172)
- fix(deps): Bump
@nestjs/platform-expressto11.1.13(#19206) - fix(deps): Bump diff to 5.2.2 (#19228)
- fix(deps): Bump js-yaml to 3.14.2 and 4.1.1 (#19216)
- fix(deps): Bump lodash to 4.17.23 (#19211)
- fix(deps): Bump mdast-util-to-hast to 13.2.1 (#19205)
- fix(deps): Bump node-forge to 1.3.2 (#19183)
- fix(deps): Bump react-router to 6.30.3 (#19212)
- fix(deps): Bump sinon to
21.0.1in@sentry/ember(#19246) - fix(deps): Bump vite to 5.4.21 (#19214)
- fix(nextjs): Expose an event id when
captureUnderscoreErrorExceptioncaptures an exception (#19185) - fix(nextjs): Populate SENTRY_SERVER_MODULES in Turbopack (#19231)
- fix(node): Use snake_case for Fastify's
request-handlerop. (#18729) - fix(nuxt): Avoid logging database skip warning when
debugis disabled (#19095) - fix(nuxt): Respect configured environment settings (#19243)
- fix(profiling-node): 137 ABI should not be pruned for node 24 (#19236)
- fix(replay): Improve error messages when compression worker fails to load (#19008)
- fix(svelte): Bump svelte dev dependency to
3.59.2(#19208) - fix(sveltekit): Detect used adapter via
svelte.config.js(#19270) - fix(tanstackstart-react): Use
auto.middleware.tanstackstartas middleware trace origin (#19137) - ref(core): Move
shouldPropagateTraceForUrlfrom opentelemetry to core (#19254) - ref(core): Move shouldPropagateTraceForUrl from opentelemetry to core (#19258)
- ref(sveltekit): Use
untrackto read route id without invalidation (#19272)
Internal Changes
- chore: Add cursor rules for AI integrations contributions (#19167)
- chore: Add Makefiles for dev-packages to make it convenient to run tests (#19203)
- chore: bump prettier to 3.8 (#19198)
- chore(bugbot): Add rule to flag not-unref'd timers (#19082)
- chore(deps-dev): bump @sveltejs/kit from 2.49.5 to 2.50.1 (#19089)
- chore(deps-dev): bump ts-node from 10.9.1 to 10.9.2 (#19189)
- chore(deps-dev): bump vite from 3.2.11 to 5.4.21 (#19227)
- chore(deps-dev): bump webpack from 5.95.0 to 5.104.1 (#19199)
- chore(deps-dev): bump yaml from 2.2.2 to 2.8.2 (#19087)
- chore(deps): Bump Apollo Server from v3 to v5 in integration tests (#19202)
- chore(deps): Bump express in test utils + e2e apps (#19159)
- chore(deps): Bump Lerna to v9 (#19244)
- chore(deps): Bump mongoose in integration tests (#19175)
- chore(deps): Bump solidjs to 1.9.11 to fix
serovalalerts (#19150) - chore(deps): Bump webpack from 5.97.0 to 5.104.0 in ember-classic e2e test (#19239)
- chore(deps): Bump webpack from 5.104.0 to 5.104.1 in ember-classic e2e test (#19247)
- chore(e2e): Add banner to readme (#19138)
- chore(llm): Add skill for fixing security vulnerabilities (#19178)
- chore(node-core): Fix node-core integration test assertions (#19219)
- ci: Ignore ticket creation for base branches other than develop/master (#19103)
- ci(e2e): Remove
nextjs-turbocanary tests (#19118) - ref: Removes unused eslint rule (via yarn fix) (#19266)
- test(e2e): Bump
nextjs-t3to next 15 (#19130) - test(e2e): Migrate test app
nextjs-turbointonextjs-15(#19107)
Work in this release was contributed by @limbonaut and @rfoel. Thank you for your contributions!
10.38.0
Important Changes
-
feat(tanstackstart-react): Auto-instrument request middleware (#18989)
The
sentryTanstackStartVite plugin now automatically instrumentsmiddlewarearrays increateFileRoute(). This captures performance data without requiring manual wrapping withwrapMiddlewaresWithSentry().
Other Changes
- feat: Use v4.8.0 bundler plugins (#18993)
- feat(browser): Add
logs.metricsbundle (#19020) - feat(browser): Add
replay.logs.metricsbundle (#19021) - feat(browser): Add
tracing.replay.logs.metricsbundle (#19039) - feat(deps): bump import-in-the-middle from 2.0.1 to 2.0.6 (#19042)
- feat(node): Add AI manual instrumentation exports to Node (#19063)
- feat(wasm): initialised sentryWasmImages for webworkers (#18812)
- fix(core): Classify custom
AggregateErrors as exception groups (#19053) - fix(nextjs): Turn off debugID injection if sourcemaps are explicitly disabled (#19010)
- fix(react): Avoid
String(key)to fix Symbol conversion error (#18982) - fix(react): Prevent lazy route handlers from updating wrong navigation span (#18898)
Internal Changes
- feat(deps-dev): bump @types/rsvp from 4.0.4 to 4.0.9 ([#19038](https://github.com/getsentry/sentry-javascript/pull/19038)) - ci(build): Run full test suite on new bundle with logs+metrics ([#19065](https://github.com/getsentry/sentry-javascript/pull/19065)) - ci(deps): bump actions/create-github-app-token from 1 to 2 ([#19028](https://github.com/getsentry/sentry-javascript/pull/19028)) - ci(deps): bump peter-evans/create-pull-request from 8.0.0 to 8.1.0 ([#19029](https://github.com/getsentry/sentry-javascript/pull/19029)) - chore: Add external contributor to CHANGELOG.md ([#19005](https://github.com/getsentry/sentry-javascript/pull/19005)) - chore(aws-serverless): Fix local cache issues ([#19081](https://github.com/getsentry/sentry-javascript/pull/19081)) - chore(dependabot): Allow all packages to update ([#19024](https://github.com/getsentry/sentry-javascript/pull/19024)) - chore(dependabot): Update ignore patterns and add more groups ([#19037](https://github.com/getsentry/sentry-javascript/pull/19037)) - chore(dependabot): Update ignore patterns and add more groups ([#19043](https://github.com/getsentry/sentry-javascript/pull/19043)) - chore(deps-dev): bump @edge-runtime/types from 3.0.1 to 4.0.0 ([#19032](https://github.com/getsentry/sentry-javascript/pull/19032)) - chore(deps-dev): bump @vercel/nft from 0.29.4 to 1.3.0 ([#19030](https://github.com/getsentry/sentry-javascript/pull/19030)) - chore(deps): bump @actions/artifact from 2.1.11 to 5.0.3 ([#19031](https://github.com/getsentry/sentry-javascript/pull/19031)) - chore(deps): bump hono from 4.11.4 to 4.11.7 in /dev-packages/e2e-tests/test-applications/cloudflare-hono ([#19009](https://github.com/getsentry/sentry-javascript/pull/19009)) - chore(deps): bump next from 16.0.9 to 16.1.5 in /dev-packages/e2e-tests/test-applications/nextjs-16-cacheComponents ([#19012](https://github.com/getsentry/sentry-javascript/pull/19012)) - chore(deps): Bump trpc v11 dependency in e2e test ([#19061](https://github.com/getsentry/sentry-javascript/pull/19061)) - chore(deps): Bump wrangler to 4.61.0 ([#19023](https://github.com/getsentry/sentry-javascript/pull/19023)) - chore(deps): Upgrade @remix-run deps to 2.17.4 ([#19040](https://github.com/getsentry/sentry-javascript/pull/19040)) - chore(deps): Upgrade `next` versions 15 and 16 ([#19057](https://github.com/getsentry/sentry-javascript/pull/19057)) - chore(deps): Upgrade Lerna to v8 ([#19050](https://github.com/getsentry/sentry-javascript/pull/19050)) - chore(deps): Upgrade next to 14.2.35 ([#19055](https://github.com/getsentry/sentry-javascript/pull/19055)) - chore(deps): Upgrade react-router, @react-router/node, @react-router/serve, @react-router/dev to 7.13.0 ([#19026](https://github.com/getsentry/sentry-javascript/pull/19026)) - chore(llm): Add claude skill + cursor command for adding new cdn bundles ([#19048](https://github.com/getsentry/sentry-javascript/pull/19048)) - chore(llm): Ignore local Claude settings ([#18893](https://github.com/getsentry/sentry-javascript/pull/18893)) - chore(react): Update react-router-5 dev dependency to another than 5.0.0 ([#19047](https://github.com/getsentry/sentry-javascript/pull/19047)) - chore(release): Add generate-changelog script ([#18999](https://github.com/getsentry/sentry-javascript/pull/18999)) - chore(remix): Upgrade @remix-run/router to ^1.23.2 ([#19045](https://github.com/getsentry/sentry-javascript/pull/19045)) - chore(solidstart): Bump peer dependencies of @solidjs/start ([#19051](https://github.com/getsentry/sentry-javascript/pull/19051)) - chore(solidstart): Upgrade Vinxi to update h3 peer dependency ([#19018](https://github.com/getsentry/sentry-javascript/pull/19018)) - chore(tests): Reject messages from unknown origins in integration tests ([#19016](https://github.com/getsentry/sentry-javascript/pull/19016))Work in this release was contributed by @harshit078. Thank you for your contribution!
10.37.0
Important Changes
-
feat(core): Introduces a new
Sentry.setConversationId()API to track multi turn AI conversations across API calls. (#18909)You can now set a conversation ID that will be automatically applied to spans within that scope. This allows you to link traces from the same conversation together.
import * as Sentry from '@sentry/node'; // Set conversation ID for all subsequent spans Sentry.setConversationId('conv_abc123'); // All AI spans will now include the gen_ai.conversation.id attribute await openai.chat.completions.create({...});This is particularly useful for tracking multiple AI API calls that are part of the same conversation, allowing you to analyze entire conversation flows in Sentry. The conversation ID is stored on the isolation scope and automatically applied to spans via the new
conversationIdIntegration. -
feat(tanstackstart-react): Auto-instrument global middleware in
sentryTanstackStartVite plugin (#18844)The
sentryTanstackStartVite plugin now automatically instrumentsrequestMiddlewareandfunctionMiddlewarearrays increateStart(). This captures performance data without requiring manual wrapping.Auto-instrumentation is enabled by default. To disable it:
// vite.config.ts sentryTanstackStart({ authToken: process.env.SENTRY_AUTH_TOKEN, org: 'your-org', project: 'your-project', autoInstrumentMiddleware: false, });
Other Changes
- feat(core): simplify truncation logic to only keep the newest message (#18906)
- feat(core): Support new client discard reason
invalid(#18901) - feat(deps): Bump OpenTelemetry instrumentations (#18934)
- feat(nextjs): Update default ignore list for sourcemaps (#18938)
- feat(node): pass prisma instrumentation options through (#18900)
- feat(nuxt): Don't run source maps related code on Nuxt "prepare" (#18936)
- feat(replay): Update client report discard reason for invalid sessions (#18796)
- feat(winston): Add customLevelMap for winston transport (#18922)
- feat(react-router): Add support for React Router instrumentation API (#18580)
- fix(astro): Do not show warnings for valid options (#18947)
- fix(core): Report well known values in gen_ai.operation.name attribute (#18925)
- fix(node-core): ignore vercel
AbortErrorby default on unhandled rejection (#18973) - fix(nuxt): include sentry.config.server.ts in nuxt app types (#18971)
- fix(profiling): Add
platformto envelope item header (#18954) - fix(react): Defer React Router span finalization until lazy routes load (#18881)
- ref(core): rename
gen_ai.input.messages.original_lengthtosentry.sdk_meta.gen_ai.input.messages.original_length(#18970) - ref(core): rename
gen_ai.request.messagestogen_ai.input.messages(#18944) - ref(core): Set system message as separate attribute (#18978)
- deps: Bump version of sentry-bundler-plugins (#18972)
Internal Changes
- chore(e2e): Add e2e claude skill (#18957)
- chore(e2e): Add Makefile to make running specific e2e test apps easier (#18953)
- chore(e2e): Modify e2e skill to also account for untracked files (#18959)
- ref(tests): use constants in ai integration tests and add missing ones (#18945)
- test(nextjs): Added nextjs CF workers test app (#18928)
- test(prisma): Move to yarn prisma (#18975)
Work in this release was contributed by @sebws, @harshit078, and @fedetorre. Thank you for your contributions!
10.36.0
- feat(node): Add Prisma v7 support (#18908)
- feat(opentelemetry): Support
db.system.nameattribute for database spans (#18902) - feat(deps): Bump OpenTelemetry dependencies (#18878)
- fix(core): Sanitize data URLs in
http.clientspans (#18896) - fix(nextjs): Add ALS runner fallbacks for serverless environments (#18889)
- fix(node): Profiling debug ID matching
Internal Changes
- chore(deps-dev): bump @remix-run/server-runtime from 2.15.2 to 2.17.3 in /packages/remix (#18750)
10.35.0
Important Changes
-
feat(tanstackstart-react): Add
sentryTanstackStartvite plugin to manage automatic source map uploads (#18712)You can now configure source maps upload for TanStack Start using the
sentryTanstackStartVite plugin:// vite.config.ts import { defineConfig } from 'vite'; import { sentryTanstackStart } from '@sentry/tanstackstart-react'; import { tanstackStart } from '@tanstack/react-start/plugin/vite'; export default defineConfig({ plugins: [ sentryTanstackStart({ authToken: process.env.SENTRY_AUTH_TOKEN, org: 'your-org', project: 'your-project', }), tanstackStart(), ], });
Other Changes
- feat(browser): Add CDN bundle for
tracing.replay.feedback.logs.metrics(#18785) - feat(browser): Add shim package for logs (#18831)
- feat(cloudflare): Automatically set the release id when CF_VERSION_METADATA is enabled (#18855)
- feat(core): Add
ignoredclient report event drop reason (#18815) - feat(logs): Add
Logexports to browser and node packages (#18857) - feat(node-core,bun): Export processSessionIntegration from node-core and add it to bun (#18852)
- fix(core): Find the correct IP address regardless their case (#18880)
- fix(core): Check for AI operation id to detect a vercelai span (#18823)
- fix(ember): Use ES5 syntax in inline vendor scripts (#18858)
- fix(fetch): Shallow-clone fetch options to prevent mutation (#18867)
Internal Changes
- chore(ci): Use javascript-sdk-gitflow app instead of personal token (#18829)
- chore(deps): Bump
@sveltejs/kitdevDependency to2.49.5(#18848) - chore(deps): Bump bundler plugins to ^4.6.2 (#18822)
- chore(deps): bump hono from 4.10.3 to 4.11.4 in /dev-packages/e2e-tests/test-applications/cloudflare-hono (#18806)
- chore(test): Bump svelte dependencies (#18850)
- chore(core): Comment out Error tests in langchain (#18837)
- meta(changelog): Fix entry for tanstack start vite plugin (#18883)
- test(e2e): Add testing app for User Feedback (#18877)
- test(fastify): Verify if upstream error is fixed and won't regress (#18838)
Work in this release was contributed by @rreckonerr. Thank you for your contribution!
10.34.0
Important Changes
-
feat(core): Add option to enhance the fetch error message (#18466)
You can now enable enhanced fetch error messages by setting the
enhancedFetchErrorMessageoption. When enabled, the SDK will include additional context in fetch error messages to help with debugging. -
feat(nextjs): Add routeManifestInjection option to exclude routes from client bundle (#18798)
A new
routeManifestInjectionoption allows you to exclude sensitive routes from being injected into the client bundle. -
feat(tanstackstart-react): Add
wrapMiddlewaresWithSentryfor manual middleware instrumentation (#18680)You can now wrap your middlewares using
wrapMiddlewaresWithSentry, allowing you to trace middleware execution in your TanStack Start application.import { createMiddleware } from '@tanstack/react-start'; import { wrapMiddlewaresWithSentry } from '@sentry/tanstackstart-react'; const loggingMiddleware = createMiddleware({ type: 'function' }).server(async ({ next }) => { console.log('Request started'); return next(); }); export const [wrappedLoggingMiddleware] = wrapMiddlewaresWithSentry({ loggingMiddleware });
Other Changes
- feat(browser): Add CDN bundle for
tracing.logs.metrics(#18784) - feat(core,node-core): Consolidate bun and node types with ServerRuntimeOptions (#18734)
- feat(nextjs): Remove tracing from generation function template (#18733)
- fix(core): Don't record outcomes for failed client reports (#18808)
- fix(deno,cloudflare): Prioritize name from params over name from options (#18800)
- fix(web-vitals): Add error handling for invalid object keys in
WeakMap(#18809)
Internal Changes
10.33.0
Important Changes
-
feat(core): Apply scope attributes to metrics (#18738)
You can now set attributes on the SDK's scopes which will be applied to all metrics as long as the respective scopes are active. For the time being, only
string,numberandbooleanattribute values are supported.Sentry.getGlobalScope().setAttributes({ is_admin: true, auth_provider: 'google' }); Sentry.withScope(scope => { scope.setAttribute('step', 'authentication'); // scope attributes `is_admin`, `auth_provider` and `step` are added Sentry.metrics.count('clicks', 1, { attributes: { activeSince: 100 } }); Sentry.metrics.gauge('timeSinceRefresh', 4, { unit: 'hour' }); }); // scope attributes `is_admin` and `auth_provider` are added Sentry.metrics.count('response_time', 283.33, { unit: 'millisecond' }); -
feat(tracing): Add Vercel AI SDK v6 support (#18741)
The Sentry SDK now supports the Vercel AI SDK v6. Tracing and error monitoring will work automatically with the new version.
-
feat(wasm): Add applicationKey option for third-party error filtering (#18762)
Adds support for applying an application key to WASM stack frames that can be then used in the
thirdPartyErrorFilterIntegrationfor detection of first-party code.Usage:
Sentry.init({ integrations: [ // Integration order matters: wasmIntegration needs to be before thirdPartyErrorFilterIntegration wasmIntegration({ applicationKey: 'your-custom-application-key' }), ←───┐ thirdPartyErrorFilterIntegration({ │ behaviour: 'drop-error-if-exclusively-contains-third-party-frames', ├─ matching keys filterKeys: ['your-custom-application-key'] ←─────────────────────────┘ }), ], });
Other Changes
- feat(cloudflare): Support
propagateTraceparent(#18569) - feat(core): Add
ignoreSentryInternalFramesoption tothirdPartyErrorFilterIntegration(#18632) - feat(core): Add gen_ai.conversation.id attribute to OpenAI and LangGr… (#18703)
- feat(core): Add recordInputs/recordOutputs options to MCP server wrapper (#18600)
- feat(core): Support IPv6 hosts in the DSN (#2996) (#17708)
- feat(deps): Bump bundler plugins to ^4.6.1 (#17980)
- feat(nextjs): Emit warning for conflicting treeshaking / debug settings (#18638)
- feat(nextjs): Print Turbopack note for deprecated webpack options (#18769)
- feat(node-core): Add
isolateTraceoption tonode-croninstrumentation (#18416) - feat(node): Use
process.on('SIGTERM')for flushing in Vercel functions (#17583) - feat(nuxt): Detect development environment and add dev E2E test (#18671)
- fix(browser): Forward worker metadata for third-party error filtering (#18756)
- fix(browser): Reduce number of
visibilitystateandpagehidelisteners (#18581) - fix(browser): Respect
tunnelindiagnoseSdkConnectivity(#18616) - fix(cloudflare): Consume body of fetch in the Cloudflare transport (#18545)
- fix(core): Set op on ended Vercel AI spans (#18601)
- fix(core): Subtract
performance.now()frombrowserPerformanceTimeOriginfallback (#18715) - fix(core): Update client options to allow explicit
undefined(#18024) - fix(feedback): Fix cases where the outline of inputs were wrong (#18647)
- fix(next): Ensure inline sourcemaps are generated for wrapped modules in Dev (#18640)
- fix(next): Wrap all Random APIs with a safe runner (#18700)
- fix(nextjs): Avoid Edge build warning from OpenTelemetry
process.argv0(#18759) - fix(nextjs): Remove polynomial regular expression (#18725)
- fix(node-core): Ignore worker threads in OnUncaughtException (#18689)
- fix(node): relax Fastify's
setupFastifyErrorHandlerargument type (#18620) - fix(nuxt): Allow overwriting server-side
defaultIntegrations(#18717) - fix(pino): Allow custom namespaces for
msganderr(#18597) - fix(react,solid,vue): Fix parametrization behavior for non-matched routes (#18735)
- fix(replay): Ensure replays contain canvas rendering when resumed after inactivity (#18714)
- fix(tracing): add gen_ai.request.messages.original_length attributes (#18608)
- ref(nextjs): Drop
resolvedependency (#18618) - ref(react-router): Use snake_case for span op names (#18617)
Internal Changes
- chore(bun): Fix
install-bun.jsversion check and improve upgrade feedback (#18492) - chore(changelog): Fix typo (#18648)
- chore(craft): Use version templating for aws layer (#18675)
- chore(deps): Bump IITM to ^2.0.1 (#18599)
- chore(e2e-tests): Upgrade
@trpc/serverand@trpc/client(#18722) - chore(e2e): Unpin react-router-7-framework-spa to ^7.11.0 (#18551)
- chore(nextjs): Bump next version in dev deps (#18661)
- chore(node-tests): Upgrade
@langchain/core(#18720) - chore(react): Inline
hoist-non-react-staticspackage (#18102) - chore(size-limit): Add size checks for metrics and logs (#18573)
- chore(tests): Add unordered mode to cloudflare test runner (#18596)
- ci(deps): bump actions/cache from 4 to 5 (#18654)
- ci(deps): Bump actions/create-github-app-token from 2.2.0 to 2.2.1 (#18656)
- ci(deps): bump actions/upload-artifact from 5 to 6 (#18655)
- ci(deps): bump peter-evans/create-pull-request from 7.0.9 to 8.0.0 (#18657)
- doc: E2E testing documentation updates (#18649)
- ref(core): Extract and reuse
getCombinedScopeDatahelper (#18585) - ref(core): Remove dependence between
performance.timeOriginandperformance.timing.navigationStart(#18710) - ref(core): Streamline and test
browserPerformanceTimeOrigin(#18708) - ref(core): Strengthen
browserPerformanceTimeOriginreliability check (#18719) - ref(core): Use
serializeAttributesfor metric attribute serialization (#18582) - ref(node): Remove duplicate function
isCjs(#18662) - test(core): Improve unit test performance for offline transport tests (#18628)
- test(core): Use fake timers in promisebuffer tests to ensure deterministic behavior (#18659)
- test(e2e): Add e2e metrics tests in Next.js 16 (#18643)
- test(e2e): Pin agents package in cloudflare-mcp test (#18609)
- test(e2e): Pin solid/vue tanstack router to 1.41.8 (#18610)
- test(nestjs): Add canary test for latest (#18685)
- test(node-native): Increase worker block timeout (#18683)
- test(nuxt): Fix nuxt-4 dev E2E test (#18737)
- test(tanstackstart-react): Add canary test for latest (#18686)
- test(vue): Added canary and latest test variants to Vue tests (#18681)
Work in this release was contributed by @G-Rath, @gianpaj, @maximepvrt, @Mohataseem89, @sebws, and @xgedev. Thank you for your contributions!
10.32.1
- fix(cloudflare): Add hono transaction name when error is thrown (#18529)
- fix(ember): Make
implementationfield optional (hashroutes) (#18564) - fix(vercelai): Fix input token count (#18574)
Internal Changes
- chore(lint): prefer 'unknown' to 'any', fix lint warnings
- chore(test): Remove
cloudflare-astroe2e test (#18567)
10.32.0
Important Changes
-
feat(core): Apply scope attributes to logs (#18184)
You can now set attributes on the SDK's scopes which will be applied to all logs as long as the respective scopes are active. For the time being, only
string,numberandbooleanattribute values are supported.Sentry.getGlobalScope().setAttributes({ is_admin: true, auth_provider: 'google' }); Sentry.withScope(scope => { scope.setAttribute('step', 'authentication'); // scope attributes `is_admin`, `auth_provider` and `step` are added Sentry.logger.info(`user ${user.id} logged in`, { activeSince: 100 }); Sentry.logger.info(`updated ${user.id} last activity`); }); // scope attributes `is_admin` and `auth_provider` are added Sentry.logger.warn('stale website version, reloading page'); -
feat(replay): Add Request body with
attachRawBodyFromRequestoption (#18501)To attach the raw request body (from
Requestobjects passed as the firstfetchargument) to replay events, you can now use theattachRawBodyFromRequestoption in the Replay integration:Sentry.init({ integrations: [ Sentry.replayIntegration({ attachRawBodyFromRequest: true, }), ], }); -
feat(tanstackstart-react): Trace server functions (#18500)
To enable tracing for server-side requests, you can now explicitly define a server entry point in your application and wrap your request handler with
wrapFetchWithSentry.// src/server.ts import { wrapFetchWithSentry } from '@sentry/tanstackstart-react'; import handler, { createServerEntry } from '@tanstack/react-start/server-entry'; export default createServerEntry( wrapFetchWithSentry({ fetch(request: Request) { return handler.fetch(request); }, }), ); -
feat(vue): Add TanStack Router integration (#18547)
The
@sentry/vuepackage now includes support for TanStack Router. UsetanstackRouterBrowserTracingIntegrationto automatically instrument pageload and navigation transactions with parameterized routes:import { createApp } from 'vue'; import { createRouter } from '@tanstack/vue-router'; import * as Sentry from '@sentry/vue'; import { tanstackRouterBrowserTracingIntegration } from '@sentry/vue/tanstackrouter'; const router = createRouter({ // your router config }); Sentry.init({ app, dsn: '__PUBLIC_DSN__', integrations: [tanstackRouterBrowserTracingIntegration(router)], tracesSampleRate: 1.0, });
Other Changes
- feat(core): Capture initialize attributes on MCP servers (#18531)
- feat(nextjs): Extract tracing logic from server component wrapper templates (#18408)
- feat(nextjs): added webpack treeshaking flags as config (#18359)
- fix(solid/tanstackrouter): Ensure web vitals are sent on pageload (#18542)
Internal Changes
- chore(changelog): Add entry for scope attributes (#18555)
- chore(changelog): Add entry for tanstack start wrapFetchWithSentry (#18558)
- chore(deps): bump @trpc/server from 10.45.2 to 10.45.3 in /dev-packages/e2e-tests/test-applications/node-express-incorrect-instrumentation (#18530)
- chore(deps): bump @trpc/server from 10.45.2 to 10.45.3 in /dev-packages/e2e-tests/test-applications/node-express-v5 (#18550)
- chore(e2e): Pin to react-router 7.10.1 in spa e2e test (#18548)
- chore(e2e): Remove check on
http.response_content_length_uncompressed(#18536) - chore(github): Add "Closes" to PR template (#18538)
- test(cloudflare-mcp): Unpin mcp sdk (#18528)
- test(nextjs): Add e2e tests for server component spans in next 16 (#18544)
10.31.0
Important Changes
- feat(browser): Add support for GraphQL persisted operations (#18505)
The graphqlClientIntegration now supports GraphQL persisted operations (queries). When a persisted query is detected, the integration will capture the operation hash and version as span attributes:
graphql.persisted_query.hash.sha256- The SHA-256 hash of the persisted querygraphql.persisted_query.version- The version of the persisted query protocol
Additionally, the graphql.document attribute format has changed to align with OpenTelemetry semantic conventions. It now contains only the GraphQL query string instead of the full JSON request payload.
Before:
"graphql.document": "{\"query\":\"query Test { user { id } }\"}"
After:
"graphql.document": "query Test { user { id } }"
Other Changes
- feat(node): Support
propagateTraceparentoption (#18476) - feat(bun): Expose spotlight option in TypeScript (#18436)
- feat(core): Add additional exports for
captureExceptionandcaptureMessageparameter types (#18521) - feat(core): Export
captureExceptionandcaptureMessageparameter types (#18509) - feat(core): Parse individual cookies from cookie header (#18325)
- feat(node): Add instrument OpenAI export to node (#18461)
- feat(nuxt): Bump
@sentry/vite-pluginand@sentry/rollup-pluginto 4.6.1 (#18349) - feat(profiling): Add support for Node v24 in the prune script (#18447)
- feat(tracing): strip inline media from messages (#18413)
- feat(node): Add ESM support for postgres.js instrumentation (#17961)
- fix(browser): Stringify span context in linked traces log statement (#18376)
- fix(google-cloud-serverless): Move @types/express to optional peerDeps (#18452)
- fix(node-core): passthrough node-cron context (#17835)
- fix(tanstack-router): Check for
fromLocationexistence before reporting pageload (#18463) - fix(tracing): add system prompt, model to google genai (#18424)
- fix(tracing): Set span operations for AI spans with model ID only (#18471)
- ref(browser): Improve profiling debug statement (#18507)
Internal Changes
- chore: Add external contributor to CHANGELOG.md (#18473)
- chore: upgrade Playwright to ~1.56.0 for WSL2 compatibility (#18468)
- chore(bugbot): Add testing conventions code review rules (#18433)
- chore(deps): bump next from 14.2.25 to 14.2.35 in /dev-packages/e2e-tests/test-applications/create-next-app (#18494)
- chore(deps): bump next from 14.2.32 to 14.2.35 in /dev-packages/e2e-tests/test-applications/nextjs-orpc (#18520)
- chore(deps): bump next from 14.2.32 to 14.2.35 in /dev-packages/e2e-tests/test-applications/nextjs-pages-dir (#18496)
- chore(deps): bump next from 15.5.7 to 15.5.9 in /dev-packages/e2e-tests/test-applications/nextjs-15 (#18482)
- chore(deps): bump next from 15.5.7 to 15.5.9 in /dev-packages/e2e-tests/test-applications/nextjs-15-intl (#18483)
- chore(deps): bump next from 16.0.7 to 16.0.9 in /dev-packages/e2e-tests/test-applications/nextjs-16 (#18480)
- chore(deps): bump next from 16.0.7 to 16.0.9 in /dev-packages/e2e-tests/test-applications/nextjs-16-cacheComponents (#18479)
- chore(deps): bump next from 16.0.7 to 16.0.9 in /dev-packages/e2e-tests/test-applications/nextjs-16-tunnel (#18481)
- chore(deps): bump next from 16.0.9 to 16.0.10 in /dev-packages/e2e-tests/test-applications/nextjs-16 (#18514)
- chore(deps): bump next from 16.0.9 to 16.0.10 in /dev-packages/e2e-tests/test-applications/nextjs-16-tunnel (#18487)
- chore(tests): Added test variant flag (#18458)
- test(cloudflare-mcp): Pin mcp sdk to 1.24.0 (#18524)
Work in this release was contributed by @sebws and @TBeeren. Thank you for your contributions!
10.30.0
- feat(nextjs): Deprecate Webpack top-level options (#18343)
- feat(node): Capture scope when event loop blocked (#18040)
- fix(aws-serverless): Remove hyphens from AWS-lambda origins (#18353)
- fix(core): Parse method from Request object in fetch (#18453)
- fix(react): Add transaction name guards for rapid lazy-route navigations (#18346)
Internal Changes
- chore(ci): Fix double issue creation for unreferenced PRs (#18442)
- chore(deps): bump next from 15.5.4 to 15.5.7 in /dev-packages/e2e-tests/test-applications/nextjs-15 (#18411)
- chore(deps): bump next from 15.5.4 to 15.5.7 in /dev-packages/e2e-tests/test-applications/nextjs-15-intl (#18400)
- chore(deps): bump next from 16.0.0 to 16.0.7 in /dev-packages/e2e-tests/test-applications/nextjs-16 (#18399)
- chore(deps): bump next from 16.0.0 to 16.0.7 in /dev-packages/e2e-tests/test-applications/nextjs-16-cacheComponents (#18427)
- chore(deps): bump next from 16.0.0 to 16.0.7 in /dev-packages/e2e-tests/test-applications/nextjs-16-tunnel (#18439)
- chore(publish): Fix publish order for
@sentry/types(#18429) - ci(deps): bump actions/create-github-app-token from 2.1.4 to 2.2.0 (#18362)
10.29.0
Important Changes
- feat(solid|solidstart): Bump accepted @solidjs/router range (#18395)
We expanded the supported version range for @solidjs/router to include 0.14.x and 0.15.x versions.
Other Changes
- fix(logs): Add support for
msgin pino integration (#18389) - fix(node): Include system message in anthropic-ai messages span (#18332)
- fix(tracing): Add missing attributes in vercel-ai spans (#18333)
Internal Changes
10.28.0
Important Changes
- feat(core): Make
matcherparameter optional inmakeMultiplexedTransport(#10798)
The matcher parameter in makeMultiplexedTransport is now optional with a sensible default. This makes it much easier to use the multiplexed transport for sending events to multiple DSNs based on runtime configuration.
Before:
import { makeFetchTransport, makeMultiplexedTransport } from '@sentry/browser';
const EXTRA_KEY = 'ROUTE_TO';
const transport = makeMultiplexedTransport(makeFetchTransport, args => {
const event = args.getEvent();
if (event?.extra?.[EXTRA_KEY] && Array.isArray(event.extra[EXTRA_KEY])) {
return event.extra[EXTRA_KEY];
}
return [];
});
Sentry.init({
transport,
// ... other options
});
// Capture events with routing info
Sentry.captureException(error, {
extra: {
[EXTRA_KEY]: [
{ dsn: 'https://key1@sentry.io/project1', release: 'v1.0.0' },
{ dsn: 'https://key2@sentry.io/project2' },
],
},
});
After:
import { makeFetchTransport, makeMultiplexedTransport, MULTIPLEXED_TRANSPORT_EXTRA_KEY } from '@sentry/browser';
// Just pass the transport generator - the default matcher handles the rest!
Sentry.init({
transport: makeMultiplexedTransport(makeFetchTransport),
// ... other options
});
// Capture events with routing info using the exported constant
Sentry.captureException(error, {
extra: {
[MULTIPLEXED_TRANSPORT_EXTRA_KEY]: [
{ dsn: 'https://key1@sentry.io/project1', release: 'v1.0.0' },
{ dsn: 'https://key2@sentry.io/project2' },
],
},
});
The default matcher looks for routing information in event.extra[MULTIPLEXED_TRANSPORT_EXTRA_KEY]. You can still provide a custom matcher function for advanced use cases.
- feat(nextjs): Support cacheComponents on turbopack (#18304)
This release adds support for cacheComponents on turbopack builds. We are working on adding support for this feature in webpack builds as well.
Other Changes
- feat: Publish AWS Lambda Layer for Node 24 (#18327)
- feat(browser): Expose langchain instrumentation (#18342)
- feat(browser): Expose langgraph instrumentation (#18345)
- feat(cloudflare): Allow specifying a custom fetch in Cloudflare transport options (#18335)
- feat(core): Add
isolateTraceoption toSentry.withMonitor()(#18079) - feat(deps): bump @sentry/webpack-plugin from 4.3.0 to 4.6.1 (#18272)
- feat(nextjs): Add cloudflare
waitUntildetection (#18336) - feat(node): Add LangChain v1 support (#18306)
- feat(remix): Add parameterized transaction naming for routes (#17951)
- fix(cloudflare): Keep http root span alive until streaming responses are consumed (#18087)
- fix(cloudflare): Wait for async events to finish (#18334)
- fix(core):
continueTracedoesn't propagate given trace ID if active span exists (#18328) - fix(node-core): Handle custom scope in log messages without parameters (#18322)
- fix(opentelemetry): Ensure Sentry spans don't leak when tracing is disabled (#18337)
- fix(react-router): Use underscores in trace origin values (#18351)
- chore(tanstackstart-react): Export custom inits from tanstackstart-react (#18369)
- chore(tanstackstart-react)!: Remove empty placeholder implementations (#18338)
Internal Changes
- chore: Allow URLs as issue (#18372)
- chore(changelog): Add entry for #18304 (#18329)
- chore(ci): Add action to track all PRs as issues (#18363)
- chore(github): Adjust
BUGBOT.mdrules to flag invalid op and origin values during review (#18352) - ci: Add action to create issue on gitflow merge conflicts (#18319)
- ci(deps): bump actions/checkout from 5 to 6 (#18268)
- ci(deps): bump peter-evans/create-pull-request from 7.0.8 to 7.0.9 (#18361)
- test(cloudflare): Add typechecks for cloudflare-worker e2e test (#18321)
10.27.0
Important Changes
-
feat(deps): Bump OpenTelemetry (#18239)
- Bump @opentelemetry/context-async-hooks from ^2.1.0 to ^2.2.0
- Bump @opentelemetry/core from ^2.1.0 to ^2.2.0
- Bump @opentelemetry/resources from ^2.1.0 to ^2.2.0
- Bump @opentelemetry/sdk-trace-base from ^2.1.0 to ^2.2.0
- Bump @opentelemetry/sdk-trace-node from ^2.1.0 to ^2.2.0
- Bump @opentelemetry/instrumentation from 0.204.0 to 0.208.0
- Bump @opentelemetry/instrumentation-amqplib from 0.51.0 to 0.55.0
- Bump @opentelemetry/instrumentation-aws-sdk from 0.59.0 to 0.64.0
- Bump @opentelemetry/instrumentation-connect from 0.48.0 to 0.52.0
- Bump @opentelemetry/instrumentation-dataloader from 0.22.0 to 0.26.0
- Bump @opentelemetry/instrumentation-express from 0.53.0 to 0.57.0
- Bump @opentelemetry/instrumentation-fs from 0.24.0 to 0.28.0
- Bump @opentelemetry/instrumentation-generic-pool from 0.48.0 to 0.52.0
- Bump @opentelemetry/instrumentation-graphql from 0.52.0 to 0.56.0
- Bump @opentelemetry/instrumentation-hapi from 0.51.0 to 0.55.0
- Bump @opentelemetry/instrumentation-http from 0.204.0 to 0.208.0
- Bump @opentelemetry/instrumentation-ioredis from 0.52.0 to 0.56.0
- Bump @opentelemetry/instrumentation-kafkajs from 0.14.0 to 0.18.0
- Bump @opentelemetry/instrumentation-knex from 0.49.0 to 0.53.0
- Bump @opentelemetry/instrumentation-koa from 0.52.0 to 0.57.0
- Bump @opentelemetry/instrumentation-lru-memoizer from 0.49.0 to 0.53.0
- Bump @opentelemetry/instrumentation-mongodb from 0.57.0 to 0.61.0
- Bump @opentelemetry/instrumentation-mongoose from 0.51.0 to 0.55.0
- Bump @opentelemetry/instrumentation-mysql from 0.50.0 to 0.54.0
- Bump @opentelemetry/instrumentation-mysql2 from 0.51.0 to 0.55.0
- Bump @opentelemetry/instrumentation-nestjs-core from 0.50.0 to 0.55.0
- Bump @opentelemetry/instrumentation-pg from 0.57.0 to 0.61.0
- Bump @opentelemetry/instrumentation-redis from 0.53.0 to 0.57.0
- Bump @opentelemetry/instrumentation-tedious from 0.23.0 to 0.27.0
- Bump @opentelemetry/instrumentation-undici from 0.15.0 to 0.19.0
- Bump @prisma/instrumentation from 6.15.0 to 6.19.0
-
feat(browserprofiling): Add
manualmode and deprecate old profiling (#18189)Adds the
manuallifecycle mode for UI profiling (the default mode), allowing profiles to be captured manually withSentry.uiProfiler.startProfiler()andSentry.uiProfiler.stopProfiler(). The previous transaction-based profiling is withprofilesSampleRateis now deprecated in favor of the new UI Profiling withprofileSessionSampleRate.
Other Changes
- feat(core): Add
gibibyteandpebibytetoInformationUnittype (#18241) - feat(core): Add scope attribute APIs (#18165)
- feat(core): Re-add
_experiments.enableLogsoption (#18299) - feat(core): Use
maxValueLengthon error messages (#18301) - feat(deps): bump @sentry/bundler-plugin-core from 4.3.0 to 4.6.1 (#18273)
- feat(deps): bump @sentry/cli from 2.56.0 to 2.58.2 (#18271)
- feat(node): Add tracing support for AzureOpenAI (#18281)
- feat(node): Fix local variables capturing for out-of-app frames (#18245)
- fix(core): Add a PromiseBuffer for incoming events on the client (#18120)
- fix(core): Always redact content of sensitive headers regardless of
sendDefaultPii(#18311) - fix(metrics): Update return type of
beforeSendMetric(#18261) - fix(nextjs): universal random tunnel path support (#18257)
- ref(react): Add more guarding against wildcards in lazy route transactions (#18155)
- chore(deps): bump glob from 11.0.1 to 11.1.0 in /packages/react-router (#18243)
Internal Changes
- build(deps): bump hono from 4.9.7 to 4.10.3 in /dev-packages/e2e-tests/test-applications/cloudflare-hono ([#18038](https://github.com/getsentry/sentry-javascript/pull/18038)) - chore: Add `bump_otel_instrumentations` cursor command ([#18253](https://github.com/getsentry/sentry-javascript/pull/18253)) - chore: Add external contributor to CHANGELOG.md ([#18297](https://github.com/getsentry/sentry-javascript/pull/18297)) - chore: Add external contributor to CHANGELOG.md ([#18300](https://github.com/getsentry/sentry-javascript/pull/18300)) - chore: Do not update opentelemetry ([#18254](https://github.com/getsentry/sentry-javascript/pull/18254)) - chore(angular): Add Angular 21 Support ([#18274](https://github.com/getsentry/sentry-javascript/pull/18274)) - chore(deps): bump astro from 4.16.18 to 5.15.9 in /dev-packages/e2e-tests/test-applications/cloudflare-astro ([#18259](https://github.com/getsentry/sentry-javascript/pull/18259)) - chore(dev-deps): Update some dev dependencies ([#17816](https://github.com/getsentry/sentry-javascript/pull/17816)) - ci(deps): Bump actions/create-github-app-token from 2.1.1 to 2.1.4 ([#17825](https://github.com/getsentry/sentry-javascript/pull/17825)) - ci(deps): bump actions/setup-node from 4 to 6 ([#18077](https://github.com/getsentry/sentry-javascript/pull/18077)) - ci(deps): bump actions/upload-artifact from 4 to 5 ([#18075](https://github.com/getsentry/sentry-javascript/pull/18075)) - ci(deps): bump github/codeql-action from 3 to 4 ([#18076](https://github.com/getsentry/sentry-javascript/pull/18076)) - doc(sveltekit): Update documentation link for SvelteKit guide ([#18298](https://github.com/getsentry/sentry-javascript/pull/18298)) - test(e2e): Fix astro config in test app ([#18282](https://github.com/getsentry/sentry-javascript/pull/18282)) - test(nextjs): Remove debug logs from e2e test ([#18250](https://github.com/getsentry/sentry-javascript/pull/18250))Work in this release was contributed by @bignoncedric and @adam-kov. Thank you for your contributions!
10.26.0
Important Changes
- feat(core): Instrument LangGraph Agent (#18114)
Adds support for instrumenting LangGraph StateGraph operations in Node. The LangGraph integration can be configured as follows:
Sentry.init({
dsn: '__DSN__',
sendDefaultPii: false, // Even with PII disabled globally
integrations: [
Sentry.langGraphIntegration({
recordInputs: true, // Force recording input messages
recordOutputs: true, // Force recording response text
}),
],
});
- feat(cloudflare/vercel-edge): Add manual instrumentation for LangGraph (#18112)
Instrumentation for LangGraph in Cloudflare Workers and Vercel Edge environments is supported by manually calling instrumentLangGraph:
import * as Sentry from '@sentry/cloudflare'; // or '@sentry/vercel-edge'
import { StateGraph, START, END, MessagesAnnotation } from '@langchain/langgraph';
// Create and instrument the graph
const graph = new StateGraph(MessagesAnnotation)
.addNode('agent', agentFn)
.addEdge(START, 'agent')
.addEdge('agent', END);
Sentry.instrumentLangGraph(graph, {
recordInputs: true,
recordOutputs: true,
});
const compiled = graph.compile({ name: 'weather_assistant' });
await compiled.invoke({
messages: [{ role: 'user', content: 'What is the weather in SF?' }],
});
- feat(node): Add OpenAI SDK v6 support (#18244)
Other Changes
- feat(core): Support OpenAI embeddings API (#18224)
- feat(browser-utils): bump web-vitals to 5.1.0 (#18091)
- feat(core): Support truncation for LangChain integration request messages (#18157)
- feat(metrics): Add default
server.addressattribute on server runtimes (#18242) - feat(nextjs): Add URL to server-side transaction events (#18230)
- feat(node-core): Add mechanism to prevent wrapping ai providers multiple times(#17972)
- feat(replay): Bump limit for minReplayDuration (#18190)
- fix(browser): Add
okstatus to successfulidleSpans (#18139) - fix(core): Check
fetchsupport with data URL (#18225) - fix(core): Decrease number of Sentry stack frames for messages from
captureConsoleIntegration(#18096) - fix(core): Emit processed metric (#18222)
- fix(core): Ensure logs past
MAX_LOG_BUFFER_SIZEare not swallowed (#18207) - fix(core): Ensure metrics past
MAX_METRIC_BUFFER_SIZEare not swallowed (#18212) - fix(core): Fix logs and metrics flush timeout starvation with continuous logging (#18211)
- fix(core): Flatten gen_ai.request.available_tools in google-genai (#18194)
- fix(core): Stringify available tools sent from vercelai (#18197)
- fix(core/vue): Detect and skip normalizing Vue
VNodeobjects with highnormalizeDepth(#18206) - fix(nextjs): Avoid wrapping middleware files when in standalone mode (#18172)
- fix(nextjs): Drop meta trace tags if rendered page is ISR (#18192)
- fix(nextjs): Respect PORT variable for dev error symbolication (#18227)
- fix(nextjs): use LRU map instead of map for ISR route cache (#18234)
- fix(node):
tracingChannelexport missing in older node versions (#18191) - fix(node): Fix Spotlight configuration precedence to match specification (#18195)
- fix(react): Prevent navigation span leaks for consecutive navigations (#18098)
- ref(react-router): Deprecate ErrorBoundary exports (#18208)
Internal Changes
- chore: Fix missing changelog quote we use for attribution placement (#18237)
- chore: move tip about prioritizing issues (#18071)
- chore(e2e): Pin
@embroider/addon-shimto 1.10.0 for the e2e ember-embroider (#18173) - chore(react-router): Fix casing on deprecation notices (#18221)
- chore(test): Use correct
testTimeoutfield in bundler-tests vitest config - chore(e2e): Bump zod in e2e tests (#18251)
- test(browser-integration): Fix incorrect tag value assertions (#18162)
- test(profiling): Add test utils to validate Profile Chunk envelope (#18170)
- ref(e2e-ember): Remove
@embroider/addon-shimoverride (#18180) - ref(browser): Move trace lifecycle listeners to class function (#18231)
- ref(browserprofiling): Move and rename profiler class to UIProfiler (#18187)
- ref(core): Move ai integrations from utils to tracing (#18185)
- ref(core): Optimize
Scope.setTagbundle size and adjust test (#18182)
10.25.0
- feat(browser): Include Spotlight in development bundles (#18078)
- feat(cloudflare): Add metrics exports (#18147)
- feat(core): Truncate request string inputs in OpenAI integration (#18136)
- feat(metrics): Add missing metric node exports (#18149)
- feat(node): Add
maxCacheKeyLengthto Redis integration (remove truncation) (#18045) - feat(vercel-edge): Add metrics export (#18148)
- fix(core): Only consider exception mechanism when updating session status from event with exceptions (#18137)
- ref(browser): Remove truncation when not needed (#18051)
Internal Changes
- chore(build): Fix incorrect versions after merge (#18154)
10.24.0
Important Changes
-
feat(metrics): Add top level option
enableMetricsandbeforeSendMetric(#18088)This PR moves
enableMetricsandbeforeSendMetricout of the_experimentsoptions. The metrics feature will now be enabled by default (none of our integrations will auto-emit metrics as of now), but you can disable sending metrics viaenableMetrics: false. Metric options within_experimentsgot deprecated but will still work as of now, they will be removed with the next major version of our SDKs.
Other Changes
- feat(aws): Add
SENTRY_LAYER_EXTENSIONto configure using the lambda layer extension via env variables (#18101) - feat(core): Include all exception object keys instead of truncating (#18044)
- feat(metrics)!: Update types (#17907)
- feat(replay): ignore
background-imagewhenblockAllMediais enabled (#18019) - fix(nextjs): Delete css map files (#18131)
- fix(nextjs): Stop accessing sync props in template (#18113)
Internal Changes
10.23.0
- feat(core): Send
user-agentheader with envelope requests in server SDKs (#17929) - feat(browser): Limit transport buffer size (#18046)
- feat(core): Remove default value of
maxValueLength: 250(#18043) - feat(react-router): Align options with shared build time options type (#18014)
- fix(browser-utils): cache element names for INP (#18052)
- fix(browser): Capture unhandled rejection errors for web worker integration (#18054)
- fix(cloudflare): Ensure types for cloudflare handlers (#18064)
- fix(nextjs): Update proxy template wrapping (#18086)
- fix(nuxt): Added top-level fallback exports (#18083)
- fix(nuxt): check for H3 error cause before re-capturing (#18035)
- fix(replay): Linked errors not resetting session id (#17854)
- fix(tracemetrics): Bump metrics buffer to 1k (#18039)
- fix(vue): Make
optionsparameter optional onattachErrorHandler(#18072) - ref(core): Set span status
internal_errorinstead ofunknown_error(#17909)
Internal Changes
- fix(tests): un-override nitro dep version for nuxt-3 test (#18056)
- fix(e2e): Add p-map override to fix React Router 7 test builds (#18068)
- feat: Add a note to save changes before starting (#17987)
- test(browser): Add test for INP target name after navigation or DOM changes (#18033)
- chore: Add external contributor to CHANGELOG.md (#18032)
- chore(aws-serverless): Fix typo in timeout warning function name (#18031)
- chore(browser): upgrade fake-indexeddb to v6 (#17975)
- chore(tests): pass test flags through to the test command (#18062)
Work in this release was contributed by @hanseo0507. Thank you for your contribution!
10.22.0
Important Changes
-
feat(node): Instrument cloud functions for firebase v2 (#17952)
We added instrumentation for Cloud Functions for Firebase v2, enabling automatic performance tracking and error monitoring. This will be added automatically if you have enabled tracing.
-
feat(core): Instrument LangChain AI (#17955)
Instrumentation was added for LangChain AI operations. You can configure what is recorded like this:
Sentry.init({ integrations: [ Sentry.langChainIntegration({ recordInputs: true, // Record prompts/messages recordOutputs: true, // Record responses }), ], });
Other Changes
- feat(cloudflare,vercel-edge): Add support for LangChain instrumentation (#17986)
- feat: Align sentry origin with documentation (#17998)
- feat(core): Truncate request messages in AI integrations (#17921)
- feat(nextjs): Support node runtime on proxy files (#17995)
- feat(node): Pass requestHook and responseHook option to OTel (#17996)
- fix(core): Fix wrong async types when instrumenting anthropic's stream api (#18007)
- fix(nextjs): Remove usage of chalk to avoid runtime errors (#18010)
- fix(node): Pino capture serialized
err(#17999) - fix(node): Pino child loggers (#17934)
- fix(react): Don't trim index route
/when getting pathname (#17985) - fix(react): Patch
spanEndfor potentially cancelled lazy-route transactions (#17962)
Internal Changes
10.21.0
Important Changes
-
feat(browserProfiling): Add
tracelifecycle mode for UI profiling (#17619)Adds a new
tracelifecycle mode for UI profiling, allowing profiles to be captured for the duration of a trace. Amanualmode will be added in a future release. -
feat(nuxt): Instrument Database (#17899)
Adds instrumentation for Nuxt database operations, enabling better performance tracking of database queries.
-
feat(nuxt): Instrument server cache API (#17886)
Adds instrumentation for Nuxt's server cache API, providing visibility into cache operations.
-
feat(nuxt): Instrument storage API (#17858)
Adds instrumentation for Nuxt's storage API, enabling tracking of storage operations.
Other Changes
- feat(browser): Add
onRequestSpanEndhook to browser tracing integration (#17884) - feat(nextjs): Support Next.js proxy files (#17926)
- feat(replay): Record outcome when event buffer size exceeded (#17946)
- fix(cloudflare): copy execution context in durable objects and handlers (#17786)
- fix(core): Fix and add missing cache attributes in Vercel AI (#17982)
- fix(core): Improve uuid performance (#17938)
- fix(ember): Use updated version for
clean-css(#17979) - fix(nextjs): Don't set experimental instrumentation hook flag for next 16 (#17978)
- fix(nextjs): Inconsistent transaction naming for i18n routing (#17927)
- fix(nextjs): Update bundler detection (#17976)
Internal Changes
- build: Update to typescript 5.8.0 (#17710)
- chore: Add external contributor to CHANGELOG.md (#17949)
- chore(build): Upgrade nodemon to 3.1.10 (#17956)
- chore(ci): Fix external contributor action when multiple contributions existed (#17950)
- chore(solid): Remove unnecessary import from README (#17947)
- test(nextjs): Fix proxy/middleware test (#17970)
Work in this release was contributed by @0xbad0c0d3. Thank you for your contribution!
10.20.0
Important Changes
-
feat(flags): Add Growthbook integration (#17440)
Adds a new Growthbook integration for feature flag support.
-
feat(solid): Add support for TanStack Router Solid (#17735)
Adds support for TanStack Router in the Solid SDK, enabling better routing instrumentation for Solid applications.
-
feat(nextjs): Support native debugIds in turbopack (#17853)
Adds support for native Debug IDs in Turbopack, improving source map resolution and error tracking for Next.js applications using Turbopack. Native Debug ID generation will be enabled automatically for compatible versions.
Other Changes
- feat(nextjs): Prepare for next 16 bundler default (#17868)
- feat(node): Capture
pinologger name (#17930) - fix(browser): Ignore React 19.2+ component render measure entries (#17905)
- fix(nextjs): Fix createRouteManifest with basePath (#17838)
- fix(react): Add
POPguard for long-runningpageloadspans (#17867) - fix(tracemetrics): Send boolean for internal replay attribute (#17908)
- ref(core): Add weight tracking logic to browser logs/metrics (#17901)
Internal Changes
- chore(nextjs): Add Next.js 16 peer dependency ([#17925](https://github.com/getsentry/sentry-javascript/pull/17925)) - chore(ci): Update Next.js canary testing ([#17939](https://github.com/getsentry/sentry-javascript/pull/17939)) - chore: Bump size limit ([#17941](https://github.com/getsentry/sentry-javascript/pull/17941)) - test(nextjs): Add next@16 e2e test ([#17922](https://github.com/getsentry/sentry-javascript/pull/17922)) - test(nextjs): Update next 15 tests ([#17919](https://github.com/getsentry/sentry-javascript/pull/17919)) - chore: Add external contributor to CHANGELOG.md ([#17915](https://github.com/getsentry/sentry-javascript/pull/17915)) - chore: Add external contributor to CHANGELOG.md ([#17928](https://github.com/getsentry/sentry-javascript/pull/17928)) - chore: Add external contributor to CHANGELOG.md ([#17940](https://github.com/getsentry/sentry-javascript/pull/17940))Work in this release was contributed by @seoyeon9888, @madhuchavva and @thedanchez. Thank you for your contributions!
10.19.0
- feat(tracemetrics): Add trace metrics behind an experiments flag (#17883)
Internal Changes
- chore: add info latest release for the cursor release command (#17876)
10.18.0
Important Changes
-
feat(node):
pinointegration (#17584)This release adds a new
pinointegration for Node.js, enabling Sentry to capture logs from the Pino logging library. -
feat: Remove @sentry/pino-transport package (#17851)
The
@sentry/pino-transportpackage has been removed. Please use the newpinointegration in@sentry/nodeinstead. -
feat(node-core): Extend onnhandledrejection with ignore errors option (#17736)
Added support for selectively suppressing specific errors with configurable logging control in onnhandledrejection integration.
Other Changes
- feat(core): Rename vercelai.schema to gen_ai.request.schema (#17850)
- feat(core): Support stream responses and tool calls for Google GenAI (#17664)
- feat(nextjs): Attach headers using client hook (#17831)
- fix(core): Keep all property values in baggage header (#17847)
- fix(nestjs): Add support for Symbol as event name (#17785)
- fix(nuxt): include
sentry.client.config.tsin nuxt app types (#17830) - fix(react-router): Fix type for
OriginalHandleRequestwith middleware (#17870)
Internal Changes
Work in this release was contributed by @stefanvanderwolf. Thank you for your contribution!
10.17.0
Important Changes
-
feat(nuxt): Implement server middleware instrumentation (#17796)
This release introduces instrumentation for Nuxt middleware, ensuring that all middleware handlers are automatically wrapped with tracing and error reporting functionality.
-
fix(aws-serverless): Take
http_proxyinto account when choosinguseLayerExtensiondefault (#17817)The default setting for
useLayerExtensionnow considers thehttp_proxyenvironment variable. Whenhttp_proxyis set,useLayerExtensionwill be off by default. If you use ahttp_proxybut would still like to make use of the Sentry Lambda extension, exemptlocalhostin ano_proxyenvironment variable.
Other Changes
- feat(node): Split up http integration into composable parts (#17524)
- fix(core): Remove check and always respect ai.telemetry.functionId for Vercel AI gen spans (#17811)
- doc(core): Fix outdated JSDoc in
beforeSendSpan(#17815)
Internal Changes
10.16.0
- feat(logs): Add internal
replay_is_bufferingflag (#17752) - feat(react-router): Update loadContext type to be compatible with middleware (#17758)
- feat(replay/logs): Only attach sampled replay Ids to logs (#17750)
- fix(browser): Use current start timestamp for CLS span when CLS is 0 (#17800)
- fix(core): Prevent
instrumentAnthropicAiClientbreaking MessageStream api (#17754) - fix(nextjs): Don't use chalk in turbopack config file (#17806)
- fix(react): Do not send additional navigation span on pageload (#17799)
Internal Changes
- build(aws): Ensure AWS build cache does not keep old files (#17776)
- chore: Add
publish_releasecommand (#17797) - ref(aws-serverless): Add resolution for
import-in-the-middlewhen building the Lambda layer (#17780) - ref(aws-serverless): Improve README with better examples (#17787)
- ref(core): Improve promise buffer (#17788)
- Revert "test(e2e): Pin
import-in-the-middle@1.14.2due to@vercel/nftincompatibility (#17777)" (#17784) - test(e2e): Pin
import-in-the-middle@1.14.2due to@vercel/nftincompatibility (#17777) - test(nextjs): Add route handler tests for turbopack (#17515)
- test(react-router): Test v8 middleware (#17783)
10.15.0
Important Changes
-
feat(cloudflare): Add honoIntegration with error-filtering function (#17743)
This release adds a
honoIntegrationto@sentry/cloudflare, which exposes ashouldHandleErrorfunction that lets you define which errors inonErrorshould be captured. By default, Sentry captures exceptions witherror.status >= 500 || error.status <= 299.The integration is added by default, and it's possible to modify this behavior like this:
integrations: [ honoIntegration({ shouldHandleError: (err) => true; // always capture exceptions in onError }) ] -
feat(node): Add instrumentation for hono handler (#17428)
This PR enhances the Hono integration by adding comprehensive handler instrumentation, error handling capabilities.
-
feat(aws): Enable Lambda extension by default when using the Lamba layer (#17684)
-
feat(browser): Add
setActiveSpanInBrowserto set an active span in the browser (#17714)
This PR adds a feature to the browser SDKs only: Making an inactive span active. We do this to enable use cases where having a span only being active in the callback is not practical.
Other Changes
- fix(browser): Improve handling of
0andundefinedresource timing values (#17751) - ref(nextjs): Display build compatibility warning for webpack (#17746)
Internal Changes
Work in this release was contributed by @Karibash. Thank you for your contribution!
10.14.0
Important Changes
-
feat(cloudflare,vercel-edge): Add support for Google Gen AI instrumentation (#17723)
The SDK now supports manually instrumenting Google's Gen AI operations in Cloudflare Workers and Vercel Edge Runtime environments, providing insights into your AI operations. You can use
const wrappedClient = Sentry.instrumentGoogleGenAIClient(genAiClient)to get an instrumented client.
Other Changes
- fix(nextjs): Display updated turbopack warnings (#17737)
- ref(core): Wrap isolationscope in
WeakRefwhen storing it on spans (#17712)
Internal Changes
10.13.0
Important Changes
-
feat(browser): Add option to explicitly end pageload span via
reportPageLoaded()(#17697)With this release you can take manual control of ending the pageload span. Usually this span is ended automatically by the SDK, based on a period of inactivity after the initial page was loaded in the browser. If you want full control over the pageload duration, you can tell Sentry, when your page was fully loaded:
Sentry.init({ //... integrations: [ // 1. Enable manual pageload reporting Sentry.browserTracingIntegration({ enableReportPageLoaded: true }), ], }); // 2. Whenever you decide the page is loaded, call: Sentry.reportPageLoaded();Note that if
Sentry.reportPageLoaded()is not called within 30 seconds of the initial pageload (or whatever value thefinalTimeoutoption is set to), the pageload span will be ended automatically. -
feat(core,node): Add instrumentation for
GoogleGenAI(#17625)The SDK now automatically instruments the
@google/genaipackage to provide insights into your AI operations. -
feat(nextjs): Promote
useRunAfterProductionCompileHookto non-experimental build option (#17721)The
useRunAfterProductionCompileHookoption is no longer experimental and is now a stable build option for Next.js projects. -
feat(nextjs): Use
afterProductionCompilehook for webpack builds (#17655)Next.js projects using webpack can opt-in to use the
useRunAfterProductionCompileHookhook for source map uploads. -
feat(nextjs): Flip default value for
useRunAfterProductionCompileHookfor Turbopack builds (#17722)The
useRunAfterProductionCompileHookoption is now enabled by default for Turbopack builds, enabling automated source map uploads. -
feat(node): Do not drop 300 and 304 status codes by default (#17686)
HTTP transactions with 300 and 304 status codes are now captured by default, providing better visibility into redirect and caching behavior.
Other Changes
- feat(core): Add logger to core and allow scope to be passed log methods (#17698)
- feat(core): Allow to pass
onSuccesstohandleCallbackErrors(#17679) - feat(core): Create template attributes in
consoleLoggingIntegration(#17703) - feat(deps): bump @sentry/cli from 2.52.0 to 2.53.0 (#17652)
- feat(node): Add extra platforms to
oscontext (#17720) - fix(browser): Ensure idle span duration is adjusted when child spans are ignored (#17700)
- fix(core): Ensure builtin stack frames don't affect
thirdPartyErrorFilterIntegration(#17693) - fix(core): Fix client hook edge cases around multiple callbacks (#17706)
- fix(nextjs): Enable fetch span when OTel setup is skipped (#17699)
- fix(node): Fix
thiscontext for vercel AI instrumentation (#17681)
Internal Changes
- chore: Add external contributor to CHANGELOG.md (#17725)
- chore: Add link to build and test icon in readme (#17719)
- chore(nuxt): Bump Vite and Rollup plugins (#17671)
- chore(repo): Add changelog entry for
reportPageLoaded(#17724) - ci: Fix lookup of changed E2E test apps (#17707)
- ci(test-matrix): Add logs for
getTestMatrix(#17673) - ref: Avoid some usage of
SyncPromisewhere not needed (#17641) - ref(core): Add debug log when dropping a span via
ignoreSpans(#17692) - ref(core): Avoid looking up anthropic-ai integration options (#17694)
- ref(core): Streamline
module_metadataassignment and cleanup functions (#17696) - ref(remix): Avoid unnecessary error wrapping
HandleDocumentRequestFunction(#17680) - Revert "[Gitflow] Merge master into develop"
Work in this release was contributed by @Olexandr88. Thank you for your contribution!
10.12.0
Important Changes
-
ref: Add and Adjust error event
mechanismvaluesThis release includes a variety of changes aimed at setting the
mechanismfield on errors captured automatically by the Sentry SDKs. The intention is to clearly mark which instrumentation captured an error. In addition, some instrumentations previously did not yet annotate the error as handled or unhandled which this series of PRs corrects as well.Relevant PRs
Released in
10.12.0:- ref(angular): Adjust ErrorHandler event mechanism (#17608)
- ref(astro): Adjust
mechanismon error events captured by astro middleware (#17613) - ref(aws-severless): Slightly adjust aws-serverless mechanism type (#17614)
- ref(bun): Adjust
mechanismof errors captured in Bun.serve (#17616) - ref(cloudflare): Adjust event
mechanismsand durable object origin (#17618) - ref(core): Adjust
mechanismincaptureConsoleIntegration(#17633) - ref(core): Adjust MCP server error event
mechanism(#17622) - ref(core): Simplify
linkedErrorsmechanism logic (#17600) - ref(deno): Adjust
mechanismof errors caught byglobalHandlersIntegration(#17635) - ref(nextjs): Set more specific event
mechanisms (#17543) - ref(node): Adjust mechanism of express, hapi and fastify error handlers (#17623)
- ref(node-core): Add
mechanismto cron instrumentations (#17544) - ref(node-core): Add more specific
mechanism.typeto worker thread errors fromchildProcessIntegration(#17578) - ref(node-core): Adjust
mechanismofonUnhandledRejectionandonUnhandledExceptionintegrations (#17636) - ref(node): Add mechanism to errors captured via connect and koa integrations (#17579)
- ref(nuxt): Add and adjust
mechanism.typein error events (#17599) - ref(react): Add mechanism to
reactErrorHandlerand adjust mechanism inErrorBoundary(#17602) - ref(remix): Adjust event mechanism of
captureRemixServerException(#17629) - ref(replay-internal): Add mechanism to error caught by
replayIntegrationin debug mode (#17606) - ref(solid): Add
mechanismto error captured bywithSentryErrorBoundary(#17607) - ref(solidstart): Adjust event mechanism in withServerActionInstrumentation (#17637)
- ref(sveltekit): Adjust
mechanismof error events (#17646) - ref(vue): Adjust mechanism in Vue error handler (#17647)
Released in
10.11.0:- ref(browser): Add more specific
mechanism.typeto errors captured byhttpClientIntegration(#17254) - ref(browser): Set more descriptive
mechanism.typeinbrowserApiErrorsIntergation(#17251) - ref(core): Add
mechanism.typetotrpcMiddlewareerrors (#17287) - ref(core): Add more specific event
mechanisms and span origins toopenAiIntegration(#17288) - ref(nestjs): Add
mechanismto captured errors (#17312)
- feat(node) Ensure
prismaIntegrationworks with Prisma 5 (#17595)
We used to require to pass in the v5 version of @prisma/instrumentation into prismaIntegration({ prismaInstrumentation: new PrismaInstrumentation() }), if you wanted to get full instrumentation for Prisma v5. However, it turns out this does not work on v10 of the SDK anymore, because @prisma/instrumentation@5 requires OTEL v1.
With this release, we dropped the requirement to configure anything to get v5 support of Prisma. You do not need to configure anything in the integration anymore, and can remove the dependency on @prisma/instrumentation@5 if you had it in your application. You only need to configure the tracing preview feature according to our docs.
- feat(deps): Update OpenTelemetry dependencies (#17558)
- @opentelemetry/core bumped to ^2.1.0
- @opentelemetry/context-async-hooks bumped to ^2.1.0
- @opentelemetry/resources bumped to ^2.1.0
- @opentelemetry/sdk-trace-base bumped to ^2.1.0
- @opentelemetry/semantic-conventions bumped to ^1.37.0
- @opentelemetry/instrumentation bumped to ^0.204.0
- @opentelemetry/instrumentation-http bumped to ^0.204.0
- @opentelemetry/instrumentation-amqplib bumped to ^0.51.0
- @opentelemetry/instrumentation-aws-sdk bumped to ^0.59.0
- @opentelemetry/instrumentation-connect bumped to ^0.48.0
- @opentelemetry/instrumentation-dataloader bumped to ^0.22.0
- @opentelemetry/instrumentation-express bumped to ^0.53.0
- @opentelemetry/instrumentation-fs bumped from to ^0.24.0
- @opentelemetry/instrumentation-generic-pool bumped to ^0.48.0
- @opentelemetry/instrumentation-graphql bumped to ^0.52.0
- @opentelemetry/instrumentation-hapi bumped to ^0.51.0
- @opentelemetry/instrumentation-ioredis bumped to ^0.52.0
- @opentelemetry/instrumentation-kafkajs bumped to ^0.14.0
- @opentelemetry/instrumentation-knex bumped to ^0.49.0
- @opentelemetry/instrumentation-koa bumped to ^0.52.0
- @opentelemetry/instrumentation-lru-memoizer bumped to ^0.49.0
- @opentelemetry/instrumentation-mongodb bumped from to ^0.57.0
- @opentelemetry/instrumentation-mongoose bumped from to ^0.51.0
- @opentelemetry/instrumentation-mysql bumped to ^0.50.0
- @opentelemetry/instrumentation-mysql2 bumped to ^0.51.0
- @opentelemetry/instrumentation-nestjs-core bumped to ^0.50.0
- @opentelemetry/instrumentation-pg bumped to ^0.57.0
- @opentelemetry/instrumentation-redis bumped to ^0.53.0
- @opentelemetry/instrumentation-undici bumped to ^0.15.0
- @prisma/instrumentation bumped to 6.15.0
Other Changes
- feat(browser): Add timing and status atttributes to resource spans (#17562)
- feat(cloudflare,vercel-edge): Add support for Anthropic AI instrumentation (#17571)
- feat(core): Add Consola integration (#17435)
- feat(deps): Update OpenTelemetry dependencies (#17569)
- feat(core): Export
TracesSamplerSamplingContexttype (#17523) - feat(deno): Add OpenTelemetry support and vercelAI integration (#17445)
- feat(node-core): Remove experimental note from winston api (#17626)
- feat(node): Ensure
prismaIntegrationworks with Prisma v5 (#17595) - feat(node): Tidy existing ESM loader hook (#17566)
- feat(sveltekit): Align build time options with shared type (#17413)
- fix(core): Fix error handling when sending envelopes (#17662)
- fix(browser): Always start navigation as root span (#17648)
- fix(browser): Ensure propagated
parentSpanIdstays consistent during trace in TwP mode (#17526) - fix(cloudflare): Initialize once per workflow run and preserve scope for
step.do(#17582) - fix(nextjs): Add edge polyfills for nextjs-13 in dev mode (#17488)
- fix(nitro): Support nested
_platformproperties in Nitro 2.11.7+ (#17596) - fix(node): Preserve synchronous return behavior for streamText and other methods for AI (#17580)
- ref(node): Inline types imported from
shimmer(#17597) - ref(nuxt): Add and adjustmechanism.typein error events (#17599) - ref(browser): Improve
fetchTransporterror handling (#17661)
Internal Changes
- chore: Add changelog note about mechanism changes (#17632)
- chore(aws): Update README.md (#17601)
- chore(deps): bump hono from 4.7.10 to 4.9.7 in /dev-packages/e2e-tests/test-applications/cloudflare-hono (#17630)
- chore(deps): bump next from 14.2.25 to 14.2.32 in /dev-packages/e2e-tests/test-applications/nextjs-app-dir (#17627)
- chore(deps): bump next from 14.2.25 to 14.2.32 in /dev-packages/e2e-tests/test-applications/nextjs-pages-dir (#17620)
- chore(deps): bump next from 14.2.29 to 14.2.32 in /dev-packages/e2e-tests/test-applications/nextjs-orpc (#17494)
- chore(deps): bump next from 14.2.30 to 14.2.32 in /dev-packages/e2e-tests/test-applications/nextjs-14 (#17628)
- chore(repo): Rename
.claude/settings.local.jsonto.claude/settings.json(#17591) - docs(issue-template): Add note about prioritization (#17590)
- ref(core): Streamline event processor handling (#17634)
- test(angular): Bump TS version to 5.9.0 in Angular 20 e2e test (#17605)
- test(nextjs): Remove Next 13 and pin Next 14 canary and latest tests (#17577)
- test(react-router): Unflake
flushIfServerlesstest (#17610)
10.11.0
Important Changes
-
feat(aws): Add experimental AWS Lambda extension for tunnelling events (#17525)
This release adds an experimental Sentry Lambda extension to the existing Sentry Lambda layer. Sentry events are now tunneled through the extension and then forwarded to Sentry. This has the benefit of reducing the request processing time.
To enable it, set
_experiments.enableLambdaExtensionin your Sentry config like this:Sentry.init({ dsn: '<YOUR_DSN>', _experiments: { enableLambdaExtension: true, }, });
Other Changes
- feat(core): Add replay id to logs (#17563)
- feat(core): Improve error handling for Anthropic AI instrumentation (#17535)
- feat(deps): bump @opentelemetry/instrumentation-ioredis from 0.51.0 to 0.52.0 (#17557)
- feat(node): Add incoming request headers as OTel span attributes (#17475)
- fix(astro): Ensure traces are correctly propagated for static routes (#17536)
- fix(react): Remove
handleExistingNavigation(#17534) - ref(browser): Add more specific
mechanism.typeto errors captured byhttpClientIntegration(#17254) - ref(browser): Set more descriptive
mechanism.typeinbrowserApiErrorsIntergation(#17251) - ref(core): Add
mechanism.typetotrpcMiddlewareerrors (#17287) - ref(core): Add more specific event
mechanisms and span origins toopenAiIntegration(#17288) - ref(nestjs): Add
mechanismto captured errors (#17312)
Internal Changes
- chore: Use proper
test-utilsdependency in workspace (#17538) - chore(test): Remove
geistfont (#17541) - ci: Check for stable lockfile (#17552)
- ci: Fix running of only changed E2E tests (#17551)
- ci: Remove project automation workflow (#17508)
- test(node-integration-tests): pin ai@5.0.30 to fix test fails (#17542)
10.10.0
Important Changes
- feat(browser): Add support for
propagateTraceparentSDK option (#17509)
Adds support for a new browser SDK init option, propagateTraceparent for attaching a W3C compliant traceparent header to outgoing fetch and XHR requests, in addition to sentry-trace and baggage headers. More details can be found here.
- feat(core): Add tool calls attributes for Anthropic AI (#17478)
Adds missing tool call attributes, we add gen_ai.response.tool_calls attribute for Anthropic AI, supporting both streaming and non-streaming requests.
- feat(nextjs): Use compiler hook for uploading turbopack sourcemaps (#17352)
Adds a new experimental flag _experimental.useRunAfterProductionCompileHook to withSentryConfig for automatic source maps uploads when building a Next.js app with next build --turbopack.
When set we:
- Automatically enable source map generation for turbopack client files (if not explicitly disabled)
- Upload generated source maps to Sentry at the end of the build by leveraging a Next.js compiler hook.
Other Changes
- feat(feedback): Add more labels so people can configure Highlight and Hide labels (#17513)
- fix(node): Add
originfor OpenAI spans & test auto instrumentation (#17519)
10.9.0
Important Changes
- feat(node): Update
httpIntegrationhandling of incoming requests (#17371)
This version updates the handling of the Node SDK of incoming requests. Instead of relying on @opentelemetry/instrumentation-http, we now handle incoming request instrumentation internally, ensuring that we can optimize performance as much as possible and avoid interop problems.
This change should not affect you, unless you're relying on very in-depth implementation details. Importantly, this also drops the _experimentalConfig option of the integration - this will no longer do anything.
Finally, you can still pass instrumentation.{requestHook,responseHook,applyCustomAttributesOnSpan} options, but they are deprecated and will be removed in v11. Instead, you can use the new incomingRequestSpanHook configuration option if you want to adjust the incoming request span.
Other Changes
- feat(browser): Add replay.feedback CDN bundle (#17496)
- feat(browser): Export
sendFeedbackfrom CDN bundles (#17495) - fix(astro): Ensure span name from
beforeStartSpanisn't overwritten (#17500) - fix(browser): Ensure source is set correctly when updating span name in-place in
beforeStartSpan(#17501) - fix(core): Only set template attributes on logs if parameters exist (#17480)
- fix(nextjs): Fix parameterization for root catchall routes (#17489)
- fix(node-core): Shut down OTel TraceProvider when calling
Sentry.close()(#17499)
Internal Changes
- chore: Add
changelogscript back to package.json (#17517) - chore: Ensure prettier is run on all files (#17497)
- chore: Ignore prettier commit for git blame (#17498)
- chore: Remove experimental from Nuxt SDK package description (#17483)
- ci: Capture overhead in node app (#17420)
- ci: Ensure we fail on cancelled jobs (#17506)
- ci(deps): bump actions/checkout from 4 to 5 (#17505)
- ci(deps): bump actions/create-github-app-token from 2.0.6 to 2.1.1 (#17504)
- test(aws): Improve reliability on CI (#17502)
10.8.0
Important Changes
-
feat(sveltekit): Add Compatibility for builtin SvelteKit Tracing (#17423)
This release makes the
@sentry/sveltekitSDK compatible with SvelteKit's native observability support introduced in SvelteKit version2.31.0. If you enable both, instrumentation and tracing, the SDK will now initialize early enough to set up additional instrumentation like database queries and it will pick up spans emitted from SvelteKit.We will follow up with docs how to set up the SDK soon. For now, If you're on SvelteKit version
2.31.0or newer, you can easily opt into the new feature:-
Enable experimental tracing and instrumentation support in
svelte.config.js: -
Move your
Sentry.init()call fromsrc/hooks.server.(js|ts)to the newinstrumentation.server.(js|ts)file:// instrumentation.server.ts import * as Sentry from '@sentry/sveltekit'; Sentry.init({ dsn: '...', // rest of your config });The rest of your Sentry config in
hooks.server.ts(sentryHandleandhandleErrorWithSentry) should stay the same.
If you prefer to stay on the hooks-file based config for now, the SDK will continue to work as previously.
Thanks to the Svelte team and @elliott-with-the-longest-name-on-github for implementing observability support and for reviewing our PR!
-
Other Changes
- fix(react): Avoid multiple name updates on navigation spans (#17438)
Internal Changes
- test(profiling): Add tests for current state of profiling (#17470)
10.7.0
Important Changes
- feat(cloudflare): Add
instrumentPrototypeMethodsoption to instrument RPC methods for DurableObjects (#17424)
By default, Sentry.instrumentDurableObjectWithSentry will not wrap any RPC methods on the prototype. To enable wrapping for RPC methods, set instrumentPrototypeMethods to true or, if performance is a concern, a list of only the methods you want to instrument:
class MyDurableObjectBase extends DurableObject<Env> {
method1() {
// ...
}
method2() {
// ...
}
method3() {
// ...
}
}
// Export your named class as defined in your wrangler config
export const MyDurableObject = Sentry.instrumentDurableObjectWithSentry(
(env: Env) => ({
dsn: "https://ac49b7af3017c458bd12dab9b3328bfc@o4508482761982032.ingest.de.sentry.io/4508482780987481",
tracesSampleRate: 1.0,
instrumentPrototypeMethods: ['method1', 'method3'],
}),
MyDurableObjectBase,
);
Other Changes
- feat(aws): Add support for streaming handlers (#17463)
- feat(core): Stream responses Anthropic AI (#17460)
- feat(deps): bump @opentelemetry/instrumentation-aws-sdk from 0.56.0 to 0.57.0 (#17455)
- feat(deps): bump @opentelemetry/instrumentation-dataloader from 0.21.0 to 0.21.1 (#17457)
- feat(deps): bump @opentelemetry/instrumentation-kafkajs from 0.12.0 to 0.13.0 (#17469)
- feat(deps): bump @opentelemetry/instrumentation-mysql2 from 0.49.0 to 0.50.0 (#17459)
- feat(deps): bump @prisma/instrumentation from 6.13.0 to 6.14.0 (#17466)
- feat(deps): bump @sentry/cli from 2.51.1 to 2.52.0 (#17458)
- feat(deps): bump @sentry/rollup-plugin from 4.1.0 to 4.1.1 (#17456)
- feat(deps): bump @sentry/webpack-plugin from 4.1.0 to 4.1.1 (#17467)
- feat(replay): Add option to skip
requestAnimationFramefor canvas snapshots (#17380)
Internal Changes
- test(aws): Run E2E tests in all supported Node versions (#17446)
10.6.0
Important Changes
- feat(node): Add Anthropic AI integration (#17348)
This release adds support for automatically tracing Anthropic AI SDK requests, providing better observability for AI-powered applications.
- fix(core): Instrument invoke_agent root span, and support Vercel
aiv5 (#17395)
This release makes the Sentry vercelAiIntegration compatible with version 5 of Vercel ai.
- docs(nuxt): Remove beta notice (#17400)
The Sentry Nuxt SDK is now considered stable and no longer in beta!
Other Changes
- feat(astro): Align options with shared build time options type (#17396)
- feat(aws): Add support for automatic wrapping in ESM (#17407)
- feat(node): Add an instrumentation interface for Hono (#17366)
- fix(browser): Use
DedicatedWorkerGlobalScopeglobal object type inregisterWebWorker(#17447) - fix(core): Only consider ingest endpoint requests when checking
isSentryRequestUrl(#17393) - fix(node): Fix preloading of instrumentation (#17403)
Internal Changes
- chore: Add external contributor to CHANGELOG.md (#17449)
- chore(deps): bump astro from 4.16.18 to 4.16.19 in /dev-packages/e2e-tests/test-applications/astro-4 (#17434)
- test(e2e/firebase): Fix firebase e2e test failing due to outdated rules file (#17448)
- test(nextjs): Fix canary tests (#17416)
- test(nuxt): Don't rely on flushing for lowQualityTransactionFilter (#17406)
- test(solidstart): Don't rely on flushing for lowQualityTransactionFilter (#17408)
10.5.0
- feat(core): better cause data extraction (#17375)
- feat(deps): Bump @sentry/cli from 2.50.2 to 2.51.1 (#17382)
- feat(deps): Bump @sentry/rollup-plugin and @sentry/vite-plugin from 4.0.2 to 4.1.0 (#17383)
- feat(deps): Bump @sentry/webpack-plugin from 4.0.2 to 4.1.0 (#17381)
- feat(node): Capture
SystemErrorcontext and remove paths from message (#17331) - fix(nextjs): Inject Next.js version for dev symbolication (#17379)
- fix(mcp-server): Add defensive patches for Transport edge cases (#17291)
Internal Changes
Work in this release was contributed by @ha1fstack. Thank you for your contribution!
10.4.0
Important Changes
- fix(browser): Ensure IP address is only inferred by Relay if
sendDefaultPiiistrue
This release includes a fix for a behaviour change
that was originally introduced with v9 of the SDK: User IP Addresses should only be added to Sentry events automatically,
if sendDefaultPii was set to true.
However, the change in v9 required further internal adjustment, which should have been included in v10 of the SDK.
Unfortunately, the change did not make it into the initial v10 version but is now applied with 10.4.0.
There is no API breakage involved and hence it is safe to update.
However, after updating the SDK, events (errors, traces, replays, etc.) sent from the browser, will only include
user IP addresses, if you set sendDefaultPii: true in your Sentry.init options.
We apologize for any inconvenience caused!
- feat(node): Add
ignoreStaticAssets(#17370)
This release adds a new option to httpIntegration to ignore requests for static assets (e.g. favicon.xml or robots.txt). The option defaults to true, meaning that going forward, such requests will not be traced by default. You can still enable tracing for these requests by setting the option to false:
Sentry.init({
integrations: [
Sentry.httpIntegration({
// defaults to true, set to false to enable traces for static assets
ignoreStaticAssets: false,
}),
],
});
Other Changes
- fix(nuxt): Do not drop parametrized routes (#17357)
Internal Changes
10.3.0
- feat(core): MCP Server - Capture prompt results from prompt function calls (#17284)
- feat(bun): Export
skipOpenTelemetrySetupoption (#17349) - feat(sveltekit): Streamline build logs (#17306)
- fix(browser): Handle data urls in errors caught by
globalHandlersIntegration(#17216) - fix(browser): Improve navigation vs. redirect detection (#17275)
- fix(react-router): Ensure source map upload fails silently if Sentry CLI fails (#17081)
- fix(react): Add support for React Router sub-routes from
handle(#17277)
10.2.0
Important Changes
- feat(core): Add
ignoreSpansoption (#17078)
This release adds a new top-level Sentry.init option, ignoreSpans, that can be used as follows:
Sentry.init({
ignoreSpans: [
'partial match', // string matching on the span name
/regex/, // regex matching on the span name
{
name: 'span name',
op: /http.client/,
},
],
});
Spans matching the filter criteria will not be recorded. Potential child spans of filtered spans will be re-parented, if possible.
- feat(cloudflare,vercel-edge): Add support for OpenAI instrumentation (#17338)
Adds support for OpenAI manual instrumentation in @sentry/cloudflare and @sentry/vercel-edge.
To instrument the OpenAI client, wrap it with Sentry.instrumentOpenAiClient and set recording settings.
import * as Sentry from '@sentry/cloudflare';
import OpenAI from 'openai';
const openai = new OpenAI();
const client = Sentry.instrumentOpenAiClient(openai, { recordInputs: true, recordOutputs: true });
// use the wrapped client
- ref(aws): Remove manual span creation (#17310)
The startTrace option is deprecated and will be removed in a future major version. If you want to disable tracing, set SENTRY_TRACES_SAMPLE_RATE to 0.0. instead. As of today, the flag does not affect traces anymore.
Other Changes
- feat(astro): Streamline build logs (#17301)
- feat(browser): Handles data URIs in chrome stack frames (#17292)
- feat(core): Accumulate tokens for
gen_ai.invoke_agentspans from child LLM calls (#17281) - feat(deps): Bump @prisma/instrumentation from 6.12.0 to 6.13.0 (#17315)
- feat(deps): Bump @sentry/cli from 2.50.0 to 2.50.2 (#17316)
- feat(deps): Bump @sentry/rollup-plugin from 4.0.0 to 4.0.2 (#17317)
- feat(deps): Bump @sentry/webpack-plugin from 4.0.0 to 4.0.2 (#17314)
- feat(nuxt): Do not inject trace meta-tags on cached HTML pages (#17305)
- feat(nuxt): Streamline build logs (#17308)
- feat(react-router): Add support for Hydrogen with RR7 (#17145)
- feat(react-router): Streamline build logs (#17303)
- feat(solidstart): Streamline build logs (#17304)
- fix(nestjs): Add missing
sentry.originspan attribute toSentryTraceddecorator (#17318) - fix(node): Assign default export of
openaito the instrumented fn (#17320) - fix(replay): Call
sendBufferedReplayOrFlushwhen opening/sending feedback (#17236)
10.1.0
- feat(nuxt): Align build-time options to follow bundler plugins structure (#17255)
- fix(browser-utils): Ensure web vital client hooks unsubscribe correctly (#17272)
- fix(browser): Ensure request from
diagnoseSdkConnectivitydoesn't create span (#17280)
10.0.0
Version 10.0.0 marks a release of the Sentry JavaScript SDKs that contains breaking changes. The goal of this release is to primarily upgrade the underlying OpenTelemetry dependencies to v2 with minimal breaking changes.
How To Upgrade
Please carefully read through the migration guide in the Sentry docs on how to upgrade from version 9 to version 10. Make sure to select your specific platform/framework in the top left corner: https://docs.sentry.io/platforms/javascript/migration/v9-to-v10/
A comprehensive migration guide outlining all changes can be found within the Sentry JavaScript SDK Repository: https://github.com/getsentry/sentry-javascript/blob/develop/MIGRATION.md
Breaking Changes
- feat!: Bump to OpenTelemetry v2 (#16872)
- feat(browser)!: Remove FID web vital collection (#17076)
- feat(core)!: Remove
BaseClient(#17071) - feat(core)!: Remove
enableLogsandbeforeSendLogexperimental options (#17063) - feat(core)!: Remove
hasTracingEnabled(#17072) - feat(core)!: Remove deprecated logger (#17061)
- feat(replay)!: Promote
_experiments.autoFlushOnFeedbackoption as default (#17220) - chore(deps)!: Bump bundler plugins to v4 (#17089)
Other Changes
- feat(astro): Implement Request Route Parametrization for Astro 5 (#17105)
- feat(astro): Parametrize routes on client-side (#17133)
- feat(aws): Add
SentryNodeServerlessSDKv10v10 AWS Lambda Layer (#17069) - feat(aws): Create unified lambda layer for ESM and CJS (#17012)
- feat(aws): Detect SDK source for AWS Lambda layer (#17128)
- feat(core): Add missing openai tool calls attributes (#17226)
- feat(core): Add shared
flushIfServerlessfunction (#17177) - feat(core): Implement
strictTraceContinuation(#16313) - feat(core): MCP server instrumentation without breaking Miniflare (#16817)
- feat(deps): bump @prisma/instrumentation from 6.11.1 to 6.12.0 (#17117)
- feat(meta): Unify detection of serverless environments and add Cloud Run (#17168)
- feat(nestjs): Switch to OTel core instrumentation (#17068)
- feat(node-native): Upgrade
@sentry-internal/node-native-stacktraceto0.2.2(#17207) - feat(node): Add
shouldHandleErroroption tofastifyIntegration(#16845) - feat(node): Add firebase integration (#16719)
- feat(node): Instrument stream responses for openai (#17110)
- feat(react-router): Add
createSentryHandleError(#17235) - feat(react-router): Automatically flush on serverless for loaders/actions (#17234)
- feat(react-router): Automatically flush on Vercel for request handlers (#17232)
- fix(astro): Construct parametrized route during runtime (#17190)
- fix(aws): Add layer build output to nx cache (#17148)
- fix(aws): Fix path to packages directory (#17112)
- fix(aws): Resolve all Sentry packages to local versions in layer build (#17106)
- fix(aws): Use file link in dependency version (#17111)
- fix(cloudflare): Allow non uuid workflow instance IDs (#17121)
- fix(cloudflare): Avoid turning DurableObject sync methods into async (#17184)
- fix(core): Fix OpenAI SDK private field access by binding non-instrumented fns (#17163)
- fix(core): Fix operation name for openai responses API (#17206)
- fix(core): Update ai.response.object to gen_ai.response.object (#17153)
- fix(nextjs): Flush in route handlers (#17223)
- fix(nextjs): Handle async params in url extraction (#17162)
- fix(nextjs): Update stackframe calls for next v15.5 (#17156)
- fix(node): Add mechanism to
fastifyIntegrationerror handler (#17208) - fix(node): Ensure tool errors for
vercelAiIntegrationhave correct trace connected (#17132) - fix(node): Fix exports for openai instrumentation (#17238)
- fix(node): Handle stack traces with data URI filenames (#17218)
- fix(react): Memoize wrapped component to prevent rerenders (#17230)
- fix(remix): Ensure source maps upload fails silently if Sentry CLI fails (#17082)
- fix(replay): Fix re-sampled sessions after a click (#17008)
- fix(svelte): Do not insert preprocess code in script module in Svelte 5 (#17114)
- fix(sveltekit): Align error status filtering and mechanism in
handleErrorWithSentry(#17157)
Work in this release was contributed by @richardjelinek-fastest. Thank you for your contribution!
9.44.2
This release is publishing the AWS Lambda Layer under SentryNodeServerlessSDKv9. The previous release 9.44.1 accidentally published the layer under SentryNodeServerlessSDKv10.
9.44.1
- fix(replay/v9): Call sendBufferedReplayOrFlush when opening/sending feedback (#17270)
9.44.0
- feat(replay/v9): Deprecate
_experiments.autoFlushOnFeedback(#17219) - feat(v9/core): Add shared
flushIfServerlessfunction (#17239) - feat(v9/node-native): Upgrade
@sentry-internal/node-native-stacktraceto0.2.2(#17256) - feat(v9/react-router): Add
createSentryHandleError(#17244) - feat(v9/react-router): Automatically flush on serverless for loaders/actions (#17243)
- feat(v9/react-router): Automatically flush on serverless for request handler (#17242)
- fix(v9/astro): Construct parametrized route during runtime (#17227)
- fix(v9/nextjs): Flush in route handlers (#17245)
- fix(v9/node): Fix exports for openai instrumentation (#17238) (#17241)
9.43.0
- feat(v9/core): add MCP server instrumentation (#17196)
- feat(v9/meta): Unify detection of serverless environments and add Cloud Run (#17204)
- fix(v9/node): Add mechanism to
fastifyIntegrationerror handler (#17211) - fix(v9/replay): Fix re-sampled sessions after a click (#17195)
9.42.1
- fix(v9/astro): Revert Astro v5 storing route data to
globalThis(#17185) - fix(v9/cloudflare): Avoid turning DurableObject sync methods into async (#17187)
- fix(v9/nextjs): Handle async params in url extraction (#17176)
- fix(v9/sveltekit): Align error status filtering and mechanism in
handleErrorWithSentry(#17174)
9.42.0
- feat(v9/aws): Detect SDK source for AWS Lambda layer (#17150)
- fix(v9/core): Fix OpenAI SDK private field access by binding non-instrumented fns (#17167)
- fix(v9/core): Update ai.response.object to gen_ai.response.object (#17155)
- fix(v9/nextjs): Update stackframe calls for next v15.5 (#17161)
9.41.0
Important Changes
- feat(v9/core): Deprecate experimental
enableLogsandbeforeSendLogoption (#17092)
Sentry now has support for structured logging. Previously to enable structured logging, you had to use the _experiments.enableLogs and _experiments.beforeSendLog options. These options have been deprecated in favor of the top-level enableLogs and beforeSendLog options.
// before
Sentry.init({
_experiments: {
enableLogs: true,
beforeSendLog: log => {
return log;
},
},
});
// after
Sentry.init({
enableLogs: true,
beforeSendLog: log => {
return log;
},
});
- feat(astro): Implement parameterized routes
Server-side and client-side parameterized routes are now supported in the Astro SDK. No configuration changes are required.
Other Changes
- feat(v9/node): Add shouldHandleError option to fastifyIntegration (#17123)
- fix(v9/cloudflare) Allow non UUID workflow instance IDs (#17135)
- fix(v9/node): Ensure tool errors for
vercelAiIntegrationhave correct trace (#17142) - fix(v9/remix): Ensure source maps upload fails silently if Sentry CLI fails (#17095)
- fix(v9/svelte): Do not insert preprocess code in script module in Svelte 5 (#17124)
Work in this release was contributed by @richardjelinek-fastest. Thank you for your contribution!
9.40.0
Important Changes
- feat(browser): Add debugId sync APIs between web worker and main thread (#16981)
This release adds two Browser SDK APIs to let the main thread know about debugIds of worker files:
webWorkerIntegration({worker})to be used in the main threadregisterWebWorker({self})to be used in the web worker
// main.js
Sentry.init({...})
const worker = new MyWorker(...);
Sentry.addIntegration(Sentry.webWorkerIntegration({ worker }));
worker.addEventListener('message', e => {...});
// worker.js
Sentry.registerWebWorker({ self });
self.postMessage(...);
- feat(core): Deprecate logger in favor of debug (#17040)
The internal SDK logger export from @sentry/core has been deprecated in favor of the debug export. debug only exposes log, warn, and error methods but is otherwise identical to logger. Note that this deprecation does not affect the logger export from other packages (like @sentry/browser or @sentry/node) which is used for Sentry Logging.
import { logger, debug } from '@sentry/core';
// before
logger.info('This is an info message');
// after
debug.log('This is an info message');
- feat(node): Add OpenAI integration (#17022)
This release adds official support for instrumenting OpenAI SDK calls in with Sentry tracing, following OpenTelemetry semantic conventions for Generative AI. It instruments:
client.chat.completions.create()- For chat-based completionsclient.responses.create()- For the responses API
// The integration respects your `sendDefaultPii` option, but you can override the behavior in the integration options
Sentry.init({
dsn: '__DSN__',
integrations: [
Sentry.openAIIntegration({
recordInputs: true, // Force recording prompts
recordOutputs: true, // Force recording responses
}),
],
});
Other Changes
- feat(node-core): Expand
@opentelemetry/instrumentationrange to cover0.203.0(#17043) - fix(cloudflare): Ensure errors get captured from durable objects (#16838)
- fix(sveltekit): Ensure server errors from streamed responses are sent (#17044)
Work in this release was contributed by @0xbad0c0d3 and @tommy-gilligan. Thank you for your contributions!
9.39.0
Important Changes
- feat(browser): Add
afterStartPageloadSpanhook to improve spanId assignment on web vital spans (#16893)
This PR adds a new afterStartPageloadSpan lifecycle hook to more robustly assign the correct pageload span ID to web vital spans, replacing the previous unreliable "wait for a tick" approach with a direct callback that fires when the pageload span becomes available.
- feat(nextjs): Client-side parameterized routes (#16934)
This PR implements client-side parameterized routes for Next.js by leveraging an injected manifest within the existing app-router instrumentation to automatically parameterize all client-side transactions (e.g. users/123 and users/456 now become become users/:id).
- feat(node): Drop 401-404 and 3xx status code spans by default (#16972)
This PR changes the default behavior in the Node SDK to drop HTTP spans with 401-404 and 3xx status codes by default to reduce noise in tracing data.
Other Changes
- feat(core): Prepend vercel ai attributes with
vercel.ai.X(#16908) - feat(nextjs): Add
disableSentryWebpackConfigflag (#17013) - feat(nextjs): Build app manifest (#16851)
- feat(nextjs): Inject manifest into client for turbopack builds (#16902)
- feat(nextjs): Inject manifest into client for webpack builds (#16857)
- feat(node-native): Add option to disable event loop blocked detection (#16919)
- feat(react-router): Ensure http.server route handling is consistent (#16986)
- fix(core): Avoid prolonging idle span when starting standalone span (#16928)
- fix(core): Remove side-effect from
tracing/errors.ts(#16888) - fix(core): Wrap
beforeSendLoginconsoleSandbox(#16968) - fix(node-core): Apply correct SDK metadata (#17014)
- fix(react-router): Ensure that all browser spans have
source=route(#16984)
Work in this release was contributed by @janpapenbrock. Thank you for your contribution!
9.38.0
Important Changes
- chore: Add craft entry for @sentry/node-native (#16907)
This release publishes the @sentry/node-native SDK.
Other Changes
- feat(core): Introduce
debugto replacelogger(#16906) - fix(browser): Guard
nextHopProtocolwhen adding resource spans (#16900)
9.37.0
Important Changes
-
feat(nuxt): Parametrize SSR routes (#16843)
When requesting dynamic or catch-all routes in Nuxt, those will now be shown as parameterized routes in Sentry. For example,
/users/123will be shown as/users/:userId()in Sentry. This will make it easier to identify patterns and make grouping easier.
Other Changes
- feat(astro): Deprecate passing runtime config to astro integration (#16839)
- feat(browser): Add
beforeStartNavigationSpanlifecycle hook (#16863) - feat(browser): Detect redirects when emitting navigation spans (#16324)
- feat(cloudflare): Add option to opt out of capturing errors in
wrapRequestHandler(#16852) - feat(feedback): Return the eventId into the onSubmitSuccess callback (#16835)
- feat(vercel-edge): Do not vendor in all OpenTelemetry dependencies (#16841)
- fix(browser): Ensure standalone CLS and LCP spans have traceId of pageload span (#16864)
- fix(nextjs): Use value injection loader on
instrumentation-client.ts|js(#16855) - fix(sveltekit): Avoid capturing
redirect()calls as errors in Cloudflare (#16853) - docs(nextjs): Update
deleteSourcemapsAfterUploadjsdoc default value (#16867)
Work in this release was contributed by @zachkirsch. Thank you for your contribution!
9.36.0
Important Changes
- feat(node-core): Add node-core SDK (#16745)
This release adds a new SDK @sentry/node-core which ships without any OpenTelemetry instrumententation out of the box. All OpenTelemetry dependencies are peer dependencies and OpenTelemetry has to be set up manually.
Use @sentry/node-core when:
- You already have OpenTelemetry set up
- You need custom OpenTelemetry configuration
- You want minimal dependencies
- You need fine-grained control over instrumentation
Use @sentry/node when:
- You want an automatic setup
- You're new to OpenTelemetry
- You want sensible defaults
- You prefer convenience over control
- feat(node): Deprecate ANR integration (#16832)
The ANR integration has been deprecated and will be removed in future versions. Use eventLoopBlockIntegration from @sentry/node-native instead.
- feat(replay): Add
_experiments.ignoreMutationsoption (#16816)
This replay option allows to configure a selector list of elements to not capture mutations for.
Sentry.replayIntegration({
_experiments: {
ignoreMutations: ['.dragging'],
},
});
Other changes
- feat(deps): bump @prisma/instrumentation from 6.10.1 to 6.11.1 (#16833)
- feat(nextjs): Add flag for suppressing router transition warning (#16823)
- feat(nextjs): Automatically skip middleware requests for tunnel route (#16812)
- feat(replay): Export compression worker from
@sentry/replay-internal(#16794) - fix(browser): Avoid 4xx response for succesful
diagnoseSdkConnectivityrequest (#16840) - fix(browser): Guard against undefined nextHopProtocol (#16806)
- fix(cloudflare): calculate retries not attempts (#16834)
- fix(nuxt): Parametrize routes on the server-side (#16785)
- fix(vue): Make pageload span handling more reliable (#16799)
Work in this release was contributed by @Spice-King and @stayallive. Thank you for your contributions!
9.35.0
- feat(browser): Add ElementTiming instrumentation and spans (#16589)
- feat(browser): Export
ContextandContextstypes (#16763) - feat(cloudflare): Add user agent to cloudflare spans (#16793)
- feat(node): Add
eventLoopBlockIntegration(#16709) - feat(node): Export server-side feature flag integration shims (#16735)
- feat(node): Update vercel ai integration attributes (#16721)
- fix(astro): Handle errors in middlewares better (#16693)
- fix(browser): Ensure explicit
parentSpanis considered (#16776) - fix(node): Avoid using dynamic
requirefor fastify integration (#16789) - fix(nuxt): Add
@sentry/cloudflareas optional peerDependency (#16782) - fix(nuxt): Ensure order of plugins is consistent (#16798)
- fix(nestjs): Fix exception handling in
@Crondecorated tasks (#16792)
Work in this release was contributed by @0xbad0c0d3 and @alSergey. Thank you for your contributions!
9.34.0
Important Changes
-
feat(nuxt): Add Cloudflare Nitro plugin (#15597)
A Nitro plugin for
@sentry/nuxtwhich initializes Sentry when deployed to Cloudflare (cloudflare-pagespreset).-
Remove the previous server config file:
sentry.server.config.ts -
Add a plugin in
server/plugins(e.g.server/plugins/sentry-cloudflare-setup.ts) -
Add this code in your plugin file
// server/plugins/sentry-cloudflare-setup.ts (filename does not matter) import { sentryCloudflareNitroPlugin } from '@sentry/nuxt/module/plugins'; export default defineNitroPlugin( sentryCloudflareNitroPlugin({ dsn: 'https://dsn', tracesSampleRate: 1.0, }), );or with access to
nitroApp:// server/plugins/sentry-cloudflare-setup.ts (filename does not matter) import { sentryCloudflareNitroPlugin } from '@sentry/nuxt/module/plugins'; export default defineNitroPlugin(sentryCloudflareNitroPlugin((nitroApp: NitroApp) => { // You can access nitroApp here if needed return ({ dsn: 'https://dsn', tracesSampleRate: 1.0, }) }))
-
Other Changes
- feat(browser): Record standalone LCP spans (#16591)
- fix(nuxt): Only add OTel alias in dev mode (#16756)
9.33.0
Important Changes
- feat: Add opt-in
vercelAiIntegrationto cloudflare & vercel-edge (#16732)
The vercelAiIntegration is now available as opt-in for the Cloudflare and the Next.js SDK for Vercel Edge.
To use it, add the integration in Sentry.init
Sentry.init({
tracesSampleRate: 1.0,
integrations: [Sentry.vercelAIIntegration()],
});
And enable telemetry for Vercel AI calls
const result = await generateText({
model: openai('gpt-4o'),
experimental_telemetry: {
isEnabled: true,
},
});
- feat(node): Add postgresjs instrumentation (#16665)
The Node.js SDK now includes instrumentation for Postgres.js.
- feat(node): Use diagnostics channel for Fastify v5 error handling (#16715)
If you're on Fastify v5, you no longer need to call setupFastifyErrorHandler. It is done automatically by the node SDK. Older versions still rely on calling setupFastifyErrorHandler.
Other Changes
- feat(cloudflare): Allow interop with OpenTelemetry emitted spans (#16714)
- feat(cloudflare): Flush after
waitUntil(#16681) - fix(nextjs): Remove
aifrom default server external packages (#16736)
Work in this release was contributed by @0xbad0c0d3. Thank you for your contribution!
9.32.0
Important Changes
- feat(browser): Add CLS sources to span attributes (#16710)
Enhances CLS (Cumulative Layout Shift) spans by adding attributes detailing the elements that caused layout shifts.
- feat(cloudflare): Add
instrumentWorkflowWithSentryto instrument workflows (#16672)
We've added support for Cloudflare Workflows, enabling comprehensive tracing for your workflow runs. This integration uses the workflow's instanceId as the Sentry trace_id and for sampling, linking all steps together. You'll now be able to see full traces, including retries with exponential backoff.
- feat(pino-transport): Add functionality to send logs to sentry (#16667)
Adds the ability to send logs to Sentry via a pino transport.
Other Changes
- feat(nextjs): Expose top level buildTime
errorHandleroption (#16718) - feat(node): update pipeline spans to use agent naming (#16712)
- feat(deps): bump @prisma/instrumentation from 6.9.0 to 6.10.1 (#16698)
- fix(sveltekit): Export logger from sveltekit worker (#16716)
- fix(google-cloud-serverless): Make
CloudEventsContextcompatible withCloudEvent(#16705) - fix(nextjs): Stop injecting release value when create release options is set to
false(#16695) - fix(node): account for Object. syntax with local variables matching (#16702)
- fix(nuxt): Add alias for
@opentelemetry/resources(#16727)
Work in this release was contributed by @flaeppe. Thank you for your contribution!
9.31.0
Important Changes
- feat(nextjs): Add option for auto-generated random tunnel route (#16626)
Adds an option to automatically generate a random tunnel route for the Next.js SDK. This helps prevent ad blockers and other tools from blocking Sentry requests by using a randomized path instead of the predictable /monitoring endpoint.
- feat(core): Allow to pass
scope&clienttogetTraceData(#16633)
Adds the ability to pass custom scope and client parameters to the getTraceData function, providing more flexibility when generating trace data for distributed tracing.
Other Changes
- feat(core): Add support for
x-forwarded-hostandx-forwarded-protoheaders (#16687) - deps: Remove unused
@sentry/opentelemetrydependency (#16677) - deps: Update all bundler plugin instances to latest & allow caret ranges (#16641)
- feat(deps): Bump @prisma/instrumentation from 6.8.2 to 6.9.0 (#16608)
- feat(flags): add node support for generic featureFlagsIntegration and move utils to core (#16585)
- feat(flags): capture feature flag evaluations on spans (#16485)
- feat(pino): Add initial package for
@sentry/pino-transport(#16652) - fix: Wait for the correct clientWidth/clientHeight when showing Feedback Screenshot previews (#16648)
- fix(browser): Remove usage of Array.at() method (#16647)
- fix(core): Improve
safeJoinusage in console logging integration (#16658) - fix(google-cloud-serverless): Make
CloudEventtype compatible (#16661) - fix(nextjs): Fix lookup of
instrumentation-client.jsfile (#16637) - fix(node): Ensure graphql errors result in errored spans (#16678)
9.30.0
- feat(nextjs): Add URL to tags of server components and generation functions issues (#16500)
- feat(nextjs): Ensure all packages we auto-instrument are externalized (#16552)
- feat(node): Automatically enable
vercelAiIntegrationwhenaimodule is detected (#16565) - feat(node): Ensure
modulesIntegrationworks in more environments (#16566) - feat(core): Don't gate user on logs with
sendDefaultPii(#16527) - feat(browser): Add detail to measure spans and add regression tests (#16557)
- feat(node): Update Vercel AI span attributes (#16580)
- fix(opentelemetry): Ensure only orphaned spans of sent spans are sent (#16590)
9.29.0
Important Changes
- feat(browser): Update
web-vitalsto 5.0.2 (#16492)
This release upgrades the web-vitals library to version 5.0.2. This upgrade could slightly change the collected web vital values and potentially also influence alerts and performance scores in the Sentry UI.
Other Changes
- feat(deps): Bump @sentry/rollup-plugin from 3.4.0 to 3.5.0 (#16524)
- feat(ember): Stop warning for
onErrorusage (#16547) - feat(node): Allow to force activate
vercelAiIntegration(#16551) - feat(node): Introduce
ignoreLayersTypeoption to koa integration (#16553) - fix(browser): Ensure
suppressTracingdoes not leak when async (#16545) - fix(vue): Ensure root component render span always ends (#16488)
9.28.1
- feat(deps): Bump @sentry/cli from 2.45.0 to 2.46.0 (#16516)
- fix(nextjs): Avoid tracing calls to symbolication server on dev (#16533)
- fix(sveltekit): Add import attribute for node exports (#16528)
Work in this release was contributed by @eltigerchino. Thank you for your contribution!
9.28.0
Important Changes
- feat(nestjs): Stop creating spans for
TracingInterceptor(#16501)
With this change we stop creating spans for TracingInterceptor as this interceptor only serves as an internal helper and adds noise for the user.
- feat(node): Update vercel ai spans as per new conventions (#16497)
This feature ships updates to the span names and ops to better match OpenTelemetry. This should make them more easily accessible to the new agents module view we are building.
Other Changes
- fix(sveltekit): Export
vercelAIIntegrationfrom@sentry/node(#16496)
Work in this release was contributed by @agrattan0820. Thank you for your contribution!
9.27.0
- feat(node): Expand how vercel ai input/outputs can be set (#16455)
- feat(node): Switch to new semantic conventions for Vercel AI (#16476)
- feat(react-router): Add component annotation plugin (#16472)
- feat(react-router): Export wrappers for server loaders and actions (#16481)
- fix(browser): Ignore unrealistically long INP values (#16484)
- fix(react-router): Conditionally add
ReactRouterServerintegration (#16470)
9.26.0
- feat(react-router): Re-export functions from
@sentry/react(#16465) - fix(nextjs): Skip re instrumentating on generate phase of experimental build mode (#16410)
- fix(node): Ensure adding sentry-trace and baggage headers via SentryHttpInstrumentation doesn't crash (#16473)
9.25.1
- fix(otel): Don't ignore child spans after the root is sent (#16416)
9.25.0
Important Changes
- feat(browser): Add option to ignore
markandmeasurespans (#16443)
This release adds an option to browserTracingIntegration that lets you ignore
mark and measure spans created from the performance.mark(...) and performance.measure(...) browser APIs:
Sentry.init({
integrations: [
Sentry.browserTracingIntegration({
ignorePerformanceApiSpans: ['measure-to-ignore', /mark-to-ignore/],
}),
],
});
Other Changes
- feat(browser): Export getTraceData from the browser sdks (#16433)
- feat(node): Add
includeServerNameoption (#16442) - fix(nuxt): Remove setting
@sentry/nuxtexternal (#16444)
9.24.0
Important Changes
- feat(angular): Bump
@sentry/angularpeer dependencies to add Angular 20 support (#16414)
This release adds support for Angular 20 to the Sentry Angular SDK @sentry/angular.
Other Changes
- feat(browser): Add
unregisterOriginalCallbacksoption tobrowserApiErrorsIntegration(#16412) - feat(core): Add user to logs (#16399)
- feat(core): Make sure Supabase db query insights are populated (#16169)
9.23.0
Important changes
- feat(browser): option to ignore certain resource types (#16389)
Adds an option to opt out of certain resource.* spans via ignoreResourceSpans.
For example, to opt out of resource.script spans:
Sentry.browserTracingIntegration({
ignoreResourceSpans: ['resource.script'],
}),
Other changes
- feat: Export
isEnabledfrom all SDKs (#16405) - feat(browser): Disable client when browser extension is detected in
init()(#16354) - feat(core): Allow re-use of
captureLog(#16352) - feat(core): Export
_INTERNAL_captureSerializedLog(#16387) - feat(deps): bump @opentelemetry/semantic-conventions from 1.32.0 to 1.34.0 (#16393)
- feat(deps): bump @prisma/instrumentation from 6.7.0 to 6.8.2 (#16392)
- feat(deps): bump @sentry/cli from 2.43.0 to 2.45.0 (#16395)
- feat(deps): bump @sentry/webpack-plugin from 3.3.1 to 3.5.0 (#16394)
- feat(nextjs): Include
static/chunks/main-*files forwidenClientFileUpload(#16406) - feat(node): Do not add HTTP & fetch span instrumentation if tracing is disabled (#15730)
- feat(nuxt): Added support for nuxt layers (#16372)
- fix(browser): Ensure logs are flushed when sendClientReports=false (#16351)
- fix(browser): Move
browserTracingIntegrationcode tosetuphook (#16386) - fix(cloudflare): Capture exceptions thrown in hono (#16355)
- fix(node): Don't warn about Spotlight on empty NODE_ENV (#16381)
- fix(node): Suppress Spotlight calls (#16380)
- fix(nuxt): Add
@sentry/nuxtas external in Rollup (#16407) - fix(opentelemetry): Ensure
withScopekeeps span active &_getTraceInfoFromScopeworks (#16385)
Work in this release was contributed by @Xenossolitarius. Thank you for your contribution!
9.22.0
Important changes
- Revert "feat(browser): Track measure detail as span attributes" (#16348)
This is a revert of a feature introduced in 9.20.0 with #16240. This feature was causing crashes in firefox, so we are reverting it. We will re-enable this functionality in the future after fixing the crash.
Other changes
- feat(deps): bump @sentry/rollup-plugin from 3.1.2 to 3.2.1 (#15511)
- fix(remix): Use generic types for
ServerBuildargument and return (#16336)
9.21.0
- docs: Fix v7 migration link (#14629)
- feat(node): Vendor in
@fastify/otel(#16328) - fix(nestjs): Handle multiple
OnEventdecorators (#16306) - fix(node): Avoid creating breadcrumbs for suppressed requests (#16285)
- fix(remix): Add missing
clientexports toserverandcloudflareentries (#16341)
Work in this release was contributed by @phthhieu. Thank you for your contribution!
9.20.0
Important changes
- feat(browser): Track measure detail as span attributes (#16240)
The SDK now automatically collects details passed to performance.measure options.
Other changes
- feat(node): Add
maxIncomingRequestBodySize(#16225) - feat(react-router): Add server action instrumentation (#16292)
- feat(react-router): Filter manifest requests (#16294)
- feat(replay): Extend default list for masking with
aria-label(#16192) - fix(browser): Ensure pageload & navigation spans have correct data (#16279)
- fix(cloudflare): Account for static fields in wrapper type (#16303)
- fix(nextjs): Preserve
next.routeattribute on root spans (#16297) - feat(node): Fork isolation scope in tRPC middleware (#16296)
- feat(core): Add
orgIdoption toinitand DSC (sentry-org_idin baggage) (#16305)
9.19.0
- feat(react-router): Add otel instrumentation for server requests (#16147)
- feat(remix): Vendor in
opentelemetry-instrumentation-remix(#16145) - fix(browser): Ensure spans auto-ended for navigations have
cancelledreason (#16277) - fix(node): Pin
@fastify/otelfork to direct url to allow installing without git (#16287) - fix(react): Handle nested parameterized routes in reactrouterv3 transaction normalization (#16274)
Work in this release was contributed by @sidx1024. Thank you for your contribution!
9.18.0
Important changes
- feat: Support Node 24 (#16236)
We now also publish profiling binaries for Node 24.
Other changes
- deps(node): Bump
import-in-the-middleto1.13.1(#16260) - feat: Export
consoleLoggingIntegrationfrom vercel edge sdk (#16228) - feat(cloudflare): Add support for email, queue, and tail handler (#16233)
- feat(cloudflare): Improve http span data (#16232)
- feat(nextjs): Add more attributes for generation functions (#16214)
- feat(opentelemetry): Widen peer dependencies to support Otel v2 (#16246)
- fix(core): Gracefully handle invalid baggage entries (#16257)
- fix(node): Ensure traces are propagated without spans in Node 22+ (#16221)
- fix(node): Use sentry forked
@fastify/oteldependency with pinned Otel v1 deps (#16256) - fix(remix): Remove vendored types (#16218)
9.17.0
- feat(node): Migrate to
@fastify/otel(#15542)
9.16.1
- fix(core): Make sure logs get flushed in server-runtime-client (#16222)
- ref(node): Remove vercel flushing code that does nothing (#16217)
9.16.0
Important changes
- feat: Create a Vite plugin that injects sentryConfig into the global config (#16197)
Add a new plugin makeConfigInjectorPlugin within our existing vite plugin that updates the global vite config with sentry options
- feat(browser): Add option to sample linked traces consistently (#16037)
This PR implements consistent sampling across traces as outlined in (#15754)
- feat(cloudflare): Add support for durable objects (#16180)
This PR introduces a new instrumentDurableObjectWithSentry method to the SDK, which instruments durable objects. We capture both traces and errors automatically.
- feat(node): Add Prisma integration by default (#16073)
Prisma integration is enabled by default, it should work for both ESM and CJS.
- feat(react-router): Add client-side router instrumentation (#16185)
Adds client-side instrumentation for react router's HydratedRouter. To enable it, simply replace browserTracingIntegration() with reactRouterTracingIntegration() in your client-side init call.
- fix(node): Avoid double-wrapping http module (#16177)
When running your application in ESM mode, there have been scenarios that resulted in the http/https emitting duplicate spans for incoming requests. This was apparently caused by us double-wrapping the modules for incoming request isolation.
In order to solve this problem, the modules are no longer monkey patched by us for request isolation. Instead, we register diagnosticschannel hooks to handle request isolation now. While this is generally not expected to break anything, there is one tiny change that _may affect you if you have been relying on very specific functionality:
The ignoreOutgoingRequests option of httpIntegration receives the RequestOptions as second argument. This type is not changed, however due to how the wrapping now works, we no longer pass through the full RequestOptions, but re-construct this partially based on the generated request. For the vast majority of cases, this should be fine, but for the sake of completeness, these are the only fields that may be available there going forward - other fields that may have existed before may no longer be set:
ignoreOutgoingRequests(url: string, {
method: string;
protocol: string;
host: string;
hostname: string; // same as host
path: string;
headers: OutgoingHttpHeaders;
})
Other changes
- feat(cloudflare): Add logs exports (#16165)
- feat(vercel-edge): Add logs export (#16166)
- feat(cloudflare): Read
SENTRY_RELEASEfromenv(#16201) - feat(node): Drop
http.serverspans with 404 status by default (#16205) - fix(browser): Respect manually set sentry tracing headers in XHR requests (#16184)
- fix(core): Respect manually set sentry tracing headers in fetch calls (#16183)
- fix(feedback): Prevent
removeFromDom()from throwing (#16030) - fix(node): Use class constructor in docstring for winston transport (#16167)
- fix(node): Fix vercel flushing logic & add test for it (#16208)
- fix(node): Fix 404 route handling in express 5 (#16211)
- fix(logs): Ensure logs can be flushed correctly (#16216)
- ref(core): Switch to standardized log envelope (#16133)
9.15.0
Important Changes
- feat: Export
wrapMcpServerWithSentryfrom server packages (#16127)
Exports the wrapMcpServerWithSentry which is our MCP server instrumentation from all the server packages.
- feat(core): Associate resource/tool/prompt invocations with request span instead of response span (#16126)
Adds a best effort mechanism to associate handler spans for resource, tool and prompt with the incoming message requests instead of the outgoing SSE response.
Other Changes
- fix: Vercel
aiESM patching (#16152) - fix(node): Update version range for
module.register(#16125) - fix(react-router): Spread
unstable_sentryVitePluginOptionscorrectly (#16156) - fix(react): Fix Redux integration failing with reducer injection (#16106)
- fix(remix): Add ESM-compatible exports (#16124)
- fix(remix): Avoid rewrapping root loader. (#16136)
Work in this release was contributed by @AntoineDuComptoirDesPharmacies. Thank you for your contribution!
9.14.0
Important Changes
- feat: Add Supabase Integration (#15719)
This PR adds Supabase integration to @sentry/core, allowing automatic instrumentation of Supabase client operations (database queries and authentication) for performance monitoring and error tracking.
- feat(nestjs): Gracefully handle RPC scenarios in
SentryGlobalFilter(#16066)
This PR adds better RPC exception handling to @sentry/nestjs, preventing application crashes while still capturing errors and warning users when a dedicated filter is needed. The implementation gracefully handles the 'rpc' context type in SentryGlobalFilter to improve reliability in hybrid applications.
- feat(react-router): Trace propagation (#16070)
This PR adds trace propagation to @sentry/react-router by providing utilities to inject trace meta tags into HTML headers and offering a pre-built Sentry-instrumented request handler, improving distributed tracing capabilities across page loads.
Other Changes
- feat(deps): Bump @prisma/instrumentation from 6.5.0 to 6.6.0 (#16102)
- feat(nextjs): Improve server component data (#15996)
- feat(nuxt): Log when adding HTML trace meta tags (#16044)
- fix(node): Make body capturing more robust (#16105)
- ref(node): Log when incoming request bodies are being captured (#16104)
9.13.0
Important Changes
-
feat(node): Add support for winston logger (#15983)
Sentry is adding support for structured logging. In this release we've added support for sending logs to Sentry via the winston logger to the Sentry Node SDK (and SDKs that use the Node SDK under the hood like
@sentry/nestjs). The Logging APIs in the Sentry SDK are still experimental and subject to change.const winston = require('winston'); const Transport = require('winston-transport'); const transport = Sentry.createSentryWinstonTransport(Transport); const logger = winston.createLogger({ transports: [transport], }); -
feat(core): Add
wrapMcpServerWithSentryto instrument MCP servers from@modelcontextprotocol/sdk(#16032)The Sentry SDK now supports instrumenting MCP servers from the
@modelcontextprotocol/sdkpackage. Compatible with versions^1.9.0of the@modelcontextprotocol/sdkpackage.import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'; // Create an MCP server const server = new McpServer({ name: 'Demo', version: '1.0.0', }); // Use the instrumented server in your application const instrumentedServer = Sentry.wrapMcpServerWithSentry(server); -
feat(core): Move console integration into core and add to cloudflare/vercel-edge (#16024)
Console instrumentation has been added to
@sentry/cloudflareand@sentry/nextjsEdge Runtime and is enabled by default. Now calls to the console object will be captured as breadcrumbs for those SDKs. -
feat(bun): Support new
Bun.serveAPIs (#16035)Bun
1.2.6and above have a newBun.serveAPI, which the Bun SDK now supports. The SDK instruments the new routes object that can be used to define routes for the server.Thanks to @Jarred-Sumner for helping us get this supported!
Other Changes
- feat(browser): Warn on duplicate
browserTracingIntegration(#16042) - feat(core): Allow delayed sending with offline transport (#15937)
- feat(deps): Bump @sentry/webpack-plugin from 3.2.4 to 3.3.1 (#16057)
- feat(vue): Apply stateTransformer to attachments in Pinia Plugin (#16034)
- fix(core): Run
beforeSendLogafter we process log (#16019) - fix(nextjs): Don't show turbopack warning for newer Next.js canaries (#16065)
- fix(nextjs): Include patch version 0 for min supported 15.3.0 (#16026)
- fix(node): Ensure late init works with all integrations (#16016)
- fix(react-router): Pass
unstable_sentryVitePluginOptionsto cli instance (#16033) - fix(serverless-aws): Overwrite root span name with GraphQL if set (#16010)
9.12.0
Important Changes
-
feat(feedback): Implement highlighting and hiding controls for screenshots (#15951)
The Sentry SDK now supports highlighting and hiding controls for screenshots in user feedback reports. This functionality is enabled by default.
-
feat(node): Add
ignoreIncomingRequestBodycallback tohttpIntegration(#15959)The
httpIntegrationnow supports an optionalignoreIncomingRequestBodycallback that can be used to skip capturing the body of incoming requests.Sentry.init({ integrations: [ Sentry.httpIntegration({ ignoreIncomingRequestBody: (url, request) => { return request.method === 'GET' && url.includes('/api/large-payload'); }, }), ], });The
ignoreIncomingRequestBodycallback receives the URL of the request and should returntrueif the body should be ignored. -
Logging Improvements
Sentry is adding support for structured logging. In this release we've made a variety of improvements to logging functionality in the Sentry SDKs.
- feat(node): Add server.address to nodejs logs (#16006)
- feat(core): Add sdk name and version to logs (#16005)
- feat(core): Add sentry origin attribute to console logs integration (#15998)
- fix(core): Do not abbreviate message parameter attribute (#15987)
- fix(core): Prefix release and environment correctly (#15999)
- fix(node): Make log flushing logic more robust (#15991)
Other Changes
- build(aws-serverless): Include debug logs in lambda layer SDK bundle (#15974)
- feat(astro): Add tracking of errors during HTML streaming (#15995)
- feat(browser): Add
onRequestSpanStarthook to browser tracing integration (#15979) - feat(deps): Bump @sentry/cli from 2.42.3 to 2.43.0 (#16001)
- feat(nextjs): Add
captureRouterTransitionStarthook for capturing navigations (#15981) - feat(nextjs): Mark clientside prefetch request spans with
http.request.prefetch: trueattribute (#15980) - feat(nextjs): Un experimentify
clientInstrumentationHook(#15992) - feat(nextjs): Warn when client was initialized more than once (#15971)
- feat(node): Add support for
SENTRY_DEBUGenv variable (#15972) - fix(tss-react): Change
authTokentype tostring(#15985)
Work in this release was contributed by @Page- and @Fryuni. Thank you for your contributions!
9.11.0
- feat(browser): Add
http.redirect_countattribute tobrowser.redirectspan (#15943) - feat(core): Add
consoleLoggingIntegrationfor logs (#15955) - feat(core): Don't truncate error messages (#15818)
- feat(core): Emit debug log when transport execution fails (#16009)
- feat(nextjs): Add release injection in Turbopack (#15958)
- feat(nextjs): Record
turbopackas tag (#15928) - feat(nuxt): Base decision on source maps upload only on Nuxt source map settings (#15859)
- feat(react-router): Add
sentryHandleRequest(#15787) - fix(node): Use
moduleinstead ofrequirefor CJS check (#15927) - fix(remix): Remove mentions of deprecated
ErrorBoundarywrapper (#15930) - ref(browser): Temporarily add
sentry.previous_tracespan attribute (#15957) - ref(browser/core): Move all log flushing logic into clients (#15831)
- ref(core): Improve URL parsing utilities (#15882)
9.10.1
- fix: Correct @sentry-internal/feedback docs to match the code (#15874)
- deps: Bump bundler plugins to version
3.2.4(#15909)
9.10.0
Important Changes
-
feat: Add support for logs
- feat(node): Add logging public APIs to Node SDKs (#15764)
- feat(core): Add support for
beforeSendLog(#15814) - feat(core): Add support for parameterizing logs (#15812)
- fix: Remove critical log severity level (#15824)
All JavaScript SDKs other than
@sentry/cloudflareand@sentry/denonow support sending logs via dedicated methods as part of Sentry's upcoming logging product.Logging is gated by an experimental option,
_experiments.enableLogs.Sentry.init({ dsn: 'PUBLIC_DSN', // `enableLogs` must be set to true to use the logging features _experiments: { enableLogs: true }, }); const { trace, debug, info, warn, error, fatal, fmt } = Sentry.logger; trace('Starting database connection', { database: 'users' }); debug('Cache miss for user', { userId: 123 }); error('Failed to process payment', { orderId: 'order_123', amount: 99.99 }); fatal('Database connection pool exhausted', { database: 'users', activeConnections: 100 }); // Structured logging via the `fmt` helper function. When you use `fmt`, the string template and parameters are sent separately so they can be queried independently in Sentry. info(fmt(`Updated profile for user ${userId}`)); warn(fmt(`Rate limit approaching for endpoint ${endpoint}. Requests: ${requests}, Limit: ${limit}`));With server-side SDKs like
@sentry/node,@sentry/bunor server-side of@sentry/nextjsor@sentry/sveltekit, you can do structured logging without needing thefmthelper function.const { info, warn } = Sentry.logger; info('User %s logged in successfully', [123]); warn('Failed to load user %s data', [123], { errorCode: 404 });To filter logs, or update them before they are sent to Sentry, you can use the
_experiments.beforeSendLogoption. -
feat(browser): Add
diagnoseSdkConnectivity()function to programmatically detect possible connectivity issues (#15821)The
diagnoseSdkConnectivity()function can be used to programmatically detect possible connectivity issues with the Sentry SDK.const result = await Sentry.diagnoseSdkConnectivity();The result will be an object with the following properties:
"no-client-active": There was no active client when the function was called. This possibly means that the SDK was not initialized yet."sentry-unreachable": The Sentry SaaS servers were not reachable. This likely means that there is an ad blocker active on the page or that there are other connection issues.undefined: The SDK is working as expected.
-
SDK Tracing Performance Improvements for Node SDKs
- feat: Stop using
dropUndefinedKeys(#15796) - feat(node): Only add span listeners for instrumentation when used (#15802)
- ref: Avoid
dropUndefinedKeysforspanToJSONcalls (#15792) - ref: Avoid using
SentryErrorfor PromiseBuffer control flow (#15822) - ref: Stop using
dropUndefinedKeysin SpanExporter (#15794) - ref(core): Avoid using
SentryErrorfor event processing control flow (#15823) - ref(node): Avoid
dropUndefinedKeysin Node SDK init (#15797) - ref(opentelemetry): Avoid sampling work for non-root spans (#15820)
We've been hard at work making performance improvements to the Sentry Node SDKs (
@sentry/node,@sentry/aws-serverless,@sentry/nestjs, etc.). We've seen that upgrading from9.7.0to9.10.0leads to 30-40% improvement in request latency for HTTP web-server applications that use tracing with high sample rates. Non web-server applications and non-tracing applications will see smaller improvements. - feat: Stop using
Other Changes
- chore(deps): Bump
rrwebto2.35.0(#15825) - deps: Bump bundler plugins to
3.2.3(#15829) - feat: Always truncate stored breadcrumb messages to 2kb (#15819)
- feat(nextjs): Disable server webpack-handling for static builds (#15751)
- fix(nuxt): Don't override Nuxt options if undefined (#15795)
9.9.0
Important Changes
-
feat(nextjs): Support
instrumentation-client.ts(#15705)Next.js recently added a feature to support client-side (browser) instrumentation via a
instrumentation-client.tsfile.To be forwards compatible, the Sentry Next.js SDK will now pick up
instrumentation-client.tsfiles even on older Next.js versions and add them to your client bundles. It is suggested that you either rename yoursentry.client.config.tsfile toinstrumentation-client.ts, or if you already happen to have ainstrumentation-client.tsfile move the contents ofsentry.client.config.tstoinstrumentation-client.ts. -
feat(browser): Add
previous_tracespan links (#15569)The
@sentry/browserSDK and SDKs based on@sentry/browsernow emits a link from the first root span of a newly started trace to the root span of a previously started trace. You can control this feature via an option inbrowserTracingIntegration():Sentry.init({ dsn: 'your-dsn-here' integrations: [ Sentry.browserTracingIntegration({ // Available settings: // - 'in-memory' (default): Stores previous trace information in memory // - 'session-storage': Stores previous trace information in the browser's `sessionStorage` // - 'off': Disable storing and sending previous trace information linkPreviousTrace: 'in-memory', }), ], }); -
feat(browser): Add
logger.Xmethods to browser SDK (#15763)For Sentry's upcoming logging product, the SDK now supports sending logs via dedicated methods.
Sentry.init({ dsn: 'your-dsn-here', _experiments: { enableLogs: true, // This is required to use the logging features }, }); Sentry.logger.info('This is a trace message', { userId: 123 }); // See PR for better documentationPlease note that the logs product is still in early access. See the link above for more information.
Other Changes
- feat(browser): Attach host as part of error message to "Failed to fetch" errors (#15729)
- feat(core): Add
parseStringToURLmethod (#15768) - feat(core): Optimize
dropUndefinedKeys(#15760) - feat(node): Add fastify
shouldHandleError(#15771) - fix(nuxt): Delete no longer needed Nitro 'close' hook (#15790)
- perf(nestjs): Remove usage of
addNonEnumerableProperty(#15766) - ref: Avoid some usage of
dropUndefinedKeys()(#15757) - ref: Remove some usages of
dropUndefinedKeys()(#15781) - ref(nextjs): Fix Next.js vercel-edge runtime package information (#15789)
9.8.0
- feat(node): Implement new continuous profiling API spec (#15635)
- feat(profiling): Add platform to chunk envelope (#15758)
- feat(react): Export captureReactException method (#15746)
- fix(node): Check for
res.endbefore passing to Proxy (#15776) - perf(core): Add short-circuits to
eventFiltersintegration (#15752) - perf(node): Short circuit flushing on Vercel only for Vercel (#15734)
9.7.0
- feat(core): Add
captureLogmethod (#15717) - feat(remix/cloudflare): Export
sentryHandleError(#15726) - fix(node): Always flush on Vercel before Lambda freeze (#15602)
- fix(node): Ensure incoming traces are propagated without HttpInstrumentation (#15732)
- fix(node): Use
fatallevel for unhandled rejections instrictmode (#15720) - fix(nuxt): Delete Nuxt server template injection (#15749)
9.6.1
- feat(deps): bump @prisma/instrumentation from 6.4.1 to 6.5.0 (#15714)
- feat(deps): bump @sentry/cli from 2.42.2 to 2.42.3 (#15711)
- fix(nextjs): Re-patch router if it is overridden by Next.js (#15721)
- fix(nuxt): Add Nitro Rollup plugin to inject Sentry server config (#15710)
- chore(deps): Bump rollup to 4.35.0 (#15651)
9.6.0
Important Changes
-
feat(tanstackstart): Add
@sentry/tanstackstart-reactpackage and make@sentry/tanstackstartpackage a utility package (#15629)Since TanStack Start is supposed to be a generic framework that supports libraries like React and Solid, the
@sentry/tanstackstartSDK package was renamed to@sentry/tanstackstart-reactto reflect that the SDK is specifically intended to be used for React TanStack Start applications. Note that the TanStack Start SDK is still in alpha status and may be subject to breaking changes in non-major package updates.
Other Changes
- feat(astro): Accept all vite-plugin options (#15638)
- feat(deps): bump @sentry/webpack-plugin from 3.2.1 to 3.2.2 (#15627)
- feat(tanstackstart): Refine initial API (#15574)
- fix(core): Ensure
fillonly patches functions (#15632) - fix(nextjs): Consider
pageExtensionswhen looking for instrumentation file (#15701) - fix(remix): Null-check
options(#15610) - fix(sveltekit): Correctly parse angle bracket type assertions for auto instrumentation (#15578)
- fix(sveltekit): Guard process variable (#15605)
Work in this release was contributed by @angelikatyborska and @nwalters512. Thank you for your contributions!
9.5.0
Important Changes
We found some issues with the new feedback screenshot annotation where screenshots are not being generated properly. Due to this issue, we are reverting the feature.
- Revert "feat(feedback) Allowing annotation via highlighting & masking (#15484)" (#15609)
Other Changes
- Add cloudflare adapter detection and path generation (#15603)
- deps(nextjs): Bump rollup to
4.34.9(#15589) - feat(bun): Automatically add performance integrations (#15586)
- feat(replay): Bump rrweb to 2.34.0 (#15580)
- fix(browser): Call original function on early return from patched history API (#15576)
- fix(nestjs): Copy metadata in custom decorators (#15598)
- fix(react-router): Fix config type import (#15583)
- fix(remix): Use correct types export for
@sentry/remix/cloudflare(#15599) - fix(vue): Attach Pinia state only once per event (#15588)
Work in this release was contributed by @msurdi-a8c, @namoscato, and @rileyg98. Thank you for your contributions!
9.4.0
- feat(core): Add types for logs protocol and envelope (#15530)
- feat(deps): Bump
@sentry/clifrom 2.41.1 to 2.42.2 (#15510) - feat(deps): Bump
@sentry/webpack-pluginfrom 3.1.2 to 3.2.1 (#15512) - feat(feedback) Allowing annotation via highlighting & masking (#15484)
- feat(nextjs): Add
use clientdirective to client SDK entrypoints (#15575) - feat(nextjs): Allow silencing of instrumentation warning (#15555)
- feat(sveltekit): Ensure
AsyncLocalStorageasync context strategy is used in Cloudflare Pages (#15557) - fix(cloudflare): Make
@cloudflare/workers-typesan optional peer dependency (#15554) - fix(core): Don't reverse values in event filters (#15584)
- fix(core): Handle normalization of null prototypes correctly (#15556)
- fix(nextjs): Only warn on missing
onRequestErrorin version 15 (#15553) - fix(node): Allow for
undefinedtransport to be passed in (#15560) - fix(wasm): Fix wasm integration stacktrace parsing for filename (#15572)
- perf(node): Store normalized request for processing (#15570)
9.3.0
Important Changes
With this release we're publishing two new SDKs in experimental alpha stage:
- feat(tanstackstart): Add TanStack Start SDK (#15523)
For details please refer to the README
- feat(react-router): Add React Router SDK (#15524)
For details please refer to the README
- feat(remix): Add support for Hydrogen (#15450)
This PR adds support for Shopify Hydrogen applications running on MiniOxygen runtime.
Other Changes
- feat(core): Add
forceTransactionto trpc middleware options (#15519) - feat(core): Default filter unactionable error (#15527)
- feat(core): Rename
inboundFiltersIntegrationtoeventFiltersIntegration(#15434) - feat(deps): bump @prisma/instrumentation from 6.2.1 to 6.4.1 (#15480)
- feat(react-router): Add build-time config (#15406)
- feat(replay): Bump rrweb to 2.33.0 (#15514)
- fix(core): Fix
allowUrlsanddenyUrlsfor linked and aggregate exceptions (#15521) - fix(nextjs): Don't capture devmode server-action redirect errors (#15485)
- fix(nextjs): warn about missing onRequestError handler #15488)
- fix(nextjs): Prevent wrong culprit from showing up for clientside error events #15475)
- fix(nuxt): Ignore 300-400 status codes on app errors in Nuxt (#15473)
- fix(react): Add support for cross-usage of React Router instrumentations (#15283)
- fix(sveltekit): Guard
processcheck when flushing events (#15516)
Work in this release was contributed by @GerryWilko and @leoambio. Thank you for your contributions!
9.2.0
Important Changes
- feat(node): Support Express v5 (#15380)
This release adds full tracing support for Express v5, and improves tracing support for Nest.js 11 (which uses Express v5) in the Nest.js SDK.
- feat(sveltekit): Add Support for Cloudflare (#14672)
This release adds support for deploying SvelteKit applications to Cloudflare Pages. A docs update with updated instructions will follow shortly. Until then, you can give this a try by setting up the SvelteKit SDK as usual and then following the instructions outlined in the PR.
Thank you @SG60 for contributing this feature!
Other Changes
- feat(core): Add
addLink(s)to Sentry span (#15452) - feat(core): Add links to span options (#15453)
- feat(deps): Bump @sentry/webpack-plugin from 2.22.7 to 3.1.2 (#15328)
- feat(feedback): Disable Feedback submit & cancel buttons while submitting (#15408)
- feat(nextjs): Add experimental flag to not strip origin information from different origin stack frames (#15418)
- feat(nuxt): Add
enableNitroErrorHandlerto server options (#15444) - feat(opentelemetry): Add
addLink(s)to span (#15387) - feat(opentelemetry): Add
linksto span options (#15403) - feat(replay): Expose rrweb recordCrossOriginIframes under _experiments (#14916)
- fix(browser): Ensure that
performance.measurespans have a positive duration (#15415) - fix(bun): Includes correct sdk metadata (#15459)
- fix(core): Add Google
gmoerror to Inbound Filters (#15432) - fix(core): Ensure
http.clientspan descriptions don't contain query params or fragments (#15404) - fix(core): Filter out unactionable Facebook Mobile browser error (#15430)
- fix(nestjs): Pin dependency on
@opentelemetry/instrumentation(#15419) - fix(nuxt): Only use filename with file extension from command (#15445)
- fix(nuxt): Use
SentryNuxtServerOptionstype for server init (#15441) - fix(sveltekit): Avoid loading vite config to determine source maps setting (#15440)
- ref(profiling-node): Bump chunk interval to 60s (#15361)
Work in this release was contributed by @6farer, @dgavranic and @SG60. Thank you for your contributions!
9.1.0
- feat(browser): Add
graphqlClientIntegration(#13783) - feat(core): Allow for nested trpc context (#15379)
- feat(core): Create types and utilities for span links (#15375)
- feat(deps): bump @opentelemetry/instrumentation-pg from 0.50.0 to 0.51.0 (#15273)
- feat(node): Extract Sentry-specific node-fetch instrumentation (#15231)
- feat(vue): Support Pinia v3 (#15383)
- fix(sveltekit): Avoid request body double read errors (#15368)
- fix(sveltekit): Avoid top-level
viteimport (#15371)
Work in this release was contributed by @Zen-cronic and @filips-alpe. Thank you for your contribution!
9.0.1
- ref(flags): rename unleash integration param (#15343)
9.0.0
Version 9.0.0 marks a release of the Sentry JavaScript SDKs that contains breaking changes.
The goal of this release is to trim down on unused and potentially confusing APIs, prepare the SDKs for future framework versions to build deeper instrumentation, and remove old polyfills to reduce the packages' size.
How To Upgrade
Please carefully read through the migration guide in the Sentry docs on how to upgrade from version 8 to version 9. Make sure to select your specific platform/framework in the top left corner: https://docs.sentry.io/platforms/javascript/migration/v8-to-v9/
A comprehensive migration guide outlining all changes for all the frameworks can be found within the Sentry JavaScript SDK Repository: https://github.com/getsentry/sentry-javascript/blob/develop/MIGRATION.md
Breaking Changes
- doc(deno)!: Make Deno v2 the minimum supported version (#15085)
- feat!: Bump typescript to
~5.0.0(#14758) - feat!: Drop
nitro-utilspackage (#14998) - feat!: Only collect ip addresses with
sendDefaultPii: true(#15084) - feat!: Remove
autoSessionTrackingoption (#14802) - feat!: Remove
enableTracing(#15078) - feat!: Remove
getCurrentHub(),Hub, andgetCurrentHubShim()(#15122) - feat!: Remove
spanIdfrom propagation context (#14733) - feat!: Remove deprecated and unused code (#15077)
- feat!: Remove metrics API from the JS SDK (#14745)
- feat!: Require Node
>=18as minimum supported version (#14749) - feat(astro)!: Respect user-specified source map setting (#14941)
- feat(browser)!: Remove
captureUserFeedbackmethod (#14820) - feat(build)!: Drop pre-ES2020 polyfills (#14882)
- feat(core)!: Add
normalizedRequesttosamplingContext(#14902) - feat(core)!: Always use session from isolation scope (#14860)
- feat(core)!: Pass root spans to
beforeSendSpanand disallow returningnull(#14831) - feat(core)!: Remove
BAGGAGE_HEADER_NAMEexport (#14785) - feat(core)!: Remove
TransactionNamingSchemetype (#14865) - feat(core)!: Remove
addOpenTelemetryInstrumentationmethod (#14792) - feat(core)!: Remove
arrayifymethod (#14782) - feat(core)!: Remove
debugIntegrationandsessionTimingIntegration(#14747) - feat(core)!: Remove
flattenmethod (#14784) - feat(core)!: Remove
getDomElementmethod (#14797) - feat(core)!: Remove
makeFifoCachemethod (#14786) - feat(core)!: Remove
memoBuilderexport &WeakSetfallback (#14859) - feat(core)!: Remove
transactionContextfromsamplingContext(#14904) - feat(core)!: Remove
urlEncodemethod (#14783) - feat(core)!: Remove deprecated
Requesttype (#14858) - feat(core)!: Remove deprecated request data methods (#14896)
- feat(core)!: Remove standalone
Clientinterface & deprecateBaseClient(#14800) - feat(core)!: Remove validSeverityLevels export (#14765)
- feat(core)!: Stop accepting
eventas argument forrecordDroppedEvent(#14999) - feat(core)!: Stop setting user in
requestDataIntegration(#14898) - feat(core)!: Type sdkProcessingMetadata more strictly (#14855)
- feat(core)!: Update
hasTracingEnabledto consider empty trace config (#14857) - feat(core)!: Update
requestDataIntegrationhandling (#14806) - feat(deno)!: Remove deno prepack (#14829)
- feat(ember)!: Officially drop support for ember
<=3.x(#15032) - feat(nestjs)!: Move
nestIntegrationinto nest sdk and removesetupNestErrorHandler(#14751) - feat(nestjs)!: Remove
@WithSentrydecorator (#14762) - feat(nestjs)!: Remove
SentryService(#14759) - feat(nextjs)!: Don't rely on Next.js Build ID for release names (#14939)
- feat(nextjs)!: Remove
experimental_captureRequestError(#14607) - feat(nextjs)!: Respect user-provided source map generation settings (#14956)
- feat(node)!: Add support for Prisma v6 and drop v5 support (#15120)
- feat(node)!: Avoid http spans by default for custom OTEL setups (#14678)
- feat(node)!: Collect request sessions via HTTP instrumentation (#14658)
- feat(node)!: Remove
processThreadBreadcrumbIntegration(#14666) - feat(node)!: Remove fine grained
registerEsmLoaderHooks(#15002) - feat(opentelemetry)!: Exclusively pass root spans through sampling pipeline (#14951)
- feat(pinia)!: Include state of all stores in breadcrumb (#15312)
- feat(react)!: Raise minimum supported TanStack Router version to
1.63.0(#15030) - feat(react)!: Remove deprecated
getNumberOfUrlSegmentsmethod (#14744) - feat(react)!: Remove deprecated react router methods (#14743)
- feat(react)!: Update
ErrorBoundarycomponentStacktype (#14742) - feat(remix)!: Drop support for Remix v1 (#14988)
- feat(remix)!: Remove
autoInstrumentRemixoption (#15074) - feat(solidstart)!: Default to
--importsetup and addautoInjectServerSentry(#14862) - feat(solidstart)!: No longer export
sentrySolidStartVite(#15143) - feat(solidstart)!: Respect user-provided source map setting (#14979)
- feat(svelte)!: Disable component update tracking by default (#15265)
- feat(sveltekit)!: Drop support for SvelteKit @1.x (#15037)
- feat(sveltekit)!: Remove
fetchProxyScriptNonceoption (#15123) - feat(sveltekit)!: Respect user-provided source map generation settings (#14886)
- feat(utils)!: Remove
@sentry/utilspackage (#14830) - feat(vue)!: Remove configuring Vue tracing options anywhere else other than through the
vueIntegration'stracingOptionsoption (#14856) - feat(vue/nuxt)!: No longer create
"update"spans for component tracking by default (#14602) - fix(node)!: Fix name of
vercelAIIntegrationtoVercelAI(#15298) - fix(vue)!: Remove
logErrorfromvueIntegration(#14958) - ref!: Don't polyfill optional chaining and nullish coalescing (#14603)
- ref(core)!: Cleanup internal types, including
ReportDialogOptions(#14861) - ref(core)!: Mark exceptions from
captureConsoleIntegrationashandled: trueby default (#14734) - ref(core)!: Move
shutdownTimeoutoption type from core to node (#15217) - ref(core)!: Remove
Scopetype interface in favor of usingScopeclass (#14721) - ref(core)!: Remove backwards compatible SentryCarrier type (#14697)
Other Changes
- chore(browser): Export ipAddress helpers for use in other SDKs (#15079)
- deps(node): Bump
import-in-the-middleto1.12.0(#14796) - feat(aws): Rename AWS lambda layer name to
SentryNodeServerlessSDKv9(#14927) - feat(aws-serverless): Upgrade OTEL deps (#15091)
- feat(browser): Set
user.ip_addressexplicitly to{{auto}}(#15008) - feat(core): Add
inheritOrSampleWithhelper totraceSampler(#15277) - feat(core): Emit client reports for unsampled root spans on span start (#14936)
- feat(core): Rename
hasTracingEnabledtohasSpansEnabled(#15309) - feat(core): Streamline
SpanJSONtype (#14693) - feat(deno): Don't bundle
@sentry/deno(#15014) - feat(deno): Don't publish to
deno.land(#15016) - feat(deno): Stop inlining types from core (#14729)
- feat(deps): Bump @opentelemetry/instrumentation-amqplib from 0.45.0 to 0.46.0 (#14835)
- feat(deps): Bump @opentelemetry/instrumentation-aws-lambda from 0.49.0 to 0.50.0 (#14833)
- feat(deps): Bump @opentelemetry/instrumentation-express from 0.46.0 to 0.47.0 (#14834)
- feat(deps): Bump @opentelemetry/instrumentation-mysql2 from 0.44.0 to 0.45.0 (#14836)
- feat(deps): Bump @opentelemetry/propagation-utils from 0.30.14 to 0.30.15 (#14832)
- feat(deps): bump @opentelemetry/context-async-hooks from 1.29.0 to 1.30.0 (#14869)
- feat(deps): bump @opentelemetry/instrumentation-generic-pool from 0.42.0 to 0.43.0 (#14870)
- feat(deps): bump @opentelemetry/instrumentation-knex from 0.43.0 to 0.44.0 (#14872)
- feat(deps): bump @opentelemetry/instrumentation-mongodb from 0.50.0 to 0.51.0 (#14871)
- feat(deps): bump @opentelemetry/instrumentation-tedious from 0.17.0 to 0.18.0 (#14868)
- feat(deps): bump @sentry/cli from 2.39.1 to 2.41.1 (#15173)
- feat(flags): Add Statsig browser integration (#15319)
- feat(gatsby): Preserve user-provided source map settings (#15006)
- feat(nestjs): Remove
SentryTracingInterceptor,SentryGlobalGraphQLFilter,SentryGlobalGenericFilter(#14761) - feat(nextjs): Directly forward
sourcemaps.disableto webpack plugin (#15109) - feat(node): Add
processSessionIntegration(#15081) - feat(node): Add missing
vercelAIIntegrationexport (#15318) - feat(node): Capture exceptions from
worker_threads(#15105) - feat(nuxt): Add enabled to disable Sentry module (#15337)
- feat(nuxt): add
silent,errorHandler,releasetoSourceMapsOptions(#15246) - feat(profiling-node): Use
@sentry-internal/node-cpu-profiler(#15208) - feat(replay): Update fflate to 0.8.2 (#14867)
- feat(solidstart): Add
autoInjectServerSentry: 'experimental_dynamic-import(#14863) - feat(sveltekit): Only inject fetch proxy script for SvelteKit < 2.16.0 (#15126)
- feat(user feedback): Adds draw tool for UF screenshot annotations (#15062)
- feat(user feedback): Adds toolbar for cropping and annotating (#15282)
- feat: Avoid class fields all-together (#14887)
- feat: Only emit
__esModuleproperties in CJS modules when there is a default export (#15018) - feat: Pass
parentSampleRatetotracesSampler(#15024) - feat: Propagate and use a sampling random (#14989)
- fix(browser): Remove
browserPerformanceTimeOriginside-effects (#14025) - fix(core): Ensure debugIds are applied to all exceptions in an event (#14881)
- fix(core): Fork scope if custom scope is passed to
startSpanManual(#14901) - fix(core): Fork scope if custom scope is passed to
startSpan(#14900) - fix(core): Only fall back to
sendDefaultPiifor IP collection inrequestDataIntegration(#15125) - fix(nextjs): Flush with
waitUntilincaptureRequestError(#15146) - fix(nextjs): Use batched devserver symbolication endpoint (#15335)
- fix(node): Don't leak
__spanproperty into breadcrumbs (#14798) - fix(node): Fix sample rand propagation for negative sampling decisions (#15045)
- fix(node): Missing
releasefrom ANR sessions (#15138) - fix(node): Set the correct fallback URL fields for outgoing https requests if they are not defined (#15316)
- fix(nuxt): Detect Azure Function runtime for flushing with timeout (#15288)
- fix(react): From location can be undefined in Tanstack Router Instrumentation (#15235)
- fix(react): Import default for hoistNonReactStatics (#15238)
- fix(react): Support lazy-loaded routes and components. (#15039)
- fix(solidstart): Do not copy release-injection map file (#15302)
- ref(browser): Improve active span handling for
browserTracingIntegration(#14959) - ref(browser): Improve setting of propagation scope for navigation spans (#15108)
- ref(browser): Skip browser extension warning in non-debug builds (#15310)
- ref(browser): Update
supportsHistorycheck & history usage (#14696) - ref(core): Ensure non-recording root spans have frozen DSC (#14964)
- ref(core): Log debug message when capturing error events (#14701)
- ref(core): Move log message about invalid sample rate (#15215)
- ref(node): Streamline check for adding performance integrations (#15021)
- ref(react): Adapt tanstack router type (#15241)
- ref(svelte): Remove SvelteKit detection (#15313)
- ref(sveltekit): Clean up sub-request check (#15251)
Work in this release was contributed by @aloisklink, @arturovt, @aryanvdesh, @benjick, @chris-basebone, @davidturissini, @GrizliK1988, @jahands, @jrandolf, @kunal-511, @maximepvrt, @maxmaxme, @mstrokin, @nathankleyn, @nwalters512, @tannerlinsley, @tjhiggins, and @Zen-cronic. Thank you for your contributions!
9.0.0-alpha.2
This is an alpha release of the upcoming major release of version 9. This release does not yet entail a comprehensive changelog as version 9 is not yet stable.
For this release's iteration of the migration guide, see the Migration Guide as per 9.0.0-alpha.2.
Please note that the migration guide is work in progress and subject to change.
9.0.0-alpha.1
This is an alpha release of the upcoming major release of version 9. This release does not yet entail a comprehensive changelog as version 9 is not yet stable.
For this release's iteration of the migration guide, see the Migration Guide as per 9.0.0-alpha.1.
Please note that the migration guide is work in progress and subject to change.
9.0.0-alpha.0
This is an alpha release of the upcoming major release of version 9. This release does not yet entail a comprehensive changelog as version 9 is not yet stable.
For this release's iteration of the migration guide, see the Migration Guide as per 9.0.0-alpha.0.
Please note that the migration guide is work in progress and subject to change.
8.x
A full list of changes in the 8.x release of the SDK can be found in the 8.x Changelog.
7.x
A full list of changes in the 7.x release of the SDK can be found in the 7.x Changelog.
6.x
A full list of changes in the 6.x release of the SDK can be found in the 6.x Changelog.
5.x
A full list of changes in the 5.x release of the SDK can be found in the 5.x Changelog.
4.x
A full list of changes in the 4.x release of the SDK can be found in the 4.x Changelog.