# 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'}
);
}
```