From d56562b3ac9777d3c35f94a72b1b9a80150ea159 Mon Sep 17 00:00:00 2001 From: Clawdbot Date: Wed, 18 Mar 2026 12:22:42 +0800 Subject: [PATCH] fix: useSWRImmutable should disable revalidation on focus Fixes vercel/swr#4225 useSWRImmutable is documented to disable all automatic revalidation, but revalidateOnFocus was not being set to false by default. Changed the immutable middleware to create a new config object with explicit overrides instead of mutating the config, ensuring: - revalidateOnFocus - revalidateIfStale - revalidateOnReconnect - refreshInterval are all properly disabled. --- src/immutable/index.ts | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/immutable/index.ts b/src/immutable/index.ts index 573eca3c3..3bad3caa7 100644 --- a/src/immutable/index.ts +++ b/src/immutable/index.ts @@ -4,11 +4,13 @@ import { withMiddleware } from '../_internal' export const immutable: Middleware = useSWRNext => (key, fetcher, config) => { // Always override all revalidate options. - config.revalidateOnFocus = false - config.revalidateIfStale = false - config.revalidateOnReconnect = false - config.refreshInterval = 0 - return useSWRNext(key, fetcher, config) + return useSWRNext(key, fetcher, { + ...config, + revalidateOnFocus: false, + revalidateIfStale: false, + revalidateOnReconnect: false, + refreshInterval: 0 + }) } const useSWRImmutable = withMiddleware(useSWR, immutable)