Changelog
Unreleased
- "You miss 100 percent of the chances you don't take. — Wayne Gretzky" — Michael Scott
Work in this release was contributed by @zhongrenfei1-hub. Thank you for your contribution!
-
feat(angular): Add support for Angular 22
@sentry/angular now officially supports Angular 22.
-
ref(core): Deprecate sendDefaultPii in favor of dataCollection #21277
sendDefaultPii is deprecated and will be removed in v11. The new dataCollection option lets you control each category of collected data.
sendDefaultPii: true still works and maps to enabling all dataCollection categories.
dataCollection.userInfo defaults to false and only gates auto-populated user.* fields (e.g. IP address from a request).
Data you set explicitly via Sentry.setUser() is always sent regardless.
Note that an empty dataCollection: {} falls back to more permissive defaults than sendDefaultPii: 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 redis and ioredis clients.
Other Changes
- feat(cloudflare): Only capture workflow step error on final retry attempt (#21025)
- feat(hono): Emit warning if
@sentry/node was imported instead of @sentry/hono/node (#21240)
- feat(node): Use ioredis tracing channels (#21187)
- fix(browser): Correctly parse sampleRate when
consistentTraceSampling is enabled (#21281)
- fix(cloudflare): Fix
instrumentDurableObjectWithSentry breaking Cloudflare Agents (#21101)
- fix(cloudflare): Wait for span links to be set (#21167)
- fix(core): Use
WeakRef for Span-Scope circular references (#21242)
- fix(node): Vendor
InstrumentationNodeModuleFile to fix Bun --bytecode crash (#21262)
- fix(profiling-node): Ensure node version support warning includes latest 26 (#21229)
<details>
<summary> <strong>Internal Changes</strong> </summary>
- 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
hrTime utilities from @opentelemetry/core (#21191)
- ref(node): Stop mutating OTel RPC metadata to set
http.route (#21193)
- ref(opentelemetry): Vendor minimal
TraceState implementation (#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)
</details>
10.55.0
Important Changes
-
feat(hono): Promote @sentry/hono to stable and deprecate honoIntegration (#21208)
The @sentry/hono SDK 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-react SDK 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 shouldHandleError option to sentry() middleware (#21205)
The sentry() middleware now accepts a shouldHandleError callback to control which errors are captured and sent to Sentry. By default, 3xx/4xx HTTP errors are ignored and 5xx errors and plain Error objects are captured. Return true from the callback to capture an error, false to 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/123 becomes GET /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/greet instead of GET /_serverFn/a10e70b3...). The tanstackstart.function.hash.sha256 span attribute has been renamed to tanstackstart.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
dataCollection instead of sendDefaultPii (#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
Elysia app type to support Elysia options (#21164)
- fix(tanstackstart-react): Add server-side replayIntegration no-op stub (#21148)
<details>
<summary> <strong>Internal Changes</strong> </summary>
- 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-6 e2e test build by relaxing astro version range (#21211)
- meta(agents): Update AI commit attribution guidance (#21166)
- ref(browser): Extract browser-specific
normalize code 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)
</details>
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 any beforeSend* 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 beforeSendLog callback 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 fetchStreamPerformanceIntegration for 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 trackFetchStreamPerformance option.
-
feat(core): Add dataCollection client option (#20965)
Adds a new dataCollection client 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 simple sendDefaultPii boolean option will be deprecated and removed in a future release.
-
feat(hono): Add hono.request spans 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.integrations on 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:http on 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
attachStacktrace is 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.serve instrumentation 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
project option type to string | string[] (#21067)
- fix(node): Improve
http.client double-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_id attribute on streamed spans (#20897)
- fix(replay): Set
replay_id on DSC after buffer-to-session conversion (#20686)
- fix(solidstart): Use nitro module for build hooks to preserve preset hooks (#20861)
- ref(core): Rename
types-hoist to types (#20979)
<details>
<summary> <strong>Internal Changes</strong> </summary>
- 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-http dependency (#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)
</details>
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)
<details>
<summary> <strong>Internal Changes</strong> </summary>
- chore(deps): Bump next from 15.5.15 to 15.5.18 in /dev-packages/e2e-tests/test-applications/nextjs-15-intl (#20821)
</details>
10.53.0
Important Changes
-
feat(core): Add streamGenAiSpans options to stream gen_ai spans (#20785)
Adds a new streamGenAiSpans option that controls how gen_ai spans are
sent to Sentry. When set, the SDK extracts all gen_ai spans 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
addConsoleInstrumentationFilter utility (#20790)
- feat(core): Add
applicationKey to BuildTimeOptionsBase (#20789)
- feat(core): split exports by browser/server for bundle size (#20435)
- feat(nextjs): Add top-level
applicationKey option (#20794)
- feat(node): Support Node 26 (#20710)
- feat(profiling-node): Bump
@sentry-internal/node-cpu-profiler to 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)
<details>
<summary> <strong>Internal Changes</strong> </summary>
- 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)
</details>
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/hono Sentry 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_settings to v2 log envelope payload (#20453)
Inference of user data (e.g. IP address, browser name/version) on log events is now gated behind the sendDefaultPii option. 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_settings to 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
processSegmentSpan to Deno context integration (#20613)
- feat(http): Portable node:http client instrumentation (#20393)
- feat(nitro): Add unstorage tracing channel instrumentation (#20615)
- feat(node-core): Add
processSegmentSpan to 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)
<details>
<summary> <strong>Internal Changes</strong> </summary>
- chore: Remove
bundle-analyzer-scenarios dev 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
npmrc pointing 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)
</details>
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: true in 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 (init in external file) (#20497)
To improve Node.js instrumentation, the sentry() middleware exported from @sentry/hono/node no longer accepts configuration options.
Instead, you must configure the SDK by calling Sentry.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/nitro SDK (#19224)
A new @sentry/nitro package provides first-class Sentry support for Nitro applications, with HTTP handler and error instrumentation, middleware tracing, request isolation, and build-time source map uploading via withSentryConfig.
Read more in the Nitro SDK docs and the Nitro SDK readme.