Update all non-major dependencies #32

Open
renovate-bot wants to merge 1 commits from renovate/all-minor-patch into main
pull from: renovate/all-minor-patch
Collaborator

This PR contains the following updates:

Package Change Age Confidence
maven (source) 3.9.15 → 3.10.0 age confidence
com.google.code.gson:gson 2.14.0 → 2.15.0 age confidence
org.gitlab4j:gitlab4j-api (source) 6.2.0 → 6.3.0 age confidence
io.sentry:sentry 8.41.0 → 8.62.0 age confidence
com.squareup.okhttp3:okhttp-jvm (source) 5.3.2 → 5.5.1 age confidence
dev.arbjerg:lavaplayer 2.2.6 → 2.2.7 age confidence
net.dv8tion:JDA 6.4.1 → 6.7.0 age confidence
org.apache.maven.plugins:maven-jar-plugin (source) 3.5.0 → 3.5.1 age confidence
org.apache.maven.plugins:maven-surefire-plugin (source) 3.5.5 → 3.6.1 age confidence

Release Notes

apache/maven (maven)

v3.10.0: 3.10.0

Compare Source

🚀 New features and improvements

🐛 Bug Fixes

📝 Documentation updates

👻 Maintenance

🔧 Build

📦 Dependency updates

v3.9.16: 3.9.16

Compare Source

🐛 Bug Fixes

📦 Dependency updates

gitlab4j/gitlab4j-api (org.gitlab4j:gitlab4j-api)

v6.3.0

Compare Source

What's Changed

New Contributors

Full Changelog: https://github.com/gitlab4j/gitlab4j-api/compare/6.2.0...6.3.0

getsentry/sentry-java (io.sentry:sentry)

v8.62.0

Compare Source

