Skip to content

Commit 51e0311

Browse files
committed
Clean up deferred promise pattern and clear lazy routes flag after resolution
1 parent c47669c commit 51e0311

1 file changed

Lines changed: 5 additions & 3 deletions

File tree

packages/react/src/reactrouter-compat-utils/instrumentation.tsx

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -241,12 +241,10 @@ function trackLazyRouteLoad(span: Span, promise: Promise<unknown>): void {
241241
* This ensures that patchedEnd waits for patchRoutesOnNavigation to be called before ending the span.
242242
*/
243243
function createDeferredLazyRoutePromise(span: Span): void {
244-
let resolvePromise: () => void;
245244
const deferredPromise = new Promise<void>(resolve => {
246-
resolvePromise = resolve;
245+
deferredLazyRouteResolvers.set(span, resolve);
247246
});
248247

249-
deferredLazyRouteResolvers.set(span, resolvePromise!);
250248
trackLazyRouteLoad(span, deferredPromise);
251249
}
252250

@@ -259,6 +257,10 @@ function resolveDeferredLazyRoutePromise(span: Span): void {
259257
if (resolver) {
260258
resolver();
261259
deferredLazyRouteResolvers.delete(span);
260+
// Clear the flag so patchSpanEnd doesn't wait unnecessarily for routes that have already loaded
261+
if ((span as unknown as Record<string, boolean>).__sentry_may_have_lazy_routes__) {
262+
(span as unknown as Record<string, boolean>).__sentry_may_have_lazy_routes__ = false;
263+
}
262264
}
263265
}
264266

0 commit comments

Comments
 (0)