diff --git a/src/router.tsx b/src/router.tsx index fc00c99e..35905bd9 100644 --- a/src/router.tsx +++ b/src/router.tsx @@ -63,12 +63,22 @@ 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 +88,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