Skip to content

Conversation

@github-actions
Copy link
Contributor

@github-actions github-actions bot commented Sep 4, 2025

Bumps scripts/update-java.ps1 from 8.6.0 to 8.20.0.

Auto-generated by a dependency updater.

Changelog

8.20.0

Fixes

  • Do not use named capturing groups for regular expressions (#4652)
    • This fixes a crash on Android versions below 8.0 (API level 26)

Features

  • Add onDiscard to enable users to track the type and amount of data discarded before reaching Sentry (#4612)
    • Stub for setting the callback on Sentry.init:
      Sentry.init(options -> {
        ...
        options.setOnDiscard(
         (reason, category, number) -> {
           // Your logic to process discarded data
         });
      });

8.19.1

Warning

Android: This release is incompatible with API levels below 26. We recommend using SDK version 8.20.0 or higher instead.

Fixes

  • Do not store No-Op scopes onto OpenTelemetry Context when wrapping (#4631)
    • In 8.18.0 and 8.19.0 the SDK could break when initialized too late.

8.19.0

Warning

Android: This release is incompatible with API levels below 26. We recommend using SDK version 8.20.0 or higher instead.

Features

  • Add a isEnableSystemEventBreadcrumbsExtras option to disable reporting system events extras for breadcrumbs (#4625)

Improvements

  • Session Replay: Use main thread looper to schedule replay capture (#4542)
  • Use single LifecycleObserver and multi-cast it to the integrations interested in lifecycle states (#4567)
  • Add sentry.origin attribute to logs (#4618)
    • This helps identify which integration captured a log event
  • Prewarm SentryExecutorService for better performance at runtime (#4606)

Fixes

  • Cache network capabilities and status to reduce IPC calls (#4560)
  • Deduplicate battery breadcrumbs (#4561)
  • Remove unused method in ManifestMetadataReader (#4585)
  • Have single NetworkCallback registered at a time to reduce IPC calls (#4562)
  • Do not register for SystemEvents and NetworkCallbacks immediately when launched with non-foreground importance (#4579)
  • Limit ProGuard keep rules for native methods within sentry-android-ndk to the io.sentry.** namespace. (#4427)
    • If you relied on the Sentry SDK to keep native method names for JNI compatibility within your namespace, please review your ProGuard rules and ensure the configuration still works. Especially when you're not consuming any of the default Android proguard rules (proguard-android.txt or proguard-android-optimize.txt) the following config should be present:
    -keepclasseswithmembernames class * {
      native <methods>;
    }
    
  • Fix abstract method error in SentrySupportSQLiteDatabase (#4597)
  • Ensure frame metrics listeners are registered/unregistered on the main thread (#4582)
  • Do not report cached events as lost (#4575)
    • Previously events were recorded as lost early despite being retried later through the cache
  • Move and flush unfinished previous session on init (#4624)
    • This removes the need for unnecessary blocking our background queue for 15 seconds in the case of a background app start
  • Switch to compileOnly dependency for compose-ui-material (#4630)
    • This fixes StackOverflowError when using OSS Licenses plugin

Dependencies

8.18.0

Features

  • Add SentryUserFeedbackButton Composable (#4559)
    • Also added Sentry.showUserFeedbackDialog static method
  • Add deadlineTimeout option (#4555)
  • Add Ktor client integration (#4527)
    • To use the integration, add a dependency on io.sentry:sentry-ktor-client, then install the SentryKtorClientPlugin on your HttpClient,
      e.g.:
      val client =
        HttpClient(Java) {
          install(io.sentry.ktorClient.SentryKtorClientPlugin) {
            captureFailedRequests = true
            failedRequestTargets = listOf(".*")
            failedRequestStatusCodes = listOf(HttpStatusCodeRange(500, 599))
          }
        }

Fixes

  • Allow multiple UncaughtExceptionHandlerIntegrations to be active at the same time (#4462)
  • Prevent repeated scroll target determination during a single scroll gesture (#4557)
    • This should reduce the number of ANRs seen in SentryGestureListener
  • Do not use Sentry logging API in JUL if logs are disabled (#4574)
    • This was causing Sentry SDK to log warnings: "Sentry Log is disabled and this 'logger' call is a no-op."
  • Do not use Sentry logging API in Log4j2 if logs are disabled (#4573)
    • This was causing Sentry SDK to log warnings: "Sentry Log is disabled and this 'logger' call is a no-op."
  • SDKs send queue is no longer shutdown immediately on re-init (#4564)
    • This means we're no longer losing events that have been enqueued right before SDK re-init.
  • Reduce scope forking when using OpenTelemetry (#4565)
    • Sentry.withScope now has the correct current scope passed to the callback. Previously our OpenTelemetry integration forked scopes an additional.
    • Overall the SDK is now forking scopes a bit less often.

8.17.0

Features

  • Send Timber logs through Sentry Logs (#4490)
    • Enable the Logs feature in your SentryOptions or with the io.sentry.logs.enabled manifest option and the SDK will automatically send Timber logs to Sentry, if the TimberIntegration is enabled.
    • The SDK will automatically detect Timber and use it to send logs to Sentry.
  • Send logcat through Sentry Logs (#4487)
    • Enable the Logs feature in your SentryOptions or with the io.sentry.logs.enabled manifest option and the SDK will automatically send logcat logs to Sentry, if the Sentry Android Gradle plugin is applied.
    • To set the logcat level check the Logcat integration documentation.
  • Read build tool info from sentry-debug-meta.properties and attach it to events (#4314)

Dependencies

  • Bump OpenTelemetry (#4532)
    • opentelemetry-sdk to 1.51.0
    • opentelemetry-instrumentation to 2.17.0
    • opentelemetry-javaagent to 2.17.0
    • opentelemetry-semconv to 1.34.0
    • We are now configuring OpenTelemetry to still behave the same way it did before for span names it generates in GraphQL auto instrumentation (#4537)
  • Bump Gradle from v8.14.2 to v8.14.3 (#4540)

Fixes

  • Use Spring Boot Starter 3 in sentry-spring-boot-starter-jakarta (#4545)
    • While refactoring our dependency management, we accidentally added Spring Boot 2 and Spring Boot Starter 2 as dependencies of sentry-spring-boot-starter-jakarta, which is intended for Spring Boot 3.
    • Now, the correct dependencies (Spring Boot 3 and Spring Boot Starter 3) are being added.

8.16.1-alpha.2

Fixes

  • Optimize scope when maxBreadcrumb is 0 (#4504)
  • Fix javadoc on TransportResult (#4528)
  • Session Replay: Fix IllegalArgumentException when Bitmap is initialized with non-positive values (#4536)
  • Set thread information on transaction from OpenTelemetry attributes (#4478)

Internal

  • Flattened PerformanceCollectionData (#4505)

8.16.0

Features

  • Send JUL logs to Sentry as logs (#4518)
    • You need to enable the logs feature, either in sentry.properties:
      logs.enabled=true
    • Or, if you manually initialize Sentry, you may also enable logs on Sentry.init:
      Sentry.init(options -> {
        ...
        options.getLogs().setEnabled(true);
      });
    • It is also possible to set the minimumLevel in logging.properties, meaning any log message >= the configured level will be sent to Sentry and show up under Logs:
      io.sentry.jul.SentryHandler.minimumLevel=CONFIG
  • Send Log4j2 logs to Sentry as logs (#4517)
    • You need to enable the logs feature either in sentry.properties:
      logs.enabled=true
    • If you manually initialize Sentry, you may also enable logs on Sentry.init:
      Sentry.init(options -> {
        ...
        options.getLogs().setEnabled(true);
      });
    • It is also possible to set the minimumLevel in log4j2.xml, meaning any log message >= the configured level will be sent to Sentry and show up under Logs:
      <Sentry name="Sentry"
          dsn="your DSN"
          minimumBreadcrumbLevel="DEBUG"
          minimumEventLevel="WARN"
          minimumLevel="DEBUG"
      />

8.15.1

Fixes

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

8.15.0

Features

  • Add chipset to device context (#4512)

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

  • 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://502f25099c204a2fbf4cb16edc5975d1o447951.ingest.sentry.io/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

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

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

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

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

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

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

Fixes

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

8.11.0

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)

8.10.0

Features

  • Wrap configured OpenTelemetry ContextStorageProvider if available (#4359)
    • This is only relevant if you see java.lang.IllegalStateException: Found multiple ContextStorageProvider. Set the io.opentelemetry.context.ContextStorageProvider property to the fully qualified class name of the provider to use. Falling back to default ContextStorage. Found providers: ...
    • Set -Dio.opentelemetry.context.contextStorageProvider=io.sentry.opentelemetry.SentryContextStorageProvider on your java command
    • Sentry will then wrap the other ContextStorageProvider that has been configured by loading it through SPI
    • If no other ContextStorageProvider is available or there are problems loading it, we fall back to using SentryOtelThreadLocalStorage

Fixes

  • Update profile chunk rate limit and client report (#4353)

Dependencies

8.9.0

Features

  • Add SentryWrapper.wrapRunnable to wrap Runnable for use with Sentry (#4332)

Fixes

  • Fix TTFD measurement when API called too early (#4297)
  • Tag sockets traffic originating from Sentry's HttpConnection (#4340)
    • This should suppress the StrictMode's UntaggedSocketViolation
  • Reduce debug logs verbosity (#4341)
  • Fix unregister SystemEventsBroadcastReceiver when entering background (#4338)
    • This should reduce ANRs seen with this class in the stack trace for Android 14 and above

Improvements

  • Make user interaction tracing faster and do fewer allocations (#4347)
  • Pre-load modules on a background thread upon SDK init (#4348)

8.8.0

Features

  • Add CoroutineExceptionHandler for reporting uncaught exceptions in coroutines to Sentry (#4259)
    • This is now part of sentry-kotlin-extensions and can be used together with SentryContext when launching a coroutine
    • Any exceptions thrown in a coroutine when using the handler will be captured (not rethrown!) and reported to Sentry
    • It's also possible to extend CoroutineExceptionHandler to implement custom behavior in addition to the one we provide by default

Fixes

  • Use thread context classloader when available (#4320)
    • This ensures correct resource loading in environments like Spring Boot where the thread context classloader is used for resource loading.
  • Improve low memory breadcrumb capturing (#4325)
  • Fix do not initialize SDK for Jetpack Compose Preview builds (#4324)
  • Fix Synchronize Baggage values (#4327)

Improvements

  • Make SystemEventsBreadcrumbsIntegration faster (#4330)

8.7.0

Features

  • UI Profiling GA

    Continuous Profiling is now GA, named UI Profiling. To enable it you can use one of the following options. More info can be found at https://docs.sentry.io/platforms/android/profiling/.
    Note: Both options.profilesSampler and options.profilesSampleRate must not be set to enable UI Profiling.
    To keep the same transaction-based behaviour, without the 30 seconds limitation, you can use the trace lifecycle mode.

    <application>
      <!-- Enable UI profiling, adjust in production env. This is evaluated only once per session -->
      <meta-data android:name="io.sentry.traces.profiling.session-sample-rate" android:value="1.0" />
      <!-- Set profiling lifecycle, can be `manual` (controlled through `Sentry.startProfiler()` and `Sentry.stopProfiler()`) or `trace` (automatically starts and stop a profile whenever a sampled trace starts and finishes) -->
      <meta-data android:name="io.sentry.traces.profiling.lifecycle" android:value="trace" />
      <!-- Enable profiling on app start. The app start profile will be stopped automatically when the app start root span finishes -->
      <meta-data android:name="io.sentry.traces.profiling.start-on-app-start" android:value="true" />
    </application>
    import io.sentry.ProfileLifecycle;
    import io.sentry.android.core.SentryAndroid;
    
    SentryAndroid.init(context, options -> {
        // Enable UI profiling, adjust in production env. This is evaluated only once per session
        options.setProfileSessionSampleRate(1.0);
        // Set profiling lifecycle, can be `manual` (controlled through `Sentry.startProfiler()` and `Sentry.stopProfiler()`) or `trace` (automatically starts and stop a profile whenever a sampled trace starts and finishes)
        options.setProfileLifecycle(ProfileLifecycle.TRACE);
        // Enable profiling on app start. The app start profile will be stopped automatically when the app start root span finishes
        options.setStartProfilerOnAppStart(true);
      });
    import io.sentry.ProfileLifecycle
    import io.sentry.android.core.SentryAndroid
    
    SentryAndroid.init(context, { options ->
      // Enable UI profiling, adjust in production env. This is evaluated only once per session
      options.profileSessionSampleRate = 1.0
      // Set profiling lifecycle, can be `manual` (controlled through `Sentry.startProfiler()` and `Sentry.stopProfiler()`) or `trace` (automatically starts and stop a profile whenever a sampled trace starts and finishes)
      options.profileLifecycle = ProfileLifecycle.TRACE
      // Enable profiling on app start. The app start profile will be stopped automatically when the app start root span finishes
      options.isStartProfilerOnAppStart = true
      })
    • Continuous Profiling - Stop when app goes in background (#4311)
    • Continuous Profiling - Add delayed stop (#4293)
    • Continuous Profiling - Out of Experimental (#4310)

Fixes

  • Compress Screenshots on a background thread (#4295)

@github-actions github-actions bot added the Dependencies Pull requests that update a dependency file label Sep 4, 2025
@github-actions github-actions bot requested a review from Flash0ver as a code owner September 4, 2025 10:52
@github-actions github-actions bot added the Dependencies Pull requests that update a dependency file label Sep 4, 2025
@bruno-garcia bruno-garcia force-pushed the deps/scripts/update-java.ps1 branch from e97e278 to 171b3d6 Compare September 4, 2025 10:52
@jpnurmi
Copy link
Collaborator

jpnurmi commented Sep 4, 2025

Note: Java SDK updates have been stuck since #3911 / #4075. I deleted the old manually modified deps/scripts/update-java.ps1 branch to re-activate the updater script.

Thanks! Looks like the updater refuses because:

Warning: Target branch 'deps/scripts/update-java.ps1' has been changed manually - skipping updater to avoid overwriting these changes.

So the Java SDK got stuck at version 8.6.0

<SentryAndroidSdkVersion>8.6.0</SentryAndroidSdkVersion>

Originally posted by @jpnurmi in #3828

Copy link
Collaborator

@jamescrosswell jamescrosswell left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Nice - thanks @jpnurmi !

@jamescrosswell jamescrosswell merged commit ae24bdc into main Sep 4, 2025
32 checks passed
@jamescrosswell jamescrosswell deleted the deps/scripts/update-java.ps1 branch September 4, 2025 21:34
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Dependencies Pull requests that update a dependency file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants