Anatomy
┌──────────────────────────────────────────────────┐
│ ⌘K invoi| │
├──────────────────────────────────────────────────┤
│ ACTIONS │
│ ⌁ Create invoice │
│ ⌁ Export invoices as CSV │
│ INVOICES │
│ ▸ INV-1041 Riverside Fit-Out overdue │
│ INV-1043 Kestrel Joinery overdue │
├──────────────────────────────────────────────────┤
│ ↑↓ move ↵ open esc close │
└──────────────────────────────────────────────────┘
Four things separate a palette from a search box:
- Actions and records in one list. "Invoice" is both a noun and a job. A palette that only finds nouns sends people back to a menu for the verb.
- A useful empty state. Before typing, show recents and common actions. This is what teaches people the palette is worth opening.
- Complete keyboard control, including returning focus on close.
- A visible entry point. The shortcut is for people who know it; the affordance in the header is how anyone becomes one of those people.
Why it works
It decouples reach from structure. Navigation depth is a compromise between what is frequent and what exists; a palette makes that compromise irrelevant for anyone willing to type, because everything is one keystroke away regardless of where it lives.
That is why it is filed under both find and act. Its real subject is not searching — it is collapsing "get to the thing" and "do the thing" into a single gesture.
The failure it invites
A palette is not a fix for bad navigation. It is easy to add one and stop ranking the nav bar, because the people who complain loudest are the experts and they now have their accelerator. Everyone else — new hires, occasional users, anyone in their first month — is left with the structure you gave up on.
Watch for the palette becoming the only route to a feature. That is the point at which it stopped being an accelerator and became a hiding place.
Getting it wrong
- Results with no explanation. If it is not obvious why a row matched, people stop trusting the ranking and go back to the menu.
- Ranking by relevance only, ignoring recency. What someone touched an hour ago is almost always what they want now.
- No visible entry point, so only people told about it ever use it.
- Trapping focus on close, which is a small thing that makes the whole feature feel unfinished.
Exemplars
Linear is the reference implementation: records, actions, navigation and settings in one ranked list, and the product is genuinely faster to drive from the palette than from its own sidebar.
VS Code shows the ceiling and the risk in the same product. Its palette exposes every command, which makes it enormously powerful and also means many features have no discoverable home outside it.
Slack demonstrates the ranking point: the empty state is recent conversations, which is right almost every time, so opening the palette is usually already the answer.
The extractable rule: a palette rewards memory, so it must be built on recency. Match quality alone treats every session as the first one.