import { useCallback, useEffect, useLayoutEffect, useRef } from 'react'; type Callback = (...args: T) => R; /** * Provide a stable version of useCallback. */ export function useStableCallback( callback: Callback ) { const callbackRef = useRef>(); useLayoutEffect(() => { callbackRef.current = callback; }); useEffect(() => { return () => { callbackRef.current = undefined; }; }, []); return useCallback>((...args) => { return callbackRef.current?.(...args); }, []); }