From 09a3f36d47379aedea2599435ddebe3f828d5166 Mon Sep 17 00:00:00 2001 From: Tanner Linsley Date: Thu, 30 Jan 2025 09:44:25 -0700 Subject: [PATCH 1/3] fix(react): From location can be undefined in Tanstack Router Instrumentation (#15235) fixes #15234 Due to a big bug in TanStack Router getting fixed, this needs an optional chain to not die. --- packages/react/src/tanstackrouter.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/react/src/tanstackrouter.ts b/packages/react/src/tanstackrouter.ts index 2f5467ee1640..f0ac339fbed0 100644 --- a/packages/react/src/tanstackrouter.ts +++ b/packages/react/src/tanstackrouter.ts @@ -65,7 +65,7 @@ export function tanstackRouterBrowserTracingIntegration( // 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 => { // 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 === onBeforeNavigateArgs.fromLocation?.state) { return; } From af58f35ee46b274e91cdbe18180aef831dde3348 Mon Sep 17 00:00:00 2001 From: Francesco Novy Date: Fri, 31 Jan 2025 09:10:33 +0100 Subject: [PATCH 2/3] ref(react): Adapt tanstack router type --- packages/react/src/vendor/tanstackrouter-types.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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; } From 7a2561b23b9f273d2043fcbda788ab8800d856a7 Mon Sep 17 00:00:00 2001 From: Lukas Stracke Date: Fri, 31 Jan 2025 09:25:46 +0100 Subject: [PATCH 3/3] avoid optional chaining --- packages/react/src/tanstackrouter.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/packages/react/src/tanstackrouter.ts b/packages/react/src/tanstackrouter.ts index f0ac339fbed0..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; }