mirror of
https://github.com/Significant-Gravitas/AutoGPT.git
synced 2026-02-18 10:41:49 -05:00
## Summary - Adds `ignoreErrors` to the Sentry client configuration (`instrumentation-client.ts`) to filter out `SecurityError: CSSStyleSheet.cssRules getter: Not allowed to access cross-origin stylesheet` errors - These errors are caused by Sentry Replay (rrweb) attempting to serialize DOM snapshots that include cross-origin stylesheets (from browser extensions or CDN-loaded CSS) - This was reported via Sentry on production, occurring on any page when logged in ## Changes - **`frontend/instrumentation-client.ts`**: Added `ignoreErrors: [/Not allowed to access cross-origin stylesheet/]` to `Sentry.init()` config ## Test plan - [ ] Verify the error no longer appears in Sentry after deployment - [ ] Verify Sentry Replay still works correctly for other errors - [ ] Verify no regressions in error tracking (other errors should still be captured) 🤖 Generated with [Claude Code](https://claude.com/claude-code) <!-- greptile_comment --> <h2>Greptile Overview</h2> <details><summary><h3>Greptile Summary</h3></summary> Adds error filtering to Sentry client configuration to suppress cross-origin stylesheet security errors that occur when Sentry Replay (rrweb) attempts to serialize DOM snapshots containing stylesheets from browser extensions or CDN-loaded CSS. This prevents noise in Sentry error logs without affecting the capture of legitimate errors. </details> <details><summary><h3>Confidence Score: 5/5</h3></summary> - This PR is safe to merge with minimal risk - The change adds a simple error filter to suppress benign cross-origin stylesheet errors that are caused by Sentry Replay itself. The regex pattern is specific and only affects client-side error reporting, with no impact on application functionality or legitimate error capture - No files require special attention </details> <!-- greptile_other_comments_section --> <!-- /greptile_comment --> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
82 lines
3.2 KiB
TypeScript
82 lines
3.2 KiB
TypeScript
// This file configures the initialization of Sentry on the client.
|
|
// The config you add here will be used whenever a users loads a page in their browser.
|
|
// https://docs.sentry.io/platforms/javascript/guides/nextjs/
|
|
|
|
import { consent } from "@/services/consent/cookies";
|
|
import { environment } from "@/services/environment";
|
|
import * as Sentry from "@sentry/nextjs";
|
|
|
|
const isProdOrDev = environment.isProd() || environment.isDev();
|
|
const isCloud = environment.isCloud();
|
|
const isDisabled = process.env.DISABLE_SENTRY === "true";
|
|
|
|
const shouldEnable = !isDisabled && isProdOrDev && isCloud;
|
|
|
|
// Check for monitoring consent (includes session replay)
|
|
const hasMonitoringConsent = consent.hasConsentFor("monitoring");
|
|
|
|
Sentry.init({
|
|
dsn: "https://fe4e4aa4a283391808a5da396da20159@o4505260022104064.ingest.us.sentry.io/4507946746380288",
|
|
|
|
environment: environment.getEnvironmentStr(),
|
|
|
|
enabled: shouldEnable,
|
|
|
|
// Suppress cross-origin stylesheet errors from Sentry Replay (rrweb)
|
|
// serializing DOM snapshots with cross-origin stylesheets
|
|
// (e.g., from browser extensions or CDN-loaded CSS)
|
|
ignoreErrors: [/Not allowed to access cross-origin stylesheet/],
|
|
|
|
// Add optional integrations for additional features
|
|
integrations: [
|
|
Sentry.captureConsoleIntegration(),
|
|
Sentry.extraErrorDataIntegration(),
|
|
Sentry.browserProfilingIntegration(),
|
|
Sentry.httpClientIntegration(),
|
|
Sentry.launchDarklyIntegration(),
|
|
Sentry.replayIntegration({
|
|
unmask: [".sentry-unmask, [data-sentry-unmask]"],
|
|
}),
|
|
Sentry.replayCanvasIntegration(),
|
|
Sentry.reportingObserverIntegration(),
|
|
// Sentry.feedbackIntegration({
|
|
// // Additional SDK configuration goes in here, for example:
|
|
// colorScheme: "system",
|
|
// }),
|
|
],
|
|
|
|
// Define how likely traces are sampled. Adjust this value in production, or use tracesSampler for greater control.
|
|
tracesSampleRate: 1,
|
|
|
|
// Set `tracePropagationTargets` to control for which URLs trace propagation should be enabled
|
|
tracePropagationTargets: [
|
|
"localhost",
|
|
"localhost:8006",
|
|
/^https:\/\/dev\-builder\.agpt\.co\/api/,
|
|
/^https:\/\/.*\.agpt\.co\/api/,
|
|
],
|
|
|
|
// 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
|
|
// GDPR: Only enable if user has consented to monitoring
|
|
replaysSessionSampleRate: hasMonitoringConsent ? 0.1 : 0,
|
|
|
|
// Define how likely Replay events are sampled when an error occurs.
|
|
// GDPR: Only enable if user has consented to monitoring
|
|
replaysOnErrorSampleRate: hasMonitoringConsent ? 1.0 : 0,
|
|
|
|
// Setting this option to true will print useful information to the console while you're setting up Sentry.
|
|
debug: false,
|
|
|
|
// Set profilesSampleRate to 1.0 to profile every transaction.
|
|
// Since profilesSampleRate is relative to tracesSampleRate,
|
|
// the final profiling rate can be computed as tracesSampleRate * profilesSampleRate
|
|
// For example, a tracesSampleRate of 0.5 and profilesSampleRate of 0.5 would
|
|
// result in 25% of transactions being profiled (0.5*0.5=0.25)
|
|
profilesSampleRate: 1.0,
|
|
enableLogs: true,
|
|
});
|
|
|
|
export const onRouterTransitionStart = Sentry.captureRouterTransitionStart;
|