# usePreviousValue Returns the previous value of a given variable, useful for comparing current and previous states in effects or for tracking changes over time. ## Import ```tsx import { usePreviousValue } from '@coinbase/cds-common/hooks/usePreviousValue' ``` ## API ### Parameters The `usePreviousValue` hook accepts a single parameter: - `value: T` - The value to track. Can be of any type. ### Returns Returns the previous value of type `T | undefined`: - Returns `undefined` on the first render - Returns the previous value of the tracked value on subsequent renders :::tip This hook is useful for comparing the current value with its previous state, such as in animations, transitions, or when you need to react to value changes. The hook uses a ref to store the previous value, ensuring it persists between renders. ::: ## Examples ### Basic usage ```tsx live function Example() { const [count, setCount] = useState(0); const previousCount = usePreviousValue(count); return ( Current count: {count} Previous count: {previousCount ?? 'None'} ); } ``` ### With Complex Values ```tsx live function Example() { const [user, setUser] = useState({ name: 'John', age: 25 }); const previousUser = usePreviousValue(user); const updateAge = () => { setUser((prev) => ({ ...prev, age: prev.age + 1 })); }; return ( Name: {user.name} Age: {user.age} Previous age: {previousUser?.age ?? 'None'} ); } ```