From c7406a415da9c31a484646154f45e4f783a16204 Mon Sep 17 00:00:00 2001 From: Slava Goltser Date: Wed, 8 Jul 2026 17:00:57 -0400 Subject: [PATCH] fix(app): handle CancelledError from cancelled provider usage queries (#1885) Move canFetch guard before first await so disabled refresh bails out synchronously instead of entering async path. Add .catch() swallow for fire-and-forget call to prevent unhandled promise rejections when react-query cancels pending queries during rapid tooltip open/close cycles. --- packages/app/src/components/context-window-meter.tsx | 2 +- packages/app/src/provider-usage/use-provider-usage.ts | 4 +--- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/packages/app/src/components/context-window-meter.tsx b/packages/app/src/components/context-window-meter.tsx index b81026630..c7955d8a1 100644 --- a/packages/app/src/components/context-window-meter.tsx +++ b/packages/app/src/components/context-window-meter.tsx @@ -117,7 +117,7 @@ export function ContextWindowMeter({ (nextOpen: boolean) => { setIsTooltipOpen(nextOpen); if (nextOpen) { - void refreshProviderUsage(); + void refreshProviderUsage().catch(() => {}); } }, [refreshProviderUsage], diff --git a/packages/app/src/provider-usage/use-provider-usage.ts b/packages/app/src/provider-usage/use-provider-usage.ts index da40795e7..ce133726c 100644 --- a/packages/app/src/provider-usage/use-provider-usage.ts +++ b/packages/app/src/provider-usage/use-provider-usage.ts @@ -58,10 +58,8 @@ export function useProviderUsage( }); const refresh = useCallback(async () => { + if (!canFetch) return; await queryClient.invalidateQueries({ queryKey }); - if (!canFetch) { - return; - } await queryClient.fetchQuery({ queryKey, queryFn,