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', // `enableLogs` must be set to true to use the logging features _experiments: { enableLogs: true }, }); const { trace, debug, info, warn, error, fatal, fmt } = Sentry.logger; trace('Starting database connection', { database: 'users' }); debug('Cache miss for user', { userId: 123 }); error('Failed to process payment', { orderId: 'order_123', amount: 99.99 }); fatal('Database connection pool exhausted', { database: 'users', activeConnections: 100 }); // Structured logging via the `fmt` helper function. When you use `fmt`, the string template and parameters are sent separately so they can be queried independently in Sentry. info(fmt(`Updated profile for user ${userId}`)); warn(fmt(`Rate limit approaching for endpoint ${endpoint}. Requests: ${requests}, Limit: ${limit}`));
With server-side SDKs like
@sentry/node
,@sentry/bun
or server-side of@sentry/nextjs
or@sentry/sveltekit
, you can do structured logging without needing thefmt
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
forspanToJSON
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 from9.7.0
to9.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. - feat: Stop using
Other Changes
- chore(deps): Bump
rrweb
to2.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)
Bundle size 📦
Path | Size |
---|---|
@sentry/browser | 23.08 KB |
@sentry/browser - with treeshaking flags | 22.88 KB |
@sentry/browser (incl. Tracing) | 36.49 KB |
@sentry/browser (incl. Tracing, Replay) | 73.65 KB |
@sentry/browser (incl. Tracing, Replay) - with treeshaking flags | 67 KB |
@sentry/browser (incl. Tracing, Replay with Canvas) | 78.3 KB |
@sentry/browser (incl. Tracing, Replay, Feedback) | 90.87 KB |
@sentry/browser (incl. Feedback) | 40.21 KB |
@sentry/browser (incl. sendFeedback) | 27.71 KB |
@sentry/browser (incl. FeedbackAsync) | 32.5 KB |
@sentry/react | 24.86 KB |
@sentry/react (incl. Tracing) | 38.39 KB |
@sentry/vue | 27.3 KB |
@sentry/vue (incl. Tracing) | 38.18 KB |
@sentry/svelte | 23.12 KB |
CDN Bundle | 24.33 KB |
CDN Bundle (incl. Tracing) | 36.51 KB |
CDN Bundle (incl. Tracing, Replay) | 71.53 KB |
CDN Bundle (incl. Tracing, Replay, Feedback) | 76.71 KB |
CDN Bundle - uncompressed | 70.93 KB |
CDN Bundle (incl. Tracing) - uncompressed | 108.11 KB |
CDN Bundle (incl. Tracing, Replay) - uncompressed | 219.4 KB |
CDN Bundle (incl. Tracing, Replay, Feedback) - uncompressed | 231.97 KB |
@sentry/nextjs (client) | 39.68 KB |
@sentry/sveltekit (client) | 36.92 KB |
@sentry/node | 142.91 KB |
@sentry/node - without tracing | 96.12 KB |
@sentry/aws-serverless | 120.46 KB |