File tree 1 file changed +11
-1
lines changed
packages/sveltekit/src/client
1 file changed +11
-1
lines changed Original file line number Diff line number Diff line change @@ -71,7 +71,17 @@ export function wrapLoadWithSentry<T extends (...args: any) => any>(origLoad: T)
71
71
72
72
addNonEnumerableProperty ( patchedEvent as unknown as Record < string , unknown > , '__sentry_wrapped__' , true ) ;
73
73
74
- const routeId = event . route . id ;
74
+ // Accessing any member of `event.route` causes SvelteKit to invalidate the
75
+ // client-side universal `load` function's data prefetched data, causing another reload on the actual navigation.
76
+ // To work around this, we use `Object.getOwnPropertyDescriptor` which doesn't invoke the proxy.
77
+ const routeIdDescriptor = event . route && Object . getOwnPropertyDescriptor ( event . route , 'id' ) ;
78
+ // First, we try to access the route id from the property descriptor.
79
+ // This will only work for @sveltejs /kit >= 1.24.0
80
+ const routeIdFromDescriptor = routeIdDescriptor && ( routeIdDescriptor . value as string | undefined ) ;
81
+ // If routeIdFromDescriptor is undefined, we fall back to the old behavior of accessing
82
+ // `event.route.id` directly. This will still cause invalidations but we get a route name.
83
+ const routeId = routeIdFromDescriptor || event . route . id ;
84
+
75
85
return trace (
76
86
{
77
87
op : 'function.sveltekit.load' ,
You can’t perform that action at this time.
0 commit comments