chore(deps): update Android SDK to v8.38.0#5971
Open
github-actions[bot] wants to merge 1 commit intomainfrom
Open
chore(deps): update Android SDK to v8.38.0#5971github-actions[bot] wants to merge 1 commit intomainfrom
github-actions[bot] wants to merge 1 commit intomainfrom
Conversation
fc9609f to
d1abbd9
Compare
Contributor
Author
Semver Impact of This PR⚪ None (no version bump detected) 📋 Changelog PreviewThis is how your changes will appear in the changelog.
🤖 This preview updates automatically when you update the PR. |
Contributor
Author
|
Sentry Build Distribution
|
d1abbd9 to
4e64f57
Compare
4e64f57 to
1826df1
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Bumps scripts/update-android.sh from 8.37.1 to 8.38.0.
Auto-generated by a dependency updater.
Changelog
8.38.0
Features
o123.ingest.sentry.io) and compares it with thesentry-org_idvalue in incoming baggage headers. When the two differ, the SDK starts a fresh trace instead of continuing the foreign one. This guards against accidentally linking traces across organizations.enableStrictTraceContinuation(defaultfalse): when enabled, both the SDK's org ID and the incoming baggage org ID must be present and match for a trace to be continued. Traces with a missing org ID on either side are rejected. Configurable via code (setStrictTraceContinuation(true)),sentry.properties(enable-strict-trace-continuation=true), Android manifest (io.sentry.strict-trace-continuation.enabled), or Spring Boot (sentry.strict-trace-continuation=true).orgId: allows explicitly setting the organization ID for self-hosted and Relay setups where it cannot be extracted from the DSN. Configurable via code (setOrgId("123")),sentry.properties(org-id=123), Android manifest (io.sentry.org-id), or Spring Boot (sentry.org-id=123).Improvements
Do not retrieve
ActivityManagerif API < 35 on SDK init (#5275)io.sentry.session-replay.network-detail-allow-urlsmetadata tag in AndroidManifest (code sample) - Or you can manually specify SentryReplayOptions viaSentryAndroid#init:(Make sure you disable the auto init via manifest meta-data: io.sentry.auto-init=false)
Fixes
This fixes
StackOverflowErrorwhen using OSS Licenses pluginThis widget is a custom button that can be used to show the user feedback form
We now introduce SentryUserFeedbackDialog, which extends AlertDialog, inheriting the show() and cancel() methods, among others.
To use it, just instantiate it and call show() on the instance (Sentry must be previously initialized).
For customization options, please check the User Feedback documentation.
Use
Sentry.replay().enableDebugMaskingOverlay()to overlay the screen with the Session Replay masks.The masks will be invalidated at most once per
frameRate(default 1 fps).We now introduced Sentry.captureFeedback, which supersedes Sentry.captureUserFeedback
The feature is disabled by default and needs to be enabled by:
options.getLogs().setEnabled(true)inSentry.init/SentryAndroid.init<meta-data android:name="io.sentry.logs.enabled" android:value="true" />inAndroidManifest.xmllogs.enabled=trueinsentry.propertiessentry.logs.enabled=trueinapplication.propertiessentry.logs.enabled: trueinapplication.ymlLogs can be captured using
Sentry.logger().info()and similar methods.Logs also take a format string and arguments which we then send through
String.format.Please use
options.getLogs().setBeforeSend()to filter outgoing logsThis is only relevant if you see
java.lang.IllegalStateException: Found multiple ContextStorageProvider. Set the io.opentelemetry.context.ContextStorageProvider property to the fully qualified class name of the provider to use. Falling back to default ContextStorage. Found providers: ...Note: Both
options.profilesSamplerandoptions.profilesSampleRatemust not be set to enable UI Profiling.To keep the same transaction-based behaviour, without the 30 seconds limitation, you can use the
tracelifecycle mode.This enables symbolication for stripped native code in ANRs
To enable Continuous Profiling use the
Sentry.startProfilerandSentry.stopProfilerexperimental APIs. Sampling rate can be set throughoptions.profileSessionSampleRate, which defaults to null (disabled).Please ensure the SentryOkHttpInterceptor is added last to your OkHttpClient, as otherwise changes to the
Requestby subsequent interceptors won't be consideredThe new module will be exposed as an
apidependency when usingsentry-spring-boot-jakarta(Spring Boot 3) orsentry-spring-jakarta(Spring 6).This allows sharing the same
SentryNavigationListenerinstance across fragments and composables to preserve the traceYou may now use both OpenTelemetry SDK and Sentry SDK to capture transactions and spans. They can also be mixed and end up on the same transaction.
OpenTelemetry extends the Sentry SDK by adding spans for numerous integrations, like Ktor, Vert.x and MongoDB. Please check the OpenTelemetry GitHub repository for a full list.
OpenTelemetry allows propagating trace information from and to additional libraries, that Sentry did not support before, for example gRPC.
OpenTelemetry also has broader support for propagating the Sentry
Scopesthrough reactive libraries like RxJava.Metrics will return but we don't know in what exact form yet
Please set
tracesSampleRateto a value >= 0.0 for enabling performance instead. The default value isnullwhich means performance is disabled.If you are subclassing any Sentry classes, please check if the parent class used
synchronizedbefore. Please make sure to use the same lock object as the parent class in that case.The
Sessionconstructor now takes aStringinstead of aUUIDfor thesessionIdparameter.Session.getSessionId()now returns aStringinstead of aUUID.This will reduce the number of spans created by the SDK
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, SpringAsyncand 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. It can be manipulated using
Sentry.configureScope(ScopeType.CURRENT, (scope) -> { ... }).For Android the type defaults to
CURRENTscopeFor Backend and other JVM applicatons it defaults to
ISOLATIONscopeWith this change cold app start spans will include spans for ContentProviders, Application and Activity load.
This now includes prefab support for sentry-native, allowing you to link and access the sentry-native API within your native app code
Checkout the
sentry-samples/sentry-samples-androidexample on how to configure CMake and consumesentry.hYou may also want to give this new agent a try even if you haven't used OpenTelemetry (with Sentry) before. It offers support for many more libraries and frameworks, improving on our trace propagation,
Scopes(used to beHub) propagation as well as performance instrumentation (i.e. more spans).If you are using a framework we did not support before and currently resort to manual instrumentation, please give the agent a try. See here for a list of supported libraries, frameworks and application servers.
Please see Java SDK docs for more details on how to set up the agent. Please make sure to select the correct SDK from the dropdown on the left side of the docs.
What's new about the Agent
OtelSpanFactoryinstead ofDefaultSpanFactorywhich is done automatically by the auto init of the Java Agent.Samplerwhich uses Sentry sampling configurationContextfor storing SentryScopes(which is similar to what used to be calledHub) and thus relies on OpenTelemetry forContextpropagation.This module can be added as a dependency when using Sentry with OpenTelemetry and Spring Boot but don't want to use our Agent. It takes care of configuring OpenTelemetry for use with Sentry.
You may want to set
OTEL_LOGS_EXPORTER=none;OTEL_METRICS_EXPORTER=none;OTEL_TRACES_EXPORTER=noneenv vars to not have the log flooded with error messages regarding OpenTelemetry features we don't use.This module can be added as a dependency when using Sentry with OpenTelemetry but don't want to use our Agent. It takes care of configuring OpenTelemetry for use with Sentry.
To enable the auto configuration of it, please set
-Dotel.java.global-autoconfigure.enabled=trueon thejavacommand, when starting your application.You may also want to set
OTEL_LOGS_EXPORTER=none;OTEL_METRICS_EXPORTER=none;OTEL_TRACES_EXPORTER=noneenv vars to not have the log flooded with error messages regarding OpenTelemetry features we don't use.It defaults to
AUTOmeaning the SDK will figure out how to best configure itself for use with OpenTelemetryUse of OpenTelemetry can also be disabled completely by setting it to
OFF(#3995)Use
AGENTwhen usingsentry-opentelemetry-agentUse
AGENTLESSwhen usingsentry-opentelemetry-agentlessUse
AGENTLESS_SPRINGwhen usingsentry-opentelemetry-agentless-springcan be used via ENV vars, e.g.
SENTRY_IGNORED_TRANSACTIONS=POST /person/,GET /pers.*can also be set in options directly, e.g.
options.setIgnoredTransactions(...)can also be set in
sentry.properties, e.g.ignored-transactions=POST /person/,GET /pers.*can also be set in Spring config
application.properties, e.g.sentry.ignored-transactions=POST /person/,GET /pers.*This setting only affects the SDK when used with OpenTelemetry.
Defaults to
AUTOmeaning the SDK will decide whether the span should be bound to the current scope. It will not bind transactions to scope usingAUTO, it will only bind spans where the parent span is on the current scope.ONsets the new span on the current scope.OFFdoes not set the new span on the scope.We pre-configure this to ignore Performance instrumentation for Spring and other integrations when using our OpenTelemetry Agent to avoid duplicate spans
If you are using
graphql-javav21 or earlier, you can use thesentry-graphqlmoduleFor
graphql-javav22 and newer please use thesentry-graphql-22moduleIt is now also possible to provide a bean of type
SentryGraphqlInstrumentation.BeforeSpanCallbackwhich is then used bySentryInstrumenterglobalHubModeused to only be a param onSentry.init. To make it easier to be used in e.g. Desktop environments, we now additionally added it as an option on SentryOptions that can also be set viasentry.properties.If both the param on
Sentry.initand the option are set, the option will win. By default the option is set tonullmeaning whatever is passed toSentry.inittakes effect.Uses faster implementation to convert UUID to SentryID String
Uses faster Random implementation to generate UUIDs
See https://developer.android.com/guide/practices/page-sizes for more details
You may now set
forceInit=true(force-initfor.propertiesfiles) to ensure a call to Sentry.init / SentryAndroid.init takes effectUse
<meta-data android:name="io.sentry.force-init" android:value="true" />to ensure Sentry Android auto init is not easily overwrittenPreviously request body was only attached for
application/jsonrequestsAlso does not emit
transaction.datainextrasanymoreA
sentry-traceheader that only contains trace ID and span ID but no sampled flag (-1,-0suffix) means the receiving system can make its own sampling decisionWhen generating
sentry-traceheader fromPropagationContextwe now copy thesampledflag.In
TransactionContext.fromPropagationContextwhen there is no parent sampling decision, keep the decisionnullso a new sampling decision is made instead of defaulting tofalsePreviously some parts of Sentry were immediately closed after re-init that should have stayed open and some parts of the previous init were never closed
Checking if a span origin, a transaction or a checkIn should be ignored is now faster
Previously only the body was cached which could lead to problems in the FilterChain as Request parameters were not available
Due to the backpressure monitor rescheduling a task to run every 10s, it very likely caused shutdown to wait the full
shutdownTimeoutMillis(defaulting to 2s) instead of being able to terminate immediatelyOur integrations no longer call
.continueTraceand also do not inject tracing headers if the integration has been added toignoredSpanOriginsOur
UncaughtExceptionHandlerIntegrationwaited for the full flush timeout duration (default 15s) when rate limited.Setting it to
nullwould cause an exception.Transactions are dropped if trace context is missing
The wrapper had to be put in place before any call to
ContextwhereasContextStorageProvideris automatically invoked at the correct time.This is only enabled if there is no OpenTelemetry agent available
We prefer to use the OpenTelemetry agent as it offers more auto instrumentation
In some cases the OpenTelemetry agent cannot be used, please see https://opentelemetry.io/docs/zero-code/java/spring-boot-starter/ for more details on when to prefer the Agent and when the Spring Boot starter makes more sense.
In this mode the SDK makes use of the
OpenTelemetrybean that is created byopentelemetry-spring-boot-starterinstead ofGlobalOpenTelemetryThis means Spring Boot config mechanisms can now be combined with our OpenTelemetry agent
The
sentry-opentelemetry-extramodule has been removed again, most classes have been moved tosentry-opentelemetry-bootstrapwhich is loaded into the bootstrap classloader (i.e.null) when our Java agent is used. The rest has been moved intosentry-opentelemetry-agentcustomizationand is loaded into the agent classloader when our Java agent is used.The
sentry-opentelemetry-bootstrapandsentry-opentelemetry-agentcustomizationmodules can be used without the agent as well, in which case all classes are loaded into the application classloader. Check out oursentry-samples-spring-boot-jakarta-opentelemetry-noagentsample.In this mode the SDK makes use of
GlobalOpenTelemetrySentrySpanFactoryHolderhas been removed as it is no longer required.This keeps it from being garbage collected too early
This is required for all integrations to work together with our OpenTelemetry Java agent if its auto init has been disabled and the SDKs init should be used instead.
Starting a child span from a transaction that wasn't in the current
Contextlead to multiple transactions being created (one for the transaction and another per span created).In certain cases we were sending transactions as "" when using OpenTelemetry
Also fix check whether Performance is enabled when making a sampling decision in the OpenTelemetry sampler
This allows spans to be filtered by span origin on creation
Traces were broken because on an incoming request, OtelSentrySpanProcessor did not set the parentSpanId on the span correctly. Traces were not referencing the actual parent span but some other (random) span ID which the server doesn't know.
Errors weren't linked to traces correctly due to parts of the SDK not knowing the current span
When spans belonging to a single transaction were split into multiple batches for SpanExporter, we did not add all spans because the isSpanTooOld check wasn't inverted.
There was a problem with two separate Sentry
Scopesbeing active inside each OpenTelemetryContextdue to using context keys from more than one class loader.This caused an issue where the span tree wasn't correct because some spans were not added to their direct parent
Due to how grouping works in Sentry currently sometimes the suppressed exception is treated as the main exception. This change ensures we keep using the main exception and not change how grouping works.
As a consequence the list of exceptions in the group on top of an issue is no longer shown in Sentry UI.
We are planning to improve this in the future but opted for this fix first.
changelog
diff
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()insteadSome internal methods like
.getCurrentHub()and.setCurrentHub()have also been replaced.This change gives you control over IP address collection directly on the client
Due to how grouping works in Sentry currently sometimes the suppressed exception is treated as the main exception. This change ensures we keep using the main exception and not change how grouping works.
As a consequence the list of exceptions in the group on top of an issue is no longer shown in Sentry UI.
We are planning to improve this in the future but opted for this fix first.
This should reduce ANRs seen with this class in the stack trace for Android 14 and above
Fix
FileNotFoundExceptionwhen trying to read/write.ongoing_segmentfileFix
IllegalStateExceptionwhen registeringonDrawListenerFix SIGABRT native crashes on Motorola devices when encoding a video
This allows Composables that use this modifier to be skippable
This change gives you control over IP address collection directly on the client
This change gives you control over IP address collection directly on the client
Fix
IndexOutOfBoundsExceptionwhen tracking window changesFix
IllegalStateExceptionwhen adding/removing draw listener for a dead viewFix
ConcurrentModificationExceptionwhen registering window listeners and stoppingWindowRecorder/GestureRecorderchangelog
diff
See https://developer.android.com/guide/practices/page-sizes for more details
This should significantly reduce the number of events with message "Sentry Android SDK failed to parse system thread dump..." reported
changelog
diff
Using Sentry Spring Boot on a standalone tomcat caused the following error:
The method
addIntegrationToSdkVersion(Ljava/lang/Class;)Vhas been removed from the core (io.sentry:sentry) package. Please make sure all of the packages (e.g.io.sentry:sentry-android-core,io.sentry:sentry-android-fragment,io.sentry:sentry-okhttpand others) are all aligned and using the same version to prevent theNoSuchMethodErrorexception.android:tag="sentry-mask|sentry-unmask"in XML orview.setTag("sentry-mask|sentry-unmask")in code tags<tag android:id="id/sentry_privacy" android:value="mask|unmask"/>in XML orview.setTag(io.sentry.android.replay.R.id.sentry_privacy, "mask|unmask")in codeview.sentryReplayMask()orview.sentryReplayUnmask()extension functionsViews of a certain type by adding fully-qualified classname to one of the listsoptions.experimental.sessionReplay.addMaskViewClass()oroptions.experimental.sessionReplay.addUnmaskViewClass(). Note, that all of the view subclasses/subtypes will be masked/unmasked as wellTextViews and their subclasses (RadioButton,EditText, etc.):options.experimental.sessionReplay.addMaskViewClass("android.widget.TextView")Breaking changes:
Experimental: Add support for Sentry Developer Metrics (#3205, #3238, #3248, #3250)
options.isEnableSpotlight = trueto enable Spotlightio.sentry.profiling.enable-app-start, other than the already existingio.sentry.traces.profiling.sample-rate.isForNextAppStartflag, to adjust startup profiling sampling programmatically.Relevant PRs:
The SDK will now listen to connectivity changes and try to re-upload cached events when internet connection is re-established additionally to uploading events on app restart
TransactionOptionsobject instead of having separate parameters for certain optionsTransactionOptionshas defaults set and can be customized, for example:sentry-android-okhttporsentry-apollo-3integrations. You can customize what errors you want/don't want to have reported for OkHttp and Apollo3 respectively.deadline_exceededwhen reaching the deadlineSendCachedEnvelopeIntegrationSendCachedEnvelopeFireAndForgetIntegrationas mentioned in https://docs.sentry.io/platforms/java/configuration/#configuring-offline-caching and provide your own implementation ofIConnectionStatusProviderviaSentryOptionsFix SIGSEV, SIGABRT and SIGBUS crashes happening after/around the August Google Play System update, see #2955 for more details (fix provided by Native SDK bump)
Fix SIGSEV, SIGABRT and SIGBUS crashes happening after/around the August Google Play System update, see #2955 for more details (fix provided by Native SDK bump)
If you have already been using
SentryDataFetcherExceptionHandlerthat still works but has been deprecated. Please useSentryGenericDataFetcherExceptionHandlercombined withSentryInstrumentationinstead for better error reporting.More exceptions and errors caught and reported to Sentry by also looking at the
ExecutionResult(more specifically itserrors)More details for Sentry events: query, variables and response (where possible)
Breadcrumbs for operation (query, mutation, subscription), data fetchers and data loaders (Spring only)
Better hub propagation by using
GraphQLContextThe starter modules
sentry-spring-boot-starterandsentry-spring-boot-starter-jakartanow bringspring-boot-starteras a dependencyAdd a new option
setReportHistoricalAnrs; when enabled, it will report all of the ANRs from the getHistoricalExitReasons list.By default, the SDK only reports and enriches the latest ANR and only this one counts towards ANR rate.
Worth noting that this option is mainly useful when updating the SDK to the version where ANRv2 has been introduced, to report all ANRs happened prior to the SDK update. After that, the SDK will always pick up the latest ANR from the historical exit reasons list on next app restart, so there should be no historical ANRs to report.
These ANRs are reported with the
HistoricalAppExitInfomechanism.Add a new option
setAttachAnrThreadDumpto send ANR thread dump from the system as an attachment.This is only useful as additional information, because the SDK attempts to parse the thread dump into proper threads with stacktraces by default.
If ApplicationExitInfo#getTraceInputStream returns null, the SDK no longer reports an ANR event, as these events are not very useful without it.
.sentryTracing(captureFailedRequests = true)
This integration replaces the old
androidx.sqlitedatabase instrumentation in the Sentry Android Gradle pluginA new capability to manually instrument your
androidx.sqlitedatabases.SupportSQLiteOpenHelperinstance intoSentrySupportSQLiteOpenHelper(myHelper)if you're not using the Sentry Android Gradle plugin and still benefit from performance auto-instrumentation.Create spans for time spent on:
You can attach the event listener to your OkHttpClient through
client.eventListener(new SentryOkHttpEventListener()).addInterceptor(new SentryOkHttpInterceptor()).build();In case you already have an event listener you can use the SentryOkHttpEventListener as well through
client.eventListener(new SentryOkHttpEventListener(myListener)).addInterceptor(new SentryOkHttpInterceptor()).build();This implementation completely replaces the old one (based on a watchdog) on devices running Android 11 and above:
mechanism:AppExitInfo.The old watchdog implementation will continue working for older API versions (Android < 11):
mechanism:ANR.Instead of relying on package scanning, we now use an annotation processor to generate
Log4j2Plugins.datchangelog
diff
Add
nameandgeotoUser(#2556)HandlerExceptionResolver,SentryWebExceptionHandler) in your dashboards please update them to use the new types.nullmeaning existing behaviour remains unchanged (setting eithertracesSampleRateortracesSamplerenables performance).true, performance is enabled, even if notracesSampleRateortracesSamplerhave been configured.falseperformance is disabled, regardless oftracesSampleRateandtracesSampleroptions.Add
mainflag to threads andin_foregroundflag for app contexts (#2516)Server-Side Dynamic Sampling Context support (#2226)
JsonSerializableandJsonDeserializerinterfaces for manual jsonserialization/deserialization.
JsonUnknwoninterface to preserve unknown properties when deserializing/serializingSDK classes.
Contexts, these are supported for serialization:JsonSerializableMap,Collection,Array,Stringand all primitive types.Map,Collection,Array,Stringand all primitive types.toString()on objects that have a cyclic reference to a ancestor object.toString()where object graphs exceed max depth.gsondependency.IUnknownPropertiesConsumerChange order of event filtering mechanisms and only send session update for dropped events if session state changed (#2028)
Free Local Refs manually due to Android local ref. count limits (#1179)
sentry-android-timberdependency:SentryTimberIntegration:Full CHANGELOG.md diff
// Enable UI profiling, adjust in production env. This is evaluated only once per session
options.setProfileSessionSampleRate(1.0);
-1097,6 +1114,7 SentryAndroid.init(
options.setStartProfilerOnAppStart(true);
});
-1167,10 +1185,10 SentryAndroid.init(
Features
Add Continuous Profiling Support (#3710)
To enable Continuous Profiling use the
Sentry.startProfilerandSentry.stopProfilerexperimental APIs. Sampling rate can be set throughoptions.profileSessionSampleRate, which defaults to null (disabled).To enable Continuous Profiling use the
Sentry.startProfilerandSentry.stopProfilerexperimental APIs. Sampling rate can be set throughoptions.profileSessionSampleRate, which defaults to null (disabled).Note: Both
options.profilesSamplerandoptions.profilesSampleRatemust not be set to enable Continuous Profiling.-1178,7 +1196,7 SentryAndroid.init(
import io.sentry.android.core.SentryAndroid;
SentryAndroid.init(context) { options ->
options.getExperimental().setProfileSessionSampleRate(1.0);
// In manual mode, you need to start and stop the profiler manually using Sentry.startProfiler and Sentry.stopProfiler
-1187,16 +1205,17 SentryAndroid.init(
}
// Start profiling
Sentry.startProfiler();
Sentry.stopProfiler();
options.experimental.profileSessionSampleRate = 1.0
// In manual mode, you need to start and stop the profiler manually using Sentry.startProfiler and Sentry.stopProfiler
-1205,7 +1224,7 SentryAndroid.init(
}
// Start profiling
Sentry.startProfiler()
Sentry.stopProfiler()
-1243,7 +1262,7 SentryAndroid.init(
- remove any previous value if the new value is set to
nullRequestby subsequent interceptors won't be consideredRequestby subsequent interceptors won't be consideredThrowableto Sentry as it's not availableOpenTelemetryAppender, please consider upgrading to v2-1316,7 +1335,7 SentryAndroid.init(
Behavioural Changes
io.sentry.spring.jakarta.webflux.ReactorUtilsis now deprecated, please useio.sentry.reactor.SentryReactorUtilsin the newsentry-reactormodule instead (#4155)apidependency when usingsentry-spring-boot-jakarta(Spring Boot 3) orsentry-spring-jakarta(Spring 6).apidependency when usingsentry-spring-boot-jakarta(Spring Boot 3) orsentry-spring-jakarta(Spring 6).Therefore, if you're using one of those modules, changing your imports will suffice.
8.2.0
-1330,7 +1349,7 SentryAndroid.init(
Appcontext (#3193)withSentryObservableEffectmethod overload that acceptsSentryNavigationListeneras a parameter (#4143)SentryNavigationListenerinstance across fragments and composables to preserve the traceSentryNavigationListenerinstance across fragments and composables to preserve the tracebaggageheader on outgoing requests-1401,6 +1420,7 SentryAndroid.init(context) { options ->