// This file configures the initialization of Sentry on the client. // The added config here will be used whenever a users loads a page in their browser. // https://docs.sentry.io/platforms/javascript/guides/nextjs/ import * as Sentry from "@sentry/nextjs" function sentryShouldDropExpectedNonActionableError(event: { message?: string exception?: { values?: Array<{ type?: string; value?: string }> } }): boolean { const patterns = [ /user location is not supported/i, /this email domain is not allowed/i, ] const matches = (s: string | undefined) => s != null && patterns.some((re) => re.test(s)) if (matches(event.message)) return true for (const ex of event.exception?.values ?? []) { if (matches(ex.value)) return true } return false } Sentry.init({ dsn: "https://2451ebfd1a7490f05fa7776482df81b6@o4508385422802944.ingest.us.sentry.io/4509872269819904", // Add optional integrations for additional features integrations: [Sentry.replayIntegration()], // Define how likely traces are sampled. Adjust this value in production, or use tracesSampler for greater control. tracesSampleRate: 1, // Enable logs to be sent to Sentry enableLogs: true, // Define how likely Replay events are sampled. // This sets the sample rate to be 10%. You may want this to be 100% while // in development and sample at a lower rate in production replaysSessionSampleRate: 0.1, // Define how likely Replay events are sampled when an error occurs. replaysOnErrorSampleRate: 1.0, // Setting this option to true will print useful information to the console while you're setting up Sentry. debug: false, beforeSend(event) { if (sentryShouldDropExpectedNonActionableError(event)) return null return event }, }) export const onRouterTransitionStart = Sentry.captureRouterTransitionStart