Migrate from sentry-android 6.x to 7.0.0
Learn about migrating from Sentry Android SDK 6.x to 7.0.0.
- The minimum supported API level was updated to 19 (
minSdk). - The
sentry-android-okhttpclasses were deprecated in favor ofsentry-okhttp, which is a pure Java module and can be used in non-Android projects.- The
SentryOkHttpUtilsclass was removed from the public API. If you were using it, consider filing a feature request.
- The
- If you're using
sentry-kotlin-extensions, it now requireskotlinx-coroutines-coreversion1.6.1or higher. - Moved
enableNdkandenableScopeSyncfromSentryOptionstoSentryAndroidOptions. - Changed the return type of
SentryApolloInterceptor.BeforeSpanCallbackfromISpantoISpan?. Scopenow implements theIScopeinterface, therefore some methods likeScopeCallback.runacceptIScopenow.- Some
Sentry.startTransactionoverloads do not exist anymore, and instead, you can set old options by passing aTransactionOptionsobject in.
For example:
Copied
// old
val transaction = Sentry.startTransaction("name", "op", bindToScope = true)
// new
val transaction = Sentry.startTransaction("name", "op", TransactionOptions().apply { isBindToScope = true })
Sentry.getSpan()now returns the root span/transaction instead of the latest span.- This will make the span hierarchy leaner and more readable.
- The SDK now captures failed HTTP and GraphQL (Apollo) requests by default.
- This can increase your event consumption and may affect your quota, because we will report failed network requests as Sentry events if you're using the
sentry-android-okhttporsentry-apollo-3integrations by default. You can customize what errors you want/don't want to have reported for OkHttp and Apollo3 respectively.
- This can increase your event consumption and may affect your quota, because we will report failed network requests as Sentry events if you're using the
- Added a deadline timeout for automatic transactions.
- This affects all automatically generated transactions on Android (UI, clicks). The default timeout is 30s, meaning the automatic transaction will be force-finished with the status
deadline_exceededwhen it reaches the deadline.
- This affects all automatically generated transactions on Android (UI, clicks). The default timeout is 30s, meaning the automatic transaction will be force-finished with the status
- The SDK now sets
ip_addressto {{auto}} by default, even if sendDefaultPII is disabled.- We recommend you instead use the "Prevent Storing of IP Addresses" option in the "Security & Privacy" project settings on sentry.io.
- The
maxSpanssetting (defaults to 1000) is now enforced for nested child spans. This means a single transaction can havemaxSpansnumber of children (nested or not) at most.
Make sure to align all Sentry dependencies (like -timber, -okhttp or other packages) to the same version when bumping the SDK to 7.+, otherwise, it will crash at runtime due to binary incompatibility.
For example, if you're using the Sentry Android Gradle plugin with the autoInstallation feature (enabled by default), make sure to use version 4.+ of the Gradle plugin together with version 7.+ of the SDK. If you can't do that for some reason, you can specify the Sentry version via the plugin config block:
Copied
sentry {
autoInstallation {
sentryVersion.set("7.0.0")
}
}
Similarly, if you have a Sentry SDK (e.g. sentry-android-core) dependency on one of your Gradle modules and you're updating it to 7.+, make sure the Gradle plugin is at 4.+ or specify the SDK version as shown in the snippet above.
- Starting with version
7.0.0ofsentry, Sentry's version >= v22.12.0 is required to properly ingest transactions with unfinished spans. This only applies to self-hosted Sentry. If you are using sentry.io, no action is needed.
Was this helpful?
Help improve this content
Our documentation is open source and available on GitHub. Your contributions are welcome, whether fixing a typo (drat!) or suggesting an update ("yeah, this would be better").
Our documentation is open source and available on GitHub. Your contributions are welcome, whether fixing a typo (drat!) or suggesting an update ("yeah, this would be better").