<!-- source-hash: 9542dd80cbf4e4f2345c92e86c2aa031 -->
A React hook that delays the updating of a value until a specified time period has passed without changes, useful for optimizing performance in search inputs and API calls.

## Key Components

- **`useDebounce<T>`** - Generic hook that accepts any value type and returns a debounced version
- **Parameters**:
  - `value: T` - The value to debounce
  - `delay: number` - Delay in milliseconds (defaults to 500ms)
- **Returns**: `T` - The debounced value that updates only after the delay period

## Usage Example

```typescript
import { useDebounce } from './use-debounce'
import { useState, useEffect } from 'react'

function SearchComponent() {
  const [searchTerm, setSearchTerm] = useState('')
  const debouncedSearchTerm = useDebounce(searchTerm, 300)

  // API call only triggers when user stops typing for 300ms
  useEffect(() => {
    if (debouncedSearchTerm) {
      // Perform search API call
      console.log('Searching for:', debouncedSearchTerm)
    }
  }, [debouncedSearchTerm])

  return (
    <input
      type="text"
      value={searchTerm}
      onChange={(e) => setSearchTerm(e.target.value)}
      placeholder="Search..."
    />
  )
}
```

The hook prevents excessive API calls or expensive operations by only updating the debounced value when the input value remains unchanged for the specified delay period.