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
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)
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}}
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" />
Spring Boot application.properties: sentry.shutdownTimeoutMillis, sentry.sessionFlushTimeoutMillis
Add scope-level attributes API (#5118) via (#5148)
Automatically include scope attributes in logs and metrics (#5120)
New APIs are Sentry.setAttribute, Sentry.setAttributes, Sentry.removeAttribute
Support collections and arrays in attribute type inference (#5124)
Add support for SENTRY_SAMPLE_RATE environment variable / sample-rate property (#5112)
Create sentry-opentelemetry-otlp and sentry-opentelemetry-otlp-spring modules for combining OpenTelemetry SDK OTLP export with Sentry SDK (#5100)
OpenTelemetry is configured to send spans to Sentry directly using an OTLP endpoint.
Sentry only uses trace and span ID from OpenTelemetry (via OpenTelemetryOtlpEventProcessor) but will not send spans through OpenTelemetry nor use OpenTelemetry Context for Scopes propagation.
See the OTLP setup docs for Java and Spring Boot for installation and configuration instructions.
Add screenshot masking support using view hierarchy (#5077)
Masks sensitive content (text, images) in error screenshots using the same view hierarchy approach as Session Replay
Requires the sentry-android-replay module to be present at runtime for masking to work
Enable via code:
SentryAndroid.init(context){options->options.isAttachScreenshot=trueoptions.screenshot.setMaskAllText(true)options.screenshot.setMaskAllImages(true)// Or mask specific view classes
options.screenshot.addMaskViewClass("com.example.MyCustomView")}
The ManifestMetaDataReader now read the DIST (#5107)
Fixes
Fix attribute type detection for Long, Short, Byte, BigInteger, AtomicInteger, and AtomicLong being incorrectly inferred as double instead of integer (#5122)
Remove AndroidRuntimeManager StrictMode relaxation to prevent ANRs during SDK init (#5127)
IMPORTANT: StrictMode violations may appear again in debug builds. This is intentional to prevent ANRs in production releases.
Fix crash when unregistering SystemEventsBroadcastReceiver with try-catch block. (#5106)
Use peekDecorView instead of getDecorView in SentryGestureListener to avoid forcing view hierarchy construction (#5134)
Log an actionable error message when Relay returns HTTP 413 (Content Too Large) (#5115)
Also switch the client report discard reason for all HTTP 4xx/5xx errors (except 429) from network_error to send_error
Trim DSN string before parsing to avoid URISyntaxException caused by trailing whitespace (#5113)
Reduce allocations and bytecode instructions during Sentry.init (#5135)
Add installGroupsOverride parameter to Build Distribution SDK for programmatic filtering, with support for configuration via properties file using io.sentry.distribution.install-groups-override (#5066)
Fixes
When merging tombstones with Native SDK, use the tombstone message if the Native SDK didn't explicitly provide one. (#5095)
Fix thread leak caused by eager creation of SentryExecutorService in SentryOptions (#5093)
There were cases where we created options that ended up unused but we failed to clean those up.
Attach user attributes to logs and metrics regardless of sendDefaultPii (#5099)
No longer log a warning if a logging integration cannot initialize Sentry due to missing DSN (#5075)
While this may have been useful to some, it caused lots of confusion.
Session Replay: Add androidx.camera.view.PreviewView to default maskedViewClasses to mask camera previews by default. (#5097)
Dependencies
Bump Native SDK from v0.12.4 to v0.12.7 (#5071, #5098)
Fix scroll target detection for Jetpack Compose (#5017)
No longer fork Sentry Scopes for reactor-kafka consumer poll Runnable (#5080)
This was causing a memory leak because reactor-kafka's poll event reschedules itself infinitely, and each invocation of SentryScheduleHook created forked scopes with a parent reference, building an unbounded chain that couldn't be garbage collected.
Fix cold/warm app start type detection for Android devices running API level 34+ (#4999)
Internal
Establish new native exception mechanisms to differentiate events generated by sentry-native from ApplicationExitInfo. (#5052)
Set write permission for statuses in the changelog preview GHA workflow. (#5053)
IMPORTANT: This disables collecting external storage size (total/free) by default, to enable it back
use options.isCollectExternalStorageContext = true or <meta-data android:name="io.sentry.external-storage-context" android:value="true" />
Fix NullPointerException when reading ANR marker (#4979)
Report discarded log in batch processor as log_byte (#4971)
Improvements
Expose MAX_EVENT_SIZE_BYTES constant in SentryOptions (#4962)
Discard envelopes on 4xx and 5xx response (#4950)
This aims to not overwhelm Sentry after an outage or load shedding (including HTTP 429) where too many events are sent at once
Features
Add a Tombstone integration that detects native crashes without relying on the NDK integration, but instead using ApplicationExitInfo.REASON_CRASH_NATIVE on Android 12+. (#4933)
Currently exposed via options as an internal API only.
If enabled alongside the NDK integration, crashes will be reported as two separate events. Users should enable only one; deduplication between both integrations will be added in a future release.
Android: Flush logs when app enters background (#4951)
Add option to capture additional OkHttp network request/response details in session replays (#4919)
Depends on SentryOkHttpInterceptor to intercept the request and extract request/response bodies
To enable, add url regexes via the io.sentry.session-replay.network-detail-allow-urls metadata tag in AndroidManifest (code sample) - Or you can manually specify SentryReplayOptions via SentryAndroid#init: (Make sure you disable the auto init via manifest meta-data: io.sentry.auto-init=false)
Implement OpenFeature Integration that tracks Feature Flag evaluations (#4910)
To make use of it, add the sentry-openfeature dependency and register the the hook using: openFeatureApiInstance.addHooks(new SentryOpenFeatureHook());
Implement LaunchDarkly Integrations that track Feature Flag evaluations (#4917)
For Android, please add sentry-launchdarkly-android as a dependency and register the SentryLaunchDarklyAndroidHook
For Server / JVM, please add sentry-launchdarkly-server as a dependency and register the SentryLaunchDarklyServerHook
Detect oversized events and reduce their size (#4903)
You can opt into this new behaviour by setting enableEventSizeLimiting to true (sentry.enable-event-size-limiting=true for Spring Boot application.properties)
You may optionally register an onOversizedEvent callback to implement custom logic that is executed in case an oversized event is detected
This is executed first and if event size was reduced sufficiently, no further truncation is performed
In case we detect an oversized event, we first drop breadcrumbs and if that isn't sufficient we also drop stack frames in order to get an events size down
This PR contains the following updates:
| Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) |
|---|---|---|---|
| [io.sentry:sentry](https://github.com/getsentry/sentry-java) | `8.25.0` → `8.41.0` |  |  |
---
> ⚠️ **Warning**
>
> Some dependencies could not be looked up. Check the [Dependency Dashboard](issues/1) for more information.
---
### Release Notes
<details>
<summary>getsentry/sentry-java (io.sentry:sentry)</summary>
### [`v8.41.0`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8410)
[Compare Source](https://github.com/getsentry/sentry-java/compare/8.40.0...8.41.0)
##### Features
- Session Replay: experimental support for capturing `SurfaceView` content (e.g. Unity, video players, maps) ([#​5333](https://github.com/getsentry/sentry-java/pull/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](https://github.com/getsentry/sentry-java/pull/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](https://github.com/getsentry/sentry-java/pull/5350))
- It will be removed in the next major version
- Add per-form shake-to-show support for `SentryUserFeedbackForm` ([#​5353](https://github.com/getsentry/sentry-java/pull/5353))
- Useful for enabling shake-to-report on specific screens instead of globally
```kotlin
SentryUserFeedbackForm.Builder(activity)
.configurator { it.isUseShakeGesture = true }
.create()
```
- Add support for Kafka ([#​5249](https://github.com/getsentry/sentry-java/pull/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.
- also see <https://docs.sentry.io/platforms/java/guides/spring-boot/integrations/kafka/>
- When using `kafka-clients` directly
- you need to wrap your `KafkaProducer` via `SentryKafkaProducer.wrap(kafkaProducer)` to get `queue.publish` spans
- and you may use our `SentryKafkaConsumerTracing.withTracing` helper to instrument the consumer side manually.
- also see <https://docs.sentry.io/platforms/java/integrations/kafka/>
##### Fixes
- Fix soft input keyboard not being shown on the Feedback form ([#​5359](https://github.com/getsentry/sentry-java/pull/5359))
- Fix shake-to-report not triggering on some devices due to high acceleration threshold ([#​5366](https://github.com/getsentry/sentry-java/pull/5366))
- Fix feedback form retaining previous message when shown again via shake ([#​5366](https://github.com/getsentry/sentry-java/pull/5366))
- Avoid stack overflow when deserializing large flat JSON objects ([#​5361](https://github.com/getsentry/sentry-java/pull/5361))
##### Dependencies
- Bump Native SDK from v0.13.7 to v0.14.0 ([#​5334](https://github.com/getsentry/sentry-java/pull/5334), [#​5365](https://github.com/getsentry/sentry-java/pull/5365))
- [changelog](https://github.com/getsentry/sentry-native/blob/master/CHANGELOG.md#0140)
- [diff](https://github.com/getsentry/sentry-native/compare/0.13.7...0.14.0)
- Bump Gradle from v9.4.1 to v9.5.0 ([#​5344](https://github.com/getsentry/sentry-java/pull/5344))
- [changelog](https://github.com/gradle/gradle/blob/master/CHANGELOG.md#v950)
- [diff](https://github.com/gradle/gradle/compare/v9.4.1...v9.5.0)
### [`v8.40.0`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8400)
[Compare Source](https://github.com/getsentry/sentry-java/compare/8.39.1...8.40.0)
##### Fixes
- Fix `NoSuchMethodError` for `LayoutCoordinates.localBoundingBoxOf$default` on Compose touch dispatch with AGP 8.13 and `minSdk < 24` ([#​5302](https://github.com/getsentry/sentry-java/pull/5302))
- Fix reporting OkHttp's synthetic 504 "Unsatisfiable Request" responses as errors for `CacheControl.FORCE_CACHE` cache misses ([#​5299](https://github.com/getsentry/sentry-java/pull/5299))
- Make `SentryGestureDetector` thread-safe and recycle `VelocityTracker` per gesture ([#​5301](https://github.com/getsentry/sentry-java/pull/5301))
- Fix duplicate `ui.click` breadcrumbs when another `Window.Callback` wraps `SentryWindowCallback` ([#​5300](https://github.com/getsentry/sentry-java/pull/5300))
##### Dependencies
- Bump Native SDK from v0.13.6 to v0.13.7 ([#​5296](https://github.com/getsentry/sentry-java/pull/5296))
- [changelog](https://github.com/getsentry/sentry-native/blob/master/CHANGELOG.md#0137)
- [diff](https://github.com/getsentry/sentry-native/compare/0.13.6...0.13.7)
### [`v8.39.1`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8391)
[Compare Source](https://github.com/getsentry/sentry-java/compare/8.39.0...8.39.1)
##### Fixes
- Fix `JsonObjectReader` and `MapObjectReader` hanging indefinitely when deserialization errors leave the reader in an inconsistent state ([#​5293](https://github.com/getsentry/sentry-java/pull/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
### [`v8.39.0`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8390)
[Compare Source](https://github.com/getsentry/sentry-java/compare/8.38.0...8.39.0)
##### Fixes
- Fix ANR caused by `GestureDetectorCompat` Handler/MessageQueue lock contention in `SentryWindowCallback` ([#​5138](https://github.com/getsentry/sentry-java/pull/5138))
##### Internal
- Bump AGP version from v8.6.0 to v8.13.1 ([#​5063](https://github.com/getsentry/sentry-java/pull/5063))
##### Dependencies
- Bump Native SDK from v0.13.3 to v0.13.6 ([#​5277](https://github.com/getsentry/sentry-java/pull/5277))
- [changelog](https://github.com/getsentry/sentry-native/blob/master/CHANGELOG.md#0136)
- [diff](https://github.com/getsentry/sentry-native/compare/0.13.3...0.13.6)
- Bump Gradle from v8.14.3 to v9.4.1 ([#​5063](https://github.com/getsentry/sentry-java/pull/5063))
- [changelog](https://github.com/gradle/gradle/blob/master/CHANGELOG.md#v941)
- [diff](https://github.com/gradle/gradle/compare/v8.14.3...v9.4.1)
### [`v8.38.0`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8380)
[Compare Source](https://github.com/getsentry/sentry-java/compare/8.37.1...8.38.0)
##### Features
- Prevent cross-organization trace continuation ([#​5136](https://github.com/getsentry/sentry-java/pull/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](https://github.com/getsentry/sentry-java/pull/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](https://github.com/getsentry/sentry-java/pull/5186))
##### Improvements
- Do not retrieve `ActivityManager` if API < 35 on SDK init ([#​5275](https://github.com/getsentry/sentry-java/pull/5275))
### [`v8.37.1`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8371)
[Compare Source](https://github.com/getsentry/sentry-java/compare/8.37.0...8.37.1)
##### Fixes
- Fix deadlock in `SentryContextStorage.root()` with virtual threads and OpenTelemetry agent ([#​5234](https://github.com/getsentry/sentry-java/pull/5234))
### [`v8.37.0`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8370)
[Compare Source](https://github.com/getsentry/sentry-java/compare/8.36.0...8.37.0)
##### Fixes
- Session Replay: Fix Compose text masking mismatch with weighted text ([#​5218](https://github.com/getsentry/sentry-java/pull/5218))
##### Features
- Add cache tracing instrumentation for Spring Boot 2, 3, and 4 ([#​5165](https://github.com/getsentry/sentry-java/pull/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](https://github.com/getsentry/sentry-java/pull/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](https://github.com/getsentry/sentry-java/pull/5199))
- Android: Add `beforeErrorSampling` callback to Session Replay ([#​5214](https://github.com/getsentry/sentry-java/pull/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:
```kotlin
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](https://github.com/getsentry/sentry-java/pull/5215))
- [changelog](https://github.com/getsentry/sentry-native/blob/master/CHANGELOG.md#0133)
- [diff](https://github.com/getsentry/sentry-native/compare/0.13.2...0.13.3)
- Bump OpenTelemetry ([#​5225](https://github.com/getsentry/sentry-java/pull/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`)
### [`v8.36.0`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8360)
[Compare Source](https://github.com/getsentry/sentry-java/compare/8.35.0...8.36.0)
##### Features
- Show feedback form on device shake ([#​5150](https://github.com/getsentry/sentry-java/pull/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](https://github.com/getsentry/sentry-java/pull/5189))
##### Dependencies
- Bump Native SDK from v0.13.1 to v0.13.2 ([#​5181](https://github.com/getsentry/sentry-java/pull/5181))
- [changelog](https://github.com/getsentry/sentry-native/blob/master/CHANGELOG.md#0132)
- [diff](https://github.com/getsentry/sentry-native/compare/0.13.1...0.13.2)
- 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](https://github.com/getsentry/sentry-java/pull/5200))
- [changelog](https://github.com/abovevacant/epitaph/blob/main/CHANGELOG.md#011---2026-03-16)
- [diff](https://github.com/abovevacant/epitaph/compare/v0.1.0...v0.1.1)
### [`v8.35.0`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8350)
[Compare Source](https://github.com/getsentry/sentry-java/compare/8.34.1...8.35.0)
##### Fixes
- Android: Remove the dependency on protobuf-lite for tombstones ([#​5157](https://github.com/getsentry/sentry-java/pull/5157))
##### Features
- Add new experimental option to capture profiles for ANRs ([#​4899](https://github.com/getsentry/sentry-java/pull/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" />`
### [`v8.34.1`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8341)
[Compare Source](https://github.com/getsentry/sentry-java/compare/8.34.0...8.34.1)
##### Fixes
- Common: Finalize previous session even when auto session tracking is disabled ([#​5154](https://github.com/getsentry/sentry-java/pull/5154))
- Android: Add `filterTouchesWhenObscured` to prevent Tapjacking on user feedback dialog ([#​5155](https://github.com/getsentry/sentry-java/pull/5155))
- Android: Add proguard rules to prevent error about missing Replay classes ([#​5153](https://github.com/getsentry/sentry-java/pull/5153))
### [`v8.34.0`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8340)
[Compare Source](https://github.com/getsentry/sentry-java/compare/8.33.0...8.34.0)
##### Features
- Allow configuring shutdown and session flush timeouts externally ([#​4641](https://github.com/getsentry/sentry-java/pull/4641))
- `sentry.properties`: `shutdown-timeout-millis`, `session-flush-timeout-millis`
- Environment variables: `SENTRY_SHUTDOWN_TIMEOUT_MILLIS`, `SENTRY_SESSION_FLUSH_TIMEOUT_MILLIS`
- Spring Boot `application.properties`: `sentry.shutdownTimeoutMillis`, `sentry.sessionFlushTimeoutMillis`
- Add scope-level attributes API ([#​5118](https://github.com/getsentry/sentry-java/pull/5118)) via ([#​5148](https://github.com/getsentry/sentry-java/pull/5148))
- Automatically include scope attributes in logs and metrics ([#​5120](https://github.com/getsentry/sentry-java/pull/5120))
- New APIs are `Sentry.setAttribute`, `Sentry.setAttributes`, `Sentry.removeAttribute`
- Support collections and arrays in attribute type inference ([#​5124](https://github.com/getsentry/sentry-java/pull/5124))
- Add support for `SENTRY_SAMPLE_RATE` environment variable / `sample-rate` property ([#​5112](https://github.com/getsentry/sentry-java/pull/5112))
- Create `sentry-opentelemetry-otlp` and `sentry-opentelemetry-otlp-spring` modules for combining OpenTelemetry SDK OTLP export with Sentry SDK ([#​5100](https://github.com/getsentry/sentry-java/pull/5100))
- OpenTelemetry is configured to send spans to Sentry directly using an OTLP endpoint.
- Sentry only uses trace and span ID from OpenTelemetry (via `OpenTelemetryOtlpEventProcessor`) but will not send spans through OpenTelemetry nor use OpenTelemetry `Context` for `Scopes` propagation.
- See the OTLP setup docs for [Java](https://docs.sentry.io/platforms/java/opentelemetry/setup/otlp/) and [Spring Boot](https://docs.sentry.io/platforms/java/guides/spring-boot/opentelemetry/setup/otlp/) for installation and configuration instructions.
- Add screenshot masking support using view hierarchy ([#​5077](https://github.com/getsentry/sentry-java/pull/5077))
- Masks sensitive content (text, images) in error screenshots using the same view hierarchy approach as Session Replay
- Requires the `sentry-android-replay` module to be present at runtime for masking to work
- Enable via code:
```kotlin
SentryAndroid.init(context) { options ->
options.isAttachScreenshot = true
options.screenshot.setMaskAllText(true)
options.screenshot.setMaskAllImages(true)
// Or mask specific view classes
options.screenshot.addMaskViewClass("com.example.MyCustomView")
}
```
- Or via `AndroidManifest.xml`:
```xml
<meta-data android:name="io.sentry.attach-screenshot" android:value="true" />
<meta-data android:name="io.sentry.screenshot.mask-all-text" android:value="true" />
<meta-data android:name="io.sentry.screenshot.mask-all-images" android:value="true" />
```
- The `ManifestMetaDataReader` now read the `DIST` ([#​5107](https://github.com/getsentry/sentry-java/pull/5107))
##### Fixes
- Fix attribute type detection for `Long`, `Short`, `Byte`, `BigInteger`, `AtomicInteger`, and `AtomicLong` being incorrectly inferred as `double` instead of `integer` ([#​5122](https://github.com/getsentry/sentry-java/pull/5122))
- Remove `AndroidRuntimeManager` StrictMode relaxation to prevent ANRs during SDK init ([#​5127](https://github.com/getsentry/sentry-java/pull/5127))
- **IMPORTANT:** StrictMode violations may appear again in debug builds. This is intentional to prevent ANRs in production releases.
- Fix crash when unregistering `SystemEventsBroadcastReceiver` with try-catch block. ([#​5106](https://github.com/getsentry/sentry-java/pull/5106))
- Use `peekDecorView` instead of `getDecorView` in `SentryGestureListener` to avoid forcing view hierarchy construction ([#​5134](https://github.com/getsentry/sentry-java/pull/5134))
- Log an actionable error message when Relay returns HTTP 413 (Content Too Large) ([#​5115](https://github.com/getsentry/sentry-java/pull/5115))
- Also switch the client report discard reason for all HTTP 4xx/5xx errors (except 429) from `network_error` to `send_error`
- Trim DSN string before parsing to avoid `URISyntaxException` caused by trailing whitespace ([#​5113](https://github.com/getsentry/sentry-java/pull/5113))
- Reduce allocations and bytecode instructions during `Sentry.init` ([#​5135](https://github.com/getsentry/sentry-java/pull/5135))
##### Dependencies
- Bump Native SDK from v0.12.7 to v0.13.1 ([#​5104](https://github.com/getsentry/sentry-java/pull/5104))
- [changelog](https://github.com/getsentry/sentry-native/blob/master/CHANGELOG.md#0131)
- [diff](https://github.com/getsentry/sentry-native/compare/0.12.7...0.13.1)
### [`v8.33.0`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8330)
[Compare Source](https://github.com/getsentry/sentry-java/compare/8.32.0...8.33.0)
##### Features
- Add `installGroupsOverride` parameter to Build Distribution SDK for programmatic filtering, with support for configuration via properties file using `io.sentry.distribution.install-groups-override` ([#​5066](https://github.com/getsentry/sentry-java/pull/5066))
##### Fixes
- When merging tombstones with Native SDK, use the tombstone message if the Native SDK didn't explicitly provide one. ([#​5095](https://github.com/getsentry/sentry-java/pull/5095))
- Fix thread leak caused by eager creation of `SentryExecutorService` in `SentryOptions` ([#​5093](https://github.com/getsentry/sentry-java/pull/5093))
- There were cases where we created options that ended up unused but we failed to clean those up.
- Attach user attributes to logs and metrics regardless of `sendDefaultPii` ([#​5099](https://github.com/getsentry/sentry-java/pull/5099))
- No longer log a warning if a logging integration cannot initialize Sentry due to missing DSN ([#​5075](https://github.com/getsentry/sentry-java/pull/5075))
- While this may have been useful to some, it caused lots of confusion.
- Session Replay: Add `androidx.camera.view.PreviewView` to default `maskedViewClasses` to mask camera previews by default. ([#​5097](https://github.com/getsentry/sentry-java/pull/5097))
##### Dependencies
- Bump Native SDK from v0.12.4 to v0.12.7 ([#​5071](https://github.com/getsentry/sentry-java/pull/5071), [#​5098](https://github.com/getsentry/sentry-java/pull/5098))
- [changelog](https://github.com/getsentry/sentry-native/blob/master/CHANGELOG.md#0127)
- [diff](https://github.com/getsentry/sentry-native/compare/0.12.4...0.12.7)
##### Internal
- Add integration to track session replay custom masking ([#​5070](https://github.com/getsentry/sentry-java/pull/5070))
### [`v8.32.0`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8320)
[Compare Source](https://github.com/getsentry/sentry-java/compare/8.31.0...8.32.0)
##### Features
- Add `installGroups` property to Build Distribution SDK ([#​5062](https://github.com/getsentry/sentry-java/pull/5062))
- Update Android targetSdk to API 36 (Android 16) ([#​5016](https://github.com/getsentry/sentry-java/pull/5016))
- Add AndroidManifest support for Spotlight configuration via `io.sentry.spotlight.enable` and `io.sentry.spotlight.url` ([#​5064](https://github.com/getsentry/sentry-java/pull/5064))
- Collect database transaction spans (`BEGIN`, `COMMIT`, `ROLLBACK`) ([#​5072](https://github.com/getsentry/sentry-java/pull/5072))
- To enable creation of these spans, set `options.enableDatabaseTransactionTracing` to `true`
- `enable-database-transaction-tracing=true` when using `sentry.properties`
- For Spring Boot, use `sentry.enable-database-transaction-tracing=true` in `application.properties` or in `application.yml`:
```yaml
sentry:
enable-database-transaction-tracing: true
```
- Add support for collecting native crashes using Tombstones ([#​4933](https://github.com/getsentry/sentry-java/pull/4933), [#​5037](https://github.com/getsentry/sentry-java/pull/5037))
- Added Tombstone integration that detects native crashes using `ApplicationExitInfo.REASON_CRASH_NATIVE` on Android 12+
- Crashes enriched with Tombstones contain more crash details and detailed thread info
- Tombstone and NDK integrations are now automatically merged into a single crash event, eliminating duplicate reports
- To enable it, add the integration in your Sentry initialization:
```kotlin
SentryAndroid.init(context, options -> {
options.isTombstoneEnabled = true
})
```
or in the `AndroidManifest.xml` using:
```xml
<meta-data android:name="io.sentry.tombstone.enable" android:value="true" />
```
##### Fixes
- Extract `SpotlightIntegration` to separate `sentry-spotlight` module to prevent insecure HTTP URLs from appearing in release APKs ([#​5064](https://github.com/getsentry/sentry-java/pull/5064))
- **Breaking:** Users who enable Spotlight must now add the `io.sentry:sentry-spotlight` dependency:
```kotlin
dependencies {
debugImplementation("io.sentry:sentry-spotlight:<version>")
}
```
- Fix scroll target detection for Jetpack Compose ([#​5017](https://github.com/getsentry/sentry-java/pull/5017))
- No longer fork Sentry `Scopes` for `reactor-kafka` consumer poll `Runnable` ([#​5080](https://github.com/getsentry/sentry-java/pull/5080))
- This was causing a memory leak because `reactor-kafka`'s poll event reschedules itself infinitely, and each invocation of `SentryScheduleHook` created forked scopes with a parent reference, building an unbounded chain that couldn't be garbage collected.
- Fix cold/warm app start type detection for Android devices running API level 34+ ([#​4999](https://github.com/getsentry/sentry-java/pull/4999))
##### Internal
- Establish new native exception mechanisms to differentiate events generated by `sentry-native` from `ApplicationExitInfo`. ([#​5052](https://github.com/getsentry/sentry-java/pull/5052))
- Set `write` permission for `statuses` in the changelog preview GHA workflow. ([#​5053](https://github.com/getsentry/sentry-java/pull/5053))
##### Dependencies
- Bump Native SDK from v0.12.3 to v0.12.4 ([#​5061](https://github.com/getsentry/sentry-java/pull/5061))
- [changelog](https://github.com/getsentry/sentry-native/blob/master/CHANGELOG.md#0124)
- [diff](https://github.com/getsentry/sentry-native/compare/0.12.3...0.12.4)
### [`v8.31.0`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8310)
[Compare Source](https://github.com/getsentry/sentry-java/compare/8.30.0...8.31.0)
##### Features
- Added `io.sentry.ndk.sdk-name` Android manifest option to configure the native SDK's name ([#​5027](https://github.com/getsentry/sentry-java/pull/5027))
- Replace `sentry.trace.parent_span_id` attribute with `spanId` property on `SentryLogEvent` ([#​5040](https://github.com/getsentry/sentry-java/pull/5040))
##### Fixes
- Only attach user attributes to logs if `sendDefaultPii` is enabled ([#​5036](https://github.com/getsentry/sentry-java/pull/5036))
- Reject new logs if `LoggerBatchProcessor` is shutting down ([#​5041](https://github.com/getsentry/sentry-java/pull/5041))
- Downgrade protobuf-javalite dependency from 4.33.1 to 3.25.8 ([#​5044](https://github.com/getsentry/sentry-java/pull/5044))
##### Dependencies
- Bump Native SDK from v0.12.2 to v0.12.3 ([#​5012](https://github.com/getsentry/sentry-java/pull/5012))
- [changelog](https://github.com/getsentry/sentry-native/blob/master/CHANGELOG.md#0123)
- [diff](https://github.com/getsentry/sentry-native/compare/0.12.2...0.12.3)
### [`v8.30.0`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8300)
[Compare Source](https://github.com/getsentry/sentry-java/compare/8.29.0...8.30.0)
##### Fixes
- Fix ANRs when collecting device context ([#​4970](https://github.com/getsentry/sentry-java/pull/4970))
- **IMPORTANT:** This disables collecting external storage size (total/free) by default, to enable it back
use `options.isCollectExternalStorageContext = true` or `<meta-data android:name="io.sentry.external-storage-context" android:value="true" />`
- Fix `NullPointerException` when reading ANR marker ([#​4979](https://github.com/getsentry/sentry-java/pull/4979))
- Report discarded log in batch processor as `log_byte` ([#​4971](https://github.com/getsentry/sentry-java/pull/4971))
##### Improvements
- Expose `MAX_EVENT_SIZE_BYTES` constant in SentryOptions ([#​4962](https://github.com/getsentry/sentry-java/pull/4962))
- Discard envelopes on `4xx` and `5xx` response ([#​4950](https://github.com/getsentry/sentry-java/pull/4950))
- This aims to not overwhelm Sentry after an outage or load shedding (including HTTP 429) where too many events are sent at once
##### Features
- Add a Tombstone integration that detects native crashes without relying on the NDK integration, but instead using `ApplicationExitInfo.REASON_CRASH_NATIVE` on Android 12+. ([#​4933](https://github.com/getsentry/sentry-java/pull/4933))
- Currently exposed via options as an *internal* API only.
- If enabled alongside the NDK integration, crashes will be reported as two separate events. Users should enable only one; deduplication between both integrations will be added in a future release.
- Add Sentry Metrics to Java SDK ([#​5026](https://github.com/getsentry/sentry-java/pull/5026))
- Metrics are enabled by default
- APIs are namespaced under `Sentry.metrics()`
- We offer the following APIs:
- `count`: A metric that increments counts
- `gauge`: A metric that tracks a value that can go up or down
- `distribution`: A metric that tracks the statistical distribution of values
- For more details, see the Metrics documentation: <https://docs.sentry.io/product/explore/metrics/getting-started/>
### [`v8.29.0`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8290)
[Compare Source](https://github.com/getsentry/sentry-java/compare/8.28.0...8.29.0)
##### Fixes
- Support serialization of primitive arrays (boolean\[], byte\[], short\[], char\[], int\[], long\[], float\[], double\[]) ([#​4968](https://github.com/getsentry/sentry-java/pull/4968))
- Session Replay: Improve network body parsing and truncation handling ([#​4958](https://github.com/getsentry/sentry-java/pull/4958))
##### Internal
- Support `metric` envelope item type ([#​4956](https://github.com/getsentry/sentry-java/pull/4956))
### [`v8.28.0`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8280)
[Compare Source](https://github.com/getsentry/sentry-java/compare/8.27.1...8.28.0)
##### Features
- Android: Flush logs when app enters background ([#​4951](https://github.com/getsentry/sentry-java/pull/4951))
- Add option to capture additional OkHttp network request/response details in session replays ([#​4919](https://github.com/getsentry/sentry-java/pull/4919))
- Depends on `SentryOkHttpInterceptor` to intercept the request and extract request/response bodies
- To enable, add url regexes via the `io.sentry.session-replay.network-detail-allow-urls` metadata tag in AndroidManifest ([code sample](https://github.com/getsentry/sentry-java/blob/b03edbb1b0d8b871c62a09bc02cbd8a4e1f6fea1/sentry-samples/sentry-samples-android/src/main/AndroidManifest.xml#L196-L205)) - Or you can manually specify SentryReplayOptions via `SentryAndroid#init`:
*(Make sure you disable the auto init via manifest meta-data: io.sentry.auto-init=false)*
<details>
<summary>Kotlin</summary>
```kotlin
SentryAndroid.init(
this,
options -> {
// options.dsn = "https://[email protected]/0"
// options.sessionReplay.sessionSampleRate = 1.0
// options.sessionReplay.onErrorSampleRate = 1.0
// ..
options.sessionReplay.networkDetailAllowUrls = listOf(".*")
options.sessionReplay.networkDetailDenyUrls = listOf(".*deny.*")
options.sessionReplay.networkRequestHeaders = listOf("Authorization", "X-Custom-Header", "X-Test-Request")
options.sessionReplay.networkResponseHeaders = listOf("X-Response-Time", "X-Cache-Status", "X-Test-Response")
});
```
</details>
<details>
<summary>Java</summary>
```java
SentryAndroid.init(
this,
options -> {
options.getSessionReplay().setNetworkDetailAllowUrls(Arrays.asList(".*"));
options.getSessionReplay().setNetworkDetailDenyUrls(Arrays.asList(".*deny.*"));
options.getSessionReplay().setNetworkRequestHeaders(
Arrays.asList("Authorization", "X-Custom-Header", "X-Test-Request"));
options.getSessionReplay().setNetworkResponseHeaders(
Arrays.asList("X-Response-Time", "X-Cache-Status", "X-Test-Response"));
});
```
</details>
##### Improvements
- Avoid forking `rootScopes` for Reactor if current thread has `NoOpScopes` ([#​4793](https://github.com/getsentry/sentry-java/pull/4793))
- This reduces the SDKs overhead by avoiding unnecessary scope forks
##### Fixes
- Fix missing thread stacks for ANRv1 events ([#​4918](https://github.com/getsentry/sentry-java/pull/4918))
- Fix handling of unparseable mime-type on request filter ([#​4939](https://github.com/getsentry/sentry-java/pull/4939))
##### Internal
- Support `span` envelope item type ([#​4935](https://github.com/getsentry/sentry-java/pull/4935))
##### Dependencies
- Bump Native SDK from v0.12.1 to v0.12.2 ([#​4944](https://github.com/getsentry/sentry-java/pull/4944))
- [changelog](https://github.com/getsentry/sentry-native/blob/master/CHANGELOG.md#0122)
- [diff](https://github.com/getsentry/sentry-native/compare/0.12.1...0.12.2)
### [`v8.27.1`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8271)
[Compare Source](https://github.com/getsentry/sentry-java/compare/8.27.0...8.27.1)
##### Fixes
- Do not log if `sentry.properties` in rundir has not been found ([#​4929](https://github.com/getsentry/sentry-java/pull/4929))
### [`v8.27.0`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8270)
[Compare Source](https://github.com/getsentry/sentry-java/compare/8.26.0...8.27.0)
##### Features
- Implement OpenFeature Integration that tracks Feature Flag evaluations ([#​4910](https://github.com/getsentry/sentry-java/pull/4910))
- To make use of it, add the `sentry-openfeature` dependency and register the the hook using: `openFeatureApiInstance.addHooks(new SentryOpenFeatureHook());`
- Implement LaunchDarkly Integrations that track Feature Flag evaluations ([#​4917](https://github.com/getsentry/sentry-java/pull/4917))
- For Android, please add `sentry-launchdarkly-android` as a dependency and register the `SentryLaunchDarklyAndroidHook`
- For Server / JVM, please add `sentry-launchdarkly-server` as a dependency and register the `SentryLaunchDarklyServerHook`
- Detect oversized events and reduce their size ([#​4903](https://github.com/getsentry/sentry-java/pull/4903))
- You can opt into this new behaviour by setting `enableEventSizeLimiting` to `true` (`sentry.enable-event-size-limiting=true` for Spring Boot `application.properties`)
- You may optionally register an `onOversizedEvent` callback to implement custom logic that is executed in case an oversized event is detected
- This is executed first and if event size was reduced sufficiently, no further truncation is performed
- In case we detect an oversized event, we first drop breadcrumbs and if that isn't sufficient we also drop stack frames in order to get an events size down
##### Improvements
- Do not send manual log origin ([#​4897](https://github.com/getsentry/sentry-java/pull/4897))
##### Dependencies
- Bump Spring Boot 4 to GA ([#​4923](https://github.com/getsentry/sentry-java/pull/4923))
### [`v8.26.0`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8260)
[Compare Source](https://github.com/getsentry/sentry-java/compare/8.25.0...8.26.0)
##### Features
- Add feature flags API ([#​4812](https://github.com/getsentry/sentry-java/pull/4812)) and ([#​4831](https://github.com/getsentry/sentry-java/pull/4831))
- You may now keep track of your feature flag evaluations and have them show up in Sentry.
- Top level API (`Sentry.addFeatureFlag("my-feature-flag", true);`) writes to scopes and the current span (if there is one)
- It is also possible to use API on `IScope`, `IScopes`, `ISpan` and `ITransaction` directly
- Feature flag evaluations tracked on scope(s) will be added to any errors reported to Sentry.
- The SDK keeps the latest 100 evaluations from scope(s), replacing old entries as new evaluations are added.
- For feature flag evaluations tracked on spans:
- Only 10 evaluations are tracked per span, existing flags are updated but new ones exceeding the limit are ignored
- Spans do not inherit evaluations from their parent
- Drop log events once buffer hits hard limit ([#​4889](https://github.com/getsentry/sentry-java/pull/4889))
- If we have 1000 log events queued up, we drop any new logs coming in to prevent OOM
- Remove vendored code and upgrade to async profiler 4.2 ([#​4856](https://github.com/getsentry/sentry-java/pull/4856))
- This adds support for JDK 23+
##### Fixes
- Removed SentryExecutorService limit for delayed scheduled tasks ([#​4846](https://github.com/getsentry/sentry-java/pull/4846))
- Fix visual artifacts for the Canvas strategy on some devices ([#​4861](https://github.com/getsentry/sentry-java/pull/4861))
- \[Config] Trim whitespace on properties path ([#​4880](https://github.com/getsentry/sentry-java/pull/4880))
- Only set `DefaultReplayBreadcrumbConverter` if replay is available ([#​4888](https://github.com/getsentry/sentry-java/pull/4888))
- Session Replay: Cache connection status instead of using blocking calls ([#​4891](https://github.com/getsentry/sentry-java/pull/4891))
- Fix log count in client reports ([#​4869](https://github.com/getsentry/sentry-java/pull/4869))
- Fix profilerId propagation ([#​4833](https://github.com/getsentry/sentry-java/pull/4833))
- Fix profiling init for Spring and Spring Boot w Agent auto-init ([#​4815](https://github.com/getsentry/sentry-java/pull/4815))
- Copy active span on scope clone ([#​4878](https://github.com/getsentry/sentry-java/pull/4878))
##### Improvements
- Fallback to distinct-id as user.id logging attribute when user is not set ([#​4847](https://github.com/getsentry/sentry-java/pull/4847))
- Report Timber.tag() as `timber.tag` log attribute ([#​4845](https://github.com/getsentry/sentry-java/pull/4845))
- Session Replay: Add screenshot strategy serialization to RRWeb events ([#​4851](https://github.com/getsentry/sentry-java/pull/4851))
- Report discarded log bytes ([#​4871](https://github.com/getsentry/sentry-java/pull/4871))
- Log why a properties file was not loaded ([#​4879](https://github.com/getsentry/sentry-java/pull/4879))
##### Dependencies
- Bump Native SDK from v0.11.3 to v0.12.1 ([#​4859](https://github.com/getsentry/sentry-java/pull/4859))
- [changelog](https://github.com/getsentry/sentry-native/blob/master/CHANGELOG.md#0121)
- [diff](https://github.com/getsentry/sentry-native/compare/0.11.3...0.12.1)
- Bump Spring Boot 4 to RC2 ([#​4886](https://github.com/getsentry/sentry-java/pull/4886))
</details>
---
### Configuration
📅 **Schedule**: (in timezone America/Toronto)
- Branch creation
- At any time (no schedule defined)
- Automerge
- At any time (no schedule defined)
🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
♻ **Rebasing**: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this PR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box
---
This PR has been generated by [Mend Renovate](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4xNzAuMTgiLCJ1cGRhdGVkSW5WZXIiOiI0My4xNzAuMTgiLCJ0YXJnZXRCcmFuY2giOiJtYWluIiwibGFiZWxzIjpbInJlbm92YXRlIl19-->
anthorob
was assigned by renovate-bot2026-05-09 21:02:20 -04:00
renovate-bot
changed title from Update dependency io.sentry:sentry to v8.41.0 to Update dependency io.sentry:sentry to v8.41.0 - autoclosed2026-05-13 00:02:57 -04:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
This PR contains the following updates:
8.25.0→8.41.0Release Notes
getsentry/sentry-java (io.sentry:sentry)
v8.41.0Compare Source
Features
SurfaceViewcontent (e.g. Unity, video players, maps) (#5333)options.sessionReplay.isCaptureSurfaceViews = true<meta-data android:name="io.sentry.session-replay.capture-surface-views" android:value="true" />Sentry.feedback()API forshow()andcapture()(#5349)Sentry.showUserFeedbackDialog()is deprecated in favor ofSentry.feedback().show()Sentry.captureFeedback()is deprecated in favor ofSentry.feedback().capture()Sentry.captureUserFeedback()andUserFeedbackare deprecated in favor ofSentry.feedback().capture()with the newFeedbacktypeSentryUserFeedbackDialogis deprecated in favor ofSentryUserFeedbackFormSentryUserFeedbackButton(View-based and Compose-based) (#5350)SentryUserFeedbackForm(#5353)sentry-kafkadependency and opt-in via the new option.options.setEnableQueueTracing(true)onSentry.initsentry.enable-queue-tracing=trueinapplication.propertieskafka-clientsdirectlyKafkaProducerviaSentryKafkaProducer.wrap(kafkaProducer)to getqueue.publishspansSentryKafkaConsumerTracing.withTracinghelper to instrument the consumer side manually.Fixes
Dependencies
v8.40.0Compare Source
Fixes
NoSuchMethodErrorforLayoutCoordinates.localBoundingBoxOf$defaulton Compose touch dispatch with AGP 8.13 andminSdk < 24(#5302)CacheControl.FORCE_CACHEcache misses (#5299)SentryGestureDetectorthread-safe and recycleVelocityTrackerper gesture (#5301)ui.clickbreadcrumbs when anotherWindow.CallbackwrapsSentryWindowCallback(#5300)Dependencies
v8.39.1Compare Source
Fixes
JsonObjectReaderandMapObjectReaderhanging indefinitely when deserialization errors leave the reader in an inconsistent state (#5293)WARNINGlogsERRORlogsv8.39.0Compare Source
Fixes
GestureDetectorCompatHandler/MessageQueue lock contention inSentryWindowCallback(#5138)Internal
Dependencies
v8.38.0Compare Source
Features
o123.ingest.sentry.io) and compares it with thesentry-org_idvalue 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.enableStrictTraceContinuation(defaultfalse): 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).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).Improvements
ActivityManagerif API < 35 on SDK init (#5275)v8.37.1Compare Source
Fixes
SentryContextStorage.root()with virtual threads and OpenTelemetry agent (#5234)v8.37.0Compare Source
Fixes
Features
CacheManagerandCachebeans to produce cache spanssentry.enable-cache-tracingtotrueto enable this featuresentry-jcachemodule (#5165)CachewithSentryJCacheWrapperto produce cache spansenableCacheTracingoption totrueto enable this featureIScopesStorageFactorytoSentryOptionsfor providing a customIScopesStorage, e.g. when the defaultThreadLocal-backed storage is incompatible with non-pinning thread models (#5199)beforeErrorSamplingcallback to Session Replay (#5214)onErrorSampleRateis checkedfalseskips replay capture entirely for that error; returningtrueproceeds with the normal sample rate checkDependencies
opentelemetryto1.60.1(was1.57.0)opentelemetry-instrumentationto2.26.0(was2.23.0)opentelemetry-instrumentation-alphato2.26.0-alpha(was2.23.0-alpha)opentelemetry-semconvto1.40.0(was1.37.0)opentelemetry-semconv-alphato1.40.0-alpha(was1.37.0-alpha)v8.36.0Compare Source
Features
options.getFeedbackOptions().setUseShakeGesture(true)or manifest meta-dataio.sentry.feedback.use-shake-gestureFixes
Dependencies
com.abovevacant:epitaphto0.1.1to avoid old D8/R8 dexing crashes in downstream Android builds on old AGP versions such as 7.4.x. (#5200)v8.35.0Compare Source
Fixes
Features
options.setAnrProfilingSampleRate(<sample-rate>)or AndroidManifest.xml:<meta-data android:name="io.sentry.anr.profiling.sample-rate" android:value="[0.0-1.0]" />Behavioral Changes
enableAnrFingerprintingoption which assigns static fingerprints to ANR events with system-only stacktracesjava.langorandroid.os) are grouped into a single issue instead of creating many separate issuesoptions.setEnableAnrFingerprinting(false)or AndroidManifest.xml:<meta-data android:name="io.sentry.anr.enable-fingerprinting" android:value="false" />v8.34.1Compare Source
Fixes
filterTouchesWhenObscuredto prevent Tapjacking on user feedback dialog (#5155)v8.34.0Compare Source
Features
sentry.properties:shutdown-timeout-millis,session-flush-timeout-millisSENTRY_SHUTDOWN_TIMEOUT_MILLIS,SENTRY_SESSION_FLUSH_TIMEOUT_MILLISapplication.properties:sentry.shutdownTimeoutMillis,sentry.sessionFlushTimeoutMillisSentry.setAttribute,Sentry.setAttributes,Sentry.removeAttributeSENTRY_SAMPLE_RATEenvironment variable /sample-rateproperty (#5112)sentry-opentelemetry-otlpandsentry-opentelemetry-otlp-springmodules for combining OpenTelemetry SDK OTLP export with Sentry SDK (#5100)OpenTelemetryOtlpEventProcessor) but will not send spans through OpenTelemetry nor use OpenTelemetryContextforScopespropagation.sentry-android-replaymodule to be present at runtime for masking to workAndroidManifest.xml:ManifestMetaDataReadernow read theDIST(#5107)Fixes
Long,Short,Byte,BigInteger,AtomicInteger, andAtomicLongbeing incorrectly inferred asdoubleinstead ofinteger(#5122)AndroidRuntimeManagerStrictMode relaxation to prevent ANRs during SDK init (#5127)SystemEventsBroadcastReceiverwith try-catch block. (#5106)peekDecorViewinstead ofgetDecorViewinSentryGestureListenerto avoid forcing view hierarchy construction (#5134)network_errortosend_errorURISyntaxExceptioncaused by trailing whitespace (#5113)Sentry.init(#5135)Dependencies
v8.33.0Compare Source
Features
installGroupsOverrideparameter to Build Distribution SDK for programmatic filtering, with support for configuration via properties file usingio.sentry.distribution.install-groups-override(#5066)Fixes
SentryExecutorServiceinSentryOptions(#5093)sendDefaultPii(#5099)androidx.camera.view.PreviewViewto defaultmaskedViewClassesto mask camera previews by default. (#5097)Dependencies
Internal
v8.32.0Compare Source
Features
installGroupsproperty to Build Distribution SDK (#5062)io.sentry.spotlight.enableandio.sentry.spotlight.url(#5064)BEGIN,COMMIT,ROLLBACK) (#5072)options.enableDatabaseTransactionTracingtotrueenable-database-transaction-tracing=truewhen usingsentry.propertiessentry.enable-database-transaction-tracing=trueinapplication.propertiesor inapplication.yml:ApplicationExitInfo.REASON_CRASH_NATIVEon Android 12+AndroidManifest.xmlusing:Fixes
SpotlightIntegrationto separatesentry-spotlightmodule to prevent insecure HTTP URLs from appearing in release APKs (#5064)io.sentry:sentry-spotlightdependency:Scopesforreactor-kafkaconsumer pollRunnable(#5080)reactor-kafka's poll event reschedules itself infinitely, and each invocation ofSentryScheduleHookcreated forked scopes with a parent reference, building an unbounded chain that couldn't be garbage collected.Internal
sentry-nativefromApplicationExitInfo. (#5052)writepermission forstatusesin the changelog preview GHA workflow. (#5053)Dependencies
v8.31.0Compare Source
Features
io.sentry.ndk.sdk-nameAndroid manifest option to configure the native SDK's name (#5027)sentry.trace.parent_span_idattribute withspanIdproperty onSentryLogEvent(#5040)Fixes
sendDefaultPiiis enabled (#5036)LoggerBatchProcessoris shutting down (#5041)Dependencies
v8.30.0Compare Source
Fixes
use
options.isCollectExternalStorageContext = trueor<meta-data android:name="io.sentry.external-storage-context" android:value="true" />NullPointerExceptionwhen reading ANR marker (#4979)log_byte(#4971)Improvements
MAX_EVENT_SIZE_BYTESconstant in SentryOptions (#4962)4xxand5xxresponse (#4950)Features
ApplicationExitInfo.REASON_CRASH_NATIVEon Android 12+. (#4933)Sentry.metrics()count: A metric that increments countsgauge: A metric that tracks a value that can go up or downdistribution: A metric that tracks the statistical distribution of valuesv8.29.0Compare Source
Fixes
Internal
metricenvelope item type (#4956)v8.28.0Compare Source
Features
SentryOkHttpInterceptorto intercept the request and extract request/response bodiesio.sentry.session-replay.network-detail-allow-urlsmetadata tag in AndroidManifest (code sample) - Or you can manually specify SentryReplayOptions viaSentryAndroid#init:(Make sure you disable the auto init via manifest meta-data: io.sentry.auto-init=false)
Kotlin
Java
Improvements
rootScopesfor Reactor if current thread hasNoOpScopes(#4793)Fixes
Internal
spanenvelope item type (#4935)Dependencies
v8.27.1Compare Source
Fixes
sentry.propertiesin rundir has not been found (#4929)v8.27.0Compare Source
Features
sentry-openfeaturedependency and register the the hook using:openFeatureApiInstance.addHooks(new SentryOpenFeatureHook());sentry-launchdarkly-androidas a dependency and register theSentryLaunchDarklyAndroidHooksentry-launchdarkly-serveras a dependency and register theSentryLaunchDarklyServerHookenableEventSizeLimitingtotrue(sentry.enable-event-size-limiting=truefor Spring Bootapplication.properties)onOversizedEventcallback to implement custom logic that is executed in case an oversized event is detectedImprovements
Dependencies
v8.26.0Compare Source
Features
Sentry.addFeatureFlag("my-feature-flag", true);) writes to scopes and the current span (if there is one)IScope,IScopes,ISpanandITransactiondirectlyFixes
DefaultReplayBreadcrumbConverterif replay is available (#4888)Improvements
timber.taglog attribute (#4845)Dependencies
Configuration
📅 Schedule: (in timezone America/Toronto)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR has been generated by Mend Renovate.
Update dependency io.sentry:sentry to v8.41.0to Update dependency io.sentry:sentry to v8.41.0 - autoclosedPull request closed