diff --git a/frontend/src/Store/Middleware/createSentryMiddleware.js b/frontend/src/Store/Middleware/createSentryMiddleware.js index 18ea611b6..02706b8a1 100644 --- a/frontend/src/Store/Middleware/createSentryMiddleware.js +++ b/frontend/src/Store/Middleware/createSentryMiddleware.js @@ -3,14 +3,26 @@ import * as Integrations from '@sentry/integrations'; import _ from 'lodash'; import parseUrl from 'Utilities/String/parseUrl'; +const IgnoreErrors = [ + // Innocuous browser errors + /ResizeObserver loop limit exceeded/, + /ResizeObserver loop completed with undelivered notifications/ +]; + function cleanseUrl(url) { const properties = parseUrl(url); return `${properties.pathname}${properties.search}`; } -function cleanseData(data) { - const result = _.cloneDeep(data); +function shouldIgnoreException(s) { + return s && IgnoreErrors.find((pattern) => pattern.test(s)); +} + +function cleanseData(event, hint) { + const result = _.cloneDeep(event); + + const error = hint && hint.originalException; result.transaction = cleanseUrl(result.transaction); @@ -26,6 +38,14 @@ function cleanseData(data) { }); } + if ( + error && + error.message && + shouldIgnoreException(error.message) + ) { + return null; + } + result.request.url = cleanseUrl(result.request.url); return result; @@ -88,7 +108,6 @@ export default function createSentryMiddleware() { environment: branch, release, sendDefaultPii: true, - ignoreErrors: ['ResizeObserver loop limit exceeded'], beforeSend: cleanseData, integrations: [ new Integrations.RewriteFrames({ iteratee: stripUrlBase }),