Designing the command menu
The fastest interface is the one you never leave. Design notes on latency budgets, fuzzy matching, and earning the K in command-K.
Jonas Petersen
Design Lead
Every product has a command menu now. Most of them are a search box wearing a keyboard shortcut. Ours had to be the primary way people drive Draft — which meant treating it less like a feature and more like a musical instrument: latency, feel, and trust in every keystroke.
The 16 millisecond rule
An instrument you can't trust rhythmically is unplayable, so we set the budget first: every keystroke updates the results within one frame. Not "fast" — one frame. That single constraint made most of our decisions for us. Results come from the local store, never the network. Ranking runs incrementally as you type instead of re-scoring the world. Anything that couldn't fit in the frame budget didn't ship.
Matching how people actually type
Generic fuzzy matching is tuned for file paths. Issue titles are a different dialect — people remember a number, a fragment, or the shape of a phrase. Ours blends three signals:
- Identifiers win. Type
cor-128or even128and the issue is first, always. - Words beat characters. "sync offline" finds "Realtime sync drops offline edits" before any scattered-letter match.
- Habits count. Actions you accept float; actions you always skip sink. Quietly, per person.
Context without modes
The menu knows where you are. On an issue, close and assign sit on top; in a release, publish does. But context only reorders — it never removes. A mode that hides actions makes you learn the map twice. One menu, one mental model, different weather.
A command menu earns its keystroke the day someone stops checking whether it worked. Confidence is the feature. Everything else is implementation.
The details that took the longest
The visible design came together in weeks. The feel took months: the 40 millisecond entrance animation that's fast enough to feel instant and slow enough to feel placed, the way the highlight resists jitter when results reshuffle, the decision that Escape always means the same thing no matter how deep you are. None of it demos well. All of it is why people say the app feels quick when the honest answer is that the app mostly feels certain.
Draft keeps planning, shipping, and announcing in one connected workspace. Start for free or read the docs.