Skip to content

Releases: getsentry/sentry-java

8.41.0

06 May 22:16

Choose a tag to compare

Features

  • Session Replay: experimental support for capturing SurfaceView content (e.g. Unity, video players, maps) (#5333)
    • To enable, set options.sessionReplay.isCaptureSurfaceViews = true
    • Or via manifest: <meta-data android:name="io.sentry.session-replay.capture-surface-views" android:value="true" />
    • Warning: masking granularity is at the SurfaceView level only — the SDK cannot mask individual elements rendered inside the SurfaceView (e.g. native Unity UI, map labels, video frames). Only enable for SurfaceViews whose content is safe to record.
  • Add Sentry.feedback() API for show() and capture() (#5349)
    • Sentry.showUserFeedbackDialog() is deprecated in favor of Sentry.feedback().show()
    • Sentry.captureFeedback() is deprecated in favor of Sentry.feedback().capture()
    • Sentry.captureUserFeedback() and UserFeedback are deprecated in favor of Sentry.feedback().capture() with the new Feedback type
    • SentryUserFeedbackDialog is deprecated in favor of SentryUserFeedbackForm
    • All deprecated APIs will be removed in the next major version
  • Deprecate SentryUserFeedbackButton (View-based and Compose-based) (#5350)
    • It will be removed in the next major version
  • Add per-form shake-to-show support for SentryUserFeedbackForm (#5353)
    • Useful for enabling shake-to-report on specific screens instead of globally
    SentryUserFeedbackForm.Builder(activity)
      .configurator { it.isUseShakeGesture = true }
      .create()
  • Add support for Kafka (#5249)
    • You will need to add the sentry-kafka dependency and opt-in via the new option.
      • Set options.setEnableQueueTracing(true) on Sentry.init
      • Or set sentry.enable-queue-tracing=true in application.properties
    • For Spring Boot Kafka is auto instrumented and no further configuration is needed.
    • When using kafka-clients directly

Fixes

  • Fix soft input keyboard not being shown on the Feedback form (#5359)
  • Fix shake-to-report not triggering on some devices due to high acceleration threshold (#5366)
  • Fix feedback form retaining previous message when shown again via shake (#5366)
  • Avoid stack overflow when deserializing large flat JSON objects (#5361)

Dependencies

8.40.0

22 Apr 16:19

Choose a tag to compare

Fixes

  • Fix NoSuchMethodError for LayoutCoordinates.localBoundingBoxOf$default on Compose touch dispatch with AGP 8.13 and minSdk < 24 (#5302)
  • Fix reporting OkHttp's synthetic 504 "Unsatisfiable Request" responses as errors for CacheControl.FORCE_CACHE cache misses (#5299)
  • Make SentryGestureDetector thread-safe and recycle VelocityTracker per gesture (#5301)
  • Fix duplicate ui.click breadcrumbs when another Window.Callback wraps SentryWindowCallback (#5300)

Dependencies

8.39.1

17 Apr 07:40

Choose a tag to compare

Fixes

  • Fix JsonObjectReader and MapObjectReader hanging indefinitely when deserialization errors leave the reader in an inconsistent state (#5293)
    • Failed collection values are now skipped so parsing can continue
    • Skipped collection values emit WARNING logs
    • Unknown-key failures and unrecoverable recovery failures emit ERROR logs

8.39.0

16 Apr 14:10

Choose a tag to compare

Fixes

  • Fix ANR caused by GestureDetectorCompat Handler/MessageQueue lock contention in SentryWindowCallback (#5138)

Internal

  • Bump AGP version from v8.6.0 to v8.13.1 (#5063)

Dependencies

8.38.0

08 Apr 15:35

Choose a tag to compare

Features

  • Prevent cross-organization trace continuation (#5136)
    • By default, the SDK now extracts the organization ID from the DSN (e.g. o123.ingest.sentry.io) and compares it with the sentry-org_id value in incoming baggage headers. When the two differ, the SDK starts a fresh trace instead of continuing the foreign one. This guards against accidentally linking traces across organizations.
    • New option enableStrictTraceContinuation (default false): when enabled, both the SDK's org ID and the incoming baggage org ID must be present and match for a trace to be continued. Traces with a missing org ID on either side are rejected. Configurable via code (setStrictTraceContinuation(true)), sentry.properties (enable-strict-trace-continuation=true), Android manifest (io.sentry.strict-trace-continuation.enabled), or Spring Boot (sentry.strict-trace-continuation=true).
    • New option orgId: allows explicitly setting the organization ID for self-hosted and Relay setups where it cannot be extracted from the DSN. Configurable via code (setOrgId("123")), sentry.properties (org-id=123), Android manifest (io.sentry.org-id), or Spring Boot (sentry.org-id=123).
  • Android: Attachments on the scope will now be synced to native (#5211)
  • Add THIRD_PARTY_NOTICES.md for vendored third-party code, bundled as SENTRY_THIRD_PARTY_NOTICES.md in the sentry JAR under META-INF (#5186)

Improvements

  • Do not retrieve ActivityManager if API < 35 on SDK init (#5275)

8.37.1

26 Mar 11:12

Choose a tag to compare

Fixes

  • Fix deadlock in SentryContextStorage.root() with virtual threads and OpenTelemetry agent (#5234)

8.37.0

25 Mar 11:17

Choose a tag to compare

Fixes

  • Session Replay: Fix Compose text masking mismatch with weighted text (#5218)

Features

  • Add cache tracing instrumentation for Spring Boot 2, 3, and 4 (#5165)
    • Wraps Spring CacheManager and Cache beans to produce cache spans
    • Set sentry.enable-cache-tracing to true to enable this feature
  • Add JCache (JSR-107) cache tracing via new sentry-jcache module (#5165)
    • Wraps JCache Cache with SentryJCacheWrapper to produce cache spans
    • Set the enableCacheTracing option to true to enable this feature
  • Add configurable IScopesStorageFactory to SentryOptions for providing a custom IScopesStorage, e.g. when the default ThreadLocal-backed storage is incompatible with non-pinning thread models (#5199)
  • Android: Add beforeErrorSampling callback to Session Replay (#5214)
    • Allows filtering which errors trigger replay capture before the onErrorSampleRate is checked
    • Returning false skips replay capture entirely for that error; returning true proceeds with the normal sample rate check
    • Example usage:
      SentryAndroid.init(context) { options ->
          options.sessionReplay.beforeErrorSampling =
              SentryReplayOptions.BeforeErrorSamplingCallback { event, hint ->
                  // Only capture replay for crashes (excluding e.g. handled exceptions)
                  event.isCrashed
              }
      }

Dependencies

  • Bump Native SDK from v0.13.2 to v0.13.3 (#5215)
  • Bump OpenTelemetry (#5225)
    • opentelemetry to 1.60.1 (was 1.57.0)
    • opentelemetry-instrumentation to 2.26.0 (was 2.23.0)
    • opentelemetry-instrumentation-alpha to 2.26.0-alpha (was 2.23.0-alpha)
    • opentelemetry-semconv to 1.40.0 (was 1.37.0)
    • opentelemetry-semconv-alpha to 1.40.0-alpha (was 1.37.0-alpha)

8.36.0 (Stable)

17 Mar 17:56

Choose a tag to compare

Features

  • Show feedback form on device shake (#5150)
    • Enable via options.getFeedbackOptions().setUseShakeGesture(true) or manifest meta-data io.sentry.feedback.use-shake-gesture
    • Uses the device's accelerometer — no special permissions required

Fixes

  • Support masking/unmasking and click/scroll detection for Jetpack Compose 1.10+ (#5189)

Dependencies

  • Bump Native SDK from v0.13.1 to v0.13.2 (#5181)
  • Bump com.abovevacant:epitaph to 0.1.1 to avoid old D8/R8 dexing crashes in downstream Android builds on old AGP versions such as 7.4.x. (#5200)

8.35.0 (Stable)

12 Mar 11:44

Choose a tag to compare

Fixes

  • Android: Remove the dependency on protobuf-lite for tombstones (#5157)

Features

  • Add new experimental option to capture profiles for ANRs (#4899)
    • This feature will capture a stack profile of the main thread when it gets unresponsive
    • The profile gets attached to the ANR event on the next app start, providing a flamegraph of the ANR issue on the sentry issue details page
    • Enable via options.setAnrProfilingSampleRate(<sample-rate>) or AndroidManifest.xml: <meta-data android:name="io.sentry.anr.profiling.sample-rate" android:value="[0.0-1.0]" />
    • The sample rate controls the probability of collecting a profile for each detected foreground ANR (0.0 to 1.0, null to disable)

Behavioral Changes

  • Add enableAnrFingerprinting option which assigns static fingerprints to ANR events with system-only stacktraces
    • When enabled, ANRs whose stacktraces contain only system frames (e.g. java.lang or android.os) are grouped into a single issue instead of creating many separate issues
    • This will help to reduce overall ANR issue noise in the Sentry dashboard
    • IMPORTANT: This option is enabled by default.
    • Disable via options.setEnableAnrFingerprinting(false) or AndroidManifest.xml: <meta-data android:name="io.sentry.anr.enable-fingerprinting" android:value="false" />

8.34.1 (Stable)

05 Mar 15:54

Choose a tag to compare

Fixes

  • Common: Finalize previous session even when auto session tracking is disabled (#5154)
  • Android: Add filterTouchesWhenObscured to prevent Tapjacking on user feedback dialog (#5155)
  • Android: Add proguard rules to prevent error about missing Replay classes (#5153)