Sentry integration
Integrate Sentry to monitor errors from a Supabase client
You can use Sentry to monitor errors thrown from a Supabase JavaScript client. Install the Supabase Sentry integration to get started.
The Sentry integration supports browser, Node, and edge environments.
Installation
Install the Sentry integration using your package manager:
_10npm install @supabase/sentry-js-integration
Use
If you are using Sentry JavaScript SDK v7, reference supabase-community/sentry-integration-js
repository instead.
To use the Supabase Sentry integration, add it to your integrations
list when initializing your Sentry client.
You can supply either the Supabase Client constructor or an already-initiated instance of a Supabase Client.
_14import * as Sentry from '@sentry/browser'_14import { SupabaseClient } from '@supabase/supabase-js'_14import { supabaseIntegration } from '@supabase/sentry-js-integration'_14_14Sentry.init({_14 dsn: SENTRY_DSN,_14 integrations: [_14 supabaseIntegration(SupabaseClient, Sentry, {_14 tracing: true,_14 breadcrumbs: true,_14 errors: true,_14 }),_14 ],_14})
All available configuration options are available in our supabase-community/sentry-integration-js
repository.
Deduplicating spans
If you're already monitoring HTTP errors in Sentry, for example with the Http, Fetch, or Undici integrations, you will get duplicate spans for Supabase calls. You can deduplicate the spans by skipping them in your other integration:
_45import * as Sentry from '@sentry/browser'_45import { SupabaseClient } from '@supabase/supabase-js'_45import { supabaseIntegration } from '@supabase/sentry-js-integration'_45_45Sentry.init({_45 dsn: SENTRY_DSN,_45 integrations: [_45 supabaseIntegration(SupabaseClient, Sentry, {_45 tracing: true,_45 breadcrumbs: true,_45 errors: true,_45 }),_45_45 // @sentry/browser_45 Sentry.browserTracingIntegration({_45 shouldCreateSpanForRequest: (url) => {_45 return !url.startsWith(`${SUPABASE_URL}/rest`)_45 },_45 }),_45_45 // or @sentry/node_45 Sentry.httpIntegration({_45 tracing: {_45 ignoreOutgoingRequests: (url) => {_45 return url.startsWith(`${SUPABASE_URL}/rest`)_45 },_45 },_45 }),_45_45 // or @sentry/node with Fetch support_45 Sentry.nativeNodeFetchIntegration({_45 ignoreOutgoingRequests: (url) => {_45 return url.startsWith(`${SUPABASE_URL}/rest`)_45 },_45 }),_45_45 // or @sentry/WinterCGFetch for Next.js Middleware & Edge Functions_45 Sentry.winterCGFetchIntegration({_45 breadcrumbs: true,_45 shouldCreateSpanForRequest: (url) => {_45 return !url.startsWith(`${SUPABASE_URL}/rest`)_45 },_45 }),_45 ],_45})
Example Next.js configuration
See this example for a setup with Next.js to cover browser, server, and edge environments. First, run through the Sentry Next.js wizard to generate the base Next.js configuration. Then add the Supabase Sentry Integration to all your Sentry.init
calls with the appropriate filters.
Afterward build your application (npm run build
) and start it locally (npm run start
). You will now see the transactions being logged in the terminal when making supabase-js requests.