Behavioral Changes
SentryOkHttpInterceptor::interceptnow throwsIOException. This is a source-only and Java-only breaking change (#5654)
Fixes
- Don't start a redundant UI interaction transaction when a transaction is already bound to the Scope (#5491)
- Previously,
SentryGestureListeneralways started a UI transaction and only afterwards skipped binding it to the Scope when a manually-bound transaction already existed, leaving the new transaction to be dropped as an idle transaction without children.
- Previously,
- Fix potential NPE within
Scope.endSession()(#5657) - Fix memory leak in
ReplayIntegrationdue to persisting executor not being shut down (#5627) - Fix AbstractMethodError when compose-ui 1.11+ is used in combination with
Modifier.sentryTag()or the Sentry Kotlin compiler plugin (#5672)
Performance
- Speed up touch gesture target detection on deeply nested view hierarchies by hit-testing in local coordinates instead of calling
getLocationOnScreenper view (#5595) - Probe class availability without initializing the class during SDK init (#5635)
- Avoid constructing an exception per view when resolving view ids during view-hierarchy and gesture capture (#5631)
- Start the frame metrics thread lazily on first collection instead of during SDK init (#5641)
- Reduce
SentryIdandSpanIdallocation overhead by replacing their per-instanceLazyEvaluator(and its lock) with a lightweight lazily-generatedString. (#5645) - Lazily allocate the
ReentrantLockbackingAutoClosableReentrantLockto avoid eager lock allocations for SDK objects that never contend duringSentryAndroid.init(#5643)