From 09e7111aa7be932ec30202c0aaf8f56510d2bc11 Mon Sep 17 00:00:00 2001 From: Julius Volz Date: Fri, 17 Oct 2025 17:17:48 +0200 Subject: [PATCH] UI: Fix double-loading of API data on pages with slow rendering (#17357) Without `staleTime: Infinity`, the query data would be immediately marked stale, and in combination with the `gcTime: 0` setting and a brief unmount during data loading (via Suspense), the data would have to be reloaded a second time during/after the first real render. `gcTime: 0` + `staleTime: Infinity` should give us the desired behavior where data loaded for a page should be valid forever as long as that page is being displayed, but always thrown away (and later reloaded) whenever we navigate away and again to that page. Signed-off-by: Julius Volz --- web/ui/mantine-ui/src/api/api.ts | 1 + 1 file changed, 1 insertion(+) diff --git a/web/ui/mantine-ui/src/api/api.ts b/web/ui/mantine-ui/src/api/api.ts index f1dd2b8c0c..18541751b5 100644 --- a/web/ui/mantine-ui/src/api/api.ts +++ b/web/ui/mantine-ui/src/api/api.ts @@ -125,6 +125,7 @@ export const useSuspenseAPIQuery = ({ key, path, params }: QueryOptions) => { queryKey: key !== undefined ? key : [path, params], retry: false, refetchOnWindowFocus: false, + staleTime: Infinity, // Required for suspense queries since the component is briefly unmounted when loading the data, which together with a gcTime of 0 will cause the data to be garbage collected before it can be used. gcTime: 0, queryFn: createQueryFn({ pathPrefix, path, params }), });