relay-sentry v0.2.0
relay-sentry

Relay log function that enriches Sentry with Relay lifecycles and GraphQL data
⚙️ Install
yarn add relay-sentry🧱 Usage
import { logFunction } from 'relay-sentry';
import { Environment } from 'relay-runtime';
const environment = new Environment({
log: logFunction(),
network,
store,
});If you want to also include the GraphQL errors array to the Sentry
exception context. You can throw a custom Error class that contains a property called graphqlErrors. Internally
we look for that key on the error object, and send it.
Under the hood it uses @sentry/minimal so there is no discrepancy between Node/Browser runtimes.
import type { ErrorWithGraphQLErrors } from 'relay-sentry';
declare global {
interface Error extends ErrorWithGraphQLErrors {}
}🎢 What does it look like?

Leaves a debug/info breadcrumb trail for all intermediate life cycle events.
At this stage it doesn't filter any variables, but if there's a need for it—submit a PR 🕺
🔎 API
logFunction(options?: Options): LogFunction
Options
| Option | Description | Default |
|---|---|---|
filterEvents?: (logEvent: LogEvent) => boolean | Use to filter log events from creating breadcrumbs | undefined |
⁉ Help
import { logFunction } from 'relay-sentry';
import { Environment } from 'relay-runtime';
const environment = new Environment({
log: (logEvent) => {
logFunction(logEvent);
// Do your logs
},
network,
store,
});When you're running Sentry.init set the
normalizeDepth to something
bigger, maybe 10.
relay-sentry used to also manually capture an exception thorough the captureException Sentry api. However, through
user feedback and further exploration we found it best to leave that to the consumer through the use of an
async-boundary or alike. This avoided the double error emission (or event)
for an error that would have also been emitted by those boundaries.
License
MIT © Marais Rossouw