The Command Palette
If you only learn one keyboard shortcut in Appsanic, learn this one:
⌘K on macOS, Ctrl+K on Windows and Linux.
It opens a single search box that lets you jump to any file in your project or run any common action in the builder. No clicking through menus. No expanding the file tree. Type, hit Enter.
What it does
The palette searches across two things at once:
- Files in your project. Every
.tsx,.ts,.json,.sql, every asset, every config file. Type a part of the name (the agent uses kebab-case file names, so a fragment usually does it). - Actions you can take. Open the code editor, start a new conversation, push to GitHub, etc. The full list grows as the product does.
It picks the most likely match as you type and highlights it. Enter runs the highlighted item. Arrow keys navigate. Esc closes.
When to use it
- You want to read a file and you know roughly what it's called. Faster than expanding folders in the file tree.
- You want to jump to the home screen file: type
index.tsxor justhome. - You want to do something like "start a new conversation" without taking your hands off the keyboard.
- You want to open the code editor without reaching for the mouse.
The palette is one of those small touches that compounds. Once you get used to it, clicking through the sidebar starts to feel slow.
Anatomy of the palette
When the palette is open:
- The search box at the top. Focus is automatic, just start typing.
- A grouped result list below. Usually two sections: Files and Actions.
- The highlighted row has a soft background. Enter runs it; arrow keys move it.
- Footer hints showing the keyboard shortcuts (Enter to run, Esc to close).
If the search box is empty, the palette shows a default short list (your most recently opened files at the top, then common actions).
How the search works
It's fuzzy-ish in a way that matches how you actually think about file names:
- Exact match beats everything.
- Starts-with match beats a substring match.
- Word-start match (after
/,-,_,., or space) beats a mid-word substring. - Earlier match in the string beats a later one.
In practice: typing home finds app/(tabs)/index.tsx if its display label includes "home." Typing auth/login finds app/(auth)/login.tsx. Typing comments-store finds the Zustand store of that name.
You don't usually have to think about it. Type something close, the right result floats up.
Available actions today
The exact list of actions evolves; common ones include:
- Open code editor: toggles the in-app code editor overlay.
- New conversation: opens a fresh thread in the current project.
- Push to GitHub: opens the GitHub panel and triggers a push.
- Go to brand kit: opens the kit linked to this project, if any.
When new actions get added to the product, they show up in the palette automatically.
Tips
- Memorise the shortcut, not the actions. Once your fingers know ⌘K, the rest just works.
- Type 3-4 characters max. The fuzzy matcher is forgiving. Typing the full file name almost never beats typing a fragment.
- Use it for navigation, not editing. It's a jump-to-place tool. Once you're at a file, switch to the editor's normal keyboard shortcuts (⌘F, ⌘P-tab-switching, etc.).
Where it works
Anywhere in the app where the palette provider is mounted. That means:
- Inside the builder: full palette with file search + every action.
- On the dashboard: palette with actions only (no project context means no files to search yet).
The shortcut is captured globally on those pages, so it works even if your cursor is in a textarea or input.
Conflicts with browser shortcuts
⌘K is also the browser's address-bar shortcut in some apps (it isn't in Chrome / Safari / Firefox by default for normal pages). On any page that has Appsanic's palette mounted, our handler runs first and the browser shortcut is suppressed. If you ever need the browser's behaviour, click outside the Appsanic surface first.
What it doesn't do (yet)
- **Doesn't search file contents. It searches file names and labels. For content search, use the in-editor ⌘ + Shift + F**.
- Doesn't run agent prompts. It's a navigation tool, not a chat shortcut. Use the composer for prompts.
- Doesn't have a settings page. The action list isn't user-customisable today.
Under the hood (for engineers)
- A single global keyboard listener in command-palette.tsx listens for
(metaKey || ctrlKey) && key === "k"and toggles the palette open/closed. - Files come from
useAgentFiles(). The project's full file map from the agent store. - Actions are a static registry at the bottom of the file; each entry is
{ id, label, hint, run }. Adding a new global action is a one-line change. - Scoring is a small inline function: exact prefix > word-start match > substring, with a position penalty (
return 500 - idx) that boosts earlier matches. - Renders into a portal so the palette overlays everything (including modals and overlays).
Next
Read The Code Editor for what to do once you've jumped to a file, or Conversations for the related "switch context" shortcut.