Improvements
  • Support Navigation 3 integration for multi-Activity and multi-Fragment applications, where each Activity or Fragment has its own SentryNavEffect (#​6305)
Fixes
  • Fix a D8 crash (NullPointerException: Cannot invoke "String.length()") when dexing the SDK with AGP 8.0 and older, a regression from 8.61.1 (#​6356)
  • Always remove the first-draw listener after the first frame, even if no layout pass follows it (#​6152)
  • Prevent Reactor pool maintenance tasks from retaining unbounded Sentry scope chains (#​6283)

v8.61.1

Compare Source

Fixes
  • Session Replay: Fix a native crash (SIGABRT on the RenderThread) when stopping a replay that uses the canvas screenshot strategy (#​6342)
  • Session Replay: Keep the segment videos of a replay that stopped before the startup cleanup of previous replays ran (#​6343)
  • Report the number of dropped spans in client reports when a batched span envelope item is discarded, instead of a quantity of 1 (e.g. for Flutter span streaming) (#​6265)
  • Session Replay: Keep the flushed video and do not reuse its segment id when stop() is called right after flush() in buffer mode (#​6340)
  • Keep sending events from Android 7.1.0 and older devices after Sentry changes its TLS certificate authority (#​6227)
    • In February 2027, Sentry moves its TLS certificates from DigiCert to Let's Encrypt and Google Trust Services (announcement).
    • Android 7.1.0 (API 25) and older don't trust the Let's Encrypt root certificate (ISRG Root X1), so without this fix, the SDK on those devices can no longer send events to Sentry after the switch.
    • The SDK now bundles ISRG Root X1 and trusts it in addition to the device's root certificates on API 25 and lower. This only applies to the SDK's own uploads to Sentry SaaS (DSNs on sentry.io), not to self-hosted Sentry, not to any other connection your app makes, and not if you set your own SentryOptions.setSslSocketFactory.
    • Apps need to update to an SDK version with this fix to keep sending events from these devices.
  • Session Replay: Use a software canvas for video encoding on the Android Emulator to avoid a native crash in eglDestroySurface (#​6282)
Internal
  • Measure the hostname cache TTL on the monotonic ticker the options provide, so that a device time change no longer shortens or extends it (#​6100)
  • Measure Session Replay's 1h recording cap and its touch-move debounce on a monotonic clock, so a device time change no longer stops a healthy recording early, keeps a finished one alive, or suppresses gesture events (#​6090)
  • Add ScreenshotUtils.takeMaskedScreenshot so Hybrid SDKs can capture screenshots masked according to SentryAndroidOptions.getScreenshot() (#​6281)
Dependencies

v8.61.0

Compare Source

Fixes
  • Session Replay: Backfill release, environment and SDK info for replays sent on the next launch after the app was killed or crashed (#​6253)
  • Fix SDK callback error handling (#​6140)
    • Drop telemetry when a beforeSend* callback throws and report it using DiscardReason.CALLBACK_ERROR.
    • Drop transactions when tracesSampler throws instead of inheriting the parent sampling decision or falling back to tracesSampleRate (#​6163).
    • Drop spans when beforeSpan throws without disrupting requests, covering OkHttp, OpenFeign, GraphQL, Ktor, and Apollo—including Apollo 5 (#​6167, #​6238).
    • Drop telemetry and record callback_error when a customer event processor throws instead of continuing with a potentially partially processed item. SDK-owned processor failures are logged and processing continues.
    • Drop breadcrumbs when beforeBreadcrumb throws instead of storing exception details on the breadcrumb.
    • No longer fail Spring requests when a TransactionNameProvider throws, falling back to <unlabeled transaction> (#​6241).
    • No longer fail Spring requests when a SentryUserProvider throws and overwrite the user with an empty user object (#​6240).
    • Disable profiling when profilesSampler throws instead of falling back to profilesSampleRate or inheriting the parent profiling decision (#​6164).
    • Report attached profiles dropped by transaction callback errors as callback_error in client reports and OnDiscardCallback (#​6166).
    • Skip replay capture when beforeErrorSampling throws while retaining the error event (#​6165).
    • Skip Android screenshots or view hierarchies when their capture callbacks throw while retaining the error event (#​6167).
    • Keep the Android feedback form available when its options configurator throws (#​6239).
    • Isolate nonfatal callback throwables while continuing to propagate fatal JVM errors (#​6251).
Internal
  • Hold the hostname cache on SentryOptions instead of a static singleton (#​6117)
Dependencies

v8.60.0

Compare Source

Features
  • Add support for Android Navigation 3 through the new sentry-android-navigation3 library (#​6233)
    • Use SentryNavEffect to record navigation transactions, breadcrumbs, screen names, and additional context as your nav back stack changes.
    • See the Navigation for Android docs for additional details.
  • Report the cellular network technology generation in device.connection_effective_type, for example 4g or 5g (#​6146)
Dependencies

v8.59.0

Compare Source

Breaking Changes
  • Capture direct Sentry.logger() and Sentry.metrics() calls regardless of options.getLogs().isEnabled() and options.getMetrics().isEnabled() (#​6184)
    • Automatic logging integrations still only capture logs when options.getLogs().isEnabled() is true. options.getMetrics().setEnabled(...) currently has no effect because there are no automatic Metrics integrations. Both enable options will be removed in the upcoming major release, and each logging integration will then have a separate opt-in flag.
    • Use options.getLogs().setBeforeSend(...) and options.getMetrics().setBeforeSend(...) to filter manually emitted telemetry. Return null from either callback to drop it.
Fixes
  • Keep the videos of already captured session replay segments when the replay stops, so segments that are still queued are no longer sent without their video (#​6177)
Features
  • Deprecate sendDefaultPii in favor of dataCollection ahead of its removal in 9.0 (#​6158)
  • Make the tombstone merge time threshold configurable via SentryAndroidOptions.setTombstoneMergeTimeThresholdMillis and the io.sentry.tombstone.merge-time-threshold-millis manifest option (#​6154)
  • Add sentry-apollo-5 integration for Apollo Kotlin 5, providing HTTP tracing and failed GraphQL request reporting (#​6074)
  • Add OkHttp autoconfiguration for Spring Boot (#​5797)
Fixes
  • Prevent infinite loops when capturing exceptions with cyclic cause chains (#​6073)
Improvements
  • Recover Android 17 MemoryLimiter app exits recorded as ApplicationExitInfo.REASON_MEMORY_LIMITER (#​6174)
Dependencies

v8.58.0

Compare Source

Features
  • Add LocalSentrySpan to sentry-compose so apps can provide a parent ISpan to a composable subtree and have nested SentryTraced spans attach to it ([#​6112]#​6112)
  • Add dataCollection, a fine-grained replacement for sendDefaultPii, for controlling data collected automatically by SDK integrations. See the Data Collection documentation for Android, Java, and Spring Boot (#​5759)

[!WARNING]
sendDefaultPii will be removed in the next major SDK version. Migrate to dataCollection before upgrading.

Fixes
  • Disable URL caching when reading META-INF/MANIFEST.MF files during version detection so that the SDK no longer keeps jar file handles open for the life of the process (#​6124
  • Keep the EventListener wrapped by SentryOkHttpEventListener per Call (#​6003)

v8.57.0

Compare Source

Behavioral Changes
  • Measure HTTP rate-limit backoff on a monotonic clock instead of the wall clock, so that a device time change no longer lifts or extends an active rate limit (#​6030)
Features
  • Add Android SDK support for reporting MemoryLimiter app exits recovered from ApplicationExitInfo (#​6111).
  • Sentry can now configure Log4j2 automatically for Spring Boot 4 when sentry-log4j2 is on the classpath and Log4j2 Core is the active logging backend (#​5403)
    • Enable automatic appender registration with:
      sentry.logging.enabled=true
      
      Automatic registration is disabled by default for now and will be enabled by default in the next major release.
    • The appender is attached to the root logger by default. To attach it to specific loggers instead, configure one or more non-overlapping logger names:
      sentry.logging.loggers[0]=com.example
      sentry.logging.loggers[1]=org.example
      
    • Configure the minimum level for creating breadcrumbs. The default is INFO:
      sentry.logging.minimum-breadcrumb-level=INFO
      
    • Configure the minimum level for creating Sentry error events. The default is ERROR:
      sentry.logging.minimum-event-level=ERROR
      
    • Configure the minimum level for sending Sentry structured logs. The default is INFO:
      sentry.logging.minimum-level=INFO
      
      Structured logs must also be enabled:
      sentry.logs.enabled=true
      
  • Sentry can now configure Log4j2 automatically for Spring Boot 3 when sentry-log4j2 is on the classpath and Log4j2 Core is the active logging backend (#​6072)
    • Disabled by default for now; enable it and configure levels the same way as described in the Spring Boot 4 entry above (sentry.logging.enabled=true)
Fixes
  • Support ws and wss URL parsing for WebSocket instrumentation (#​6064)
  • Keep resolving the server name after Sentry.close() or a re-init. Closing the SDK shut down the shared hostname cache for the life of the process, so server_name silently froze at the value it had last resolved (#​6119)
  • Order breadcrumbs by the timestamp they carry rather than by when they were created in the current process, so breadcrumbs restored from disk or handed over by a hybrid SDK no longer sort as if they had just happened (#​6097)
Internal
  • Deprecate RateLimiter(ICurrentDateProvider, SentryOptions) in favor of RateLimiter(SentryOptions), whose backoff is measured on a monotonic ticker (#​6030)
  • Deprecate AndroidCurrentDateProvider.getInstance() in favor of MonotonicTicker, which counts time spent in deep sleep and cannot be confused with the epoch-based CurrentDateProvider (#​6103)

v8.56.0

Compare Source

Fixes
  • Update SentryTraced so that it now honors options.setIgnoredSpanOrigins (#​6058)
  • SentryTraced now checks for its owning transaction dynamically rather than once per app process. The latter caused SentryTraced spans to be dropped process-wide once the original transaction finished (#​6057)
  • Fix typos in Spring GraphQL integration names (GrahQL to GraphQL) (#​6061)
  • Populate the Android connection status cache during the first two minutes after boot, instead of treating the empty cache as up to date (#​6029)
  • Prevent SentryTraced from producing dangling spans if recomposition is abandoned or drawing fails (#​6049)
  • Report a consistent app start type across the app start measurement, contexts.app and the app.start span attributes (#​6006)
Improvements
  • Emit a single ui.compose span per SentryTraced on initial composition instead of one on every recomposition, and set the origin on ui.render spans (#​6051)
Internal
  • Add an internal MonotonicTicker abstraction with Deadline and Stopwatch primitives (#​6028)
  • Add internal Timestamp, EpochClock and AnchoredClock, so related instants project from one wall-clock reading instead of each reading the clock (#​6045)
Dependencies

v8.55.0

Compare Source

Features
  • Add Session.State.Unhandled for unhandled errors that do not terminate the process (#​5919)
Improvements
  • Move ANR profiling out of experimental (#​6042)
Fixes
  • Keep dropped tombstone and ANR events dropped, instead of reporting the same app exit again at every app start (#​6002)
  • Clear the persisted replay id on SDK init, so a replay id from a previous process is no longer attached to ANR events from the current one (#​6033)
  • Apply Sentry.withScope and Sentry.withIsolationScope data to events captured inside the callback when globalHubMode is enabled (#​6004)
    • globalHubMode is enabled by default on Android, where tags, extras, contexts and level set inside the callback were silently dropped
    • Scopes that are explicitly made current, e.g. via Sentry.setCurrentScopes or the SentryContext coroutine integration, are now also honoured when globalHubMode is enabled
    • Sentry.pushScope, Sentry.pushIsolationScope and Sentry.popScope remain no-ops when globalHubMode is enabled
  • Drop the profiler_id from transactions and spans when no Perfetto profile covers them, e.g. when Android's ProfilingManager rate limits the profiling request (#​6015)
  • Prevent events from being dropped when feature flags are added while an event is being captured (#​5989)
Internal
  • Add InternalSentrySdk.captureEnvelopeNonTerminating for hybrid SDKs (e.g. Flutter) so unhandled exceptions that don't terminate the process no longer end the session as crashed (#​5921)
  • Add InternalSentrySdk.updateSessionForDroppedEventNonTerminating so hybrid SDKs can still update the session when an error is dropped by sampling (#​5990)
Dependencies

v8.54.0

Compare Source

Features
  • Set app.vitals.start.screen and app.vitals.start.type on standalone app.start children (#​6005)
  • Add screenshot attachment button to the Android user feedback widget (#​5828)
    • Users can now attach a screenshot when submitting feedback. Enabled by default; can be disabled via SentryFeedbackOptions.setEnableAttachScreenshot(false) or the io.sentry.feedback.enable-attach-screenshot manifest flag.
    • Requires the androidx.activity >=1.8.2 dependency
  • Add manual Session Replay controls through Sentry.replay() (#​5978)
    • Explicit start() and startBuffering() calls bypass the configured replay sample rates; sampling still controls automatic startup.
    • start() starts a full-session replay and does nothing if one is already recording.
    • startBuffering() keeps a rolling buffer that is sent on flush() or an error, then continues in session mode.
    • stop() ends the current replay; the next start() creates a new replay session.
    • pause() suspends recording until resume() and remains paused across background and foreground transitions and automatic replay restarts in the same process.
    • resume() continues the same manually paused replay.
    • flush() sends the current replay data, or starts a full-session replay when recording is stopped.
Fixes
  • Prevents inclusion of null. prefix before default-package class names when parsing Java and JNI frames from Android ANR thread dumps (#​5979)
  • Prevent duplicated breadcrumbs on tombstone-merged native crash events (#​5888)
  • Prevent a class of Session Replay deadlocks by confining lifecycle state changes to Android's main thread (#​5965)
  • Symbolicate tombstone native frames for libraries loaded directly from APKs (#​5992)
  • Prevent a deadlock between the app start extension and the Android performance event processor (#​6007)
Performance
  • Defer starting Session Replay off the SDK initialization critical path (#​5965)
  • Use manifest metadata resolved at build time to reduce Android SDK initialization overhead (#​5976)
Dependencies

v8.53.0

Compare Source

Features
  • Allow child spans to use explicit start timestamps through ISpan (#​5929)
  • Make ISpan.startChild overloads with SpanOptions public (#​5927)
  • Add Sentry.feedback().enableOnShake(), Sentry.feedback().disableOnShake(), and Sentry.feedback().isOnShakeEnabled() to toggle and query shake-to-report at runtime (#​5827)
Improvements
  • Remove ApiStatus.Experimental annotation from SentrySQLiteDriver (#​5938)
Fixes
  • Clear contexts when calling Scope.clear() (#​5902)
  • Preserve custom Throwable identities when R8 optimizes Android apps (#​5881)
  • Report the correct cpu usage for the first performance sample of a transaction, which was measured against the time since device boot (#​5926)
  • Prevent an ANR when the Session Replay video encoder gets stuck (#​5842)
    • Some hardware encoders never signal end-of-stream, which made the replay worker spin forever while holding the encoder lock. The app's lifecycle callbacks then blocked on that lock and the app froze until the system killed it. The encoder now gives up instead of spinning, and closing the replay cache no longer waits indefinitely for a wedged encoder.
Performance
  • Read the clock once per performance collection round instead of once per in-flight transaction (#​5934)
  • Reduce allocations while collecting cpu usage during transactions by reading the process cpu time via Process.getElapsedCpuTime() instead of parsing /proc/self/stat (33.6kB to 16 bytes per sample on a Pixel 3) (#​5926)
  • Store performance measurements as primitives, removing a boxed allocation per measurement per performance sample (#​5935)
Dependencies

v8.52.0

Compare Source

Fixes
  • Restore the interrupt flag when cached envelope processing is interrupted between files (#​5884)
  • Reduce false-positive SDK crash attribution for host app SQLite cursor crashes (#​5883)
  • Prevent inflated cold app start when the OS spawns the process in the background (e.g. FCM push) on API 35+ (#​5841, #​5880)
  • Preserve single-sample ANR profile chunks so profiles remain available on ANR events (#​5872)
  • Avoid a CPU busy-loop when recording discarded log or metric envelopes under rate limiting (#​5835)
    • ClientReportRecorder now reads the item count from the envelope item header instead of deserializing the payload, which under sustained rate limiting could pin CPU cores while repeatedly throwing exceptions
  • Report tasks handed to a no-op ISentryExecutorService as cancelled (#​5874)
    • NoOpSentryExecutorService previously returned a Future that was never run and never cancelled, so callers could not tell a dropped task from a queued one and get() would block until its timeout
Performance
  • Defer use of reflection by SentryFrameMetricsCollector during Sentry.init (#​5886)
  • Avoid waiting up to shutdownTimeoutMillis when closing the SDK with a pending transaction timeout or session-end task (#​5851)
  • Use RGB_565 instead of ARGB_8888 for screenshot and replay capture bitmaps, halving per-frame memory usage (#​5821)
  • Remove an unused lock from SentryPerformanceProvider, which was allocated on every cold start in ContentProvider.onCreate without ever being acquired (#​5871)
  • Reduce main-thread allocations when parsing the app start profiling config (#​5867)
  • Batch and coalesce scope-persistence disk writes to reduce startup cost (#​5791)
    • Scope mutations are now coalesced (latest value per field) and breadcrumbs are appended in batches behind a single fsync, instead of one synchronous disk write per mutation.
  • Reduce the number of SDK threads: the HostnameCache worker thread now times out while idle instead of staying alive for the whole process lifetime (#​5817)
Dependencies

v8.51.0

Compare Source

Features
  • Use Android's ProfilingManager (Perfetto) for continuous profiling on API 35+ devices (#​5251)
    • On API 35+ devices, continuous profiling now automatically uses Android's system ProfilingManager with Perfetto-based stack sampling, providing lower-overhead and more accurate profiles. No configuration change is required.
    • Devices below API 35 keep using the legacy Debug-based profiler.
    • Added an enableLegacyProfiling option (default true) to disable the legacy Debug-based profiler. Setting it to false disables continuous profiling on API < 35 devices as well as transaction-based profiling (profilesSampleRate/profilesSampler) on all devices, since transaction-based profiling is not supported by Perfetto.
    • It can also be configured via the io.sentry.profiling.enable-legacy-profiling manifest flag.
    • See the Android profiling docs for details.
Behavioral Changes
  • The outbox and cache directories are no longer created by Sentry.init (#​5792)
    • They are now created lazily by whichever component first writes into them, off the init thread. As a result, the directories at SentryOptions.getOutboxPath() and SentryOptions.getCacheDirPath() are not guaranteed to exist once Sentry.init returns.
    • If you write envelopes into the outbox path yourself instead of going through the SDK — as hybrid SDKs do for captureEnvelope — create the directory first, e.g. new File(outboxPath).mkdirs().
Improvements
  • Skip building Android manifest metadata debug log messages when debug logging is disabled, reducing allocations during SDK init (#​5790)
Fixes
  • Use the original app build's ProGuard UUID for ANR profile chunks (#​5852)
  • Fix potential ANR/deadlock in Session Replay when checkCanRecord runs on the replay executor thread (#​5837)
  • Prevent concurrent PixelCopy access during Session Replay masking and bitmap cleanup (#​5808)
  • Release MediaMuxer when the replay video encoder fails to start to avoid a resource leak (#​5607)
  • Set the correct platform (android instead of java) on ANR profile chunks so they are billed as UI Profile Hours rather than Continuous Profile Hours (#​5836)
  • Skip encoding and capturing buffered session replay segments while rate-limited, so we don't waste resources on envelopes the transport will drop (#​5813)
    • These skipped replays are now reported as ratelimit_backoff discarded events in client reports, so they no longer disappear from drop statistics. One event is recorded per buffer flush rather than per segment.
    • Buffer mode is also kept while rate-limited instead of switching to session mode, so the rolling buffer stays warm and the next error after the rate limit expires can send a complete replay.
Performance
  • Create the outbox and cache directories lazily in their consumers instead of during SDK init, moving the mkdirs() calls off the init (main) thread (#​5792)
  • Reduce the number of SDK threads: LifecycleWatcher now schedules the session-end task on the shared timer executor instead of creating a dedicated java.util.Timer thread (#​5819)
  • Reduce the number of SDK threads: RateLimiter now schedules its rate-limit-lifted notifications on the shared timer executor instead of creating a dedicated java.util.Timer thread (#​5814)
  • Speed up deserialization of arbitrary JSON objects by typing numbers without throwing exceptions (#​5783)
Dependencies

v8.50.1

Compare Source

Fixes
  • Pin the published Sentry Android SDK's AAR metadata minCompileSdk to our minSdk (21) instead of AGP 9's new default of the SDK's own compileSdk (37), so apps that depend on the SDK aren't forced to raise their compileSdk (#​5823)

v8.50.0

Compare Source

Android 17 support
  • We've put Android 17 through a set of rigorous tests. We're now officially giving it the Sentry stamp of compatibility .(#​5796)
Fixes
  • Reduce main-thread work during Sentry.init by resolving the shake-detector accelerometer off the main thread (~1.75ms on a Pixel 10) (#​5784)
  • Backfill release, environment, distribution, tags, and app version/build—and use the matching replay-on-error sample rate—for ApplicationExitInfo ANR and native crash events captured before SDK initialization, without reusing options cached by a later app update (#​5762)
  • SentryTagModifierNode.isImportantForBounds now matches the default behavior and returns true (#​5789)
  • Prevent a StackOverflowError when a beforeSend, beforeBreadcrumb, beforeSendLog, or beforeEnvelope callback triggers another capture (directly or through a logging integration such as Timber) (#​5737)
    • Captures made from within a user callback (event, transaction, breadcrumb, log, envelope, or check-in) are now dropped while that callback runs, instead of recursing. Captures made by event processors are unaffected.
  • Replace deprecated ThrowableProxy with LogEvent#getThrown() in sentry-log4j2 (#​5751)
Dependencies

v8.49.0

Compare Source

Features
  • Session Replay: Record segment names (transaction names) (#​5763)

  • Add io.sentry:sentry-opentelemetry-bom to align Sentry OpenTelemetry modules with tested OpenTelemetry dependencies (#​5629)

    • Spring Boot Gradle plugin: add the Sentry BOM to dependencyManagement; explicit imports are applied after Spring Boot's implicit BOM
      dependencyManagement {
        imports {
          mavenBom("io.sentry:sentry-opentelemetry-bom:<sentry-version>")
        }
      }
      
    • Gradle: import it as a platform and omit versions from Sentry OpenTelemetry and OpenTelemetry dependencies
      implementation(platform("io.sentry:sentry-opentelemetry-bom:<sentry-version>"))
      
    • Maven: import it before Spring Boot's BOM in the same <dependencyManagement> block, or in the child POM when using spring-boot-starter-parent
      <dependency>
        <groupId>io.sentry</groupId>
        <artifactId>sentry-opentelemetry-bom</artifactId>
        <version>${sentry.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
      
Fixes
  • Session Replay: Fix first recording segment missing for replays in buffer mode (#​5753)
  • Session Replay: Fix error-to-replay linkage in buffer mode (#​5754)
  • Prevent logs and metrics from remaining queued after a flush scheduling race (#​5756)
  • Fix main thread identification for tombstone (native crash) events (#​5742)
  • Prevent malformed JDBC URLs, which may contain credentials, from being printed to stdout (#​5656)
  • Restrict JVM-global proxy authentication credentials to challenges from the configured proxy host (#​5656)
  • Sanitize Spring 7 and Spring Jakarta WebClient span descriptions to prevent embedded URL credentials from being sent to Sentry (#​5656)
  • Respect tracePropagationTargets when injecting Sentry tracing headers through the OpenTelemetry OTLP propagator (#​5656)
Performance
  • Schedule transaction idle/deadline timeouts on a shared, dedicated executor instead of spawning a Timer thread per transaction (#​5670)
Dependencies
  • Bump OpenTelemetry to support Spring Boot 4.1 (#​5573)
    • If this causes issues for you because you are also using Spring Boot Dependency Management Plugin (io.spring.dependency-management),
      which may downgrade the OpenTelemetry SDK, please have a look at the changelog entry above that explains how to use sentry-opentelemetry-bom.
    • OpenTelemetry to 1.63.0 (was 1.60.1)
    • OpenTelemetry Instrumentation to 2.29.0 (was 2.26.0)
    • OpenTelemetry Instrumentation Alpha to 2.29.0-alpha (was 2.26.0-alpha)
    • OpenTelemetry Semantic Conventions to 1.42.0 (was 1.40.0)
    • OpenTelemetry Semantic Conventions Alpha to 1.42.0-alpha (was 1.40.0-alpha)
  • Bump Native SDK from v0.15.2 to v0.15.3 (#​5728)

v8.48.0

Compare Source

Features
  • Add Sentry.extendAppStart(), Sentry.finishExtendedAppStart(), and Sentry.getExtendedAppStartSpan() to extend the app start measurement past the first frame for extra launch-time work on Android (#​5604)

    • Requires standalone app start tracing (options.isEnableStandaloneAppStartTracing). Call extendAppStart() in Application.onCreate after SDK init and finishExtendedAppStart() when done:
    Sentry.extendAppStart()
    
    // Optionally, retrieve the extended app start span to attach your own child spans
    val child = Sentry.getExtendedAppStartSpan()?.startChild("preload", "Preload resources")
    // ... extra launch-time work ...
    child?.finish()
    
    Sentry.finishExtendedAppStart()
    
  • Add trace_metric_byte data category and record byte-level client reports when trace metrics are discarded (#​5626)

  • Expose sentry-native's heartbeat-based app-hang detection through SentryAndroidOptions (#​5623)

    • Enable via setEnableNdkAppHangTracking(true) (disabled by default) and tune the timeout with setNdkAppHangTimeoutIntervalMillis(...) (default 5000 ms), or the io.sentry.ndk.app-hang.enable / io.sentry.ndk.app-hang.timeout-interval-millis manifest entries
    • Intended for hybrid SDKs: emit the heartbeat by calling the native sentry_app_hang_heartbeat() from the thread you want monitored. Independent of the JVM-based ANR detection (setAnrEnabled)
  • Support the io.sentry.tombstone.report-historical manifest option to enable historical tombstone reporting via AndroidManifest.xml <meta-data> (#​5683)

Fixes
  • Fix NoSuchMethodError from using Math.floorDiv/Math.floorMod overloads that are unavailable on Java 8 (#​5743)
  • Fix main thread identification parsing for ApplicationExitInfo ANRs (#​5733)
  • Do not send threads without stacktraces for ApplicationExitInfo ANRs (#​5733)
  • Record byte-level client reports when event processors discard logs or trace metrics (#​5718)
  • Name the device-info caching thread SentryDeviceInfoCache so all threads spawned by the SDK are identifiable (#​5684)
  • Apply byte-category rate limits to log and trace metric envelope items (#​5716)
Performance
  • Skip Hint allocation in Scope.addBreadcrumb when no beforeBreadcrumb callback is set (#​5689)
  • Speed up scope persistence by detecting the Sentry executor thread via a marker instead of a Thread.getName() name scan on every scope mutation (#​5691)
  • Remove executor prewarm during SDK init (#​5681)
    • The single-threaded SentryExecutorService queued the prewarm work ahead of the first useful task, so it could only delay init work, never speed it up; the thread and class loading it warmed are paid identically by the first real task submitted right after.
Dependencies

v8.47.0

Compare Source

Behavioral Changes
  • SentryOkHttpInterceptor::intercept now throws IOException. This is a source-only and Java-only breaking change (#​5654)
Fixes
  • Fix fragment tracing not working with detach/attach navigation (#​5660)
  • Don't start a redundant UI interaction transaction when a transaction is already bound to the Scope (#​5491)
    • Previously, SentryGestureListener always 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.
  • Fix potential NPE within Scope.endSession() (#​5657)
  • Fix memory leak in ReplayIntegration due 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 getLocationOnScreen per 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 SentryId and SpanId allocation overhead by replacing their per-instance LazyEvaluator (and its lock) with a lightweight lazily-generated String. (#​5645)
  • Lazily allocate the ReentrantLock backing AutoClosableReentrantLock to avoid eager lock allocations for SDK objects that never contend during SentryAndroid.init (#​5643)

v8.46.0

Compare Source

Fixes
  • Session Replay: Fix network detail response body size being unknown for gzip-compressed responses (#​5592)
Behavioral Changes
  • Collections returned by scope (e.g. getBreadcrumbs, getTags, getAttachments) are shared state and should not be mutated. (#​5541)
    • Previously, when going through CombinedScopeView, we were returning a copy where mutations didn't show up in the underlying scopes.
    • This has now changed in order to reduce SDK overhead.
  • Date objects returned by SDK data model getters are shared state and should not be mutated. (#​5603)
    • Previously, these getters returned defensive copies for some date fields.
    • This has now changed in order to reduce SDK overhead.
Performance
  • Reduce writer buffer size from 8192 to 512 (#​5544)
  • Remove redundant event map copies (#​5536)
  • Optimize combined scope by adding an early return if only one scope has data (#​5541)
  • Reduce model access overhead by avoiding defensive Date copies in SDK data model getters. (#​5603)
  • Reduce timestamp parsing and formatting overhead with Sentry-specific ISO-8601 handling. (#​5602)
  • Reduce JSON serialization overhead by creating the reflection serializer only when unknown-object fallback serialization is needed. (#​5601)
  • Reduce JSON serialization overhead by allocating reflection cycle-tracking state only when reflection serialization is used. (#​5600)
  • Reduce context serialization overhead by sorting key snapshots with arrays instead of temporary lists. (#​5599)
  • Reduce breadcrumb allocation overhead by creating the Breadcrumb data map only when data is added. (#​5598)
  • Reduce JSON serialization overhead by lowering the initial JsonWriter nesting stack size while preserving on-demand growth. (#​5591)
  • Reduce timestamp helper overhead by replacing unnecessary Calendar usage in DateUtils with direct Date creation. (#​5589)
  • Reduce Android startup overhead by using the default timezone directly on older devices or when no timezone info is available in the locale. (#​5587)

v8.45.0

Compare Source

Features
  • On Android 15+ (API 35), the standalone app.start transaction now reports why the OS started the process via app.vitals.start.reason trace data (e.g. launcher, broadcast, service, content_provider), derived from ApplicationStartInfo.getReason(). You can search and group by this attribute in the Trace Explorer. (#​5552)
Fixes
  • Use System.nanoTime() for cron check-in duration measurement to avoid incorrect durations from wall-clock adjustments (#​5611)
  • Fix crash when getHistoricalProcessStartReasons is called from an isolated or wrong-userId process (#​5597)
  • Release MediaMuxer when a replay segment has no encodable frames to avoid a resource leak (#​5583)
Dependencies

v8.44.1

Compare Source

Fixes
  • Fix FirstDrawDoneListener leaking an OnGlobalLayoutListener per registration (#​5567)
Features
  • Add experimental SentrySQLiteDriver to sentry-android-sqlite for instrumenting androidx.sqlite.SQLiteDriver (#​5563)
    • To use it, pass SQLiteDriver to SentrySQLiteDriver.create(...)
    • Requires androidx.sqlite:sqlite (2.5.0+) on runtime classpath (typically provided by Room or SQLDelight)
Dependencies

v8.44.0

Compare Source

Features
  • Add enableStandaloneAppStartTracing option to send app start as a standalone transaction instead of attaching it as a child span of the first activity transaction (#​5342)
    • Disabled by default; opt in via options.isEnableStandaloneAppStartTracing = true or manifest meta-data io.sentry.standalone-app-start-tracing.enable
    • Emits a transaction named App Start with op app.start, carrying the existing app start measurements and phase spans (process.load, contentprovider.load, application.load, activity lifecycle spans) as direct children of the root
    • The standalone transaction shares the same traceId as the first ui.load activity transaction so they remain linked in the trace view
    • Also covers non-activity starts (broadcast receivers, services, content providers)
Improvements
  • Reduce boxing to improve performance (#​5523, #​5527, #​5551)
  • Replace Date with a unix timestamp in SentryNanotimeDate to improve performance (#​5550)
    • SentryNanotimeDate is now marked @ApiStatus.Internal. A new (long unixDateMillis, long nanos) constructor was added, where unixDateMillis is milliseconds since the epoch. The existing (Date, long) constructor is retained but deprecated.
Dependencies
Fixes
  • Fix attachments being duplicated on native events that carry scope attachments (#​5548)
  • Fix performance collector scheduling many tasks in a row (#​5524)

v8.43.3

Compare Source

Fixes
  • Fix crash when getHistoricalProcessStartReasons is called from an isolated or wrong-userId process (#​5597)

v8.43.2

Compare Source

Improvements
  • Improve SDK init performance by replacing java.net.URI with custom string parsing for DSN (#​5448)
  • Remove unnecessary boxing to improve performance (#​5520)
Fixes
  • Session Replay: Fix VerifyError in Compose masking under DexGuard/R8 obfuscation (#​5507)
  • Session Replay: Fix Compose view masking not working on obfuscated/minified builds (#​5503)

v8.43.1

Compare Source

Fixes
  • Session Replay: Fix replay recording freezing on screens with continuous animations (#​5489)
  • Session Replay: Populate trace_ids in replay events to enable searching replays by trace ID (#​5473)

v8.43.0

Compare Source

Features
  • Session Replay: Add ReplayFrameObserver for observing captured replay frames (#​5386)

    SentryAndroid.init(context) { options ->
      options.sessionReplay.frameObserver =
        SentryReplayOptions.ReplayFrameObserver { hint, frameTimestamp, screenName ->
          val bitmap = hint.getAs(TypeCheckHint.REPLAY_FRAME_BITMAP, Bitmap::class.java)
          if (bitmap != null) {
            try {
              // Process the masked replay frame
              myAnalyzer.processFrame(bitmap, frameTimestamp, screenName)
            } finally {
              bitmap.recycle()
            }
          }
        }
    }
    
  • Parse ART memory and garbage collector info from ANR tombstones into ART context (#​5428)

v8.42.0

Compare Source

Features
  • Add option to attach raw tombstone protobuf on native crash events (#​5446)
    • Enable via options.isAttachRawTombstone = true or manifest: <meta-data android:name="io.sentry.tombstone.attach-raw" android:value="true" />
  • Add API to clear feature flags from scopes (#​5426)
  • Add support to configure reporting historical ANRs via AndroidManifest.xml using the io.sentry.anr.report-historical attribute (#​5387)
Dependencies
lysine-dev/okhttp (com.squareup.okhttp3:okhttp-jvm)

v5.5.1

2026_10_22

  • Fix: [Block 8 compromised eMudhra intermediate certificates][Mozilla_eMudhra]. Note that this
    update is not necessary for Android devices with Google Play Services as Google has issued an
    [automatic update][Google_eMudhra]. This change protects JVMs and AOSP devices that are exposed
    to the compromised certificates.

v5.5.0

2026-08-16

This release introduces opt-in support for [Encrypted Client Hello (ECH)]. This new feature
improves user privacy by encrypting domain names in transit. With regular TLS, your coffee shop’s
Wi-Fi router can see that you’re visiting wikipedia.com, but it cannot see which page you’re
looking at. With ECH, the router observes only the IP address. This additional privacy is most
effective on sites hosted by big CDNs because the IP address doesn’t imply a particular website.

This requires ECH support in the platform’s TLS stack. Today this is only Android 17 (API 37,
released June 2026). When other TLS stacks add ECH support, we'll integrate them.

ECH took a lot of work to implement because the encryption keys are published over DNS in the
[HTTPS resource record], and we needed to write new code to fetch these records. This release
includes a major update to OkHttp’s DNS API: it now supports multiple resource record types (not
just IP addresses!), asynchronous streaming results, and in-memory caching.

To opt in, you can use DnsOverHttps:

// DnsOverHttps itself uses OkHttpClient. Build both clients upon the
// same bootstrap client so they share a connection pool and dispatcher.
val bootstrapClient = OkHttpClient()

// This sample uses Cloudflare's 1.1.1.1 DnsOverHttps service.
val client = bootstrapClient.newBuilder()
  .dns(DnsOverHttps.Builder()
    .client(bootstrapClient)
    .url("https://1.1.1.1/dns-query".toHttpUrl())
    .build())
  .build()

You could also opt in with our new AndroidDns API. Unfortunately, the privacy benefits of ECH are
thwarted because its DNS queries are not encrypted by default.

// AndroidDns fetches the HTTPS DNS resource records necessary for ECH.
val client = OkHttpClient.Builder()
  .dns(AndroidDns())
  .build()
  • New: OkHttp artifacts are now signed with our [new signing key]. This project and three sibling
    projects ([Retrofit], [Okio], and [SQLDelight]) recently joined [the Commonhaus Foundation].
  • Fix: MockWebServer’s @StartStop annotation now supports @Nested JUnit 5 tests.
  • Fix: Our default TLS hostname verifier now reject hosts that fail IP canonicalization.
  • Fix: Closing a multipart part's sink no longer closes the entire request body.
  • Fix: Flush HTTP/1 request bodies before detaching the timeout. We had a bug where timeouts
    weren’t applied correctly.
  • Fix: Follow [RFC 1008]'s requirements for HTTP QUERY redirects.
  • Fix: Fall back to no proxy when the system proxy selector throws. Previously this would cause
    the HTTP call to crash.
  • Upgrade: [Okio 3.18.1][okio_3_18_1].

v5.4.0

2026-06-08

  • New: Add superpowers to interceptors. Interceptors can now override anything settable on
    OkHttpClient.Builder, such as the cache, connection pool, socket factory, and DNS. We expect
    this will allow most users to use interceptors everywhere, insted of mixing and matching
    interceptors with custom Call.Factory wrappers.
  • Fix: Limit each HTTP/2 response to 256 KiB of total headers.
  • Upgrade: [kotlinx.coroutines 1.11.0][coroutines_1_11_0]. This is used by the optional
    okhttp-coroutines artifact.
  • Upgrade: [GraalVM 25.0.3][graalvm_25].
  • Upgrade: [Okio 3.17.0][okio_3_17_0].
lavalink-devs/lavaplayer (dev.arbjerg:lavaplayer)

v2.2.7

Compare Source

  • Fixed Ogg playback position being set to 0 on seek in 94f9d57
  • Fixed AAC per-frame decode errors being treated as fatal in #​192
  • Fixed MP4 probing of invalid files causing excessive CPU usage in #​192
  • Fixed the incorrect sha256Hash in TwitchAudioSourceManager in #​190
  • Changed the SoundCloudAudioSourceManager search prefix public in #​188
discord-jda/JDA (net.dv8tion:JDA)

v6.7.0: | Handle Channel Obfuscation

Compare Source

Overview

This release makes JDA aware of Channel Obfuscation, which will become mandatory on November 16, 2026.

You can test your bot early by enabling channel obfuscation in the discord developer portal.

image

[!WARNING]
This is a breaking change, which affects permission handling and what will be available to your bot. Please report any bugs / unexpected results you might encounter with JDA behavior.

Channels for interactions will use snapshots of the channel instead, utilizing the IDetachableEntity handling previously introduced for user-installed commands. These channels carry the current information about the channel, such as name and topic. They also have the permissions for the member that used the interaction, to allow permission checks to still work as expected for that specific member through member.hasPermission(channel, permissions).

Breaking Changes

Full Changelog: https://github.com/discord-jda/JDA/compare/v6.6.0...v6.7.0

Installation

Gradle

repositories {
    mavenCentral()
}
dependencies {
    implementation("net.dv8tion:JDA:6.7.0")
}

Maven

<dependency>
    <groupId>net.dv8tion</groupId>
    <artifactId>JDA</artifactId>
    <version>6.7.0</version> 
</dependency>

v6.6.0

Compare Source

Overview

This is a minor release adding a few new features before a bigger change coming in 6.7.0 which will introduce handling for Obfuscated Channels.

If you can, please try out and give feedback on Add handling for obfuscated channels #​3042. To enable obfuscated channels early for testing purposes, you can toggle a switch in your application dashboard as described here.

New Features

Changes

Bug Fixes

Full Changelog: https://github.com/discord-jda/JDA/compare/v6.5.0...v6.6.0

Installation

Gradle

repositories {
    mavenCentral()
}
dependencies {
    implementation("net.dv8tion:JDA:6.6.0")
}

Maven

<dependency>
    <groupId>net.dv8tion</groupId>
    <artifactId>JDA</artifactId>
    <version>6.6.0</version> 
</dependency>

v6.5.0: | Message Search API

Compare Source

Overview

This release adds support for the Message Search API, which allows bots to search messages in a guild. See Guild#searchMessages and MessageSearchAction for detailed documentation.

Example:

guild.searchMessages()
     .attachmentFilenames("cat.png")
     .includeAuthorTypes(MessageSearchAction.AuthorType.USER)
     .queue(response -> {
         if (response.isNotReady()) {
             int retryAfter = response.asNotReady().getRetryAfter();
             event.reply("The server is still indexing messages, try again later").queue();
             return;
         }

         List<Message> messages = response.asResults().getMessages();
         event.reply("Found %s messages of cats!".formatted(messages.size())).queue();
     });

Additionally, we made a minor change in the handling for received messages. For messages received in guilds JDA now handles events with missing member objects, which is necessary to handle messages that arrive shortly after a user is banned from the guild. These messages will contain members which are not added to cache and have no roles.

New Features

Changes

Full Changelog: https://github.com/discord-jda/JDA/compare/v6.4.2...v6.5.0

Installation

Gradle

repositories {
    mavenCentral()
}
dependencies {
    implementation("net.dv8tion:JDA:6.5.0")
}

Maven

<dependency>
    <groupId>net.dv8tion</groupId>
    <artifactId>JDA</artifactId>
    <version>6.5.0</version> 
</dependency>

v6.4.2

Compare Source

New Features

Changes

  • Improve error messages caused by entities relying on the cache to find themselves by @​freya022 in #​3067
  • Component options: Prevent setting an out-of-range number of default values by @​freya022 in #​3068
  • Fix deserialization of components without unfurled media by @​freya022 in #​3078

Bug Fixes

Full Changelog: https://github.com/discord-jda/JDA/compare/v6.4.1...v6.4.2

Installation

Gradle

repositories {
    mavenCentral()
}
dependencies {
    implementation("net.dv8tion:JDA:6.4.2")
}

Maven

<dependency>
    <groupId>net.dv8tion</groupId>
    <artifactId>JDA</artifactId>
    <version>6.4.2</version> 
</dependency>

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.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR has been generated by Mend Renovate CLI.

This PR contains the following updates: | Package | Change | [Age](https://docs.renovatebot.com/merge-confidence/) | [Confidence](https://docs.renovatebot.com/merge-confidence/) | |---|---|---|---| | [maven](https://maven.apache.org/) ([source](https://github.com/apache/maven)) | `3.9.15` → `3.10.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/org.apache.maven:apache-maven/3.10.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.apache.maven:apache-maven/3.9.15/3.10.0?slim=true) | | [com.google.code.gson:gson](https://github.com/google/gson) | `2.14.0` → `2.15.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/com.google.code.gson:gson/2.15.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.google.code.gson:gson/2.14.0/2.15.0?slim=true) | | [org.gitlab4j:gitlab4j-api](https://gitlab4j.github.io/gitlab4j-api/) ([source](https://github.com/gitlab4j/gitlab4j-api)) | `6.2.0` → `6.3.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/org.gitlab4j:gitlab4j-api/6.3.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.gitlab4j:gitlab4j-api/6.2.0/6.3.0?slim=true) | | [io.sentry:sentry](https://github.com/getsentry/sentry-java) | `8.41.0` → `8.62.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/io.sentry:sentry/8.62.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/io.sentry:sentry/8.41.0/8.62.0?slim=true) | | [com.squareup.okhttp3:okhttp-jvm](https://lysine.dev/okhttp/) ([source](https://github.com/lysine-dev/okhttp)) | `5.3.2` → `5.5.1` | ![age](https://developer.mend.io/api/mc/badges/age/maven/com.squareup.okhttp3:okhttp-jvm/5.5.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/com.squareup.okhttp3:okhttp-jvm/5.3.2/5.5.1?slim=true) | | [dev.arbjerg:lavaplayer](https://github.com/lavalink-devs/lavaplayer) | `2.2.6` → `2.2.7` | ![age](https://developer.mend.io/api/mc/badges/age/maven/dev.arbjerg:lavaplayer/2.2.7?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/dev.arbjerg:lavaplayer/2.2.6/2.2.7?slim=true) | | [net.dv8tion:JDA](https://github.com/discord-jda/JDA) | `6.4.1` → `6.7.0` | ![age](https://developer.mend.io/api/mc/badges/age/maven/net.dv8tion:JDA/6.7.0?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/net.dv8tion:JDA/6.4.1/6.7.0?slim=true) | | [org.apache.maven.plugins:maven-jar-plugin](https://maven.apache.org/plugins/) ([source](https://github.com/apache/maven-jar-plugin)) | `3.5.0` → `3.5.1` | ![age](https://developer.mend.io/api/mc/badges/age/maven/org.apache.maven.plugins:maven-jar-plugin/3.5.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.apache.maven.plugins:maven-jar-plugin/3.5.0/3.5.1?slim=true) | | [org.apache.maven.plugins:maven-surefire-plugin](https://maven.apache.org/surefire/) ([source](https://github.com/apache/maven-surefire)) | `3.5.5` → `3.6.1` | ![age](https://developer.mend.io/api/mc/badges/age/maven/org.apache.maven.plugins:maven-surefire-plugin/3.6.1?slim=true) | ![confidence](https://developer.mend.io/api/mc/badges/confidence/maven/org.apache.maven.plugins:maven-surefire-plugin/3.5.5/3.6.1?slim=true) | --- ### Release Notes <details> <summary>apache/maven (maven)</summary> ### [`v3.10.0`](https://github.com/apache/maven/releases/tag/maven-3.10.0): 3.10.0 [Compare Source](https://github.com/apache/maven/compare/maven-3.9.16...maven-3.10.0) <!-- Optional: add a release summary here --> #### 🚀 New features and improvements - Maven 3.10.x should use Maven 3.1 validation in strict mode ([#&#8203;1542](https://github.com/apache/maven/pull/1542)) [@&#8203;gnodet](https://github.com/gnodet) - Do not depend on maven-resolver-supplier-mvn3 ([#&#8203;13266](https://github.com/apache/maven/pull/13266)) [@&#8203;cstamas](https://github.com/cstamas) - [\[MNG-6797\]](https://issues.apache.org/jira/browse/MNG-6797) - Remember if Maven model problems were encountered. ([#&#8203;298](https://github.com/apache/maven/pull/298)) [@&#8203;wilx](https://github.com/wilx) - feat: add relativePath validation ([#&#8203;12742](https://github.com/apache/maven/pull/12742)) [@&#8203;cstamas](https://github.com/cstamas) - Add validation for Plexus-based plugin dependency injection ([#&#8203;12651](https://github.com/apache/maven/pull/12651)) [@&#8203;slawekjaranowski](https://github.com/slawekjaranowski) - Introduce validation control ([#&#8203;12549](https://github.com/apache/maven/pull/12549)) [@&#8203;cstamas](https://github.com/cstamas) - Update to Resolver 2.0.21 ([#&#8203;12504](https://github.com/apache/maven/pull/12504)) [@&#8203;cstamas](https://github.com/cstamas) - [\[MNG-5913\]](https://issues.apache.org/jira/browse/MNG-5913) - Allow defining aliases for existing server configurations in settings.xml ([#&#8203;12475](https://github.com/apache/maven/pull/12475)) [@&#8203;slawekjaranowski](https://github.com/slawekjaranowski) #### 🐛 Bug Fixes - Issue [#&#8203;13265](https://github.com/apache/maven/issues/13265): let a settings server declare the repository origins its credentials may be used with ([#&#8203;13275](https://github.com/apache/maven/pull/13275)) [@&#8203;slawekjaranowski](https://github.com/slawekjaranowski) - Backport [#&#8203;13040](https://github.com/apache/maven/issues/13040): treat reactor BOM imports as ProjectSorter edges so -am includes them ([#&#8203;13263](https://github.com/apache/maven/pull/13263)) [@&#8203;gnodet](https://github.com/gnodet) - [\[MNG-8174\]](https://issues.apache.org/jira/browse/MNG-8174) - Fix NPE when a property references itself in a plugin configuration (backport [#&#8203;12932](https://github.com/apache/maven/issues/12932)) ([#&#8203;12936](https://github.com/apache/maven/pull/12936)) [@&#8203;elharo](https://github.com/elharo) - Fix [#&#8203;13200](https://github.com/apache/maven/issues/13200): publish a complete set from MavenProject.getArtifacts ([#&#8203;13204](https://github.com/apache/maven/pull/13204)) [@&#8203;gnodet](https://github.com/gnodet) - Fixes [#&#8203;13135](https://github.com/apache/maven/issues/13135): ensure completeness of the reactor summary, privilege f… ([#&#8203;13173](https://github.com/apache/maven/pull/13173)) [@&#8203;rmannibucau](https://github.com/rmannibucau) - \[3.10.x] Fix [#&#8203;13084](https://github.com/apache/maven/issues/13084): sandbox profile activation context for external model builds ([#&#8203;13114](https://github.com/apache/maven/pull/13114)) [@&#8203;gnodet](https://github.com/gnodet) - Fix [#&#8203;13100](https://github.com/apache/maven/issues/13100): honor repositories from legitimately-active external model profiles ([#&#8203;13116](https://github.com/apache/maven/pull/13116)) [@&#8203;gnodet](https://github.com/gnodet) - Add support for MAVEN_PROJECTBASEDIR substitution in jvm.config (backport of MNG-8598 to 3.10.x) ([#&#8203;13115](https://github.com/apache/maven/pull/13115)) [@&#8203;gnodet](https://github.com/gnodet) - Scope server credentials and validate legacy relocation coordinates ([#&#8203;12954](https://github.com/apache/maven/pull/12954)) [@&#8203;slachiewicz](https://github.com/slachiewicz) - Honour configured policy and validate inputs on the legacy compat paths ([#&#8203;12978](https://github.com/apache/maven/pull/12978)) [@&#8203;gnodet](https://github.com/gnodet) - Add unit test for [#&#8203;12600](https://github.com/apache/maven/issues/12600) null-guard in forked executions ([#&#8203;12923](https://github.com/apache/maven/pull/12923)) [@&#8203;gnodet](https://github.com/gnodet) - Fix: make ProjectIndex thread-safe for parallel builds (backport [#&#8203;12832](https://github.com/apache/maven/issues/12832)) ([#&#8203;12927](https://github.com/apache/maven/pull/12927)) [@&#8203;gnodet](https://github.com/gnodet) - Fail on misconfigured plugin-requested toolchains ([#&#8203;12616](https://github.com/apache/maven/pull/12616)) [@&#8203;wilx](https://github.com/wilx) - Resolve classified POM artifacts from the reactor in Maven 3.x ([#&#8203;12659](https://github.com/apache/maven/pull/12659)) [@&#8203;wilx](https://github.com/wilx) - \[3.10.x] Convert paths for MSYS2 and jvm.config placeholders in bin/mvn ([#&#8203;12567](https://github.com/apache/maven/pull/12567)) [@&#8203;gnodet](https://github.com/gnodet) - Preserve dependency scope in plugin artifacts - fix [#&#8203;12497](https://github.com/apache/maven/issues/12497) ([#&#8203;12503](https://github.com/apache/maven/pull/12503)) [@&#8203;slawekjaranowski](https://github.com/slawekjaranowski) #### 📝 Documentation updates - docs: document plugin.xml V4 vs V3 ([#&#8203;13261](https://github.com/apache/maven/pull/13261)) [@&#8203;gnodet](https://github.com/gnodet) - \[maven-3.10.x] Port the site documentation from APT to Markdown ([#&#8203;12712](https://github.com/apache/maven/pull/12712)) [@&#8203;slachiewicz](https://github.com/slachiewicz) - improve doc about deprecating plugin descriptor's requirement ([#&#8203;12555](https://github.com/apache/maven/pull/12555)) [@&#8203;hboutemy](https://github.com/hboutemy) - Drop mention of Plexus XML ([#&#8203;12482](https://github.com/apache/maven/pull/12482)) [@&#8203;cstamas](https://github.com/cstamas) #### 👻 Maintenance - \[3.10.x] maintenance: Align use of profiles ([#&#8203;13274](https://github.com/apache/maven/pull/13274)) [@&#8203;cstamas](https://github.com/cstamas) - Remove version from rat directory deployment ([#&#8203;13046](https://github.com/apache/maven/pull/13046)) [@&#8203;slawekjaranowski](https://github.com/slawekjaranowski) - Update NOTICE file in distribution packages ([#&#8203;13044](https://github.com/apache/maven/pull/13044)) [@&#8203;slawekjaranowski](https://github.com/slawekjaranowski) - Restrict what a repository-resolved model contributes to the build ([#&#8203;12953](https://github.com/apache/maven/pull/12953)) [@&#8203;slachiewicz](https://github.com/slachiewicz) - Validate coordinates and repository precedence during artifact resolution ([#&#8203;12952](https://github.com/apache/maven/pull/12952)) [@&#8203;slachiewicz](https://github.com/slachiewicz) - [\[MNG-8129\]](https://issues.apache.org/jira/browse/MNG-8129) - Clarify relativePath validation comment ([#&#8203;12966](https://github.com/apache/maven/pull/12966)) [@&#8203;gnodet](https://github.com/gnodet) - \[12811] Keep plexus-cipher at 2.0: POM note ([#&#8203;12879](https://github.com/apache/maven/pull/12879)) [@&#8203;slachiewicz](https://github.com/slachiewicz) - \[3.10.x] Use try-with-resources ([#&#8203;12845](https://github.com/apache/maven/pull/12845)) [@&#8203;slachiewicz](https://github.com/slachiewicz) - Migrate the embedder-test-project fixture to JUnit 5 ([#&#8203;12717](https://github.com/apache/maven/pull/12717)) [@&#8203;slachiewicz](https://github.com/slachiewicz) - \[maven-3.10.x] Port the site documentation from APT to Markdown ([#&#8203;12712](https://github.com/apache/maven/pull/12712)) [@&#8203;slachiewicz](https://github.com/slachiewicz) - Migrate legacy plugin Javadoc annotations in Maven Embedder tests ([#&#8203;12708](https://github.com/apache/maven/pull/12708)) [@&#8203;wilx](https://github.com/wilx) - Replace custom `GraphLogger` with `DependencyGraphDumper` in dependency resolution ([#&#8203;12639](https://github.com/apache/maven/pull/12639)) [@&#8203;slawekjaranowski](https://github.com/slawekjaranowski) - Fix UT: do not use checkout directly ([#&#8203;12483](https://github.com/apache/maven/pull/12483)) [@&#8203;cstamas](https://github.com/cstamas) #### 🔧 Build - Replace nicoulaj checksum plugin with maveniverse checksum plugin ([#&#8203;13053](https://github.com/apache/maven/pull/13053)) [@&#8203;slawekjaranowski](https://github.com/slawekjaranowski) - 3.10.x Build by JDK 25, limit JDK to min and max LTS in build ([#&#8203;12848](https://github.com/apache/maven/pull/12848)) [@&#8203;slawekjaranowski](https://github.com/slawekjaranowski) - Update Maven version to 3.10.0-rc-1 in GH configuration ([#&#8203;12847](https://github.com/apache/maven/pull/12847)) [@&#8203;slawekjaranowski](https://github.com/slawekjaranowski) #### 📦 Dependency updates - \[3.10.x] deps: Update to Maven Resolver 2.0.24 ([#&#8203;13271](https://github.com/apache/maven/pull/13271)) [@&#8203;cstamas](https://github.com/cstamas) - build: bump xmlunitVersion from 2.13.0 to 2.14.0 ([#&#8203;13237](https://github.com/apache/maven/pull/13237)) @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot) - build: bump org.apache.maven:maven-parent from 49 to 50 ([#&#8203;13242](https://github.com/apache/maven/pull/13242)) @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot) - Resolver 2.0.23 and validation cleanup ([#&#8203;13078](https://github.com/apache/maven/pull/13078)) [@&#8203;cstamas](https://github.com/cstamas) - Bump org.codehaus.mojo:build-helper-maven-plugin from 3.6.1 to 3.6.2 ([#&#8203;13134](https://github.com/apache/maven/pull/13134)) @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot) - Bump org.codehaus.mojo:buildnumber-maven-plugin from 3.3.0 to 3.3.1 ([#&#8203;13132](https://github.com/apache/maven/pull/13132)) @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot) - Bump org.codehaus.mojo:exec-maven-plugin from 3.6.3 to 3.6.4 ([#&#8203;13130](https://github.com/apache/maven/pull/13130)) @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot) - Bump org.codehaus.mojo:animal-sniffer-maven-plugin from 1.27 to 1.28 ([#&#8203;13129](https://github.com/apache/maven/pull/13129)) @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot) - Bump actions/setup-java from 6.0.0 to 6.0.1 ([#&#8203;13110](https://github.com/apache/maven/pull/13110)) @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot) - Bump jlineVersion from 3.30.16 to 3.30.17 ([#&#8203;13111](https://github.com/apache/maven/pull/13111)) @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot) - Bump slf4jVersion from 2.0.18 to 2.0.19 ([#&#8203;13074](https://github.com/apache/maven/pull/13074)) @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot) - Bump org.codehaus.modello:modello-maven-plugin from 2.8.0 to 2.8.1 ([#&#8203;13028](https://github.com/apache/maven/pull/13028)) @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot) - \[12811] Keep plexus-cipher at 2.0: POM note ([#&#8203;12879](https://github.com/apache/maven/pull/12879)) [@&#8203;slachiewicz](https://github.com/slachiewicz) - Bump actions/setup-java from 5.7.0 to 6.0.0 ([#&#8203;12860](https://github.com/apache/maven/pull/12860)) @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot) - Deps: Bump to Resolver 2.0.22 ([#&#8203;12803](https://github.com/apache/maven/pull/12803)) [@&#8203;cstamas](https://github.com/cstamas) - Bump resolverVersion from 2.0.21 to 2.0.22 ([#&#8203;12823](https://github.com/apache/maven/pull/12823)) @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot) - Bump org.codehaus.plexus:plexus-interpolation from 1.29 to 1.30.0 ([#&#8203;12825](https://github.com/apache/maven/pull/12825)) @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot) - Bump com.google.guava:guava from 33.7.0-jre to 33.7.1-jre ([#&#8203;12796](https://github.com/apache/maven/pull/12796)) @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot) - Bump org.codehaus.plexus:plexus-utils from 3.6.1 to 3.6.2 ([#&#8203;12795](https://github.com/apache/maven/pull/12795)) @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot) - Bump org.codehaus.plexus:plexus-testing from 2.1.0 to 2.2.0 ([#&#8203;12794](https://github.com/apache/maven/pull/12794)) @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot) - Bump org.codehaus.modello:modello-maven-plugin from 2.7.0 to 2.8.0 ([#&#8203;12793](https://github.com/apache/maven/pull/12793)) @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot) - Bump org.codehaus.plexus:plexus-classworlds from 2.12.0 to 2.12.1 ([#&#8203;12792](https://github.com/apache/maven/pull/12792)) @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot) - Bump com.google.guava:guava from 33.6.0-jre to 33.7.0-jre ([#&#8203;12776](https://github.com/apache/maven/pull/12776)) @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot) - Bump xmlunitVersion from 2.12.0 to 2.13.0 ([#&#8203;12673](https://github.com/apache/maven/pull/12673)) @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot) - Bump actions/setup-java from 5.6.0 to 5.7.0 ([#&#8203;12666](https://github.com/apache/maven/pull/12666)) @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot) - Bump apache/maven-gh-actions-shared/.github/workflows/release-drafter.yml from 4 to 5 ([#&#8203;12496](https://github.com/apache/maven/pull/12496)) @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot) - Deps: Bump to Eclipse Sisu 1.1.0 ([#&#8203;12547](https://github.com/apache/maven/pull/12547)) [@&#8203;cstamas](https://github.com/cstamas) - Bump resolverVersion from 2.0.21-SNAPSHOT to 2.0.21 ([#&#8203;12545](https://github.com/apache/maven/pull/12545)) @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot) - Bump jlineVersion from 3.30.15 to 3.30.16 ([#&#8203;12518](https://github.com/apache/maven/pull/12518)) @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot) - Bump actions/checkout from 7.0.0 to 7.0.1 ([#&#8203;12514](https://github.com/apache/maven/pull/12514)) @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot) - Update to Resolver 2.0.21 ([#&#8203;12504](https://github.com/apache/maven/pull/12504)) [@&#8203;cstamas](https://github.com/cstamas) - Bump actions/setup-java from 5.5.0 to 5.6.0 ([#&#8203;12501](https://github.com/apache/maven/pull/12501)) @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot) - Bump apache/maven-gh-actions-shared/.github/workflows/pr-automation.yml from 4 to 5 ([#&#8203;12495](https://github.com/apache/maven/pull/12495)) @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot) - Bump actions/setup-java from 5.4.0 to 5.5.0 ([#&#8203;12439](https://github.com/apache/maven/pull/12439)) @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot) ### [`v3.9.16`](https://github.com/apache/maven/releases/tag/maven-3.9.16): 3.9.16 [Compare Source](https://github.com/apache/maven/compare/maven-3.9.15...maven-3.9.16) <!-- Optional: add a release summary here --> #### 🐛 Bug Fixes - Trim `threadConfiguration` to accept input surrounded with spaces ([#&#8203;12042](https://github.com/apache/maven/pull/12042)) [@&#8203;slawekjaranowski](https://github.com/slawekjaranowski) - Backport: Maven 3.10.x fixed plugin resolution ([#&#8203;12022](https://github.com/apache/maven/pull/12022)) [@&#8203;cstamas](https://github.com/cstamas) #### 📦 Dependency updates - Bump org.codehaus.plexus:plexus-classworlds from 2.9.0 to 2.11.0 ([#&#8203;12039](https://github.com/apache/maven/pull/12039)) @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot) - \[3.9.x] Bump to parent POM 48 ([#&#8203;12024](https://github.com/apache/maven/pull/12024)) [@&#8203;cstamas](https://github.com/cstamas) - Bump commons-io:commons-io from 2.21.0 to 2.22.0 ([#&#8203;11980](https://github.com/apache/maven/pull/11980)) @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot) - Bump com.google.guava:guava from 33.5.0-jre to 33.6.0-jre ([#&#8203;11951](https://github.com/apache/maven/pull/11951)) @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot) - Bump actions/cache from 5.0.4 to 5.0.5 ([#&#8203;11943](https://github.com/apache/maven/pull/11943)) @&#8203;[dependabot\[bot\]](https://github.com/apps/dependabot) </details> <details> <summary>gitlab4j/gitlab4j-api (org.gitlab4j:gitlab4j-api)</summary> ### [`v6.3.0`](https://github.com/gitlab4j/gitlab4j-api/releases/tag/6.3.0) [Compare Source](https://github.com/gitlab4j/gitlab4j-api/compare/6.2.0...6.3.0) #### What's Changed - Adding projectId field in DownstreamPipeline by [@&#8203;mbench777](https://github.com/mbench777) in [#&#8203;1301](https://github.com/gitlab4j/gitlab4j-api/pull/1301) - Add support for `ci_pipeline_variables_minimum_override_role` in updateProject by [@&#8203;nikitaBarkov](https://github.com/nikitaBarkov) in [#&#8203;1303](https://github.com/gitlab4j/gitlab4j-api/pull/1303) - Fix javadoc in ProjectApi#listProjectAccessTokens() by [@&#8203;jmini](https://github.com/jmini) in [#&#8203;1306](https://github.com/gitlab4j/gitlab4j-api/pull/1306) - Add getters to ProjectFilter by [@&#8203;inoorinoor](https://github.com/inoorinoor) in [#&#8203;1308](https://github.com/gitlab4j/gitlab4j-api/pull/1308) - Update Jackson dependencies to version 2.18.6 by [@&#8203;michix](https://github.com/michix) in [#&#8203;1316](https://github.com/gitlab4j/gitlab4j-api/pull/1316) - Add the draft option to the Merge Request creation by [@&#8203;mhagnumdw](https://github.com/mhagnumdw) in [#&#8203;1311](https://github.com/gitlab4j/gitlab4j-api/pull/1311) - Fix Accept Header to use MediaType.WILDCARD by [@&#8203;exceptionfactory](https://github.com/exceptionfactory) in [#&#8203;1318](https://github.com/gitlab4j/gitlab4j-api/pull/1318) - Missing push rules properties by [@&#8203;wilvdb](https://github.com/wilvdb) in [#&#8203;1319](https://github.com/gitlab4j/gitlab4j-api/pull/1319) - Add missing token scopes to all scope enums by [@&#8203;jschneider](https://github.com/jschneider) in [#&#8203;1313](https://github.com/gitlab4j/gitlab4j-api/pull/1313) - Update EventMergeRequest webhook to handle non-string merge param values by [@&#8203;klew00](https://github.com/klew00) in [#&#8203;1317](https://github.com/gitlab4j/gitlab4j-api/pull/1317) **This change it potentially breaking existing code reading the value (type change)** #### New Contributors - [@&#8203;mbench777](https://github.com/mbench777) made their first contribution in [#&#8203;1301](https://github.com/gitlab4j/gitlab4j-api/pull/1301) - [@&#8203;nikitaBarkov](https://github.com/nikitaBarkov) made their first contribution in [#&#8203;1303](https://github.com/gitlab4j/gitlab4j-api/pull/1303) - [@&#8203;inoorinoor](https://github.com/inoorinoor) made their first contribution in [#&#8203;1308](https://github.com/gitlab4j/gitlab4j-api/pull/1308) - [@&#8203;exceptionfactory](https://github.com/exceptionfactory) made their first contribution in [#&#8203;1318](https://github.com/gitlab4j/gitlab4j-api/pull/1318) - [@&#8203;wilvdb](https://github.com/wilvdb) made their first contribution in [#&#8203;1319](https://github.com/gitlab4j/gitlab4j-api/pull/1319) - [@&#8203;klew00](https://github.com/klew00) made their first contribution in [#&#8203;1317](https://github.com/gitlab4j/gitlab4j-api/pull/1317) **Full Changelog**: <https://github.com/gitlab4j/gitlab4j-api/compare/6.2.0...6.3.0> </details> <details> <summary>getsentry/sentry-java (io.sentry:sentry)</summary> ### [`v8.62.0`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8620) [Compare Source](https://github.com/getsentry/sentry-java/compare/8.61.1...8.62.0) ##### Improvements - Support Navigation 3 integration for multi-Activity and multi-Fragment applications, where each Activity or Fragment has its own `SentryNavEffect` ([#&#8203;6305](https://github.com/getsentry/sentry-java/pull/6305)) - See the [Navigation for Android docs](https://docs.sentry.io/platforms/android/integrations/navigation/#supported-setups) for a detailed list of supported vs unsupported app setups. ##### Fixes - Fix a D8 crash (`NullPointerException: Cannot invoke "String.length()"`) when dexing the SDK with AGP 8.0 and older, a regression from 8.61.1 ([#&#8203;6356](https://github.com/getsentry/sentry-java/pull/6356)) - Always remove the first-draw listener after the first frame, even if no layout pass follows it ([#&#8203;6152](https://github.com/getsentry/sentry-java/pull/6152)) - Prevent Reactor pool maintenance tasks from retaining unbounded Sentry scope chains ([#&#8203;6283](https://github.com/getsentry/sentry-java/pull/6283)) ### [`v8.61.1`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8611) [Compare Source](https://github.com/getsentry/sentry-java/compare/8.61.0...8.61.1) ##### Fixes - Session Replay: Fix a native crash (`SIGABRT` on the RenderThread) when stopping a replay that uses the canvas screenshot strategy ([#&#8203;6342](https://github.com/getsentry/sentry-java/pull/6342)) - Session Replay: Keep the segment videos of a replay that stopped before the startup cleanup of previous replays ran ([#&#8203;6343](https://github.com/getsentry/sentry-java/pull/6343)) - Report the number of dropped spans in client reports when a batched span envelope item is discarded, instead of a quantity of 1 (e.g. for Flutter span streaming) ([#&#8203;6265](https://github.com/getsentry/sentry-java/pull/6265)) - Session Replay: Keep the flushed video and do not reuse its segment id when `stop()` is called right after `flush()` in buffer mode ([#&#8203;6340](https://github.com/getsentry/sentry-java/pull/6340)) - Keep sending events from Android 7.1.0 and older devices after Sentry changes its TLS certificate authority ([#&#8203;6227](https://github.com/getsentry/sentry-java/pull/6227)) - In February 2027, Sentry moves its TLS certificates from DigiCert to Let's Encrypt and Google Trust Services ([announcement](https://sentry.io/changelog/were-changing-our-tls-certificate-authority-in-february-2027)). - Android 7.1.0 (API 25) and older don't trust the Let's Encrypt root certificate (ISRG Root X1), so without this fix, the SDK on those devices can no longer send events to Sentry after the switch. - The SDK now bundles ISRG Root X1 and trusts it in addition to the device's root certificates on API 25 and lower. This only applies to the SDK's own uploads to Sentry SaaS (DSNs on `sentry.io`), not to self-hosted Sentry, not to any other connection your app makes, and not if you set your own `SentryOptions.setSslSocketFactory`. - Apps need to update to an SDK version with this fix to keep sending events from these devices. - Session Replay: Use a software canvas for video encoding on the Android Emulator to avoid a native crash in `eglDestroySurface` ([#&#8203;6282](https://github.com/getsentry/sentry-java/pull/6282)) ##### Internal - Measure the hostname cache TTL on the monotonic ticker the options provide, so that a device time change no longer shortens or extends it ([#&#8203;6100](https://github.com/getsentry/sentry-java/pull/6100)) - Measure Session Replay's 1h recording cap and its touch-move debounce on a monotonic clock, so a device time change no longer stops a healthy recording early, keeps a finished one alive, or suppresses gesture events ([#&#8203;6090](https://github.com/getsentry/sentry-java/pull/6090)) - Add `ScreenshotUtils.takeMaskedScreenshot` so Hybrid SDKs can capture screenshots masked according to `SentryAndroidOptions.getScreenshot()` ([#&#8203;6281](https://github.com/getsentry/sentry-java/pull/6281)) ##### Dependencies - Bump Native SDK from v0.17.3 to v0.17.4 ([#&#8203;6278](https://github.com/getsentry/sentry-java/pull/6278)) - [changelog](https://github.com/getsentry/sentry-native/blob/master/CHANGELOG.md#0174) - [diff](https://github.com/getsentry/sentry-native/compare/0.17.3...0.17.4) ### [`v8.61.0`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8610) [Compare Source](https://github.com/getsentry/sentry-java/compare/8.60.0...8.61.0) ##### Fixes - Session Replay: Backfill release, environment and SDK info for replays sent on the next launch after the app was killed or crashed ([#&#8203;6253](https://github.com/getsentry/sentry-java/pull/6253)) - Fix SDK callback error handling ([#&#8203;6140](https://github.com/getsentry/sentry-java/pull/6140)) - Drop telemetry when a `beforeSend*` callback throws and report it using `DiscardReason.CALLBACK_ERROR`. - Drop transactions when `tracesSampler` throws instead of inheriting the parent sampling decision or falling back to `tracesSampleRate` ([#&#8203;6163](https://github.com/getsentry/sentry-java/pull/6163)). - Drop spans when `beforeSpan` throws without disrupting requests, covering OkHttp, OpenFeign, GraphQL, Ktor, and Apollo—including Apollo 5 ([#&#8203;6167](https://github.com/getsentry/sentry-java/pull/6167), [#&#8203;6238](https://github.com/getsentry/sentry-java/pull/6238)). - Drop telemetry and record `callback_error` when a customer event processor throws instead of continuing with a potentially partially processed item. SDK-owned processor failures are logged and processing continues. - Drop breadcrumbs when `beforeBreadcrumb` throws instead of storing exception details on the breadcrumb. - No longer fail Spring requests when a `TransactionNameProvider` throws, falling back to `<unlabeled transaction>` ([#&#8203;6241](https://github.com/getsentry/sentry-java/pull/6241)). - No longer fail Spring requests when a `SentryUserProvider` throws and overwrite the user with an empty user object ([#&#8203;6240](https://github.com/getsentry/sentry-java/pull/6240)). - Disable profiling when `profilesSampler` throws instead of falling back to `profilesSampleRate` or inheriting the parent profiling decision ([#&#8203;6164](https://github.com/getsentry/sentry-java/pull/6164)). - Report attached profiles dropped by transaction callback errors as `callback_error` in client reports and `OnDiscardCallback` ([#&#8203;6166](https://github.com/getsentry/sentry-java/pull/6166)). - Skip replay capture when `beforeErrorSampling` throws while retaining the error event ([#&#8203;6165](https://github.com/getsentry/sentry-java/pull/6165)). - Skip Android screenshots or view hierarchies when their capture callbacks throw while retaining the error event ([#&#8203;6167](https://github.com/getsentry/sentry-java/pull/6167)). - Keep the Android feedback form available when its options configurator throws ([#&#8203;6239](https://github.com/getsentry/sentry-java/pull/6239)). - Isolate nonfatal callback throwables while continuing to propagate fatal JVM errors ([#&#8203;6251](https://github.com/getsentry/sentry-java/pull/6251)). ##### Internal - Hold the hostname cache on `SentryOptions` instead of a static singleton ([#&#8203;6117](https://github.com/getsentry/sentry-java/pull/6117)) ##### Dependencies - Bump Native SDK from v0.17.2 to v0.17.3 ([#&#8203;6250](https://github.com/getsentry/sentry-java/pull/6250)) - [changelog](https://github.com/getsentry/sentry-native/blob/master/CHANGELOG.md#0173) - [diff](https://github.com/getsentry/sentry-native/compare/0.17.2...0.17.3) ### [`v8.60.0`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8600) [Compare Source](https://github.com/getsentry/sentry-java/compare/8.59.0...8.60.0) ##### Features - Add support for Android Navigation 3 through the new `sentry-android-navigation3` library ([#&#8203;6233](https://github.com/getsentry/sentry-java/pull/6233)) - Use `SentryNavEffect` to record navigation transactions, breadcrumbs, screen names, and additional context as your nav back stack changes. - See the [Navigation for Android docs](https://docs.sentry.io/platforms/android/integrations/navigation/) for additional details. - Report the cellular network technology generation in `device.connection_effective_type`, for example `4g` or `5g` ([#&#8203;6146](https://github.com/getsentry/sentry-java/pull/6146)) ##### Dependencies - Bump Native SDK from v0.17.1 to v0.17.2 ([#&#8203;6230](https://github.com/getsentry/sentry-java/pull/6230)) - [changelog](https://github.com/getsentry/sentry-native/blob/master/CHANGELOG.md#0172) - [diff](https://github.com/getsentry/sentry-native/compare/0.17.1...0.17.2) ### [`v8.59.0`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8590) [Compare Source](https://github.com/getsentry/sentry-java/compare/8.58.0...8.59.0) ##### Breaking Changes - Capture direct `Sentry.logger()` and `Sentry.metrics()` calls regardless of `options.getLogs().isEnabled()` and `options.getMetrics().isEnabled()` ([#&#8203;6184](https://github.com/getsentry/sentry-java/pull/6184)) - Automatic logging integrations still only capture logs when `options.getLogs().isEnabled()` is `true`. `options.getMetrics().setEnabled(...)` currently has no effect because there are no automatic Metrics integrations. Both enable options will be removed in the upcoming major release, and each logging integration will then have a separate opt-in flag. - Use `options.getLogs().setBeforeSend(...)` and `options.getMetrics().setBeforeSend(...)` to filter manually emitted telemetry. Return `null` from either callback to drop it. ##### Fixes - Keep the videos of already captured session replay segments when the replay stops, so segments that are still queued are no longer sent without their video ([#&#8203;6177](https://github.com/getsentry/sentry-java/pull/6177)) ##### Features - Deprecate `sendDefaultPii` in favor of `dataCollection` ahead of its removal in 9.0 ([#&#8203;6158](https://github.com/getsentry/sentry-java/pull/6158)) - Make the tombstone merge time threshold configurable via `SentryAndroidOptions.setTombstoneMergeTimeThresholdMillis` and the `io.sentry.tombstone.merge-time-threshold-millis` manifest option ([#&#8203;6154](https://github.com/getsentry/sentry-java/pull/6154)) - Add `sentry-apollo-5` integration for Apollo Kotlin 5, providing HTTP tracing and failed GraphQL request reporting ([#&#8203;6074](https://github.com/getsentry/sentry-java/pull/6074)) - Add OkHttp autoconfiguration for Spring Boot ([#&#8203;5797](https://github.com/getsentry/sentry-java/pull/5797)) ##### Fixes - Prevent infinite loops when capturing exceptions with cyclic cause chains ([#&#8203;6073](https://github.com/getsentry/sentry-java/pull/6073)) ##### Improvements - Recover Android 17 `MemoryLimiter` app exits recorded as `ApplicationExitInfo.REASON_MEMORY_LIMITER` ([#&#8203;6174](https://github.com/getsentry/sentry-java/pull/6174)) ##### Dependencies - Bump Native SDK from v0.16.6 to v0.17.1 ([#&#8203;6135](https://github.com/getsentry/sentry-java/pull/6135)) - [changelog](https://github.com/getsentry/sentry-native/blob/master/CHANGELOG.md#0171) - [diff](https://github.com/getsentry/sentry-native/compare/0.16.6...0.17.1) ### [`v8.58.0`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8580) [Compare Source](https://github.com/getsentry/sentry-java/compare/8.57.0...8.58.0) ##### Features - Add `LocalSentrySpan` to `sentry-compose` so apps can provide a parent `ISpan` to a composable subtree and have nested `SentryTraced` spans attach to it (\[[#&#8203;6112](https://github.com/getsentry/sentry-java/issues/6112)][#&#8203;6112](https://github.com/getsentry/sentry-java/pull/6112)) - Add `dataCollection`, a fine-grained replacement for `sendDefaultPii`, for controlling data collected automatically by SDK integrations. See the Data Collection documentation for [Android](https://docs.sentry.io/platforms/android/configuration/options/#dataCollection), [Java](https://docs.sentry.io/platforms/java/configuration/options/#dataCollection), and [Spring Boot](https://docs.sentry.io/platforms/java/guides/spring-boot/configuration/options/#dataCollection) ([#&#8203;5759](https://github.com/getsentry/sentry-java/pull/5759)) > \[!WARNING] > `sendDefaultPii` will be removed in the next major SDK version. Migrate to `dataCollection` before upgrading. ##### Fixes - Disable URL caching when reading `META-INF/MANIFEST.MF` files during version detection so that the SDK no longer keeps jar file handles open for the life of the process ([#&#8203;6124](https://github.com/getsentry/sentry-java/pull/6124) - Keep the `EventListener` wrapped by `SentryOkHttpEventListener` per `Call` ([#&#8203;6003](https://github.com/getsentry/sentry-java/pull/6003)) ### [`v8.57.0`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8570) [Compare Source](https://github.com/getsentry/sentry-java/compare/8.56.0...8.57.0) ##### Behavioral Changes - Measure HTTP rate-limit backoff on a monotonic clock instead of the wall clock, so that a device time change no longer lifts or extends an active rate limit ([#&#8203;6030](https://github.com/getsentry/sentry-java/pull/6030)) ##### Features - Add Android SDK support for reporting `MemoryLimiter` app exits recovered from `ApplicationExitInfo` ([#&#8203;6111](https://github.com/getsentry/sentry-java/pull/6111)). - Sentry can now configure Log4j2 automatically for Spring Boot 4 when `sentry-log4j2` is on the classpath and Log4j2 Core is the active logging backend ([#&#8203;5403](https://github.com/getsentry/sentry-java/pull/5403)) - Enable automatic appender registration with: ```properties sentry.logging.enabled=true ``` Automatic registration is disabled by default for now and will be enabled by default in the next major release. - The appender is attached to the root logger by default. To attach it to specific loggers instead, configure one or more non-overlapping logger names: ```properties sentry.logging.loggers[0]=com.example sentry.logging.loggers[1]=org.example ``` - Configure the minimum level for creating breadcrumbs. The default is `INFO`: ```properties sentry.logging.minimum-breadcrumb-level=INFO ``` - Configure the minimum level for creating Sentry error events. The default is `ERROR`: ```properties sentry.logging.minimum-event-level=ERROR ``` - Configure the minimum level for sending Sentry structured logs. The default is `INFO`: ```properties sentry.logging.minimum-level=INFO ``` Structured logs must also be enabled: ```properties sentry.logs.enabled=true ``` - Sentry can now configure Log4j2 automatically for Spring Boot 3 when `sentry-log4j2` is on the classpath and Log4j2 Core is the active logging backend ([#&#8203;6072](https://github.com/getsentry/sentry-java/pull/6072)) - Disabled by default for now; enable it and configure levels the same way as described in the Spring Boot 4 entry above (`sentry.logging.enabled=true`) ##### Fixes - Support `ws` and `wss` URL parsing for WebSocket instrumentation ([#&#8203;6064](https://github.com/getsentry/sentry-java/pull/6064)) - Keep resolving the server name after `Sentry.close()` or a re-init. Closing the SDK shut down the shared hostname cache for the life of the process, so `server_name` silently froze at the value it had last resolved ([#&#8203;6119](https://github.com/getsentry/sentry-java/pull/6119)) - Order breadcrumbs by the timestamp they carry rather than by when they were created in the current process, so breadcrumbs restored from disk or handed over by a hybrid SDK no longer sort as if they had just happened ([#&#8203;6097](https://github.com/getsentry/sentry-java/pull/6097)) ##### Internal - Deprecate `RateLimiter(ICurrentDateProvider, SentryOptions)` in favor of `RateLimiter(SentryOptions)`, whose backoff is measured on a monotonic ticker ([#&#8203;6030](https://github.com/getsentry/sentry-java/pull/6030)) - Deprecate `AndroidCurrentDateProvider.getInstance()` in favor of `MonotonicTicker`, which counts time spent in deep sleep and cannot be confused with the epoch-based `CurrentDateProvider` ([#&#8203;6103](https://github.com/getsentry/sentry-java/pull/6103)) ### [`v8.56.0`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8560) [Compare Source](https://github.com/getsentry/sentry-java/compare/8.55.0...8.56.0) ##### Fixes - Update `SentryTraced` so that it now honors `options.setIgnoredSpanOrigins` ([#&#8203;6058](https://github.com/getsentry/sentry-java/pull/6058)) - `SentryTraced` now checks for its owning transaction dynamically rather than once per app process. The latter caused `SentryTraced` spans to be dropped process-wide once the original transaction finished ([#&#8203;6057](https://github.com/getsentry/sentry-java/pull/6057)) - Fix typos in Spring GraphQL integration names (`GrahQL` to `GraphQL`) ([#&#8203;6061](https://github.com/getsentry/sentry-java/pull/6061)) - Populate the Android connection status cache during the first two minutes after boot, instead of treating the empty cache as up to date ([#&#8203;6029](https://github.com/getsentry/sentry-java/pull/6029)) - Prevent `SentryTraced` from producing dangling spans if recomposition is abandoned or drawing fails ([#&#8203;6049](https://github.com/getsentry/sentry-java/pull/6049)) - Report a consistent app start type across the app start measurement, `contexts.app` and the `app.start` span attributes ([#&#8203;6006](https://github.com/getsentry/sentry-java/pull/6006)) ##### Improvements - Emit a single `ui.compose` span per `SentryTraced` on initial composition instead of one on every recomposition, and set the origin on `ui.render` spans ([#&#8203;6051](https://github.com/getsentry/sentry-java/pull/6051)) ##### Internal - Add an internal `MonotonicTicker` abstraction with `Deadline` and `Stopwatch` primitives ([#&#8203;6028](https://github.com/getsentry/sentry-java/pull/6028)) - Add internal `Timestamp`, `EpochClock` and `AnchoredClock`, so related instants project from one wall-clock reading instead of each reading the clock ([#&#8203;6045](https://github.com/getsentry/sentry-java/pull/6045)) ##### Dependencies - Bump Native SDK from v0.16.5 to v0.16.6 ([#&#8203;6079](https://github.com/getsentry/sentry-java/pull/6079)) - [changelog](https://github.com/getsentry/sentry-native/blob/master/CHANGELOG.md#0166) - [diff](https://github.com/getsentry/sentry-native/compare/0.16.5...0.16.6) ### [`v8.55.0`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8550) [Compare Source](https://github.com/getsentry/sentry-java/compare/8.54.0...8.55.0) ##### Features - Add `Session.State.Unhandled` for unhandled errors that do not terminate the process ([#&#8203;5919](https://github.com/getsentry/sentry-java/pull/5919)) ##### Improvements - Move ANR profiling out of experimental ([#&#8203;6042](https://github.com/getsentry/sentry-java/pull/6042)) ##### Fixes - Keep dropped tombstone and ANR events dropped, instead of reporting the same app exit again at every app start ([#&#8203;6002](https://github.com/getsentry/sentry-java/pull/6002)) - Clear the persisted replay id on SDK init, so a replay id from a previous process is no longer attached to ANR events from the current one ([#&#8203;6033](https://github.com/getsentry/sentry-java/pull/6033)) - Apply `Sentry.withScope` and `Sentry.withIsolationScope` data to events captured inside the callback when `globalHubMode` is enabled ([#&#8203;6004](https://github.com/getsentry/sentry-java/pull/6004)) - `globalHubMode` is enabled by default on Android, where tags, extras, contexts and level set inside the callback were silently dropped - Scopes that are explicitly made current, e.g. via `Sentry.setCurrentScopes` or the `SentryContext` coroutine integration, are now also honoured when `globalHubMode` is enabled - `Sentry.pushScope`, `Sentry.pushIsolationScope` and `Sentry.popScope` remain no-ops when `globalHubMode` is enabled - Drop the `profiler_id` from transactions and spans when no Perfetto profile covers them, e.g. when Android's `ProfilingManager` rate limits the profiling request ([#&#8203;6015](https://github.com/getsentry/sentry-java/pull/6015)) - Prevent events from being dropped when feature flags are added while an event is being captured ([#&#8203;5989](https://github.com/getsentry/sentry-java/pull/5989)) ##### Internal - Add `InternalSentrySdk.captureEnvelopeNonTerminating` for hybrid SDKs (e.g. Flutter) so unhandled exceptions that don't terminate the process no longer end the session as `crashed` ([#&#8203;5921](https://github.com/getsentry/sentry-java/pull/5921)) - Add `InternalSentrySdk.updateSessionForDroppedEventNonTerminating` so hybrid SDKs can still update the session when an error is dropped by sampling ([#&#8203;5990](https://github.com/getsentry/sentry-java/pull/5990)) ##### Dependencies - Bump Native SDK from v0.16.4 to v0.16.5 ([#&#8203;6034](https://github.com/getsentry/sentry-java/pull/6034)) - [changelog](https://github.com/getsentry/sentry-native/blob/master/CHANGELOG.md#0165) - [diff](https://github.com/getsentry/sentry-native/compare/0.16.4...0.16.5) ### [`v8.54.0`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8540) [Compare Source](https://github.com/getsentry/sentry-java/compare/8.53.0...8.54.0) ##### Features - Set `app.vitals.start.screen` and `app.vitals.start.type` on standalone `app.start` children ([#&#8203;6005](https://github.com/getsentry/sentry-java/pull/6005)) - Add screenshot attachment button to the Android user feedback widget ([#&#8203;5828](https://github.com/getsentry/sentry-java/pull/5828)) - Users can now attach a screenshot when submitting feedback. Enabled by default; can be disabled via `SentryFeedbackOptions.setEnableAttachScreenshot(false)` or the `io.sentry.feedback.enable-attach-screenshot` manifest flag. - Requires the `androidx.activity` `>=1.8.2` dependency - Add manual Session Replay controls through `Sentry.replay()` ([#&#8203;5978](https://github.com/getsentry/sentry-java/pull/5978)) - Explicit `start()` and `startBuffering()` calls bypass the configured replay sample rates; sampling still controls automatic startup. - `start()` starts a full-session replay and does nothing if one is already recording. - `startBuffering()` keeps a rolling buffer that is sent on `flush()` or an error, then continues in session mode. - `stop()` ends the current replay; the next `start()` creates a new replay session. - `pause()` suspends recording until `resume()` and remains paused across background and foreground transitions and automatic replay restarts in the same process. - `resume()` continues the same manually paused replay. - `flush()` sends the current replay data, or starts a full-session replay when recording is stopped. ##### Fixes - Prevents inclusion of `null.` prefix before default-package class names when parsing Java and JNI frames from Android ANR thread dumps ([#&#8203;5979](https://github.com/getsentry/sentry-java/pull/5979)) - Prevent duplicated breadcrumbs on tombstone-merged native crash events ([#&#8203;5888](https://github.com/getsentry/sentry-java/pull/5888)) - Prevent a class of Session Replay deadlocks by confining lifecycle state changes to Android's main thread ([#&#8203;5965](https://github.com/getsentry/sentry-java/pull/5965)) - Symbolicate tombstone native frames for libraries loaded directly from APKs ([#&#8203;5992](https://github.com/getsentry/sentry-java/pull/5992)) - Prevent a deadlock between the app start extension and the Android performance event processor ([#&#8203;6007](https://github.com/getsentry/sentry-java/pull/6007)) ##### Performance - Defer starting Session Replay off the SDK initialization critical path ([#&#8203;5965](https://github.com/getsentry/sentry-java/pull/5965)) - Use manifest metadata resolved at build time to reduce Android SDK initialization overhead ([#&#8203;5976](https://github.com/getsentry/sentry-java/pull/5976)) ##### Dependencies - Bump Native SDK from v0.16.2 to v0.16.4 ([#&#8203;5962](https://github.com/getsentry/sentry-java/pull/5962), [#&#8203;5996](https://github.com/getsentry/sentry-java/pull/5996)) - [changelog](https://github.com/getsentry/sentry-native/blob/master/CHANGELOG.md#0164) - [diff](https://github.com/getsentry/sentry-native/compare/0.16.2...0.16.4) ### [`v8.53.0`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8530) [Compare Source](https://github.com/getsentry/sentry-java/compare/8.52.0...8.53.0) ##### Features - Allow child spans to use explicit start timestamps through `ISpan` ([#&#8203;5929](https://github.com/getsentry/sentry-java/pull/5929)) - Make `ISpan.startChild` overloads with `SpanOptions` public ([#&#8203;5927](https://github.com/getsentry/sentry-java/pull/5927)) - Add `Sentry.feedback().enableOnShake()`, `Sentry.feedback().disableOnShake()`, and `Sentry.feedback().isOnShakeEnabled()` to toggle and query shake-to-report at runtime ([#&#8203;5827](https://github.com/getsentry/sentry-java/pull/5827)) ##### Improvements - Remove `ApiStatus.Experimental` annotation from `SentrySQLiteDriver` ([#&#8203;5938](https://github.com/getsentry/sentry-java/pull/5938)) ##### Fixes - Clear contexts when calling `Scope.clear()` ([#&#8203;5902](https://github.com/getsentry/sentry-java/pull/5902)) - Preserve custom `Throwable` identities when R8 optimizes Android apps ([#&#8203;5881](https://github.com/getsentry/sentry-java/pull/5881)) - Report the correct cpu usage for the first performance sample of a transaction, which was measured against the time since device boot ([#&#8203;5926](https://github.com/getsentry/sentry-java/pull/5926)) - Prevent an ANR when the Session Replay video encoder gets stuck ([#&#8203;5842](https://github.com/getsentry/sentry-java/pull/5842)) - Some hardware encoders never signal end-of-stream, which made the replay worker spin forever while holding the encoder lock. The app's lifecycle callbacks then blocked on that lock and the app froze until the system killed it. The encoder now gives up instead of spinning, and closing the replay cache no longer waits indefinitely for a wedged encoder. ##### Performance - Read the clock once per performance collection round instead of once per in-flight transaction ([#&#8203;5934](https://github.com/getsentry/sentry-java/pull/5934)) - Reduce allocations while collecting cpu usage during transactions by reading the process cpu time via `Process.getElapsedCpuTime()` instead of parsing `/proc/self/stat` (33.6kB to 16 bytes per sample on a Pixel 3) ([#&#8203;5926](https://github.com/getsentry/sentry-java/pull/5926)) - Store performance measurements as primitives, removing a boxed allocation per measurement per performance sample ([#&#8203;5935](https://github.com/getsentry/sentry-java/pull/5935)) ##### Dependencies - Bump Native SDK from v0.16.1 to v0.16.2 ([#&#8203;5910](https://github.com/getsentry/sentry-java/pull/5910)) - [changelog](https://github.com/getsentry/sentry-native/blob/master/CHANGELOG.md#0162) - [diff](https://github.com/getsentry/sentry-native/compare/0.16.1...0.16.2) ### [`v8.52.0`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8520) [Compare Source](https://github.com/getsentry/sentry-java/compare/8.51.0...8.52.0) ##### Fixes - Restore the interrupt flag when cached envelope processing is interrupted between files ([#&#8203;5884](https://github.com/getsentry/sentry-java/pull/5884)) - Reduce false-positive SDK crash attribution for host app SQLite cursor crashes ([#&#8203;5883](https://github.com/getsentry/sentry-java/pull/5883)) - Prevent inflated cold app start when the OS spawns the process in the background (e.g. FCM push) on API 35+ ([#&#8203;5841](https://github.com/getsentry/sentry-java/pull/5841), [#&#8203;5880](https://github.com/getsentry/sentry-java/pull/5880)) - Preserve single-sample ANR profile chunks so profiles remain available on ANR events ([#&#8203;5872](https://github.com/getsentry/sentry-java/pull/5872)) - Avoid a CPU busy-loop when recording discarded log or metric envelopes under rate limiting ([#&#8203;5835](https://github.com/getsentry/sentry-java/pull/5835)) - `ClientReportRecorder` now reads the item count from the envelope item header instead of deserializing the payload, which under sustained rate limiting could pin CPU cores while repeatedly throwing exceptions - Report tasks handed to a no-op `ISentryExecutorService` as cancelled ([#&#8203;5874](https://github.com/getsentry/sentry-java/pull/5874)) - `NoOpSentryExecutorService` previously returned a `Future` that was never run and never cancelled, so callers could not tell a dropped task from a queued one and `get()` would block until its timeout ##### Performance - Defer use of reflection by `SentryFrameMetricsCollector` during `Sentry.init` ([#&#8203;5886](https://github.com/getsentry/sentry-java/pull/5886)) - Avoid waiting up to `shutdownTimeoutMillis` when closing the SDK with a pending transaction timeout or session-end task ([#&#8203;5851](https://github.com/getsentry/sentry-java/pull/5851)) - Use `RGB_565` instead of `ARGB_8888` for screenshot and replay capture bitmaps, halving per-frame memory usage ([#&#8203;5821](https://github.com/getsentry/sentry-java/pull/5821)) - Remove an unused lock from `SentryPerformanceProvider`, which was allocated on every cold start in `ContentProvider.onCreate` without ever being acquired ([#&#8203;5871](https://github.com/getsentry/sentry-java/pull/5871)) - Reduce main-thread allocations when parsing the app start profiling config ([#&#8203;5867](https://github.com/getsentry/sentry-java/pull/5867)) - Batch and coalesce scope-persistence disk writes to reduce startup cost ([#&#8203;5791](https://github.com/getsentry/sentry-java/pull/5791)) - Scope mutations are now coalesced (latest value per field) and breadcrumbs are appended in batches behind a single fsync, instead of one synchronous disk write per mutation. - Reduce the number of SDK threads: the `HostnameCache` worker thread now times out while idle instead of staying alive for the whole process lifetime ([#&#8203;5817](https://github.com/getsentry/sentry-java/pull/5817)) ##### Dependencies - Bump Native SDK from v0.16.0 to v0.16.1 ([#&#8203;5879](https://github.com/getsentry/sentry-java/pull/5879)) - [changelog](https://github.com/getsentry/sentry-native/blob/master/CHANGELOG.md#0161) - [diff](https://github.com/getsentry/sentry-native/compare/0.16.0...0.16.1) ### [`v8.51.0`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8510) [Compare Source](https://github.com/getsentry/sentry-java/compare/8.50.1...8.51.0) ##### Features - Use Android's `ProfilingManager` (Perfetto) for continuous profiling on API 35+ devices ([#&#8203;5251](https://github.com/getsentry/sentry-java/pull/5251)) - On API 35+ devices, continuous profiling now automatically uses Android's system `ProfilingManager` with Perfetto-based stack sampling, providing lower-overhead and more accurate profiles. No configuration change is required. - Devices below API 35 keep using the legacy `Debug`-based profiler. - Added an `enableLegacyProfiling` option (default `true`) to disable the legacy `Debug`-based profiler. Setting it to `false` disables continuous profiling on API < 35 devices as well as transaction-based profiling (`profilesSampleRate`/`profilesSampler`) on all devices, since transaction-based profiling is not supported by Perfetto. - It can also be configured via the `io.sentry.profiling.enable-legacy-profiling` manifest flag. - See the [Android profiling docs](https://docs.sentry.io/platforms/android/profiling/) for details. ##### Behavioral Changes - The outbox and cache directories are no longer created by `Sentry.init` ([#&#8203;5792](https://github.com/getsentry/sentry-java/pull/5792)) - They are now created lazily by whichever component first writes into them, off the init thread. As a result, the directories at `SentryOptions.getOutboxPath()` and `SentryOptions.getCacheDirPath()` are not guaranteed to exist once `Sentry.init` returns. - If you write envelopes into the outbox path yourself instead of going through the SDK — as hybrid SDKs do for `captureEnvelope` — create the directory first, e.g. `new File(outboxPath).mkdirs()`. ##### Improvements - Skip building Android manifest metadata debug log messages when debug logging is disabled, reducing allocations during SDK init ([#&#8203;5790](https://github.com/getsentry/sentry-java/pull/5790)) ##### Fixes - Use the original app build's ProGuard UUID for ANR profile chunks ([#&#8203;5852](https://github.com/getsentry/sentry-java/pull/5852)) - Fix potential ANR/deadlock in Session Replay when `checkCanRecord` runs on the replay executor thread ([#&#8203;5837](https://github.com/getsentry/sentry-java/pull/5837)) - Prevent concurrent PixelCopy access during Session Replay masking and bitmap cleanup ([#&#8203;5808](https://github.com/getsentry/sentry-java/pull/5808)) - Release `MediaMuxer` when the replay video encoder fails to start to avoid a resource leak ([#&#8203;5607](https://github.com/getsentry/sentry-java/pull/5607)) - Set the correct platform (`android` instead of `java`) on ANR profile chunks so they are billed as UI Profile Hours rather than Continuous Profile Hours ([#&#8203;5836](https://github.com/getsentry/sentry-java/pull/5836)) - Skip encoding and capturing buffered session replay segments while rate-limited, so we don't waste resources on envelopes the transport will drop ([#&#8203;5813](https://github.com/getsentry/sentry-java/pull/5813)) - These skipped replays are now reported as `ratelimit_backoff` discarded events in client reports, so they no longer disappear from drop statistics. One event is recorded per buffer flush rather than per segment. - Buffer mode is also kept while rate-limited instead of switching to session mode, so the rolling buffer stays warm and the next error after the rate limit expires can send a complete replay. ##### Performance - Create the outbox and cache directories lazily in their consumers instead of during SDK init, moving the `mkdirs()` calls off the init (main) thread ([#&#8203;5792](https://github.com/getsentry/sentry-java/pull/5792)) - Reduce the number of SDK threads: `LifecycleWatcher` now schedules the session-end task on the shared timer executor instead of creating a dedicated `java.util.Timer` thread ([#&#8203;5819](https://github.com/getsentry/sentry-java/pull/5819)) - Reduce the number of SDK threads: `RateLimiter` now schedules its rate-limit-lifted notifications on the shared timer executor instead of creating a dedicated `java.util.Timer` thread ([#&#8203;5814](https://github.com/getsentry/sentry-java/pull/5814)) - Speed up deserialization of arbitrary JSON objects by typing numbers without throwing exceptions ([#&#8203;5783](https://github.com/getsentry/sentry-java/pull/5783)) ##### Dependencies - Bump Native SDK from v0.15.4 to v0.16.0 ([#&#8203;5845](https://github.com/getsentry/sentry-java/pull/5845)) - [changelog](https://github.com/getsentry/sentry-native/blob/master/CHANGELOG.md#0160) - [diff](https://github.com/getsentry/sentry-native/compare/0.15.4...0.16.0) ### [`v8.50.1`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8501) [Compare Source](https://github.com/getsentry/sentry-java/compare/8.50.0...8.50.1) ##### Fixes - Pin the published Sentry Android SDK's AAR metadata `minCompileSdk` to our `minSdk` (`21`) instead of AGP 9's new default of the SDK's own `compileSdk` (`37`), so apps that depend on the SDK aren't forced to raise their `compileSdk` ([#&#8203;5823](https://github.com/getsentry/sentry-java/pull/5823)) ### [`v8.50.0`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8500) [Compare Source](https://github.com/getsentry/sentry-java/compare/8.49.0...8.50.0) ##### Android 17 support - We've put Android 17 through a set of rigorous tests. We're now officially giving it the Sentry stamp of compatibility .([#&#8203;5796](https://github.com/getsentry/sentry-java/pull/5796)) ##### Fixes - Reduce main-thread work during `Sentry.init` by resolving the shake-detector accelerometer off the main thread (\~1.75ms on a Pixel 10) ([#&#8203;5784](https://github.com/getsentry/sentry-java/pull/5784)) - Backfill release, environment, distribution, tags, and app version/build—and use the matching replay-on-error sample rate—for `ApplicationExitInfo` ANR and native crash events captured before SDK initialization, without reusing options cached by a later app update ([#&#8203;5762](https://github.com/getsentry/sentry-java/pull/5762)) - `SentryTagModifierNode.isImportantForBounds` now matches the default behavior and returns `true` ([#&#8203;5789](https://github.com/getsentry/sentry-java/pull/5789)) - Prevent a `StackOverflowError` when a `beforeSend`, `beforeBreadcrumb`, `beforeSendLog`, or `beforeEnvelope` callback triggers another capture (directly or through a logging integration such as Timber) ([#&#8203;5737](https://github.com/getsentry/sentry-java/pull/5737)) - Captures made from within a user callback (event, transaction, breadcrumb, log, envelope, or check-in) are now dropped while that callback runs, instead of recursing. Captures made by event processors are unaffected. - Replace deprecated `ThrowableProxy` with `LogEvent#getThrown()` in `sentry-log4j2` ([#&#8203;5751](https://github.com/getsentry/sentry-java/pull/5751)) ##### Dependencies - Bump Native SDK from v0.15.3 to v0.15.4 ([#&#8203;5793](https://github.com/getsentry/sentry-java/pull/5793)) - [changelog](https://github.com/getsentry/sentry-native/blob/master/CHANGELOG.md#0154) - [diff](https://github.com/getsentry/sentry-native/compare/0.15.3...0.15.4) - The SDK is now compiled with Android Gradle Plugin 9.2.1 ([#&#8203;5779](https://github.com/getsentry/sentry-java/pull/5779)) ### [`v8.49.0`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8490) [Compare Source](https://github.com/getsentry/sentry-java/compare/8.48.0...8.49.0) ##### Features - Session Replay: Record segment names (transaction names) ([#&#8203;5763](https://github.com/getsentry/sentry-java/pull/5763)) - Add `io.sentry:sentry-opentelemetry-bom` to align Sentry OpenTelemetry modules with tested OpenTelemetry dependencies ([#&#8203;5629](https://github.com/getsentry/sentry-java/pull/5629)) - Spring Boot Gradle plugin: add the Sentry BOM to `dependencyManagement`; explicit imports are applied after Spring Boot's implicit BOM ```kotlin dependencyManagement { imports { mavenBom("io.sentry:sentry-opentelemetry-bom:<sentry-version>") } } ``` - Gradle: import it as a platform and omit versions from Sentry OpenTelemetry and OpenTelemetry dependencies ```kotlin implementation(platform("io.sentry:sentry-opentelemetry-bom:<sentry-version>")) ``` - Maven: import it before Spring Boot's BOM in the same `<dependencyManagement>` block, or in the child POM when using `spring-boot-starter-parent` ```xml <dependency> <groupId>io.sentry</groupId> <artifactId>sentry-opentelemetry-bom</artifactId> <version>${sentry.version}</version> <type>pom</type> <scope>import</scope> </dependency> ``` ##### Fixes - Session Replay: Fix first recording segment missing for replays in `buffer` mode ([#&#8203;5753](https://github.com/getsentry/sentry-java/pull/5753)) - Session Replay: Fix error-to-replay linkage in `buffer` mode ([#&#8203;5754](https://github.com/getsentry/sentry-java/pull/5754)) - Prevent logs and metrics from remaining queued after a flush scheduling race ([#&#8203;5756](https://github.com/getsentry/sentry-java/pull/5756)) - Fix main thread identification for tombstone (native crash) events ([#&#8203;5742](https://github.com/getsentry/sentry-java/pull/5742)) - Prevent malformed JDBC URLs, which may contain credentials, from being printed to stdout ([#&#8203;5656](https://github.com/getsentry/sentry-java/pull/5656)) - Restrict JVM-global proxy authentication credentials to challenges from the configured proxy host ([#&#8203;5656](https://github.com/getsentry/sentry-java/pull/5656)) - Sanitize Spring 7 and Spring Jakarta WebClient span descriptions to prevent embedded URL credentials from being sent to Sentry ([#&#8203;5656](https://github.com/getsentry/sentry-java/pull/5656)) - Respect `tracePropagationTargets` when injecting Sentry tracing headers through the OpenTelemetry OTLP propagator ([#&#8203;5656](https://github.com/getsentry/sentry-java/pull/5656)) ##### Performance - Schedule transaction idle/deadline timeouts on a shared, dedicated executor instead of spawning a `Timer` thread per transaction ([#&#8203;5670](https://github.com/getsentry/sentry-java/pull/5670)) ##### Dependencies - Bump OpenTelemetry to support Spring Boot 4.1 ([#&#8203;5573](https://github.com/getsentry/sentry-java/pull/5573)) - If this causes issues for you because you are also using Spring Boot Dependency Management Plugin (io.spring.dependency-management), which may downgrade the OpenTelemetry SDK, please have a look at the changelog entry above that explains how to use `sentry-opentelemetry-bom`. - OpenTelemetry to 1.63.0 (was 1.60.1) - OpenTelemetry Instrumentation to 2.29.0 (was 2.26.0) - OpenTelemetry Instrumentation Alpha to 2.29.0-alpha (was 2.26.0-alpha) - OpenTelemetry Semantic Conventions to 1.42.0 (was 1.40.0) - OpenTelemetry Semantic Conventions Alpha to 1.42.0-alpha (was 1.40.0-alpha) - Bump Native SDK from v0.15.2 to v0.15.3 ([#&#8203;5728](https://github.com/getsentry/sentry-java/pull/5728)) - [changelog](https://github.com/getsentry/sentry-native/blob/master/CHANGELOG.md#0153) - [diff](https://github.com/getsentry/sentry-native/compare/0.15.2...0.15.3) ### [`v8.48.0`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8480) [Compare Source](https://github.com/getsentry/sentry-java/compare/8.47.0...8.48.0) ##### Features - Add `Sentry.extendAppStart()`, `Sentry.finishExtendedAppStart()`, and `Sentry.getExtendedAppStartSpan()` to extend the app start measurement past the first frame for extra launch-time work on Android ([#&#8203;5604](https://github.com/getsentry/sentry-java/pull/5604)) - Requires standalone app start tracing (`options.isEnableStandaloneAppStartTracing`). Call `extendAppStart()` in `Application.onCreate` after SDK init and `finishExtendedAppStart()` when done: ```kotlin Sentry.extendAppStart() // Optionally, retrieve the extended app start span to attach your own child spans val child = Sentry.getExtendedAppStartSpan()?.startChild("preload", "Preload resources") // ... extra launch-time work ... child?.finish() Sentry.finishExtendedAppStart() ``` - Add `trace_metric_byte` data category and record byte-level client reports when trace metrics are discarded ([#&#8203;5626](https://github.com/getsentry/sentry-java/pull/5626)) - Expose sentry-native's heartbeat-based app-hang detection through `SentryAndroidOptions` ([#&#8203;5623](https://github.com/getsentry/sentry-java/pull/5623)) - Enable via `setEnableNdkAppHangTracking(true)` (disabled by default) and tune the timeout with `setNdkAppHangTimeoutIntervalMillis(...)` (default `5000` ms), or the `io.sentry.ndk.app-hang.enable` / `io.sentry.ndk.app-hang.timeout-interval-millis` manifest entries - Intended for hybrid SDKs: emit the heartbeat by calling the native `sentry_app_hang_heartbeat()` from the thread you want monitored. Independent of the JVM-based ANR detection (`setAnrEnabled`) - Support the `io.sentry.tombstone.report-historical` manifest option to enable historical tombstone reporting via `AndroidManifest.xml` `<meta-data>` ([#&#8203;5683](https://github.com/getsentry/sentry-java/pull/5683)) ##### Fixes - Fix `NoSuchMethodError` from using `Math.floorDiv`/`Math.floorMod` overloads that are unavailable on Java 8 ([#&#8203;5743](https://github.com/getsentry/sentry-java/pull/5743)) - Fix main thread identification parsing for ApplicationExitInfo ANRs ([#&#8203;5733](https://github.com/getsentry/sentry-java/pull/5733)) - Do not send threads without stacktraces for ApplicationExitInfo ANRs ([#&#8203;5733](https://github.com/getsentry/sentry-java/pull/5733)) - Record byte-level client reports when event processors discard logs or trace metrics ([#&#8203;5718](https://github.com/getsentry/sentry-java/pull/5718)) - Name the device-info caching thread `SentryDeviceInfoCache` so all threads spawned by the SDK are identifiable ([#&#8203;5684](https://github.com/getsentry/sentry-java/pull/5684)) - Apply byte-category rate limits to log and trace metric envelope items ([#&#8203;5716](https://github.com/getsentry/sentry-java/pull/5716)) ##### Performance - Skip `Hint` allocation in `Scope.addBreadcrumb` when no `beforeBreadcrumb` callback is set ([#&#8203;5689](https://github.com/getsentry/sentry-java/pull/5689)) - Speed up scope persistence by detecting the Sentry executor thread via a marker instead of a `Thread.getName()` name scan on every scope mutation ([#&#8203;5691](https://github.com/getsentry/sentry-java/pull/5691)) - Remove executor prewarm during SDK init ([#&#8203;5681](https://github.com/getsentry/sentry-java/pull/5681)) - The single-threaded `SentryExecutorService` queued the prewarm work ahead of the first useful task, so it could only delay init work, never speed it up; the thread and class loading it warmed are paid identically by the first real task submitted right after. ##### Dependencies - Bump Native SDK from v0.15.2 to v0.15.3 ([#&#8203;5623](https://github.com/getsentry/sentry-java/pull/5623)) - [changelog](https://github.com/getsentry/sentry-native/blob/master/CHANGELOG.md#0153) - [diff](https://github.com/getsentry/sentry-native/compare/0.15.2...0.15.3) ### [`v8.47.0`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8470) [Compare Source](https://github.com/getsentry/sentry-java/compare/8.46.0...8.47.0) ##### Behavioral Changes - `SentryOkHttpInterceptor::intercept` now throws `IOException`. This is a source-only and Java-only breaking change ([#&#8203;5654](https://github.com/getsentry/sentry-java/pull/5654)) ##### Fixes - Fix fragment tracing not working with detach/attach navigation ([#&#8203;5660](https://github.com/getsentry/sentry-java/pull/5660)) - Don't start a redundant UI interaction transaction when a transaction is already bound to the Scope ([#&#8203;5491](https://github.com/getsentry/sentry-java/issues/5491)) - Previously, `SentryGestureListener` always 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. - Fix potential NPE within `Scope.endSession()` ([#&#8203;5657](https://github.com/getsentry/sentry-java/pull/5657)) - Fix memory leak in `ReplayIntegration` due to persisting executor not being shut down ([#&#8203;5627](https://github.com/getsentry/sentry-java/pull/5627)) - Fix AbstractMethodError when compose-ui 1.11+ is used in combination with `Modifier.sentryTag()` or the Sentry Kotlin compiler plugin ([#&#8203;5672](https://github.com/getsentry/sentry-java/pull/5672)) ##### Performance - Speed up touch gesture target detection on deeply nested view hierarchies by hit-testing in local coordinates instead of calling `getLocationOnScreen` per view ([#&#8203;5595](https://github.com/getsentry/sentry-java/pull/5595)) - Probe class availability without initializing the class during SDK init ([#&#8203;5635](https://github.com/getsentry/sentry-java/pull/5635)) - Avoid constructing an exception per view when resolving view ids during view-hierarchy and gesture capture ([#&#8203;5631](https://github.com/getsentry/sentry-java/pull/5631)) - Start the frame metrics thread lazily on first collection instead of during SDK init ([#&#8203;5641](https://github.com/getsentry/sentry-java/pull/5641)) - Reduce `SentryId` and `SpanId` allocation overhead by replacing their per-instance `LazyEvaluator` (and its lock) with a lightweight lazily-generated `String`. ([#&#8203;5645](https://github.com/getsentry/sentry-java/pull/5645)) - Lazily allocate the `ReentrantLock` backing `AutoClosableReentrantLock` to avoid eager lock allocations for SDK objects that never contend during `SentryAndroid.init` ([#&#8203;5643](https://github.com/getsentry/sentry-java/pull/5643)) ### [`v8.46.0`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8460) [Compare Source](https://github.com/getsentry/sentry-java/compare/8.45.0...8.46.0) ##### Fixes - Session Replay: Fix network detail response body size being unknown for gzip-compressed responses ([#&#8203;5592](https://github.com/getsentry/sentry-java/pull/5592)) ##### Behavioral Changes - Collections returned by scope (e.g. `getBreadcrumbs`, `getTags`, `getAttachments`) are shared state and should not be mutated. ([#&#8203;5541](https://github.com/getsentry/sentry-java/pull/5541)) - Previously, when going through `CombinedScopeView`, we were returning a copy where mutations didn't show up in the underlying scopes. - This has now changed in order to reduce SDK overhead. - `Date` objects returned by SDK data model getters are shared state and should not be mutated. ([#&#8203;5603](https://github.com/getsentry/sentry-java/pull/5603)) - Previously, these getters returned defensive copies for some date fields. - This has now changed in order to reduce SDK overhead. ##### Performance - Reduce writer buffer size from 8192 to 512 ([#&#8203;5544](https://github.com/getsentry/sentry-java/pull/5544)) - Remove redundant event map copies ([#&#8203;5536](https://github.com/getsentry/sentry-java/pull/5536)) - Optimize combined scope by adding an early return if only one scope has data ([#&#8203;5541](https://github.com/getsentry/sentry-java/pull/5541)) - Reduce model access overhead by avoiding defensive `Date` copies in SDK data model getters. ([#&#8203;5603](https://github.com/getsentry/sentry-java/pull/5603)) - Reduce timestamp parsing and formatting overhead with Sentry-specific ISO-8601 handling. ([#&#8203;5602](https://github.com/getsentry/sentry-java/pull/5602)) - Reduce JSON serialization overhead by creating the reflection serializer only when unknown-object fallback serialization is needed. ([#&#8203;5601](https://github.com/getsentry/sentry-java/pull/5601)) - Reduce JSON serialization overhead by allocating reflection cycle-tracking state only when reflection serialization is used. ([#&#8203;5600](https://github.com/getsentry/sentry-java/pull/5600)) - Reduce context serialization overhead by sorting key snapshots with arrays instead of temporary lists. ([#&#8203;5599](https://github.com/getsentry/sentry-java/pull/5599)) - Reduce breadcrumb allocation overhead by creating the `Breadcrumb` data map only when data is added. ([#&#8203;5598](https://github.com/getsentry/sentry-java/pull/5598)) - Reduce JSON serialization overhead by lowering the initial `JsonWriter` nesting stack size while preserving on-demand growth. ([#&#8203;5591](https://github.com/getsentry/sentry-java/pull/5591)) - Reduce timestamp helper overhead by replacing unnecessary `Calendar` usage in `DateUtils` with direct `Date` creation. ([#&#8203;5589](https://github.com/getsentry/sentry-java/pull/5589)) - Reduce Android startup overhead by using the default timezone directly on older devices or when no timezone info is available in the locale. ([#&#8203;5587](https://github.com/getsentry/sentry-java/pull/5587)) ### [`v8.45.0`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8450) [Compare Source](https://github.com/getsentry/sentry-java/compare/8.44.1...8.45.0) ##### Features - On Android 15+ (API 35), the standalone `app.start` transaction now reports why the OS started the process via `app.vitals.start.reason` trace data (e.g. `launcher`, `broadcast`, `service`, `content_provider`), derived from `ApplicationStartInfo.getReason()`. You can search and group by this attribute in the Trace Explorer. ([#&#8203;5552](https://github.com/getsentry/sentry-java/pull/5552)) ##### Fixes - Use `System.nanoTime()` for cron check-in duration measurement to avoid incorrect durations from wall-clock adjustments ([#&#8203;5611](https://github.com/getsentry/sentry-java/pull/5611)) - Fix crash when `getHistoricalProcessStartReasons` is called from an isolated or wrong-userId process ([#&#8203;5597](https://github.com/getsentry/sentry-java/pull/5597)) - Release `MediaMuxer` when a replay segment has no encodable frames to avoid a resource leak ([#&#8203;5583](https://github.com/getsentry/sentry-java/pull/5583)) ##### Dependencies - Bump Native SDK from v0.15.1 to v0.15.2 ([#&#8203;5610](https://github.com/getsentry/sentry-java/pull/5610)) - [changelog](https://github.com/getsentry/sentry-native/blob/master/CHANGELOG.md#0152) - [diff](https://github.com/getsentry/sentry-native/compare/0.15.1...0.15.2) ### [`v8.44.1`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8441) [Compare Source](https://github.com/getsentry/sentry-java/compare/8.44.0...8.44.1) ##### Fixes - Fix `FirstDrawDoneListener` leaking an `OnGlobalLayoutListener` per registration ([#&#8203;5567](https://github.com/getsentry/sentry-java/pull/5567)) ##### Features - Add experimental `SentrySQLiteDriver` to `sentry-android-sqlite` for instrumenting `androidx.sqlite.SQLiteDriver` ([#&#8203;5563](https://github.com/getsentry/sentry-java/pull/5563)) - To use it, pass `SQLiteDriver` to `SentrySQLiteDriver.create(...)` - Requires `androidx.sqlite:sqlite` (2.5.0+) on runtime classpath (typically provided by Room or SQLDelight) ##### Dependencies - Bump Native SDK from v0.15.0 to v0.15.1 ([#&#8203;5570](https://github.com/getsentry/sentry-java/pull/5570)) - [changelog](https://github.com/getsentry/sentry-native/blob/master/CHANGELOG.md#0151) - [diff](https://github.com/getsentry/sentry-native/compare/0.15.0...0.15.1) ### [`v8.44.0`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8440) [Compare Source](https://github.com/getsentry/sentry-java/compare/8.43.3...8.44.0) ##### Features - Add `enableStandaloneAppStartTracing` option to send app start as a standalone transaction instead of attaching it as a child span of the first activity transaction ([#&#8203;5342](https://github.com/getsentry/sentry-java/pull/5342)) - Disabled by default; opt in via `options.isEnableStandaloneAppStartTracing = true` or manifest meta-data `io.sentry.standalone-app-start-tracing.enable` - Emits a transaction named `App Start` with op `app.start`, carrying the existing app start measurements and phase spans (`process.load`, `contentprovider.load`, `application.load`, activity lifecycle spans) as direct children of the root - The standalone transaction shares the same `traceId` as the first `ui.load` activity transaction so they remain linked in the trace view - Also covers non-activity starts (broadcast receivers, services, content providers) ##### Improvements - Reduce boxing to improve performance ([#&#8203;5523](https://github.com/getsentry/sentry-java/pull/5523), [#&#8203;5527](https://github.com/getsentry/sentry-java/pull/5527), [#&#8203;5551](https://github.com/getsentry/sentry-java/pull/5551)) - Replace `Date` with a unix timestamp in `SentryNanotimeDate` to improve performance ([#&#8203;5550](https://github.com/getsentry/sentry-java/pull/5550)) - `SentryNanotimeDate` is now marked `@ApiStatus.Internal`. A new `(long unixDateMillis, long nanos)` constructor was added, where `unixDateMillis` is milliseconds since the epoch. The existing `(Date, long)` constructor is retained but deprecated. ##### Dependencies - Upgrade to asyncProfiler 4.4 ([#&#8203;5418](https://github.com/getsentry/sentry-java/pull/5418)) - Bump Native SDK from v0.14.2 to v0.15.0 ([#&#8203;5528](https://github.com/getsentry/sentry-java/pull/5528)) - [changelog](https://github.com/getsentry/sentry-native/blob/master/CHANGELOG.md#0150) - [diff](https://github.com/getsentry/sentry-native/compare/0.14.2...0.15.0) ##### Fixes - Fix attachments being duplicated on native events that carry scope attachments ([#&#8203;5548](https://github.com/getsentry/sentry-java/pull/5548)) - Fix performance collector scheduling many tasks in a row ([#&#8203;5524](https://github.com/getsentry/sentry-java/pull/5524)) ### [`v8.43.3`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8433) [Compare Source](https://github.com/getsentry/sentry-java/compare/8.43.2...8.43.3) ##### Fixes - Fix crash when `getHistoricalProcessStartReasons` is called from an isolated or wrong-userId process ([#&#8203;5597](https://github.com/getsentry/sentry-java/pull/5597)) ### [`v8.43.2`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8432) [Compare Source](https://github.com/getsentry/sentry-java/compare/8.43.1...8.43.2) ##### Improvements - Improve SDK init performance by replacing `java.net.URI` with custom string parsing for DSN ([#&#8203;5448](https://github.com/getsentry/sentry-java/pull/5448)) - Remove unnecessary boxing to improve performance ([#&#8203;5520](https://github.com/getsentry/sentry-java/pull/5520)) ##### Fixes - Session Replay: Fix `VerifyError` in Compose masking under DexGuard/R8 obfuscation ([#&#8203;5507](https://github.com/getsentry/sentry-java/pull/5507)) - Session Replay: Fix Compose view masking not working on obfuscated/minified builds ([#&#8203;5503](https://github.com/getsentry/sentry-java/pull/5503)) ### [`v8.43.1`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8431) [Compare Source](https://github.com/getsentry/sentry-java/compare/8.43.0...8.43.1) ##### Fixes - Session Replay: Fix replay recording freezing on screens with continuous animations ([#&#8203;5489](https://github.com/getsentry/sentry-java/pull/5489)) - Session Replay: Populate `trace_ids` in replay events to enable searching replays by trace ID ([#&#8203;5473](https://github.com/getsentry/sentry-java/pull/5473)) ### [`v8.43.0`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8430) [Compare Source](https://github.com/getsentry/sentry-java/compare/8.42.0...8.43.0) ##### Features - Session Replay: Add `ReplayFrameObserver` for observing captured replay frames ([#&#8203;5386](https://github.com/getsentry/sentry-java/pull/5386)) ```kotlin SentryAndroid.init(context) { options -> options.sessionReplay.frameObserver = SentryReplayOptions.ReplayFrameObserver { hint, frameTimestamp, screenName -> val bitmap = hint.getAs(TypeCheckHint.REPLAY_FRAME_BITMAP, Bitmap::class.java) if (bitmap != null) { try { // Process the masked replay frame myAnalyzer.processFrame(bitmap, frameTimestamp, screenName) } finally { bitmap.recycle() } } } } ``` - Parse ART memory and garbage collector info from ANR tombstones into ART context ([#&#8203;5428](https://github.com/getsentry/sentry-java/pull/5428)) ### [`v8.42.0`](https://github.com/getsentry/sentry-java/blob/HEAD/CHANGELOG.md#8420) [Compare Source](https://github.com/getsentry/sentry-java/compare/8.41.0...8.42.0) ##### Features - Add option to attach raw tombstone protobuf on native crash events ([#&#8203;5446](https://github.com/getsentry/sentry-java/pull/5446)) - Enable via `options.isAttachRawTombstone = true` or manifest: `<meta-data android:name="io.sentry.tombstone.attach-raw" android:value="true" />` - Add API to clear feature flags from scopes ([#&#8203;5426](https://github.com/getsentry/sentry-java/pull/5426)) - Add support to configure reporting historical ANRs via `AndroidManifest.xml` using the `io.sentry.anr.report-historical` attribute ([#&#8203;5387](https://github.com/getsentry/sentry-java/pull/5387)) ##### Dependencies - Bump Gradle from v9.5.0 to v9.5.1 ([#&#8203;5419](https://github.com/getsentry/sentry-java/pull/5419)) - [changelog](https://github.com/gradle/gradle/blob/master/CHANGELOG.md#v951) - [diff](https://github.com/gradle/gradle/compare/v9.5.0...v9.5.1) - Bump Native SDK from v0.14.0 to v0.14.2 ([#&#8203;5433](https://github.com/getsentry/sentry-java/pull/5433), [#&#8203;5441](https://github.com/getsentry/sentry-java/pull/5441)) - [changelog](https://github.com/getsentry/sentry-native/blob/master/CHANGELOG.md#0142) - [diff](https://github.com/getsentry/sentry-native/compare/0.14.0...0.14.2) - Bump SAGP (Sentry Android Gradle Plugin) from v6.0.0-alpha.6 to v6.6.0 ([#&#8203;5427](https://github.com/getsentry/sentry-java/pull/5427)) - [changelog](https://github.com/getsentry/sentry-android-gradle-plugin/blob/main/CHANGELOG.md) - [diff](https://github.com/getsentry/sentry-android-gradle-plugin/compare/6.0.0-alpha.6...6.6.0) </details> <details> <summary>lysine-dev/okhttp (com.squareup.okhttp3:okhttp-jvm)</summary> ### [`v5.5.1`](https://github.com/lysine-dev/okhttp/blob/HEAD/CHANGELOG.md#Version-551) *2026_10_22* - Fix: \[Block 8 compromised eMudhra intermediate certificates]\[Mozilla_eMudhra]. Note that this update is not necessary for Android devices with Google Play Services as Google has issued an \[automatic update]\[Google_eMudhra]. This change protects JVMs and AOSP devices that are exposed to the compromised certificates. ### [`v5.5.0`](https://github.com/lysine-dev/okhttp/blob/HEAD/CHANGELOG.md#Version-550) *2026-08-16* This release introduces **opt-in** support for \[Encrypted Client Hello (ECH)]. This new feature improves user privacy by encrypting domain names in transit. With regular TLS, your coffee shop’s Wi-Fi router can see that you’re visiting *wikipedia.com*, but it cannot see which page you’re looking at. With ECH, the router observes only the IP address. This additional privacy is most effective on sites hosted by big CDNs because the IP address doesn’t imply a particular website. This requires ECH support in the platform’s TLS stack. Today this is only Android 17 (API 37, released June 2026). When other TLS stacks add ECH support, we'll integrate them. ECH took a lot of work to implement because the encryption keys are published over DNS in the \[HTTPS resource record], and we needed to write new code to fetch these records. This release includes a major update to OkHttp’s DNS API: it now supports multiple resource record types (not just IP addresses!), asynchronous streaming results, and in-memory caching. To opt in, you can use `DnsOverHttps`: ```kotlin // DnsOverHttps itself uses OkHttpClient. Build both clients upon the // same bootstrap client so they share a connection pool and dispatcher. val bootstrapClient = OkHttpClient() // This sample uses Cloudflare's 1.1.1.1 DnsOverHttps service. val client = bootstrapClient.newBuilder() .dns(DnsOverHttps.Builder() .client(bootstrapClient) .url("https://1.1.1.1/dns-query".toHttpUrl()) .build()) .build() ``` You could also opt in with our new `AndroidDns` API. Unfortunately, the privacy benefits of ECH are thwarted because its DNS queries are not encrypted by default. ```kotlin // AndroidDns fetches the HTTPS DNS resource records necessary for ECH. val client = OkHttpClient.Builder() .dns(AndroidDns()) .build() ``` - New: OkHttp artifacts are now signed with our \[new signing key]. This project and three sibling projects (\[Retrofit], \[Okio], and \[SQLDelight]) recently joined \[the Commonhaus Foundation]. - Fix: MockWebServer’s `@StartStop` annotation now supports `@Nested` JUnit 5 tests. - Fix: Our default TLS hostname verifier now reject hosts that fail IP canonicalization. - Fix: Closing a multipart part's sink no longer closes the entire request body. - Fix: Flush HTTP/1 request bodies before detaching the timeout. We had a bug where timeouts weren’t applied correctly. - Fix: Follow \[RFC 1008]'s requirements for HTTP QUERY redirects. - Fix: Fall back to no proxy when the system proxy selector throws. Previously this would cause the HTTP call to crash. - Upgrade: \[Okio 3.18.1]\[okio_3_18_1]. ### [`v5.4.0`](https://github.com/lysine-dev/okhttp/blob/HEAD/CHANGELOG.md#Version-540) *2026-06-08* - New: Add superpowers to interceptors. Interceptors can now override anything settable on `OkHttpClient.Builder`, such as the cache, connection pool, socket factory, and DNS. We expect this will allow most users to use interceptors everywhere, insted of mixing and matching interceptors with custom `Call.Factory` wrappers. - Fix: Limit each HTTP/2 response to 256 KiB of total headers. - Upgrade: \[kotlinx.coroutines 1.11.0]\[coroutines_1_11_0]. This is used by the optional `okhttp-coroutines` artifact. - Upgrade: \[GraalVM 25.0.3]\[graalvm_25]. - Upgrade: \[Okio 3.17.0]\[okio_3_17_0]. </details> <details> <summary>lavalink-devs/lavaplayer (dev.arbjerg:lavaplayer)</summary> ### [`v2.2.7`](https://github.com/lavalink-devs/lavaplayer/blob/HEAD/CHANGELOG.md#227----2026-07-03) [Compare Source](https://github.com/lavalink-devs/lavaplayer/compare/2.2.6...2.2.7) - Fixed Ogg playback position being set to 0 on seek in [`94f9d57`](https://github.com/lavalink-devs/lavaplayer/commit/94f9d5706414ef50b21e92628f212b6e16260302) - Fixed AAC per-frame decode errors being treated as fatal in [#&#8203;192](https://github.com/lavalink-devs/lavaplayer/pull/192) - Fixed MP4 probing of invalid files causing excessive CPU usage in [#&#8203;192](https://github.com/lavalink-devs/lavaplayer/pull/192) - Fixed the incorrect sha256Hash in `TwitchAudioSourceManager` in [#&#8203;190](https://github.com/lavalink-devs/lavaplayer/pull/190) - Changed the `SoundCloudAudioSourceManager` search prefix public in [#&#8203;188](https://github.com/lavalink-devs/lavaplayer/pull/188) </details> <details> <summary>discord-jda/JDA (net.dv8tion:JDA)</summary> ### [`v6.7.0`](https://github.com/discord-jda/JDA/releases/tag/v6.7.0): | Handle Channel Obfuscation [Compare Source](https://github.com/discord-jda/JDA/compare/v6.6.0...v6.7.0) ### Overview This release makes JDA aware of [Channel Obfuscation](https://docs.discord.com/developers/change-log#channel-obfuscation-for-users-and-bots), which will become mandatory on **November 16, 2026**. You can test your bot early by enabling channel obfuscation in the [discord developer portal](https://discord.com/developers/applications/select/bot). <img width="2088" height="446" alt="image" src="https://github.com/user-attachments/assets/c94cbe57-f7d9-45dc-8122-4031a306554f" /> > \[!WARNING] > This is a breaking change, which affects permission handling and what will be available to your bot. Please report any bugs / unexpected results you might encounter with JDA behavior. Channels for interactions will use snapshots of the channel instead, utilizing the [IDetachableEntity](https://docs.jda.wiki/net/dv8tion/jda/api/entities/detached/IDetachableEntity.html) handling previously introduced for user-installed commands. These channels carry the current information about the channel, such as name and topic. They also have the permissions for the member that used the interaction, to allow permission checks to still work as expected for that specific member through `member.hasPermission(channel, permissions)`. #### Breaking Changes - Add handling for obfuscated channels by [@&#8203;MinnDevelopment](https://github.com/MinnDevelopment) in [#&#8203;3042](https://github.com/discord-jda/JDA/pull/3042) **Full Changelog**: <https://github.com/discord-jda/JDA/compare/v6.6.0...v6.7.0> ### Installation #### Gradle ```gradle repositories { mavenCentral() } dependencies { implementation("net.dv8tion:JDA:6.7.0") } ``` #### Maven ```xml <dependency> <groupId>net.dv8tion</groupId> <artifactId>JDA</artifactId> <version>6.7.0</version> </dependency> ``` ### [`v6.6.0`](https://github.com/discord-jda/JDA/releases/tag/v6.6.0) [Compare Source](https://github.com/discord-jda/JDA/compare/v6.5.0...v6.6.0) ### Overview This is a minor release adding a few new features before a bigger change coming in 6.7.0 which will introduce handling for [Obfuscated Channels](https://github.com/discord/discord-api-docs/pull/8454). If you can, please try out and give feedback on [**Add handling for obfuscated channels #&#8203;3042**](https://github.com/discord-jda/JDA/pull/3042). To enable obfuscated channels early for testing purposes, you can toggle a switch in your application dashboard as described [here](https://github.com/discord/discord-api-docs/pull/8454). #### New Features - Add file type filtering in slash command attachment options and modal attachment uploads by [@&#8203;freya022](https://github.com/freya022) in [#&#8203;3113](https://github.com/discord-jda/JDA/pull/3113) - Add support for guild member banners by [@&#8203;Whizyyy](https://github.com/Whizyyy) in [#&#8203;3126](https://github.com/discord-jda/JDA/pull/3126) #### Changes - Make LabelChildComponent replaceable by [@&#8203;Kaktushose](https://github.com/Kaktushose) in [#&#8203;3128](https://github.com/discord-jda/JDA/pull/3128) - Read `flags_new` of `ApplicationInfo` instead of `flags` by [@&#8203;freya022](https://github.com/freya022) in [#&#8203;3131](https://github.com/discord-jda/JDA/pull/3131) - Guild member pruning: Check for admin if `PRUNE_REQUIRES_ADMIN` is enabled by [@&#8203;freya022](https://github.com/freya022) in [#&#8203;3129](https://github.com/discord-jda/JDA/pull/3129) - Update `Message.MAX_FILE_SIZE` to 20 MiB by [@&#8203;freya022](https://github.com/freya022) in [#&#8203;3142](https://github.com/discord-jda/JDA/pull/3142) #### Bug Fixes - Fix `MarkdownUtil#monospace` not correctly applying monospace formatting to strings with backticks by [@&#8203;ManosSef](https://github.com/ManosSef) in [#&#8203;3139](https://github.com/discord-jda/JDA/pull/3139) - Fix icon URLs for GIF stickers by [@&#8203;jjj-n](https://github.com/jjj-n) in [#&#8203;3140](https://github.com/discord-jda/JDA/pull/3140) **Full Changelog**: <https://github.com/discord-jda/JDA/compare/v6.5.0...v6.6.0> ### Installation #### Gradle ```gradle repositories { mavenCentral() } dependencies { implementation("net.dv8tion:JDA:6.6.0") } ``` #### Maven ```xml <dependency> <groupId>net.dv8tion</groupId> <artifactId>JDA</artifactId> <version>6.6.0</version> </dependency> ``` ### [`v6.5.0`](https://github.com/discord-jda/JDA/releases/tag/v6.5.0): | Message Search API [Compare Source](https://github.com/discord-jda/JDA/compare/v6.4.2...v6.5.0) ### Overview This release adds support for the [Message Search API](https://docs.discord.com/developers/change-log#search-guild-messages), which allows bots to search messages in a guild. See [Guild#searchMessages](https://docs.jda.wiki/net/dv8tion/jda/api/entities/Guild.html#searchMessages\(\)) and [MessageSearchAction](https://docs.jda.wiki/net/dv8tion/jda/api/requests/restaction/MessageSearchAction.html) for detailed documentation. **Example**: ```java guild.searchMessages() .attachmentFilenames("cat.png") .includeAuthorTypes(MessageSearchAction.AuthorType.USER) .queue(response -> { if (response.isNotReady()) { int retryAfter = response.asNotReady().getRetryAfter(); event.reply("The server is still indexing messages, try again later").queue(); return; } List<Message> messages = response.asResults().getMessages(); event.reply("Found %s messages of cats!".formatted(messages.size())).queue(); }); ``` Additionally, we made a minor change in the handling for received messages. For messages received in guilds JDA now handles events with missing `member` objects, which is necessary to handle messages that arrive shortly after a user is banned from the guild. These messages will contain members which are not added to cache and have no roles. #### New Features - Add message search by [@&#8203;freya022](https://github.com/freya022) in [#&#8203;3052](https://github.com/discord-jda/JDA/pull/3052) - Add attachment flags by [@&#8203;MinnDevelopment](https://github.com/MinnDevelopment) in [#&#8203;3109](https://github.com/discord-jda/JDA/pull/3109) - Add support for image descriptions in embeds by [@&#8203;MinnDevelopment](https://github.com/MinnDevelopment) in [#&#8203;310](https://github.com/discord-jda/JDA/pull/310) #### Changes - Handle messages received after ban by [@&#8203;MinnDevelopment](https://github.com/MinnDevelopment) in [#&#8203;3103](https://github.com/discord-jda/JDA/pull/3103) **Full Changelog**: <https://github.com/discord-jda/JDA/compare/v6.4.2...v6.5.0> ### Installation #### Gradle ```gradle repositories { mavenCentral() } dependencies { implementation("net.dv8tion:JDA:6.5.0") } ``` #### Maven ```xml <dependency> <groupId>net.dv8tion</groupId> <artifactId>JDA</artifactId> <version>6.5.0</version> </dependency> ``` ### [`v6.4.2`](https://github.com/discord-jda/JDA/releases/tag/v6.4.2) [Compare Source](https://github.com/discord-jda/JDA/compare/v6.4.1...v6.4.2) #### New Features - Add attachment flags, embed flags and fields, and, media flags by [@&#8203;freya022](https://github.com/freya022) in [#&#8203;3081](https://github.com/discord-jda/JDA/pull/3081) - Add missing `NO_MUTUAL_GUILDS` ErrorResponse by [@&#8203;srnyx](https://github.com/srnyx) in [#&#8203;3083](https://github.com/discord-jda/JDA/pull/3083) - Add `ErrorResponse#CANNOT_FORWARD_UNREADABLE_MESSAGE` by [@&#8203;freya022](https://github.com/freya022) in [#&#8203;3087](https://github.com/discord-jda/JDA/pull/3087) #### Changes - Improve error messages caused by entities relying on the cache to find themselves by [@&#8203;freya022](https://github.com/freya022) in [#&#8203;3067](https://github.com/discord-jda/JDA/pull/3067) - Component options: Prevent setting an out-of-range number of default values by [@&#8203;freya022](https://github.com/freya022) in [#&#8203;3068](https://github.com/discord-jda/JDA/pull/3068) - Fix deserialization of components without unfurled media by [@&#8203;freya022](https://github.com/freya022) in [#&#8203;3078](https://github.com/discord-jda/JDA/pull/3078) #### Bug Fixes - Fix Guild#invalidate not removing thread channels from global cache by [@&#8203;MinnDevelopment](https://github.com/MinnDevelopment) in [#&#8203;3094](https://github.com/discord-jda/JDA/pull/3094) - Fix incorrect ID used in AbstractGuildChannelImpl#getGuild for entity parent refresh by [@&#8203;MinnDevelopment](https://github.com/MinnDevelopment) in [#&#8203;3095](https://github.com/discord-jda/JDA/pull/3095) - Fix incorrect check for choice value length by [@&#8203;MinnDevelopment](https://github.com/MinnDevelopment) in [#&#8203;3096](https://github.com/discord-jda/JDA/pull/3096) - fix: handle integer sound ids in voice channel effects by [@&#8203;rxsto](https://github.com/rxsto) in [#&#8203;3085](https://github.com/discord-jda/JDA/pull/3085) **Full Changelog**: <https://github.com/discord-jda/JDA/compare/v6.4.1...v6.4.2> ### Installation #### Gradle ```gradle repositories { mavenCentral() } dependencies { implementation("net.dv8tion:JDA:6.4.2") } ``` #### Maven ```xml <dependency> <groupId>net.dv8tion</groupId> <artifactId>JDA</artifactId> <version>6.4.2</version> </dependency> ``` </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. 👻 **Immortal**: This PR will be recreated if closed unmerged. Get [config help](https://github.com/renovatebot/renovate/discussions) if that's undesired. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate CLI](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0NC4xNTEuMSIsInVwZGF0ZWRJblZlciI6IjQ0LjE4Mi4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJyZW5vdmF0ZSJdfQ==-->
anthorob was assigned by renovate-bot 2026-10-25 22:04:31 -04:00
renovate-bot force-pushed renovate/all-minor-patch from 20f69dc8cf to af74b0460e 2026-10-25 23:03:18 -04:00 Compare
renovate-bot added 1 commit 2026-10-27 05:03:03 -04:00
Update all non-major dependencies
CI / Package (pull_request) Successful in 49s
CI / Publish Maven Package (pull_request) Skipped
CI / Docker Build and Push (pull_request) Skipped
a188ebee5c
renovate-bot force-pushed renovate/all-minor-patch from af74b0460e to a188ebee5c 2026-10-27 05:03:03 -04:00 Compare
All checks were successful
CI / Package (pull_request) Successful in 49s
CI / Publish Maven Package (pull_request) Skipped
CI / Docker Build and Push (pull_request) Skipped
You are not authorized to merge this pull request.
This pull request can be merged automatically.
View command line instructions

Checkout

From your project repository, check out a new branch and test the changes.
git fetch -u origin renovate/all-minor-patch:renovate/all-minor-patch
git checkout renovate/all-minor-patch
Sign in to join this conversation.
No Reviewers
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: anthorob/netneutrality#32