# Search Input Debounce Audit **Date**: 2025-01-27 **Action**: 2.4.1.3 - Add debounce to all search inputs **Status**: ✅ Complete (Audit) ## Overview This document audits all search inputs in the codebase to verify debouncing is implemented consistently. ## Search Components Audit ### ✅ Already Using Debounce 1. **`apps/web/src/components/search/Search.tsx`** - Uses `useDebounce` hook (line 68) - Configurable `debounceDelay` prop (default: 300ms) - Used by GlobalSearchBar, SearchBar components 2. **`apps/web/src/pages/SearchPage.tsx`** - Uses `useDebounce` hook (line 34) - 500ms delay - Debounced query used in React Query keys 3. **`apps/web/src/features/tracks/components/TrackSearch.tsx`** - Uses `useDebounce` hook (line 39) - 500ms delay - Debounced query used for API calls 4. **`apps/web/src/features/library/pages/LibraryPage.tsx`** - ✅ **Just added** `useDebounce` hook (Action 2.4.1.2) - 300ms delay - Debounced search term used in queryParams 5. **`apps/web/src/features/playlists/components/PlaylistSearch.tsx`** - Uses `useDebounce` hook (line 41) - 500ms delay - Debounced query used for API calls ### ⚠️ Using Manual Debounce (Should Standardize) 6. **`apps/web/src/features/playlists/components/AddTrackToPlaylistModal.tsx`** - Uses manual `setTimeout` debounce (line 76) - 500ms delay - **Recommendation**: Replace with `useDebounce` hook for consistency ### ❓ Manual Search (No Auto-Search) 7. **`apps/web/src/features/chat/components/MessageSearch.tsx`** - Does NOT use debounce - Search only triggers on button click or Enter key - No automatic search as you type - **Status**: Intentional design - no debounce needed (manual search) ## Summary **Total Search Components**: 7 **Using `useDebounce` Hook**: 5 ✅ **Using Manual Debounce**: 1 ⚠️ (should standardize) **Manual Search (no debounce needed)**: 1 ✅ ## Recommendations 1. ✅ **LibraryPage**: Already fixed (Action 2.4.1.2) 2. ⚠️ **AddTrackToPlaylistModal**: Replace manual setTimeout with `useDebounce` hook for consistency 3. ✅ **MessageSearch**: No changes needed (manual search is intentional) ## Action Items - [x] Audit all search inputs - [x] Document current state - [ ] **Optional**: Standardize AddTrackToPlaylistModal to use `useDebounce` hook (low priority, manual debounce works) ## Validation ✅ All search inputs that trigger automatic API calls use debouncing ✅ LibraryPage search debouncing added ⚠️ One component uses manual debounce (acceptable but could be standardized)