cmdk
Accessible, fast command palette (⌘K) component for React. Powers the command palette pattern popularized by Linear, Figma, and Vercel. Provides Command.Input, Command.List, Command.Item with fuzzy search, keyboard navigation, and ARIA. Used as the foundation for shadcn/ui's CommandDialog component.
Score Breakdown
⚙ Agent Friendliness
🔒 Security
UI command palette — ensure command actions perform authorization checks before executing privileged operations.
⚡ Reliability
Best When
React applications targeting power users where ⌘K command palette improves workflow efficiency.
Avoid When
Simple dropdowns or consumer apps where command palette UX is unfamiliar to users.
Use Cases
- • Implement ⌘K command palette for navigation, actions, and search in React applications
- • Build application-wide search and action discovery UI with cmdk's fuzzy filtering
- • Create keyboard-first interfaces where power users navigate entirely via command menu
- • Implement context-aware command menus that surface relevant actions based on current page
- • Build command palette plugins/extensions pattern for developer tools and IDEs
Not For
- • Simple dropdown selects — use react-select or native <select> for simple option selection
- • Full-page search experiences — cmdk is modal command palette, not a full search page
- • Non-React frameworks — cmdk is React-only
Interface
Authentication
UI library — no auth needed.
Pricing
MIT licensed open source library.
Agent Metadata
Known Gotchas
- ⚠ Each Command.Item needs a unique value prop for filtering to work correctly — duplicate values cause inconsistent selection behavior
- ⚠ cmdk filters by the text content of Command.Item children by default — custom filter function needed for searching metadata or other fields
- ⚠ Async data loading in command items requires external state management — cmdk doesn't have built-in async loading states; implement with useState + useEffect
- ⚠ Command.Empty must be inside Command.List for the 'no results' state to render — placing it outside causes it to always be visible
- ⚠ The shouldFilter={false} prop disables all filtering — use when implementing custom filter logic with controlled state
- ⚠ cmdk v1 changed some prop names from the beta — check changelog when migrating from older versions
Alternatives
Full Evaluation Report
Detailed scoring breakdown, competitive positioning, security analysis, and improvement recommendations for cmdk.
Scores are editorial opinions as of 2026-03-06.