From 010ab3165b44f0306b0df9cb539495fd8470406f Mon Sep 17 00:00:00 2001 From: "sentry[bot]" <39604003+sentry[bot]@users.noreply.github.com> Date: Thu, 5 Feb 2026 09:09:37 +0000 Subject: [PATCH 1/2] fix: Enhance Sentry error suppression for ad scripts --- src/router.tsx | 32 +++++++++++++++++++++----------- 1 file changed, 21 insertions(+), 11 deletions(-) diff --git a/src/router.tsx b/src/router.tsx index fc00c99e..9839b46c 100644 --- a/src/router.tsx +++ b/src/router.tsx @@ -63,12 +63,21 @@ export function getRouter() { // These errors occur in iOS Safari and during navigation due to strict Same-Origin Policy // and race conditions with ad script initialization const error = hint.originalException - const errorMessage = - typeof error === 'string' - ? error - : error instanceof Error - ? error.message - : '' + + // Extract error message from multiple sources + let errorMessage = '' + if (typeof error === 'string') { + errorMessage = error + } else if (error instanceof Error) { + errorMessage = error.message + } + + // Also check the event exception structure as a fallback + const eventErrorMessage = event.exception?.values?.[0]?.value || '' + const eventErrorType = event.exception?.values?.[0]?.type || '' + + // Combine error messages for comprehensive checking + const fullErrorMessage = `${errorMessage} ${eventErrorMessage} ${eventErrorType}`.toLowerCase() // Check if this is an ad script error we want to suppress const frames = event.exception?.values?.[0]?.stacktrace?.frames || [] @@ -78,20 +87,21 @@ export function getRouter() { filename.includes('/media/native/') || filename.includes('fuse.js') || filename.includes('fuseplatform.net') || - filename.includes('/nobid/blocking_script.js') + filename.includes('/nobid/blocking_script.js') || + filename.includes('blocking_script') ) }) const hasExpectedErrorMessage = - errorMessage.includes('contextWindow.parent') || - errorMessage.includes('null is not an object') || - errorMessage.includes('is not a function') + fullErrorMessage.includes('contextwindow.parent') || + fullErrorMessage.includes('null is not an object') || + fullErrorMessage.includes('is not a function') if (hasAdScriptFrame && hasExpectedErrorMessage) { // Suppress the error - log to console in debug mode console.debug( 'Suppressed Publift Fuse/ad script error:', - errorMessage, + eventErrorMessage || errorMessage, frames[0]?.filename, ) return null // Don't send to Sentry From d708b6e428feec131056d5c5b2bea0e97e214a09 Mon Sep 17 00:00:00 2001 From: "autofix-ci[bot]" <114827586+autofix-ci[bot]@users.noreply.github.com> Date: Thu, 5 Feb 2026 09:10:28 +0000 Subject: [PATCH 2/2] ci: apply automated fixes --- src/router.tsx | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/router.tsx b/src/router.tsx index 9839b46c..35905bd9 100644 --- a/src/router.tsx +++ b/src/router.tsx @@ -63,7 +63,7 @@ export function getRouter() { // These errors occur in iOS Safari and during navigation due to strict Same-Origin Policy // and race conditions with ad script initialization const error = hint.originalException - + // Extract error message from multiple sources let errorMessage = '' if (typeof error === 'string') { @@ -71,13 +71,14 @@ export function getRouter() { } else if (error instanceof Error) { errorMessage = error.message } - + // Also check the event exception structure as a fallback const eventErrorMessage = event.exception?.values?.[0]?.value || '' const eventErrorType = event.exception?.values?.[0]?.type || '' - + // Combine error messages for comprehensive checking - const fullErrorMessage = `${errorMessage} ${eventErrorMessage} ${eventErrorType}`.toLowerCase() + const fullErrorMessage = + `${errorMessage} ${eventErrorMessage} ${eventErrorType}`.toLowerCase() // Check if this is an ad script error we want to suppress const frames = event.exception?.values?.[0]?.stacktrace?.frames || []