import { useCallback, useRef } from 'react'; import Animated, { useSharedValue } from 'react-native-reanimated'; export default function useSharedValueRef( defaultValue: T ): [Animated.SharedValue, (value: T) => void] { const sharedValue = useSharedValue(defaultValue); const savedValue = useRef(defaultValue); const appendValue = useCallback( (value: T) => { savedValue.current = { ...savedValue.current, ...value, }; sharedValue.value = savedValue.current; }, [sharedValue] ); return [sharedValue, appendValue]; }