This SDK is considering experimental and in an alpha state. It may experience breaking changes. Please reach out on GitHub if you have any feedback/concerns.
This package is a wrapper around @sentry/node for the server and @sentry/react for the client, with added functionality related to Remix.
To use this SDK, initialize Sentry in your Remix entry points for both the client and server.
// entry.client.tsx
import { useLocation, useMatches } from "@remix-run/react";
import * as Sentry from "@sentry/remix";
import { useEffect } from "react";
Sentry.init({
dsn: "__DSN__",
tracesSampleRate: 1,
integrations: [
new Sentry.BrowserTracing({
routingInstrumentation: Sentry.remixRouterInstrumentation(
useEffect,
useLocation,
useMatches,
),
}),
],
// ...
});// entry.server.tsx
import { prisma } from "~/db.server";
import * as Sentry from "@sentry/remix";
Sentry.init({
dsn: "__DSN__",
tracesSampleRate: 1,
integrations: [new Sentry.Integrations.Prisma({ client: prisma })],
// ...
});Also, wrap your Remix root, with Sentry's ErrorBoundary component to catch React component errors, and withSentryRouteTracing to get parameterized router transactions.
// root.tsx
import {
Links,
LiveReload,
Meta,
Outlet,
Scripts
ScrollRestoration,
} from "@remix-run/react";
import { ErrorBoundary, withSentryRouteTracing } from "@sentry/remix";
function App() {
return (
<ErrorBoundary>
<html>
<head>
<Meta />
<Links />
</head>
<body>
<Outlet />
<ScrollRestoration />
<Scripts />
<LiveReload />
</body>
</html>
</ErrorBoundary>
);
}
export default withSentryRouteTracing(App);To set context information or send manual events, use the exported functions of @sentry/remix.
import * as Sentry from '@sentry/remix';
// Set user information, as well as tags and further extras
Sentry.configureScope(scope => {
scope.setExtra('battery', 0.7);
scope.setTag('user_mode', 'admin');
scope.setUser({ id: '4711' });
// scope.clear();
});
// Add a breadcrumb for future events
Sentry.addBreadcrumb({
message: 'My Breadcrumb',
// ...
});
// Capture exceptions, messages or manual events
Sentry.captureMessage('Hello, world!');
Sentry.captureException(new Error('Good bye'));
Sentry.captureEvent({
message: 'Manual',
stacktrace: [
// ...
],
});The Remix SDK provides a script that automatically creates a release and uploads sourcemaps. To generate sourcemaps with Remix, you need to call remix build with --sourcemap option.
On release, call sentry-upload-sourcemaps to upload source maps and create a release. To see more details on how to use the command, call sentry-upload-sourcemaps --help.
For more advanced configuration, directly use sentry-cli to upload source maps..