Apollo3
Capturing transactions requires that you first set up performance monitoring if you haven't already.
Sentry Apollo3 integration provides the SentryApollo3Interceptor
and the SentryApollo3HttpInterceptor
, which create a span for each outgoing HTTP request executed with an Apollo Kotlin GraphQL client. For easier usage, the integration also provides extension functions on the ApolloClient.Builder
.
Install
implementation 'io.sentry:sentry-apollo-3:6.17.0'
For other dependency managers, see the central Maven repository.
Configure With Extension
Add Interceptors
to ApolloClient.Builder
using ApolloBuilderExtensions
:
import com.apollographql.apollo3.ApolloClient;
import io.sentry.apollo3.SentryApolloBuilderExtensionsKt;
ApolloClient apollo = SentryApolloBuilderExtensionsKt.sentryTracing(new ApolloClient.Builder())
.serverUrl("https://your-api-host/")
.build();
Manual Configuration
When using a custom NetworkTransport
, the SentryInterceptors
need to be added manually, because HttpInterceptors
need to be added to the NetworkTransport
:
import com.apollographql.apollo3.ApolloClient;
import com.apollographql.apollo3.network.http.HttpNetworkTransport;
import io.sentry.apollo3.SentryApollo3HttpInterceptor;
import io.sentry.apollo3.SentryApollo3Interceptor;
ApolloClient apollo = new ApolloClient.Builder()
.networkTransport(
new HttpNetworkTransport.Builder()
.serverUrl("https://your-api-host/")
.addInterceptor(new SentryApollo3HttpInterceptor())
.build())
.addInterceptor(new SentryApollo3Interceptor())
.build();
Modify or Drop Spans
Spans created around requests can be modified or dropped using SentryApollo3HttpInterceptor.BeforeSpanCallback
passed to SentryApollo3HttpInterceptor
or the sentryTracing
extension function:
import com.apollographql.apollo3.ApolloClient;
import io.sentry.apollo3.SentryApolloBuilderExtensionsKt;
ApolloClient apollo = SentryApolloBuilderExtensionsKt.sentryTracing(
new ApolloClient.Builder(),
(span, request, response) -> {
if ("LaunchDetails".equals(span.getOperation())) {
span.setTag("tag-name", "tag-value");
}
return span;
})
.serverUrl("https://your-api-host/")
.build();
Our documentation is open source and available on GitHub. Your contributions are welcome, whether fixing a typo (drat!) to suggesting an update ("yeah, this would be better").
- Package:
- maven:io.sentry:sentry-android
- Version:
- 6.17.0
- Repository:
- https://github.com/getsentry/sentry-java