Skip to content

9.10.0

Compare
Choose a tag to compare
@sentry-release-bot sentry-release-bot released this 27 Mar 18:46

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 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)

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