Important Changes
-
ref(cloudflare): Use the shared request handler wrapper (#25588)
Cloudflare Workers now use the same request handler wrapper as
Deno.serveandBun.serve. Changes for Cloudflare users:- Request spans now set
client.addressfrom theCF-Connecting-IPheader (or another forwarding header), as on the other runtimes. This followsdataCollection.userInfo, which istrueby default. To leave it out, setdataCollection: { userInfo: false }. - Request spans now have the response header attributes, and events have the
responsecontext with the status code. - When the source of a streamed response fails, the SDK now captures the error and marks the span as failed. With
captureErrors: false, it does not capture it. - Request spans now list every
Set-Cookieheader of a response, as on Deno and Bun. - Without
AsyncLocalStorage(for example on Shopify Oxygen), events now also get the request URL and method.
- Request spans now set
-
feat(nestjs): Add an option to monitor every @Cron method (#25471)
Set
monitorCronJobs: trueonnestIntegration()to send check-ins for every@Cron()method, without adding@SentryCronto each one. It's off by default. Each monitored job creates a monitor in Sentry, and monitors are billed. UseexcludeCronJobsto skip jobs by slug. Methods that also have@SentryCroncheck in once, with the slug and options passed to@SentryCron. -
feat(node): Add cronJobIntegration to monitor cron jobs (#25477)
Add
Sentry.cronJobIntegration()tointegrationsto send check-ins for every namedCronJobof thecronpackage (4.3+), with the job name as the monitor slug. It's off by default. Each monitored job creates a monitor in Sentry, and monitors are billed. UseexcludeJobsto skip jobs by name.Sentry.cron.instrumentCronis deprecated; usecronJobIntegrationinstead. -
fix(server-utils): Instrument @anthropic-ai/sdk 1.x and turn off its own OTel spans (#25750)
The Anthropic integration now instruments
@anthropic-ai/sdk1.x. Since 0.134 the SDK also records its own OpenTelemetry spans, such asanthropic.messages.create, which duplicated Sentry'sgen_aispans. Once Sentry instruments the SDK, it setsANTHROPIC_OPEN_TELEMETRY=falseto turn those spans off. To keep them, setANTHROPIC_OPEN_TELEMETRY=trueor pass theopenTelemetryoption to the Anthropic client. -
feat(nextjs): Mark pageloads of cached pages (#25318)
When Next.js serves a page from its cache, for example an ISR page or a
cacheComponentsshell, the pageload now has thepage.server_rendering.typeattribute. It isstaticif the whole page came from the cache, andpartially_staticif parts of it rendered for this request. Then the pageload stays connected to this request, as before. If the request that rendered the cached page was sampled, the pageload also links to it. So in Sentry, a cached page no longer looks like missing server instrumentation.
Other Changes
- feat(astro): Add
@sentry/astro/integrationentry for the Astro integration (#25726) - feat(bundler-plugins): Add
sourcemaps.deleteSourcemapsAfterUploadand staged uploads (#25637) - feat(nestjs): Derive SentryCron monitor config from @Cron (#25013)
- feat(nextjs): Add
applicationKeyExcludeDependenciesoption (#25818) - feat(node): Add
awsLambdaWebIntegrationfor Lambda Web Functions (#25355) - feat(node): Add BullMQ integration (#21777)
- feat(node): Add nodeCronIntegration to monitor node-cron tasks (#25473)
- feat(node): Add nodeScheduleIntegration to monitor node-schedule jobs (#25474)
- feat(node): Support postgres v4 through its native tracing channels (#26076)
- feat(server-utils): Extract
getSqlSpanNamefor SQL span names (#25929) - feat(server-utils): Move to new
getSqlQueryAttributeshelper for consistency (#25927) - feat(server-utils): Record AI SDK v7 runtime and tool context on Vercel AI spans (#25774)
- feat(server-utils): Set
db.operation.nameon SQL spans (#25850) - feat(server-utils): Support @mistralai/mistralai v3 (#25827)
- feat(solidstart): Export
withSentryfrom@sentry/solidstart/vite(#25725) - fix(astro): Initialize the server SDK on the first endpoint request (#25731)
- fix(browser): Attribute long animation frame spans to the longest script (#25990)
- fix(bundler-plugins): Inject debug IDs into every esbuild rebuild (#26099)
- fix(bundler-plugins): upload literal artifact paths (#25356)
- fix(cloudflare): Run build-time instrumentation in vite dev (#25777)
- fix(core): Call native toString without page-replaceable lookups in FunctionToString (#25921)
- fix(core): Enforce linked error limits for aggregate and suppressed errors (#25873)
- fix(core): Only create Supabase db spans when there is a parent span (#25807)
- fix(core): preserve span links through beforeSendSpan (#25566)
- fix(core): Respect header collection for session user agents (#25871)
- fix(deps): Bump glob to 14 and drop the direct dependency from react-router (#26014)
- fix(nextjs): Don't abort Cache Components renders on Cloudflare Workers when requests overlap (#25315)
- fix(nextjs): Drop tunnel requests under the Next.request proxy root span (#26096)
- fix(nextjs): Fork isolation scope for Next.request proxy root spans (#26084)
- fix(nextjs): Strip source map comments before trailing debug IDs (#25881)
- fix(nitro): Capture errors thrown in tasks (#26089)
- fix(nuxt): Keep storage instrumentation plugin synchronous (#25949)
- fix(replay): Skip buffered replays for captureMessage stacks from the attachStacktrace default (#25846)
- fix(server-utils): Fix orchestrion source maps of instrumented modules (#25772)
- fix(server-utils): Read the pi-durable session id in every phase outside a run (#25838)
- fix(server-utils): Require a parent span for Firestore operations (#25855)
- fix(server-utils): Require a parent span for Tedious queries (#25822)
- fix(server-utils): Use onlyIfParent for Firestore spans (#25877)
- fix(server-utils): Use onlyIfParent for Tedious spans (#25876)
- fix(solidstart): Serve the managed tunnel under Vite's base on SolidStart 2 (#25848)
- fix(sveltekit): Resolve Handle and ResolveOptions types on SvelteKit 3 (#26085)
- fix(wasm): Skip length prefix in 16-byte build IDs (#24857)
- ref(core): Deprecate the released
handleTunnelRequestform and reword theserveTunnelIntegrationdocs (#25844)
Internal Changes
- chore(ci): Ignore Dependabot bumps for deps that are also peer deps (#26015)
- chore(ci): Remove nightly sentry-lighthouse upload workflow (#25966)
- chore(dependabot): Group related dependency updates (#26059)
- chore(dependabot): Ignore major react-router updates (#25892)
- chore(dependabot): Preserve SDK compatibility baselines (#26013)
- chore(dependabot): Remove obsolete update rules (#26007)
- chore(deps): Align AWS SDK clients to 3.1161.0 (#26032)
- chore(deps): Bump @actions/core and @actions/github in internal GH actions (#26109)
- chore(deps): Bump @nuxt/devtools from 3.4.1 to 3.4.4 (#26097)
- chore(deps): Bump @sentry/conventions to 0.30.0 (#25837)
- chore(deps): Bump undici from 6.24.1 to 6.29.1 (#26108)
- chore(deps): Bump webpack from 5.104.1 to 5.112.2 (#25910)
- chore(deps): Enable pnpm autoDedupe (#25961)
- chore(deps): Group AWS SDK Dependabot updates (#26030)
- chore(deps-dev): Bump @babel/parser from 7.29.9 to 8.0.10 (#26043)
- chore(deps-dev): Bump @babel/plugin-transform-typescript from 7.29.7 to 8.0.6 (#26012)
- chore(deps-dev): Bump @hono/node-server from 2.1.3 to 2.1.5 (#26054)
- chore(deps-dev): Bump @rollup/plugin-terser from 0.4.4 to 1.0.2 (#25890)
- chore(deps-dev): Bump @testing-library/user-event from 14.5.2 to 14.6.8 (#26071)
- chore(deps-dev): Bump fake-indexeddb from 6.2.5 to 6.2.7 (#26034)
- chore(deps-dev): Bump markdown-table from 3.0.3 to 3.0.4 (#26074)
- chore(deps-dev): Bump node-schedule and @types/node-schedule (#26058)
- chore(deps-dev): Bump redux from 4.0.5 to 5.0.1 (#25959)
- chore(deps-dev): Bump the nestjs group with 2 updates (#26060)
- chore(deps-dev): Bump the react-router group across 1 directory with 3 updates (#25955)
- chore(deps-dev): Bump tsx from 4.23.0 to 4.23.15 (#25958)
- chore(deps-dev): Bump wrangler from 4.61.0 to 4.156.0 (#26009)
- chore(dev-packages): Move dependencies to devDependencies (#26046)
- chore(node-integration-tests): Remove unused dependencies (#25942)
- chore: Add Bugbot guidance for cold imports in tests (#25976)
- chore: Add external contributor to CHANGELOG.md (#25862)
- chore: Add external contributor to CHANGELOG.md (#25870)
- chore: Add external contributor to CHANGELOG.md (#25872)
- chore: Add external contributor to CHANGELOG.md (#26017)
- chore: Add external contributor to CHANGELOG.md (#26062)
- chore: Batch npm dependency updates daily (#26072)
- chore: Exclude integration and bundler tests from Dependabot updates (#26075)
- chore: Ignore major Prisma dependency updates (#26063)
- chore: Prune unused regexp dependencies from lockfile (#25948)
- chore: Refresh Smithy deprecation metadata in lockfile (#25971)
- chore: Remove unused eslint-plugin-regexp dependencies (#25944)
- chore: Remove unused test and build dependencies (#25945)
- ci(canary): Build the canary test matrix from
canaryVariants(#25866) - ci(deps): Bump anthropics/claude-code-action from 1.0.236 to 1.0.264 (#25952)
- ci(deps): Bump anthropics/claude-code-action from 1.0.264 to 1.0.266 (#26008)
- ci(deps): Bump getsentry/craft from 2.31.2 to 3.4.0 (#25987)
- ci(deps): Bump getsentry/craft from 3.4.0 to 3.5.0 (#26011)
- ci(deps): Bump getsentry/github-workflows/validate-pr from 36c729264d2edc29ebae61950c50e1e9f043ad7e to 01bcb7fe69bb48bacd83e675840e3dc95b33c730 (#25954)
- ci(deps): Group langchain dependabot updates and skip majors (#26041)
- ci(deps): Ignore langchain in dependabot (#26056)
- ci(node): Add optional Node 27 alpha tests (#25984)
- ci: Drop dead matrix reference in Deno unit tests job (#25852)
- ci: Include v10 in base-branch metadata (#25977)
- ci: run CI on GitHub-hosted runners again (#26057)
- ci: Split the E2E test matrix into two jobs (#25913)
- docs(changelog): Add monitorCronJobs to Unreleased (#25996)
- docs(changelog): Restore order of unreleased section in changelog (#26006)
- feat(deps): Bump @aws-sdk/client-lambda from 3.1068.0 to 3.1161.0 (#26026)
- feat(deps): Bump @embroider/addon-shim from 1.10.3 to 1.11.0 (#26048)
- feat(deps): Bump @flue/runtime from 2.0.3 to 2.3.0 (#26044)
- feat(deps): Bump @hapi/content from 6.0.2 to 6.0.3 (#26021)
- feat(deps): Bump @hono/node-server from 2.0.10 to 2.1.3 (#26053)
- feat(deps): Bump @sveltejs/acorn-typescript from 1.0.9 to 1.0.13 (#26050)
- feat(deps): Bump @types/aws-lambda from 8.10.161 to 8.10.164 (#26066)
- feat(deps): Bump axios from 1.20.0 to 1.21.0 (#26033)
- feat(deps): Bump dataloader from 2.2.2 to 2.2.3 (#25891)
- feat(deps): Bump lodash.omit from 4.5.0 to 4.18.0 (#26055)
- feat(deps): Bump node-forge from 1.4.0 to 1.4.2 (#26020)
- feat(deps): Bump pg and @types/pg (#26042)
- feat(deps): Bump proxy from 2.1.1 to 4.1.0 (#26029)
- feat(deps): Bump valibot from 1.4.2 to 1.5.0 (#25957)
- feat(deps): Bump vite from 8.3.1 to 8.3.5 (#26045)
- feat(deps): Bump yargs from 16.2.0 to 18.2.0 (#26031)
- fix(build): Handle CRLF line endings in pnpm-workspace.yaml check (#26083)
- fix(deps): Bump seroval to 1.6.12 and 1.7.7 (#26047)
- fix(deps): Bump tar from 7.5.11 to 7.5.22 (#26025)
- perf(ci): Increase tarball packing concurrency (#25979)
- perf(ci): Speed up Next.js E2E tests by sharding into dev/prod (#25960)
- perf(ci): Split Next.js application-key tests by environment (#26040)
- ref(astro): Use convention constants for attribute keys (#25894)
- ref(browser): Use convention constants for attribute keys (#25895)
- ref(browser-utils): Use convention constants for attribute keys (#25896)
- ref(bun): Use convention constants for attribute keys (#25897)
- ref(cloudflare): Simplify shared SDK initialization (#25864)
- ref(cloudflare): Use convention constants for attribute keys (#25898)
- ref(core): Use convention constants for attribute keys (#25899)
- ref(deno): Use convention constants for attribute keys (#25900)
- ref(google-cloud-serverless): Use convention constants for attribute keys (#25901)
- ref(nextjs): Use convention constants for attribute keys (#25902)
- ref(node): Use convention constants for attribute keys (#25903)
- ref(nuxt): Use convention constants for attribute keys (#25904)
- ref(profiling-node): Use convention constants for attribute keys (#25905)
- ref(react-router): Use convention constants for attribute keys (#25906)
- ref(replay-internal): Use convention constants for attribute keys (#25907)
- ref(server-utils): Clarify PostgreSQL instrumentation filenames (#25939)
- ref(server-utils): Remove
requiresParentSpanin favor ofonlyIfParent(#25926) - ref(server-utils): Share the postgres.js query settlement logic (#26094)
- ref(server-utils): Use convention constants for attribute keys (#25908)
- ref(sveltekit): Use convention constants for attribute keys (#25909)
- ref: Pass optional span attributes directly instead of conditional spreads (#25878)
- test(aws-serverless): Move Lambda extension setup outside test timeout (#25975)
- test(browser): Stabilize long animation frame tests (#25974)
- test(bundler-plugins): Stabilize missing-parser test setup (#25972)
- test(bundler-tests): Guard server runtime entries against build-time tooling (#25724)
- test(e2e): Check node-openai-decisions through the event proxy (#25840)
- test(e2e): Import Type from typebox in node-pi-durable (#26018)
- test(e2e): Move canary variants into
canaryVariants(#25865) - test(e2e): Move OpenAI and Anthropic send-to-sentry cases into gen-ai-libraries (#25841)
- test(e2e): Point together-ai 1.x at OpenRouter's base URL in gen-ai-libraries (#25947)
- test(e2e): Remove node-flue-send-to-sentry (#25839)
- test(e2e): Rename nuxt-5 middleware files to avoid Nitro's dotted suffixes (#25923)
- test(effect): Assert error severities without event ordering (#25973)
- test(node-integration-tests): Install Flue and pi-durable as package dependencies (#25933)
- test(node-integration-tests): Install Prisma suite dependencies as package dependencies (#25943)
- test(node-integration-tests): Install single-version suite dependencies as package dependencies (#25936)
- test(nuxt): cover the client plugin's pages-router instrumentation (#25348)
- test(nuxt): Make the
nuxt-5 (tunnel-dev)e2e variant optional (#26004) - test(nuxt): Use Nuxt's own Nitro and add db0 in nuxt-5 E2E app (#26095)
Work in this release was contributed by @lazerg, @chiliec, @61465, @jpdefo, and @AyeshaWaseemAhmad. Thank you for your contributions!
Bundle size 📦
| Path | Size |
|---|---|
| @sentry/browser | 29.69 KB |
| @sentry/browser - with treeshaking flags | 27.87 KB |
| @sentry/browser - with treeshaking flags tracing without tracing | 27.77 KB |
| @sentry/browser (incl. Tracing) | 51.49 KB |
| @sentry/browser (incl. Tracing + Span Streaming) | 51.5 KB |
| @sentry/browser (incl. Tracing, Profiling) | 54.4 KB |
| @sentry/browser (incl. Tracing, Replay) | 90.85 KB |
| @sentry/browser (incl. Tracing, Replay) - with treeshaking flags | 79.71 KB |
| @sentry/browser (incl. Tracing, Replay with Canvas) | 95.49 KB |
| @sentry/browser (incl. Tracing, Replay, Feedback) | 108.17 KB |
| @sentry/browser (incl. Feedback) | 46.86 KB |
| @sentry/browser (incl. sendFeedback) | 34.67 KB |
| @sentry/browser (incl. FeedbackAsync) | 39.66 KB |
| @sentry/browser (incl. Metrics) | 30.7 KB |
| @sentry/browser (incl. Logs) | 30.99 KB |
| @sentry/browser (incl. Metrics & Logs) | 31.69 KB |
| @sentry/react | 31.53 KB |
| @sentry/react (incl. Tracing) | 53.81 KB |
| @sentry/vue | 37.77 KB |
| @sentry/vue (incl. Tracing) | 54.44 KB |
| @sentry/svelte | 29.71 KB |
| @sentry/remix (Remix 3 client bundle) | 56.46 KB |
| CDN Bundle | 31.44 KB |
| CDN Bundle (incl. Tracing) | 52.01 KB |
| CDN Bundle (incl. Logs, Metrics) | 33.66 KB |
| CDN Bundle (incl. Tracing, Logs, Metrics) | 53.91 KB |
| CDN Bundle (incl. Replay, Logs, Metrics) | 74.1 KB |
| CDN Bundle (incl. Tracing, Replay) | 89.33 KB |
| CDN Bundle (incl. Tracing, Replay, Logs, Metrics) | 91.21 KB |
| CDN Bundle (incl. Tracing, Replay, Feedback) | 95.29 KB |
| CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) | 97.24 KB |
| CDN Bundle - uncompressed | 92.45 KB |
| CDN Bundle (incl. Tracing) - uncompressed | 153.97 KB |
| CDN Bundle (incl. Logs, Metrics) - uncompressed | 98.77 KB |
| CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed | 159.58 KB |
| CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed | 227.25 KB |
| CDN Bundle (incl. Tracing, Replay) - uncompressed | 272.81 KB |
| CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed | 278.4 KB |
| CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed | 286.2 KB |
| CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed | 291.77 KB |
| @sentry/nextjs (client) | 56.69 KB |
| @sentry/sveltekit (client) | 52 KB |
| @sentry/core/server | 43.21 KB |
| @sentry/core/browser | 13.6 KB |
| @sentry/node | 152.29 KB |
| @sentry/node/import (ESM hook with diagnostics-channel injection) | 80.35 KB |
| @sentry/node - without tracing | 94.62 KB |
| @sentry/node - without channel injection | 133.08 KB |
| @sentry/aws-serverless | 102.63 KB |
| @sentry/cloudflare (withSentry) - minified | 195.97 KB |
| @sentry/cloudflare (withSentry) | 487.35 KB |
| @sentry/nextjs/cloudflare (withSentry) - minified | 217.46 KB |