From ad835dad642f919aa791468e638d17d1a9edee44 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C5=A0t=C4=9Bp=C3=A1n=20Gran=C3=A1t?= Date: Mon, 8 Jun 2026 11:09:25 +0200 Subject: [PATCH] fix: make store selector stable --- lib/src/useContextSelector.tsx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/lib/src/useContextSelector.tsx b/lib/src/useContextSelector.tsx index 337804f..327da99 100644 --- a/lib/src/useContextSelector.tsx +++ b/lib/src/useContextSelector.tsx @@ -1,5 +1,6 @@ import { createContext as createContextOrig, + useCallback, useContext as useContextOrig, useDebugValue, useEffect, @@ -62,9 +63,15 @@ export function useContextSelector( selector: (value: T) => X, ) { const store = useContextOrig(context as React.Context>); + const selectorRef = useRef(selector); + selectorRef.current = selector; + const getSnapshot = useCallback( + () => selectorRef.current(store?.value), + [store], + ); const selected = useSyncExternalStore( store?.subscribe ?? dummySubscribe, - () => selector(store?.value), + getSnapshot, ); useDebugValue("react-arven"); return selected;