github getsentry/sentry-java 8.64.0

one hour ago

Breaking Changes

  • Android: AnrV2Integration, AnrProfilingIntegration, WindowContentChangedCallback, the deprecated SentryUserFeedbackButton and SentryUserFeedbackDialog.Builder, and the internal sentry-android-core classes are now final, and ActivityLifecycleCallbacksAdapter is now abstract (#6494)

Features

  • Connect Android traces with web content in a WebView using SentryWebViewTracing.addTracePropagation(webView, "example.com") (#6395)
    • Requires the androidx.webkit:webkit dependency. Only list hosts whose content you control.
    • Call it on the main thread before each page load you want connected.
    • Set options.webViewTracing.allowedHosts, or the io.sentry.webview-tracing.allowed-hosts manifest entry, to call addTracePropagation(webView) without passing hosts (#6516)
    • See the WebView docs for details.
  • Monitor every Spring @Scheduled method with Sentry Crons by setting sentry.monitor-scheduled-tasks=true, without adding @SentryCheckIn to each method. Sentry creates each monitor from the method's @Scheduled schedule. Exclude methods with sentry.exclude-scheduled-tasks (#6275, #6276, #6277)
  • Quartz SentryJobListener can send a monitor config derived from the trigger with check-ins, so Sentry creates or updates the monitor from code. Set the sentry-upsert-monitor-config job or trigger data key to "true" to send the schedule (#6216)
  • Send a monitor config derived from Spring @Scheduled with @SentryCheckIn check-ins, so Sentry creates or updates the monitor from code. Set @SentryCheckIn(upsertMonitorConfig = true) to send the schedule (#6215)
  • Sentry OpenTelemetry integrations now honor OTEL_BSP_SCHEDULE_DELAY (otel.bsp.schedule.delay) for how often spans are sent to Sentry, instead of always waiting 5 seconds (#6388)
  • Add experimental, opt-in out-of-process crash reporting on Android (#6347)
    • To enable it, add the sentry-android-ndk-outproc dependency and exclude sentry-native-ndk. Requires Android 11 (API level 30) or later.
    • See the NDK docs for details.

Behavioral Changes

  • Gradle builds now resolve all Sentry SDK modules to the same version, the highest one present, because every module depends on sentry-bom as a platform (#6466)
    • Before, a build could mix module versions, for example a newer sentry-android-core with an older sentry-android-fragment, which failed at runtime. Maven builds resolve as before.
    • sentry-bom now also includes sentry-android-distribution.

Fixes

  • Capture scroll breadcrumbs for LazyColumn, LazyRow, lazy grids, and Pager on Jetpack Compose foundation 1.10+ (#6548)
  • Prevent the main thread from potentially hanging during app start or when returning to the foreground if Android is slow to register the SDK's network or telephony listeners. Sentry.init, Session Replay, and capturing events no longer wait for that registration (#6537)
  • Add opt-in support for matching GraphQL ignored error types against classification specifications via sentry.graphql.enable-specification-error-type-filtering (#6092)
  • Session Replay: Fix SentryOkHttpInterceptor hanging forever on responses whose body has no known length, such as Server-Sent Events or a gzipped response, when network details are enabled for the URL (#6231)
  • Session Replay: SentryOkHttpInterceptor now captures network request and response details only while Session Replay is recording or buffering (#6486)
  • Stop marking an OkHttp call span as failed when a connection attempt to one of the host's addresses fails but OkHttp connects on another (#6472)
  • Stop blocking the main thread while the frame metrics thread starts when the first activity transaction begins (#6500)
    • On a busy device during cold start this could stall the launcher activity's onCreate for hundreds of milliseconds.
  • Do not inspect the response body of streaming Apollo 3 and 4 responses (multipart/mixed, text/event-stream) for failed requests, which blocked @defer and @stream (#6432)
  • Session Replay: Measure how long touch moves are batched on a monotonic clock, so a device time change during a swipe no longer drops its positions, delays them, or stretches their timing (#6538)

Don't miss a new sentry-java release

NewReleases is sending notifications on new releases.