Open linsen opened 6 months ago
Dealing with the same issue. Thank you for creating a reproduction!
Hi Sentry SvelteKit maintainer here 👋 I'll take a look if we can fix this on our end.
As far as I can tell from reading the sveltekit code, this only is a problem in dev mode, though, right?
Hey, so I took a look and I understand now, why this happens. The reason is indeed that the warning is a false positive. So most importantly: Our SDK does not call history.pushState
or history.replaceState
. So there's no impact in functionality.
SvelteKit looks at an error stack trace to determine if it should show the warning or not. If you use the Sentry SDK, the SDK will monkey patch history.pushState
and history.replaceState
, thereby adding one more frame into the stack trace. Again, this doesn't mean we call it, just that we observe when/if it is called for various SDK-internal functionality.
I'll take a look if I can come up with a fix in SvelteKit for this.
Some more information:
The stack check in SvelteKit slices away a couple of frames because of various stack trace differences in browser (red) and the ones from its own monkey patch (blue):
(this is from chrome browser)
The check would expect line 4 to be line 3, and therefore fails because sentry's monkey patch is in between
~IIUC, we should not emit the warning, if lowest replaceState
or pushState
stack frame originates from the sveltekit client.js file. Cause this means, we called the two functions originally within sveltekit. Does this make sense?~
UPDATE: Turns out, it's not so simple to reliably detect the call origin of push|replaceSate
calls. Not sure how we can solve this across browsers. For instance, Safari is happy with the current way but FF and Chrome throw the warning.
A possible fix could be to filter out any URLs that have node_modules etc in them. Another (hacky) way could be to have a wrapper that is invoked after a small timeout, which checks how many stack entries it has, and takes that as the base of things to substract (and that way recognizing any monkeyp atches), then removing itself in favor of the dev time check.
A possible fix could be to filter out any URLs that have node_modules etc in them
Honestly, sounds good enough to me 😅 Are you fine if I submit a PR for this?
Sure, go ahead!
Describe the bug
I'm getting the same false positive warnings as described in https://github.com/sveltejs/kit/issues/11671 , specifically after installing Sentry using the wizard and default settings (as described in https://docs.sentry.io/platforms/javascript/guides/sveltekit/).
I've attached a minimal repo that's a fresh sveltekit install with Sentry added to it. The warning appears on the first page load after a hard refresh.
Reproduction
https://github.com/linsen/sveltekit-sentry-warning
Logs
System Info
Severity
annoyance
Additional Information
No response