Releases: getsentry/sentry-java
Releases · getsentry/sentry-java
8.0.0-alpha.1
Version 8 of the Sentry Android/Java SDK brings a variety of features and fixes. The most notable changes are:
- New
Scopetypes have been introduced, see "Behavioural Changes" for more details. - Lifecycle tokens have been introduced to manage
Scopelifecycle, see "Behavioural Changes" for more details. Hubhas been replaced byScopes
Behavioural Changes
- We're introducing some new
Scopetypes in the SDK, allowing for better control over what data is attached where. Previously there was a stack of scopes that was pushed and popped. Instead we now fork scopes for a given lifecycle and then restore the previous scopes. SinceHubis gone, it is also never cloned anymore. Separation of data now happens through the different scope types while making it easier to manipulate exactly what you need without having to attach data at the right time to have it apply where wanted.- Global scope is attached to all events created by the SDK. It can also be modified before
Sentry.inithas been called. It can be manipulated usingSentry.configureScope(ScopeType.GLOBAL, (scope) -> { ... }). - Isolation scope can be used e.g. to attach data to all events that come up while handling an incoming request. It can also be used for other isolation purposes. It can be manipulated using
Sentry.configureScope(ScopeType.ISOLATION, (scope) -> { ... }). The SDK automatically forks isolation scope in certain cases like incoming requests, CRON jobs, Spring@Asyncand more. - Current scope is forked often and data added to it is only added to events that are created while this scope is active. Data is also passed on to newly forked child scopes but not to parents.
- Global scope is attached to all events created by the SDK. It can also be modified before
Sentry.popScopehas been deprecated, please call.close()on the token returned bySentry.pushScopeinstead or use it in a way described in more detail in "Migration Guide".- We have chosen a default scope that is used for
Sentry.configureScope()as well as API likeSentry.setTag()- For Android the type defaults to
CURRENTscope - For Backend and other JVM applicatons it defaults to
ISOLATIONscope
- For Android the type defaults to
- Event processors on
Scopecan now be ordered by overriding thegetOrdermethod on implementations ofEventProcessor. NOTE: This order only applies to event processors onScopebut notSentryOptionsat the moment. Feel free to request this if you need it. Hubis deprecated in favor ofScopes, alongside someHubrelevant APIs. More details can be found in the "Migration Guide" section.
Breaking Changes
Contextsno longer extendsConcurrentHashMap, instead we offer a selected set of methods.
Migration Guide / Deprecations
Hubhas been deprecated, we're replacing the following:IHubhas been replaced byIScopes, however you should be able to simply passIHubinstances to code expectingIScopes, allowing for an easier migration.HubAdapter.getInstance()has been replaced byScopesAdapter.getInstance()- The
.clone()method onIHub/IScopeshas been deprecated, please use.pushScope()or.pushIsolationScope()instead - Some internal methods like
.getCurrentHub()and.setCurrentHub()have also been replaced.
Sentry.popScopehas been replaced by calling.close()on the token returned bySentry.pushScope()andSentry.pushIsolationScope(). The token can also be used in atryblock like this:
try (final @NotNull ISentryLifecycleToken ignored = Sentry.pushScope()) {
// this block has its separate current scope
}
as well as:
try (final @NotNull ISentryLifecycleToken ignored = Sentry.pushIsolationScope()) {
// this block has its separate isolation scope
}
You may also use LifecycleHelper.close(token), e.g. in case you need to pass the token around for closing later.
Features
7.9.0
Features
Fixes
7.9.0-alpha.1
7.8.0
Features
Fixes
7.8.0-alpha.0
- Session Replay for Android (#3339)
We released our first Alpha version of the SDK with support. To get access, it requires adding your Sentry org to our feature flag. Please let us know on the waitlist if you're interested
7.7.0
Features
Fixes
7.6.0
Features
- Experimental: Add support for Sentry Developer Metrics (#3205, #3238, #3248, #3250)
Use the Metrics API to track processing time, download sizes, user signups, and conversion rates and correlate them back to tracing data in order to get deeper insights and solve issues faster. Our API supports counters, distributions, sets, gauges and timers, and it's easy to get started:To learn more about Sentry Developer Metrics, head over to our Java and Android docs page.Sentry.metrics() .increment( "button_login_click", // key 1.0, // value null, // unit mapOf( // tags "provider" to "e-mail" ) )
7.5.0
Features
- Add support for measurements at span level (#3219)
- Add
enableScopePersistenceoption to disablePersistingScopeObserverused for ANR reporting which may increase performance overhead. Defaults totrue(#3218)- When disabled, the SDK will not enrich ANRv2 events with scope data (e.g. breadcrumbs, user, tags, etc.)
- Configurable defaults for Cron - MonitorConfig (#3195)
- We now display a warning on startup if an incompatible version of Spring Boot is detected (#3233)
- This should help notice a mismatching Sentry dependency, especially when upgrading a Spring Boot application
- Experimental: Add Metrics API (#3205)
Fixes
- Ensure performance measurement collection is not taken too frequently (#3221)
- Fix old profiles deletion on SDK init (#3216)
- Fix hub restore point in wrappers: SentryWrapper, SentryTaskDecorator and SentryScheduleHook (#3225)
- We now reset the hub to its previous value on the thread where the
Runnable/Callable/Supplieris executed instead of setting it to the hub that was used on the thread where theRunnable/Callable/Supplierwas created.
- We now reset the hub to its previous value on the thread where the
- Fix add missing thread name/id to app start spans (#3226)
7.4.0
Features
- Add new threshold parameters to monitor config (#3181)
- Report process init time as a span for app start performance (#3159)
- (perf-v2): Calculate frame delay on a span level (#3197)
- Resolve spring properties in @SentryCheckIn annotation (#3194)
- Experimental: Add Spotlight integration (#3166)
- For more details about Spotlight head over to https://spotlightjs.com/
- Set
options.isEnableSpotlight = trueto enable Spotlight
Fixes
- Don't wait on main thread when SDK restarts (#3200)
- Fix Jetpack Compose widgets are not being correctly identified for user interaction tracing (#3209)
- Fix issue title on Android when a wrapping
RuntimeExceptionis thrown by the system (#3212)- This will change grouping of the issues that were previously titled
RuntimeInit$MethodAndArgsCallerto have them split up properly by the original root cause exception
- This will change grouping of the issues that were previously titled
7.3.0
Features
- Added App Start profiling
- This depends on the new option
io.sentry.profiling.enable-app-start, other than the already existingio.sentry.traces.profiling.sample-rate. - Sampler functions can check the new
isForNextAppStartflag, to adjust startup profiling sampling programmatically.
Relevant PRs: - Decouple Profiler from Transaction (#3101)
- Add options and sampling logic (#3121)
- Add ContentProvider and start profile (#3128)
- This depends on the new option
- Extend internal performance collector APIs (#3102)
- Collect slow and frozen frames for spans using
OnFrameMetricsAvailableListener(#3111) - Interpolate total frame count to match span duration (#3158)
Fixes
- Avoid multiple breadcrumbs from OkHttpEventListener (#3175)
- Apply OkHttp listener auto finish timestamp to all running spans (#3167)
- Fix not eligible for auto proxying warnings (#3154)
- Set default fingerprint for ANRv2 events to correctly group background and foreground ANRs (#3164)
- This will improve grouping of ANRs that have similar stacktraces but differ in background vs foreground state. Only affects newly-ingested ANR events with
mechanism:AppExitInfo
- This will improve grouping of ANRs that have similar stacktraces but differ in background vs foreground state. Only affects newly-ingested ANR events with
- Fix UserFeedback disk cache name conflicts with linked events (#3116)
Breaking changes
- Remove
HostnameVerifieroption as it's flagged by security tools of some app stores (#3150)- If you were using this option, you have 3 possible paths going forward:
- Provide a custom
ITransportFactorythroughSentryOptions.setTransportFactory(), where you can copy over most of the parts likeHttpConnectionandAsyncHttpTransportfrom the SDK with necessary modifications - Get a certificate for your server through e.g. Let's Encrypt
- Fork the SDK and add the hostname verifier back
- Provide a custom
- If you were using this option, you have 3 possible paths going forward: