diff --git a/packages/react/src/tanstackrouter.ts b/packages/react/src/tanstackrouter.ts index 2f5467ee1640..2fb55afc0c4e 100644 --- a/packages/react/src/tanstackrouter.ts +++ b/packages/react/src/tanstackrouter.ts @@ -64,8 +64,9 @@ export function tanstackRouterBrowserTracingIntegration( if (instrumentNavigation) { // The onBeforeNavigate hook is called at the very beginning of a navigation and is only called once per navigation, even when the user is redirected castRouterInstance.subscribe('onBeforeNavigate', onBeforeNavigateArgs => { + const fromLocationState = onBeforeNavigateArgs.fromLocation && onBeforeNavigateArgs.fromLocation.state; // onBeforeNavigate is called during pageloads. We can avoid creating navigation spans by comparing the states of the to and from arguments. - if (onBeforeNavigateArgs.toLocation.state === onBeforeNavigateArgs.fromLocation.state) { + if (onBeforeNavigateArgs.toLocation.state === fromLocationState) { return; } diff --git a/packages/react/src/vendor/tanstackrouter-types.ts b/packages/react/src/vendor/tanstackrouter-types.ts index e5eeba71aa87..417d2b1447b1 100644 --- a/packages/react/src/vendor/tanstackrouter-types.ts +++ b/packages/react/src/vendor/tanstackrouter-types.ts @@ -46,7 +46,7 @@ export interface VendoredTanstackRouter { eventType: 'onResolved' | 'onBeforeNavigate', callback: (stateUpdate: { toLocation: VendoredTanstackRouterLocation; - fromLocation: VendoredTanstackRouterLocation; + fromLocation?: VendoredTanstackRouterLocation; }) => void, ): () => void; }