Skip to content

Commit 1fb8a6d

Browse files
committed
Address potential race condition
1 parent 851b1b0 commit 1fb8a6d

File tree

1 file changed

+20
-18
lines changed

1 file changed

+20
-18
lines changed

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

Lines changed: 20 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -268,16 +268,17 @@ export function createV6CompatibleWrapCreateBrowserRouter<
268268

269269
if (isCurrentlyInPageload) {
270270
hasSeenPageloadSpan = true;
271-
} else if (!hasSeenPageloadSpan) {
272-
// No pageload span detected, so we're not in initial pageload mode
273-
isInitialPageloadComplete = true;
274-
} else if (state.historyAction === 'POP' && !hasSeenPopAfterPageload) {
275-
// Pageload ended: ignore the first POP after pageload
276-
hasSeenPopAfterPageload = true;
277-
} else {
278-
// Pageload ended: either non-POP action or subsequent POP
279-
isInitialPageloadComplete = true;
271+
} else if (hasSeenPageloadSpan) {
272+
// Pageload span was active but is now gone - pageload has completed
273+
if (state.historyAction === 'POP' && !hasSeenPopAfterPageload) {
274+
// Pageload ended: ignore the first POP after pageload
275+
hasSeenPopAfterPageload = true;
276+
} else {
277+
// Pageload ended: either non-POP action or subsequent POP
278+
isInitialPageloadComplete = true;
279+
}
280280
}
281+
// If we haven't seen a pageload span yet, keep waiting (don't mark as complete)
281282
}
282283

283284
const shouldHandleNavigation =
@@ -396,16 +397,17 @@ export function createV6CompatibleWrapCreateMemoryRouter<
396397

397398
if (isCurrentlyInPageload) {
398399
hasSeenPageloadSpan = true;
399-
} else if (!hasSeenPageloadSpan) {
400-
// No pageload span detected, so we're not in initial pageload mode
401-
isInitialPageloadComplete = true;
402-
} else if (state.historyAction === 'POP' && !hasSeenPopAfterPageload) {
403-
// Pageload ended: ignore the first POP after pageload
404-
hasSeenPopAfterPageload = true;
405-
} else {
406-
// Pageload ended: either non-POP action or subsequent POP
407-
isInitialPageloadComplete = true;
400+
} else if (hasSeenPageloadSpan) {
401+
// Pageload span was active but is now gone - pageload has completed
402+
if (state.historyAction === 'POP' && !hasSeenPopAfterPageload) {
403+
// Pageload ended: ignore the first POP after pageload
404+
hasSeenPopAfterPageload = true;
405+
} else {
406+
// Pageload ended: either non-POP action or subsequent POP
407+
isInitialPageloadComplete = true;
408+
}
408409
}
410+
// If we haven't seen a pageload span yet, keep waiting (don't mark as complete)
409411
}
410412

411413
const location = state.location;

0 commit comments

Comments
 (0)