Changelog
Unreleased
- "You miss 100 percent of the chances you don't take. — Wayne Gretzky" — Michael Scott
10.3.0
- feat(core): MCP Server - Capture prompt results from prompt function calls (#17284)
- feat(bun): Export
skipOpenTelemetrySetup
option (#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
ignoreSpans
option (#17078)
This release adds a new top-level Sentry.init
option, ignoreSpans
, that can be used as follows:
Sentry.init({
ignoreSpans: [
'partial match',
/regex/,
{
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 });
- 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_agent
spans 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.origin
span attribute to SentryTraced
decorator (#17318)
- fix(node): Assign default export of
openai
to the instrumented fn (#17320)
- fix(replay): Call
sendBufferedReplayOrFlush
when 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
diagnoseSdkConnectivity
doesn'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
enableLogs
and beforeSendLog
experimental options (#17063)
- feat(core)!: Remove
hasTracingEnabled
(#17072)
- feat(core)!: Remove deprecated logger (#17061)
- feat(replay)!: Promote
_experiments.autoFlushOnFeedback
option 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
SentryNodeServerlessSDKv10
v10 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
flushIfServerless
function (#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-stacktrace
to 0.2.2
(#17207)
- feat(node): Add
shouldHandleError
option to fastifyIntegration
(#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
fastifyIntegration
error handler (#17208)
- fix(node): Ensure tool errors for
vercelAiIntegration
have 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
flushIfServerless
function (#17239)
- feat(v9/node-native): Upgrade
@sentry-internal/node-native-stacktrace
to 0.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
fastifyIntegration
error 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
enableLogs
and beforeSendLog
option (#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.
Sentry.init({
_experiments: {
enableLogs: true,
beforeSendLog: log => {
return log;
},
},
});
Sentry.init({
enableLogs: true,
beforeSendLog: log => {
return log;
},
});
- feat(astro): Implement parameterized routes
- feat(v9/astro): Parametrize dynamic server routes (#17141)
- feat(v9/astro): Parametrize routes on client-side (#17143)
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
vercelAiIntegration
have 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 thread
registerWebWorker({self})
to be used in the web worker
Sentry.init({...})
const worker = new MyWorker(...);
Sentry.addIntegration(Sentry.webWorkerIntegration({ worker }));
worker.addEventListener('message', e => {...});
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';
logger.info('This is an info message');
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 completions
client.responses.create()
- For the responses API
Sentry.init({
dsn: '__DSN__',
integrations: [
Sentry.openAIIntegration({
recordInputs: true,
recordOutputs: true,
}),
],
});
Other Changes
- feat(node-core): Expand
@opentelemetry/instrumentation
range to cover 0.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
afterStartPageloadSpan
hook 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
disableSentryWebpackConfig
flag (#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
beforeSendLog
in consoleSandbox
(#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
debug
to replace logger
(#16906)
- fix(browser): Guard
nextHopProtocol
when 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/123
will 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
beforeStartNavigationSpan
lifecycle 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
deleteSourcemapsAfterUpload
jsdoc 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:
The ANR integration has been deprecated and will be removed in future versions. Use eventLoopBlockIntegration
from @sentry/node-native
instead.
- feat(replay): Add
_experiments.ignoreMutations
option (#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
diagnoseSdkConnectivity
request (#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
Context
and Contexts
types (#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
parentSpan
is considered (#16776)
- fix(node): Avoid using dynamic
require
for fastify integration (#16789)
- fix(nuxt): Add
@sentry/cloudflare
as optional peerDependency (#16782)
- fix(nuxt): Ensure order of plugins is consistent (#16798)
- fix(nestjs): Fix exception handling in
@Cron
decorated tasks (#16792)
Work in this release was contributed by @0xbad0c0d3 and @alSergey. Thank you for your contributions!
9.34.0
Important Changes
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
vercelAiIntegration
to 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
ai
from 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
instrumentWorkflowWithSentry
to 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
errorHandler
option (#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
CloudEventsContext
compatible with CloudEvent
(#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
& client
to getTraceData
(#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-host
and x-forwarded-proto
headers (#16687)
- deps: Remove unused
@sentry/opentelemetry
dependency (#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
safeJoin
usage in console logging integration (#16658)
- fix(google-cloud-serverless): Make
CloudEvent
type compatible (#16661)
- fix(nextjs): Fix lookup of
instrumentation-client.js
file (#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
vercelAiIntegration
when ai
module is detected (#16565)
- feat(node): Ensure
modulesIntegration
works 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-vitals
to 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
onError
usage (#16547)
- feat(node): Allow to force activate
vercelAiIntegration
(#16551)
- feat(node): Introduce
ignoreLayersType
option to koa integration (#16553)
- fix(browser): Ensure
suppressTracing
does 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
vercelAIIntegration
from @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
ReactRouterServer
integration (#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
mark
and measure
spans (#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
includeServerName
option (#16442)
- fix(nuxt): Remove setting
@sentry/nuxt
external (#16444)
9.24.0
Important Changes
- feat(angular): Bump
@sentry/angular
peer 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
unregisterOriginalCallbacks
option to browserApiErrorsIntegration
(#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
isEnabled
from 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 for widenClientFileUpload
(#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
browserTracingIntegration
code to setup
hook (#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/nuxt
as external in Rollup (#16407)
- fix(opentelemetry): Ensure
withScope
keeps span active & _getTraceInfoFromScope
works (#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
ServerBuild
argument and return (#16336)
9.21.0
- docs: Fix v7 migration link (#14629)
- feat(node): Vendor in
@fastify/otel
(#16328)
- fix(nestjs): Handle multiple
OnEvent
decorators (#16306)
- fix(node): Avoid creating breadcrumbs for suppressed requests (#16285)
- fix(remix): Add missing
client
exports to server
and cloudflare
entries (#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.route
attribute on root spans (#16297)
- feat(node): Fork isolation scope in tRPC middleware (#16296)
- feat(core): Add
orgId
option to init
and DSC (sentry-org_id
in 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
cancelled
reason (#16277)
- fix(node): Pin
@fastify/otel
fork 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-middle
to 1.13.1
(#16260)
- feat: Export
consoleLoggingIntegration
from 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/otel
dependency 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;
path: string;
headers: OutgoingHttpHeaders;
})
Other changes
- feat(cloudflare): Add logs exports (#16165)
- feat(vercel-edge): Add logs export (#16166)
- feat(cloudflare): Read
SENTRY_RELEASE
from env
(#16201)
- feat(node): Drop
http.server
spans 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
wrapMcpServerWithSentry
from 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
ai
ESM patching (#16152)
- fix(node): Update version range for
module.register
(#16125)
- fix(react-router): Spread
unstable_sentryVitePluginOptions
correctly (#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 wrapMcpServerWithSentry
to instrument MCP servers from @modelcontextprotocol/sdk
(#16032)
The Sentry SDK now supports instrumenting MCP servers from the @modelcontextprotocol/sdk
package. Compatible with versions ^1.9.0
of the @modelcontextprotocol/sdk
package.
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
const server = new McpServer({
name: 'Demo',
version: '1.0.0',
});
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/cloudflare
and @sentry/nextjs
Edge 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.serve
APIs (#16035)
Bun 1.2.6
and above have a new Bun.serve
API, 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
beforeSendLog
after 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_sentryVitePluginOptions
to 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 ignoreIncomingRequestBody
callback to httpIntegration
(#15959)
The httpIntegration
now supports an optional ignoreIncomingRequestBody
callback 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 ignoreIncomingRequestBody
callback receives the URL of the request and should return true
if 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
onRequestSpanStart
hook to browser tracing integration (#15979)
- feat(deps): Bump @sentry/cli from 2.42.3 to 2.43.0 (#16001)
- feat(nextjs): Add
captureRouterTransitionStart
hook for capturing navigations (#15981)
- feat(nextjs): Mark clientside prefetch request spans with
http.request.prefetch: true
attribute (#15980)
- feat(nextjs): Un experimentify
clientInstrumentationHook
(#15992)
- feat(nextjs): Warn when client was initialized more than once (#15971)
- feat(node): Add support for
SENTRY_DEBUG
env variable (#15972)
- fix(tss-react): Change
authToken
type to string
(#15985)
Work in this release was contributed by @Page- and @Fryuni. Thank you for your contributions!
9.11.0
- feat(browser): Add
http.redirect_count
attribute to browser.redirect
span (#15943)
- feat(core): Add
consoleLoggingIntegration
for 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
turbopack
as 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
module
instead of require
for CJS check (#15927)
- fix(remix): Remove mentions of deprecated
ErrorBoundary
wrapper (#15930)
- ref(browser): Temporarily add
sentry.previous_trace
span 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/cloudflare
and @sentry/deno
now 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',
_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 });
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/bun
or server-side of @sentry/nextjs
or @sentry/sveltekit
, you can do structured logging without needing the fmt
helper 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.beforeSendLog
option.
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
dropUndefinedKeys
for spanToJSON
calls (#15792)
- ref: Avoid using
SentryError
for PromiseBuffer control flow (#15822)
- ref: Stop using
dropUndefinedKeys
in SpanExporter (#15794)
- ref(core): Avoid using
SentryError
for event processing control flow (#15823)
- ref(node): Avoid
dropUndefinedKeys
in 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 from 9.7.0
to 9.10.0
leads 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.
Other Changes
- chore(deps): Bump
rrweb
to 2.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.ts
file.
To be forwards compatible, the Sentry Next.js SDK will now pick up instrumentation-client.ts
files even on older Next.js versions and add them to your client bundles.
It is suggested that you either rename your sentry.client.config.ts
file to instrumentation-client.ts
, or if you already happen to have a instrumentation-client.ts
file move the contents of sentry.client.config.ts
to instrumentation-client.ts
.
feat(browser): Add previous_trace
span links (#15569)
The @sentry/browser
SDK and SDKs based on @sentry/browser
now 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 in browserTracingIntegration()
:
Sentry.init({
dsn: 'your-dsn-here'
integrations: [
Sentry.browserTracingIntegration({
linkPreviousTrace: 'in-memory',
}),
],
});
feat(browser): Add logger.X
methods 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,
},
});
Sentry.logger.info('This is a trace message', { userId: 123 });
Please 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
parseStringToURL
method (#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.end
before passing to Proxy (#15776)
- perf(core): Add short-circuits to
eventFilters
integration (#15752)
- perf(node): Short circuit flushing on Vercel only for Vercel (#15734)
9.7.0
- feat(core): Add
captureLog
method (#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
fatal
level for unhandled rejections in strict
mode (#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-react
package and make @sentry/tanstackstart
package a utility package (#15629)
Since TanStack Start is supposed to be a generic framework that supports libraries like React and Solid, the @sentry/tanstackstart
SDK package was renamed to @sentry/tanstackstart-react
to 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
fill
only patches functions (#15632)
- fix(nextjs): Consider
pageExtensions
when 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/cli
from 2.41.1 to 2.42.2 (#15510)
- feat(deps): Bump
@sentry/webpack-plugin
from 3.1.2 to 3.2.1 (#15512)
- feat(feedback) Allowing annotation via highlighting & masking (#15484)
- feat(nextjs): Add
use client
directive to client SDK entrypoints (#15575)
- feat(nextjs): Allow silencing of instrumentation warning (#15555)
- feat(sveltekit): Ensure
AsyncLocalStorage
async context strategy is used in Cloudflare Pages (#15557)
- fix(cloudflare): Make
@cloudflare/workers-types
an 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
onRequestError
in version 15 (#15553)
- fix(node): Allow for
undefined
transport 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
forceTransaction
to trpc middleware options (#15519)
- feat(core): Default filter unactionable error (#15527)
- feat(core): Rename
inboundFiltersIntegration
to eventFiltersIntegration
(#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
allowUrls
and denyUrls
for 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
process
check 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
enableNitroErrorHandler
to server options (#15444)
- feat(opentelemetry): Add
addLink(s)
to span (#15387)
- feat(opentelemetry): Add
links
to span options (#15403)
- feat(replay): Expose rrweb recordCrossOriginIframes under _experiments (#14916)
- fix(browser): Ensure that
performance.measure
spans have a positive duration (#15415)
- fix(bun): Includes correct sdk metadata (#15459)
- fix(core): Add Google
gmo
error to Inbound Filters (#15432)
- fix(core): Ensure
http.client
span 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
SentryNuxtServerOptions
type 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
vite
import (#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-utils
package (#14998)
- feat!: Only collect ip addresses with
sendDefaultPii: true
(#15084)
- feat!: Remove
autoSessionTracking
option (#14802)
- feat!: Remove
enableTracing
(#15078)
- feat!: Remove
getCurrentHub()
, Hub
, and getCurrentHubShim()
(#15122)
- feat!: Remove
spanId
from propagation context (#14733)
- feat!: Remove deprecated and unused code (#15077)
- feat!: Remove metrics API from the JS SDK (#14745)
- feat!: Require Node
>=18
as minimum supported version (#14749)
- feat(astro)!: Respect user-specified source map setting (#14941)
- feat(browser)!: Remove
captureUserFeedback
method (#14820)
- feat(build)!: Drop pre-ES2020 polyfills (#14882)
- feat(core)!: Add
normalizedRequest
to samplingContext
(#14902)
- feat(core)!: Always use session from isolation scope (#14860)
- feat(core)!: Pass root spans to
beforeSendSpan
and disallow returning null
(#14831)
- feat(core)!: Remove
BAGGAGE_HEADER_NAME
export (#14785)
- feat(core)!: Remove
TransactionNamingScheme
type (#14865)
- feat(core)!: Remove
addOpenTelemetryInstrumentation
method (#14792)
- feat(core)!: Remove
arrayify
method (#14782)
- feat(core)!: Remove
debugIntegration
and sessionTimingIntegration
(#14747)
- feat(core)!: Remove
flatten
method (#14784)
- feat(core)!: Remove
getDomElement
method (#14797)
- feat(core)!: Remove
makeFifoCache
method (#14786)
- feat(core)!: Remove
memoBuilder
export & WeakSet
fallback (#14859)
- feat(core)!: Remove
transactionContext
from samplingContext
(#14904)
- feat(core)!: Remove
urlEncode
method (#14783)
- feat(core)!: Remove deprecated
Request
type (#14858)
- feat(core)!: Remove deprecated request data methods (#14896)
- feat(core)!: Remove standalone
Client
interface & deprecate BaseClient
(#14800)
- feat(core)!: Remove validSeverityLevels export (#14765)
- feat(core)!: Stop accepting
event
as argument for recordDroppedEvent
(#14999)
- feat(core)!: Stop setting user in
requestDataIntegration
(#14898)
- feat(core)!: Type sdkProcessingMetadata more strictly (#14855)
- feat(core)!: Update
hasTracingEnabled
to consider empty trace config (#14857)
- feat(core)!: Update
requestDataIntegration
handling (#14806)
- feat(deno)!: Remove deno prepack (#14829)
- feat(ember)!: Officially drop support for ember
<=3.x
(#15032)
- feat(nestjs)!: Move
nestIntegration
into nest sdk and remove setupNestErrorHandler
(#14751)
- feat(nestjs)!: Remove
@WithSentry
decorator (#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
getNumberOfUrlSegments
method (#14744)
- feat(react)!: Remove deprecated react router methods (#14743)
- feat(react)!: Update
ErrorBoundary
componentStack
type (#14742)
- feat(remix)!: Drop support for Remix v1 (#14988)
- feat(remix)!: Remove
autoInstrumentRemix
option (#15074)
- feat(solidstart)!: Default to
--import
setup and add autoInjectServerSentry
(#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
fetchProxyScriptNonce
option (#15123)
- feat(sveltekit)!: Respect user-provided source map generation settings (#14886)
- feat(utils)!: Remove
@sentry/utils
package (#14830)
- feat(vue)!: Remove configuring Vue tracing options anywhere else other than through the
vueIntegration
's tracingOptions
option (#14856)
- feat(vue/nuxt)!: No longer create
"update"
spans for component tracking by default (#14602)
- fix(node)!: Fix name of
vercelAIIntegration
to VercelAI
(#15298)
- fix(vue)!: Remove
logError
from vueIntegration
(#14958)
- ref!: Don't polyfill optional chaining and nullish coalescing (#14603)
- ref(core)!: Cleanup internal types, including
ReportDialogOptions
(#14861)
- ref(core)!: Mark exceptions from
captureConsoleIntegration
as handled: true
by default (#14734)
- ref(core)!: Move
shutdownTimeout
option type from core to node (#15217)
- ref(core)!: Remove
Scope
type interface in favor of using Scope
class (#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-middle
to 1.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_address
explicitly to {{auto}}
(#15008)
- feat(core): Add
inheritOrSampleWith
helper to traceSampler
(#15277)
- feat(core): Emit client reports for unsampled root spans on span start (#14936)
- feat(core): Rename
hasTracingEnabled
to hasSpansEnabled
(#15309)
- feat(core): Streamline
SpanJSON
type (#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.disable
to webpack plugin (#15109)
- feat(node): Add
processSessionIntegration
(#15081)
- feat(node): Add missing
vercelAIIntegration
export (#15318)
- feat(node): Capture exceptions from
worker_threads
(#15105)
- feat(nuxt): Add enabled to disable Sentry module (#15337)
- feat(nuxt): add
silent
, errorHandler
, release
to SourceMapsOptions
(#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
__esModule
properties in CJS modules when there is a default export (#15018)
- feat: Pass
parentSampleRate
to tracesSampler
(#15024)
- feat: Propagate and use a sampling random (#14989)
- fix(browser): Remove
browserPerformanceTimeOrigin
side-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
sendDefaultPii
for IP collection in requestDataIntegration
(#15125)
- fix(nextjs): Flush with
waitUntil
in captureRequestError
(#15146)
- fix(nextjs): Use batched devserver symbolication endpoint (#15335)
- fix(node): Don't leak
__span
property into breadcrumbs (#14798)
- fix(node): Fix sample rand propagation for negative sampling decisions (#15045)
- fix(node): Missing
release
from 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
supportsHistory
check & 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.