Important Changes
-
feat(hono): add orchestrion-based auto-instrumentation (#24497)
Hono is now instrumented automatically. Request spans are named after the matched Hono route, each middleware gets its own span, and errors thrown in handlers are captured.
-
feat(node/bun): Enable dedupeIntegration by default (#24794)
@sentry/nodeand@sentry/bunnow includededupeIntegrationin their default integrations, like the browser, Deno, Vercel Edge and Cloudflare SDKs. When the same error is captured two times in a row, only the first event is sent. To keep the previous behavior, remove the integration:integrations: defaults => defaults.filter(integration => integration.name !== 'Dedupe'). -
feat(remix): Instrument Remix 3 server requests via fetch-router (#24801)
On Remix 3, the SDK now adds the matched route as
http.route, the response status and a low-cardinality name to thehttp.serverspan of eachfetch-routerrequest. Start the app with--import @sentry/remix/v3/nodein place of--import remix/node-tsx.
Other Changes
- chore(bundler-plugins): Allow magic-string 1.x (#24768)
- feat(deps): Bump oxc-parser to 0.152.0 and sentry to 0.45.0 (#24823)
- feat(elysia): Export
bunRuntimeMetricsIntegration(#24892) - feat(react-router): Support request-scoped CSP nonces in createSentryHandleRequest (#24826)
- fix(aws-serverless): Keep Lambda extension polling past 300s (#24811)
- fix(browser-utils): Stop leaking DOM instrumentation listeners on mismatched removals (#24727)
- fix(core): Resolve escape sequences in
fmt/parameterizemessages (#24770) - fix(deno): Flush buffered metrics and logs before process exit (#24807)
- fix(node): End Express layer spans when
nextis called (#24854) - fix(node): Flush buffered metrics on process exit (#24806)
- fix(nuxt): Fix CommonJS interop for force-inlined instrumented packages (#24799)
- fix(server-utils): Preserve raw Anthropic response bodies (#24902)
- fix(server-utils): Preserve raw Groq and Together response bodies (#24906)
- fix(server-utils): Preserve raw OpenAI embeddings and conversation responses (#24908)
- fix(server-utils): Preserve response bodies for OpenAI parse helpers (#24783)
- fix(solidstart): Support
rolldownOptionsin instrumentation file plugin (#24863) - fix(sveltekit): Skip trace meta tags when prerendering (#24777)
- fix(vue): Share one root render span debounce timer across components (#24868)
- perf(server-utils): Avoid quadratic SQL sanitizer output handling (#24834)
Internal Changes
- chore: Add external contributor to CHANGELOG.md (#24822)
- chore: Add external contributor to CHANGELOG.md (#24827)
- chore: Add external contributor to CHANGELOG.md (#24835)
- chore: Add external contributor to CHANGELOG.md (#24850)
- chore: Add external contributor to CHANGELOG.md (#24851)
- chore: Add external contributor to CHANGELOG.md (#24914)
- chore(deps): Update to Vitest 4 and Vite 8 (#24746)
- chore(github): Add
externallabel on PRs of external contributors (#24825) - chore(solidstart): Remove unused Vitest setup from e2e apps (#24789)
- ci: shard Bun integration tests (#24771)
- ci: shard Deno shared integration tests (#24772)
- docs(core): Clarify error object dedupe and
dedupeIntegration(#24893) - feat(deps): bump axios from 1.18.0 to 1.20.0 (#24918)
- feat(deps): bump fast-uri from 3.1.7 to 3.1.8 (#24889)
- feat(deps): bump fastify from 5.12.1 to 5.12.5 (#24917)
- feat(deps): bump hono from 4.13.5 to 4.13.7 (#24916)
- feat(deps): bump ip-address from 10.4.0 to 10.7.2 (#24810)
- feat(deps): bump moment from 2.30.1 to 2.31.0 (#24890)
- fix(deps): runtime dependency security fixes (#24911)
- ref(hono): move shared Hono instrumentation into @sentry/server-utils (#24496)
- test(browser): Fix flaky reportPageLoaded duration assertion (#24814)
- test(bun): Run the auto-instrumentation suites with bundled scenarios (#24612)
- test(cloudflare): Add shared streamed-span helpers to the integration test runner (#24176)
- test(cloudflare): Assert Workers AI gen_ai spans in the send-to-sentry E2E test (#24515)
- test(cloudflare): Port the binding suites to span streaming (#24190)
- test(cloudflare): Port the http-server integration suites to span streaming (#24195)
- test(cloudflare): Port the request handler suites to span streaming (#24196)
- test(cloudflare): Port the tracing propagation suites to span streaming (#24185)
- test(cloudflare): Port the tracing suites to span streaming (#24179)
- test(cloudflare): Port the vite-autoinstrument suites to span streaming (#24189)
- test(e2e): Add Bun Express test app (#24306)
- test(e2e): Add trace test for background use cache revalidation (#24740)
- test(e2e): Mark supabase-nextjs as optional (#24898)
- test(e2e): Retry a hung SAM start in aws-serverless tests (#24879)
- test(nextjs): Add tests for low-cardinality span names for cache spans (#24819)
- test(nextjs): Add UI components for cached/dynamic content (#24874)
- test(nuxt): Remove version pin for @nuxt/cli in Nuxt 5 E2E (#24798)
- test(replay): De-flake mutationLimit large-mutations test (#24784)
- test(sveltekit): Add missing prerender e2e test (#24921)
- test(test-utils): Add fetchSpanAttributes to read span attributes via the sentry CLI (#24514)
- test(test-utils): Extract Cloudflare Worker deploys into
test-utils/cloudflare(#24815)
Work in this release was contributed by @nabi-noor, @LuccaRebelloToledo, @andasan, @breken-ai, @EmileBrunelle, and @diobriggs. Thank you for your contributions!
Bundle size 📦
| Path | Size |
|---|---|
| @sentry/browser | 28.68 KB |
| @sentry/browser - with treeshaking flags | 27 KB |
| @sentry/browser - with treeshaking flags tracing without tracing | 26.9 KB |
| @sentry/browser (incl. Tracing) | 50.1 KB |
| @sentry/browser (incl. Tracing + Span Streaming) | 50.12 KB |
| @sentry/browser (incl. Tracing, Profiling) | 53.03 KB |
| @sentry/browser (incl. Tracing, Replay) | 88.76 KB |
| @sentry/browser (incl. Tracing, Replay) - with treeshaking flags | 78.12 KB |
| @sentry/browser (incl. Tracing, Replay with Canvas) | 93.35 KB |
| @sentry/browser (incl. Tracing, Replay, Feedback) | 106.02 KB |
| @sentry/browser (incl. Feedback) | 45.79 KB |
| @sentry/browser (incl. sendFeedback) | 33.62 KB |
| @sentry/browser (incl. FeedbackAsync) | 38.62 KB |
| @sentry/browser (incl. Metrics) | 29.66 KB |
| @sentry/browser (incl. Logs) | 29.94 KB |
| @sentry/browser (incl. Metrics & Logs) | 30.59 KB |
| @sentry/react | 30.47 KB |
| @sentry/react (incl. Tracing) | 52.41 KB |
| @sentry/vue | 36.04 KB |
| @sentry/vue (incl. Tracing) | 52.62 KB |
| @sentry/svelte | 28.71 KB |
| CDN Bundle | 30.45 KB |
| CDN Bundle (incl. Tracing) | 50.73 KB |
| CDN Bundle (incl. Logs, Metrics) | 32.65 KB |
| CDN Bundle (incl. Tracing, Logs, Metrics) | 52.62 KB |
| CDN Bundle (incl. Replay, Logs, Metrics) | 72.42 KB |
| CDN Bundle (incl. Tracing, Replay) | 87.42 KB |
| CDN Bundle (incl. Tracing, Replay, Logs, Metrics) | 89.35 KB |
| CDN Bundle (incl. Tracing, Replay, Feedback) | 93.45 KB |
| CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) | 95.38 KB |
| CDN Bundle - uncompressed | 89.89 KB |
| CDN Bundle (incl. Tracing) - uncompressed | 150.82 KB |
| CDN Bundle (incl. Logs, Metrics) - uncompressed | 96.31 KB |
| CDN Bundle (incl. Tracing, Logs, Metrics) - uncompressed | 156.63 KB |
| CDN Bundle (incl. Replay, Logs, Metrics) - uncompressed | 222.84 KB |
| CDN Bundle (incl. Tracing, Replay) - uncompressed | 267.74 KB |
| CDN Bundle (incl. Tracing, Replay, Logs, Metrics) - uncompressed | 273.54 KB |
| CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed | 281.12 KB |
| CDN Bundle (incl. Tracing, Replay, Feedback, Logs, Metrics) - uncompressed | 286.91 KB |
| @sentry/nextjs (client) | 54.6 KB |
| @sentry/sveltekit (client) | 50.52 KB |
| @sentry/core/server | 39.05 KB |
| @sentry/core/browser | 13.31 KB |
| @sentry/node | 140.93 KB |
| @sentry/node/import (ESM hook with diagnostics-channel injection) | 81.07 KB |
| @sentry/node - without tracing | 90.77 KB |
| @sentry/node - without channel injection | 119.77 KB |
| @sentry/aws-serverless | 98.88 KB |
| @sentry/cloudflare (withSentry) - minified | 201.85 KB |
| @sentry/cloudflare (withSentry) | 502.08 KB |