| "No results found." full stop | Dead end; the user leaves | Correct, broaden, suggest — always ≥1 tappable exit |
| Exact-match-only search | Typos and plurals return zero for content that exists | Fuzzy match + stemming + synonyms before showing zero |
| Query cleared on the results page | User can't iterate on their own query | Keep the query in the box, editable |
| Filters hidden behind an unbadged icon | Users forget filters are active and distrust results | Chips row + count badge on the trigger |
| Mobile sheet applying every tap instantly | Results shift under the sheet; disorienting | Batch behind "Show N results" |
| Facet values with zero results selectable | A guaranteed dead end one tap away | Hide or disable zero-count values |
| Search state lost on back/refresh | Users rebuild query + filters repeatedly | Everything in the URL |
| Placeholder "Search" with no scope | Users can't predict what's searchable | Name the scope: "Search 12k products…" |
| No clear-× in the field | Clearing on touch takes a dozen backspaces | Show × whenever text is present |
| Typeahead >10 rows or unranked | Choice overload defeats the accelerator | ≤8 rows, best matches first, labeled groups |
| Slow (>300ms) typeahead | Suggestions arrive after the user has typed past them | Precompute/cache; drop typeahead if it can't be fast |
| ⌘K palette replacing the visible search box | Undiscoverable for the majority of users | Palette accelerates; the box stays |
| Blanking results while the next query loads | Users lose their comparison context | Keep stale results; swap on arrival |
| Alphabetical facet ordering | The 2–3 facets that matter sit below the fold | Order by narrowing power/usage |
| Ignoring zero-result query logs | The same failures repeat forever | Review logs; add synonyms/content for top misses |
| Back from a result losing the results page state | Users re-run the whole search per result | Restore query, filters, sort, scroll |
| Global items outranking the user's own | "My doc" buried under strangers' docs | Boost personal scope in app search |
| One flat list mixing people/docs/messages | Users can't scan across types | Group by type with counts |
| Remote search firing from character 1 | Wasted queries; flickering results | 2–3 char minimum + debounce |