Releases: getsentry/sentry-java
Releases · getsentry/sentry-java
8.20.0
Fixes
- Do not use named capturing groups for regular expressions (#4652)
- This fixes a crash on Android versions below 8.0 (API level 26)
Features
- Add onDiscard to enable users to track the type and amount of data discarded before reaching Sentry (#4612)
- Stub for setting the callback on
Sentry.init
:Sentry.init(options -> { ... options.setOnDiscard( (reason, category, number) -> { // Your logic to process discarded data }); });
- Stub for setting the callback on
8.19.1
8.19.0
Warning
Android: This release is incompatible with API levels below 26. We recommend using SDK version 8.20.0 or higher instead.
Features
- Add a
isEnableSystemEventBreadcrumbsExtras
option to disable reporting system events extras for breadcrumbs (#4625)
Improvements
- Session Replay: Use main thread looper to schedule replay capture (#4542)
- Use single
LifecycleObserver
and multi-cast it to the integrations interested in lifecycle states (#4567) - Add
sentry.origin
attribute to logs (#4618)- This helps identify which integration captured a log event
- Prewarm
SentryExecutorService
for better performance at runtime (#4606)
Fixes
- Cache network capabilities and status to reduce IPC calls (#4560)
- Deduplicate battery breadcrumbs (#4561)
- Remove unused method in ManifestMetadataReader (#4585)
- Have single
NetworkCallback
registered at a time to reduce IPC calls (#4562) - Do not register for SystemEvents and NetworkCallbacks immediately when launched with non-foreground importance (#4579)
- Limit ProGuard keep rules for native methods within
sentry-android-ndk
to theio.sentry.**
namespace. (#4427)- If you relied on the Sentry SDK to keep native method names for JNI compatibility within your namespace, please review your ProGuard rules and ensure the configuration still works. Especially when you're not consuming any of the default Android proguard rules (
proguard-android.txt
orproguard-android-optimize.txt
) the following config should be present:
-keepclasseswithmembernames class * { native <methods>; }
- If you relied on the Sentry SDK to keep native method names for JNI compatibility within your namespace, please review your ProGuard rules and ensure the configuration still works. Especially when you're not consuming any of the default Android proguard rules (
- Fix abstract method error in
SentrySupportSQLiteDatabase
(#4597) - Ensure frame metrics listeners are registered/unregistered on the main thread (#4582)
- Do not report cached events as lost (#4575)
- Previously events were recorded as lost early despite being retried later through the cache
- Move and flush unfinished previous session on init (#4624)
- This removes the need for unnecessary blocking our background queue for 15 seconds in the case of a background app start
- Switch to compileOnly dependency for compose-ui-material (#4630)
- This fixes
StackOverflowError
when using OSS Licenses plugin
- This fixes
Dependencies
8.18.0
Features
- Add
SentryUserFeedbackButton
Composable (#4559)- Also added
Sentry.showUserFeedbackDialog
static method
- Also added
- Add deadlineTimeout option (#4555)
- Add Ktor client integration (#4527)
- To use the integration, add a dependency on
io.sentry:sentry-ktor-client
, then install theSentryKtorClientPlugin
on yourHttpClient
,
e.g.:val client = HttpClient(Java) { install(io.sentry.ktorClient.SentryKtorClientPlugin) { captureFailedRequests = true failedRequestTargets = listOf(".*") failedRequestStatusCodes = listOf(HttpStatusCodeRange(500, 599)) } }
- To use the integration, add a dependency on
Fixes
- Allow multiple UncaughtExceptionHandlerIntegrations to be active at the same time (#4462)
- Prevent repeated scroll target determination during a single scroll gesture (#4557)
- This should reduce the number of ANRs seen in
SentryGestureListener
- This should reduce the number of ANRs seen in
- Do not use Sentry logging API in JUL if logs are disabled (#4574)
- This was causing Sentry SDK to log warnings: "Sentry Log is disabled and this 'logger' call is a no-op."
- Do not use Sentry logging API in Log4j2 if logs are disabled (#4573)
- This was causing Sentry SDK to log warnings: "Sentry Log is disabled and this 'logger' call is a no-op."
- SDKs send queue is no longer shutdown immediately on re-init (#4564)
- This means we're no longer losing events that have been enqueued right before SDK re-init.
- Reduce scope forking when using OpenTelemetry (#4565)
Sentry.withScope
now has the correct current scope passed to the callback. Previously our OpenTelemetry integration forked scopes an additional.- Overall the SDK is now forking scopes a bit less often.
7.22.6
Fixes
- Compress Screenshots on a background thread (#4295)
- Improve low memory breadcrumb capturing (#4325)
- Make
SystemEventsBreadcrumbsIntegration
faster (#4330) - Fix unregister
SystemEventsBroadcastReceiver
when entering background (#4338)- This should reduce ANRs seen with this class in the stack trace for Android 14 and above
- Pre-load modules on a background thread upon SDK init (#4348)
- Session Replay: Fix inconsistent
segment_id
(#4471) - Session Replay: Do not capture current replay for cached events from the past (#4474)
- Session Replay: Fix crash on devices with the Unisoc/Spreadtrum T606 chipset (#4477)
- Session Replay: Fix masking of non-styled
Text
Composables (#4361) - Session Replay: Fix masking read-only
TextField
Composables (#4362) - Fix Session Replay masking for newer versions of Jetpack Compose (1.8+) (#4485)
- Session Replay: Expand fix for crash on devices to all Unisoc/Spreadtrum chipsets (#4510)
8.17.0 (Stable)
Features
- Send Timber logs through Sentry Logs (#4490)
- Enable the Logs feature in your
SentryOptions
or with theio.sentry.logs.enabled
manifest option and the SDK will automatically send Timber logs to Sentry, if the TimberIntegration is enabled. - The SDK will automatically detect Timber and use it to send logs to Sentry.
- Enable the Logs feature in your
- Send logcat through Sentry Logs (#4487)
- Enable the Logs feature in your
SentryOptions
or with theio.sentry.logs.enabled
manifest option and the SDK will automatically send logcat logs to Sentry, if the Sentry Android Gradle plugin is applied. - To set the logcat level check the Logcat integration documentation.
- Enable the Logs feature in your
- Read build tool info from
sentry-debug-meta.properties
and attach it to events (#4314)
Dependencies
- Bump OpenTelemetry (#4532)
opentelemetry-sdk
to1.51.0
opentelemetry-instrumentation
to2.17.0
opentelemetry-javaagent
to2.17.0
opentelemetry-semconv
to1.34.0
- We are now configuring OpenTelemetry to still behave the same way it did before for span names it generates in GraphQL auto instrumentation (#4537)
Fixes
- Use Spring Boot Starter 3 in
sentry-spring-boot-starter-jakarta
(#4545)- While refactoring our dependency management, we accidentally added Spring Boot 2 and Spring Boot Starter 2 as dependencies of
sentry-spring-boot-starter-jakarta
, which is intended for Spring Boot 3. - Now, the correct dependencies (Spring Boot 3 and Spring Boot Starter 3) are being added.
- While refactoring our dependency management, we accidentally added Spring Boot 2 and Spring Boot Starter 2 as dependencies of
8.16.1-alpha.2
Fixes
- Optimize scope when maxBreadcrumb is 0 (#4504)
- Fix javadoc on TransportResult (#4528)
- Session Replay: Fix
IllegalArgumentException
whenBitmap
is initialized with non-positive values (#4536) - Set thread information on transaction from OpenTelemetry attributes (#4478)
Internal
- Flattened PerformanceCollectionData (#4505)
8.16.0 (Stable)
Features
- Send JUL logs to Sentry as logs (#4518)
- You need to enable the logs feature, either in
sentry.properties
:logs.enabled=true
- Or, if you manually initialize Sentry, you may also enable logs on
Sentry.init
:Sentry.init(options -> { ... options.getLogs().setEnabled(true); });
- It is also possible to set the
minimumLevel
inlogging.properties
, meaning any log message >= the configured level will be sent to Sentry and show up under Logs:io.sentry.jul.SentryHandler.minimumLevel=CONFIG
- You need to enable the logs feature, either in
- Send Log4j2 logs to Sentry as logs (#4517)
- You need to enable the logs feature either in
sentry.properties
:logs.enabled=true
- If you manually initialize Sentry, you may also enable logs on
Sentry.init
:Sentry.init(options -> { ... options.getLogs().setEnabled(true); });
- It is also possible to set the
minimumLevel
inlog4j2.xml
, meaning any log message >= the configured level will be sent to Sentry and show up under Logs:<Sentry name="Sentry" dsn="your DSN" minimumBreadcrumbLevel="DEBUG" minimumEventLevel="WARN" minimumLevel="DEBUG" />
- You need to enable the logs feature either in
8.15.1
8.15.0
Fixes
- No longer send out empty log envelopes (#4497)
- Session Replay: Expand fix for crash on devices to all Unisoc/Spreadtrum chipsets (#4510)
- Log parameter objects are now turned into
String
viatoString
(#4515)- One of the two
SentryLogEventAttributeValue
constructors did not convert the value previously.
- One of the two
- Logs are now flushed on shutdown (#4503)
- User Feedback: Do not redefine system attributes for
SentryUserFeedbackButton
, but reference them instead (#4519)
Features
- Add chipset to device context (#4512)
- Send Logback logs to Sentry as logs (#4502)
- You need to enable the logs feature and can also set the
minimumLevel
for log events:<appender name="sentry" class="io.sentry.logback.SentryAppender"> <options> <!-- NOTE: Replace the test DSN below with YOUR OWN DSN to see the events from this app in your Sentry project/dashboard --> <dsn>https://502f25099c204a2fbf4cb16edc5975d1@o447951.ingest.sentry.io/5428563</dsn> <logs> <enabled>true</enabled> </logs> </options> <!-- Demonstrates how to modify the minimum values --> <!-- Default for Events is ERROR --> <minimumEventLevel>WARN</minimumEventLevel> <!-- Default for Breadcrumbs is INFO --> <minimumBreadcrumbLevel>DEBUG</minimumBreadcrumbLevel> <!-- Default for Log Events is INFO --> <minimumLevel>INFO</minimumLevel> </appender>
- For Spring Boot you may also enable it in
application.properties
/application.yml
:sentry.logs.enabled=true sentry.logging.minimum-level=error
- If you manually initialize Sentry, you may also enable logs on
Sentry.init
:Sentry.init(options -> { ... options.getLogs().setEnabled(true); });
- Enabling via
sentry.properties
is also possible:logs.enabled=true
- You need to enable the logs feature and can also set the
- Automatically use
SentryOptions.Logs.BeforeSendLogCallback
Spring beans (#4509)