Skip to content

Releases: getsentry/sentry-java

8.15.1

26 Jun 09:33
Compare
Choose a tag to compare

Fixes

  • Enabling Sentry Logs through Logback in Spring Boot config did not work in 3.15.0 (#4523)

8.15.0

25 Jun 15:16
Compare
Choose a tag to compare

Fixes

  • No longer send out empty log envelopes (#4497)
  • Session Replay: Expand fix for crash on devices to all Unisoc/Spreadtrum chipsets (#4510)
  • Log parameter objects are now turned into String via toString (#4515)
    • One of the two SentryLogEventAttributeValue constructors did not convert the value previously.
  • Logs are now flushed on shutdown (#4503)
  • User Feedback: Do not redefine system attributes for SentryUserFeedbackButton, but reference them instead (#4519)

Features

  • Add chipset to device context (#4512)
  • Send Logback logs to Sentry as logs (#4502)
    • You need to enable the logs feature and can also set the minimumLevel for log events:
      <appender name="sentry" class="io.sentry.logback.SentryAppender">
        <options>
          <!-- NOTE: Replace the test DSN below with YOUR OWN DSN to see the events from this app in your Sentry project/dashboard -->
          <dsn>https://[email protected]/5428563</dsn>
          <logs>
            <enabled>true</enabled>
          </logs>
        </options>
        <!-- Demonstrates how to modify the minimum values -->
        <!-- Default for Events is ERROR -->
        <minimumEventLevel>WARN</minimumEventLevel>
        <!-- Default for Breadcrumbs is INFO -->
        <minimumBreadcrumbLevel>DEBUG</minimumBreadcrumbLevel>
        <!-- Default for Log Events is INFO -->
        <minimumLevel>INFO</minimumLevel>
      </appender>
    • For Spring Boot you may also enable it in application.properties / application.yml:
      sentry.logs.enabled=true
      sentry.logging.minimum-level=error
    • If you manually initialize Sentry, you may also enable logs on Sentry.init:
      Sentry.init(options -> {
        ...
        options.getLogs().setEnabled(true);
      });
    • Enabling via sentry.properties is also possible:
      logs.enabled=true
  • Automatically use SentryOptions.Logs.BeforeSendLogCallback Spring beans (#4509)

Dependencies

8.14.0

17 Jun 18:38
Compare
Choose a tag to compare

Fixes

  • Fix Session Replay masking for newer versions of Jetpack Compose (1.8+) (#4485)

Features

  • Add New User Feedback Widget (#4450)
    • This widget is a custom button that can be used to show the user feedback form
  • Add New User Feedback form (#4384)
    • We now introduce SentryUserFeedbackDialog, which extends AlertDialog, inheriting the show() and cancel() methods, among others.
      To use it, just instantiate it and call show() on the instance (Sentry must be previously initialized).
      For customization options, please check the User Feedback documentation.
      import io.sentry.android.core.SentryUserFeedbackDialog;
      
      new SentryUserFeedbackDialog.Builder(context).create().show();
      import io.sentry.android.core.SentryUserFeedbackDialog
      
      SentryUserFeedbackDialog.Builder(context).create().show()
  • Add user.id, user.name and user.email to log attributes (#4486)
  • User name attribute has been deprecated, please use username instead (#4486)
  • Add device (device.brand, device.model and device.family) and OS (os.name and os.version) attributes to logs (#4493)
  • Serialize preContext and postContext in SentryStackFrame (#4482)

Internal

  • User Feedback now uses SentryUser.username instead of SentryUser.name (#4494)

8.13.3

12 Jun 08:29
Compare
Choose a tag to compare

Fixes

  • Send UI Profiling app start chunk when it finishes (#4423)
  • Republish Javadoc #4457
  • Finalize OkHttpEvent even if no active span in SentryOkHttpInterceptor #4469
  • Session Replay: Do not capture current replay for cached events from the past (#4474)
  • Session Replay: Correctly capture Dialogs and non full-sized windows (#4354)
  • Session Replay: Fix inconsistent segment_id (#4471)
  • Session Replay: Fix crash on devices with the Unisoc/Spreadtrum T606 chipset (#4477)

8.13.2

27 May 12:41
Compare
Choose a tag to compare

Fixes

  • Don't apply Spring Boot plugin in sentry-spring-boot-jakarta (#4456)
    • The jar for io.sentry:sentry-spring-boot-jakarta is now correctly being built and published to Maven Central.

8.13.1

26 May 18:57
Compare
Choose a tag to compare

Fixes

  • Fix SentryAndroid.init crash if SDK is initialized from a background thread while an Activity is in resumed state (#4449)

Dependencies

8.13.0

26 May 11:35
Compare
Choose a tag to compare

Warning

Android: Please do not use this version if you're initializing the SDK manually on a background thread, as this could lead to a crash during SDK init (issue details here). We recommend using SDK version 8.13.1 or higher instead.

Features

  • Add debug mode for Session Replay masking (#4357)
    • Use Sentry.replay().enableDebugMaskingOverlay() to overlay the screen with the Session Replay masks.
    • The masks will be invalidated at most once per frameRate (default 1 fps).
  • Extend Logs API to allow passing in attributes (#4402)
    • Sentry.logger.log now takes a SentryLogParameters
    • Use SentryLogParameters.create(SentryAttributes.of(...)) to pass attributes
      • Attribute values may be of type string, boolean, integer or double.
      • Other types will be converted to string. Currently we simply call toString() but we might offer more in the future.
      • You may manually flatten complex types into multiple separate attributes of simple types.
        • e.g. intead of SentryAttribute.named("point", Point(10, 20)) you may store it as SentryAttribute.integerAttribute("point.x", point.x) and SentryAttribute.integerAttribute("point.y", point.y)
      • SentryAttribute.named() will automatically infer the type or fall back to string.
      • SentryAttribute.booleanAttribute() takes a Boolean value
      • SentryAttribute.integerAttribute() takes a Integer value
      • SentryAttribute.doubleAttribute() takes a Double value
      • SentryAttribute.stringAttribute() takes a String value
    • We opted for handling parameters via SentryLogParameters to avoid creating tons of overloads that are ambiguous.

Fixes

  • Isolation scope is now forked in OtelSentrySpanProcessor instead of OtelSentryPropagator (#4434)
    • Since propagator may never be invoked we moved the location where isolation scope is forked.
    • Not invoking OtelSentryPropagator.extract or having a sentry-trace header that failed to parse would cause isolation scope not to be forked.
    • This in turn caused data to bleed between scopes, e.g. from one request into another

Dependencies

  • Bump Spring Boot to 3.5.0 (#4111)

8.12.0

13 May 16:48
Compare
Choose a tag to compare

Warning

Android: Please do not use this version if you're initializing the SDK manually on a background thread, as this could lead to a crash during SDK init (issue details here). We recommend using SDK version 8.13.1 or higher instead.

Features

  • Add new User Feedback API (#4286)
    • We now introduced Sentry.captureFeedback, which supersedes Sentry.captureUserFeedback
  • Add Sentry Log Feature (#4372)
    • The feature is disabled by default and needs to be enabled by:
      • options.getLogs().setEnabled(true) in Sentry.init / SentryAndroid.init
      • <meta-data android:name="io.sentry.logs.enabled" android:value="true" /> in AndroidManifest.xml
      • logs.enabled=true in sentry.properties
      • sentry.logs.enabled=true in application.properties
      • sentry.logs.enabled: true in application.yml
    • Logs can be captured using Sentry.logger().info() and similar methods.
    • Logs also take a format string and arguments which we then send through String.format.
    • Please use options.getLogs().setBeforeSend() to filter outgoing logs

Fixes

  • Hook User Interaction integration into running Activity in case of deferred SDK init (#4337)

Dependencies

8.11.1 (Stable)

30 Apr 16:04
Compare
Choose a tag to compare

Fixes

  • Fix Android profile chunk envelope type for UI Profiling (#4366)

8.11.0

29 Apr 14:03
Compare
Choose a tag to compare

Features

  • Make RequestDetailsResolver public (#4326)
    • RequestDetailsResolver is now public and has an additional constructor, making it easier to use a custom TransportFactory

Fixes

  • Session Replay: Fix masking of non-styled Text Composables (#4361)
  • Session Replay: Fix masking read-only TextField Composables (#4362)