Skip to content

Commit 010ab31

Browse files
authored
fix: Enhance Sentry error suppression for ad scripts
1 parent eb5534e commit 010ab31

File tree

1 file changed

+21
-11
lines changed

1 file changed

+21
-11
lines changed

src/router.tsx

Lines changed: 21 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -63,12 +63,21 @@ export function getRouter() {
6363
// These errors occur in iOS Safari and during navigation due to strict Same-Origin Policy
6464
// and race conditions with ad script initialization
6565
const error = hint.originalException
66-
const errorMessage =
67-
typeof error === 'string'
68-
? error
69-
: error instanceof Error
70-
? error.message
71-
: ''
66+
67+
// Extract error message from multiple sources
68+
let errorMessage = ''
69+
if (typeof error === 'string') {
70+
errorMessage = error
71+
} else if (error instanceof Error) {
72+
errorMessage = error.message
73+
}
74+
75+
// Also check the event exception structure as a fallback
76+
const eventErrorMessage = event.exception?.values?.[0]?.value || ''
77+
const eventErrorType = event.exception?.values?.[0]?.type || ''
78+
79+
// Combine error messages for comprehensive checking
80+
const fullErrorMessage = `${errorMessage} ${eventErrorMessage} ${eventErrorType}`.toLowerCase()
7281

7382
// Check if this is an ad script error we want to suppress
7483
const frames = event.exception?.values?.[0]?.stacktrace?.frames || []
@@ -78,20 +87,21 @@ export function getRouter() {
7887
filename.includes('/media/native/') ||
7988
filename.includes('fuse.js') ||
8089
filename.includes('fuseplatform.net') ||
81-
filename.includes('/nobid/blocking_script.js')
90+
filename.includes('/nobid/blocking_script.js') ||
91+
filename.includes('blocking_script')
8292
)
8393
})
8494

8595
const hasExpectedErrorMessage =
86-
errorMessage.includes('contextWindow.parent') ||
87-
errorMessage.includes('null is not an object') ||
88-
errorMessage.includes('is not a function')
96+
fullErrorMessage.includes('contextwindow.parent') ||
97+
fullErrorMessage.includes('null is not an object') ||
98+
fullErrorMessage.includes('is not a function')
8999

90100
if (hasAdScriptFrame && hasExpectedErrorMessage) {
91101
// Suppress the error - log to console in debug mode
92102
console.debug(
93103
'Suppressed Publift Fuse/ad script error:',
94-
errorMessage,
104+
eventErrorMessage || errorMessage,
95105
frames[0]?.filename,
96106
)
97107
return null // Don't send to Sentry

0 commit comments

Comments
 (0)