Every Dokly site (Starter and above) has a search box in the top-right that opens a ⌘K palette. Search is fuzzy, instant, and runs entirely in the browser.
Screenshot needed
screenshot of the open search palette showing typed query, results list with title + snippet, keyboard shortcut hints at the bottom
How it works#
When a reader loads any page, Dokly fetches a single JSON index of every published page in the project. The index contains titles, descriptions, and section headings — enough to find any page by keyword.
Search runs against that index using Fuse.js. Results show as the reader types, with no server roundtrip. The whole experience is sub-50ms.
What's indexed#
| Field | Weight |
|---|---|
| Page title | High |
| Page description | High |
| H1 / H2 / H3 headings within the page | Medium |
| Body paragraphs (first 500 chars) | Low |
Not indexed: code blocks, images, MDX component props. Code blocks are ignored on purpose — searching for function shouldn't return every page with a code sample.
Opening search#
| Action | Shortcut |
|---|---|
| Open palette | ⌘K (Mac) or Ctrl+K (Windows) |
| Click search box | (also opens) |
| Move through results | ↑ / ↓ |
| Open result | Enter |
| Close palette | Esc |
Mobile readers see a search button in the top bar that opens the same palette.
Search appearance#
By default, the search box reads "Search docs..." with a ⌘K hint. The placeholder, hint, and accent color match your project's theme automatically.
You can customize the placeholder text in Project Settings → Search → Placeholder. Useful for branded copy ("Search the Acme docs" instead of "Search docs").
Customizing what gets indexed#
By default, every published page is indexed. To exclude specific pages:
- Page Settings → Display → "Hide from search" — page is still public via direct URL but excluded from the search index.
This is useful for legal pages, internal-only references, or duplicate landing pages that would clutter results.
Why client-side?#
A few reasons:
- Speed. No network roundtrip. Results appear as you type.
- Privacy. Search queries don't leave the reader's browser. Nothing to log.
- Simplicity. No search server to run, no Algolia bill, no index re-build job.
The trade-off is that search is limited by what fits in the index payload. For projects with hundreds of pages, the index gets big enough to slow down the first page load — see the limits below.
Limits#
| Plan | Max indexed pages | Notes |
|---|---|---|
| Free | 0 | No search |
| Starter | 50 | Plenty for most projects |
| Pro | 500 | Comfortable for any docs site |
| Scale | 2,000 | For large multi-product docs |
| Enterprise | Custom | Talk to us if you have more |
If you exceed your plan's limit, search still works — but only the first N pages (by order_index) are indexed. You'll see a warning in Project Settings → Search.
Server-side search (coming soon)#
For projects that genuinely outgrow client-side search (hundreds of pages, frequent search, AI-style natural language queries), we're building a server-side option. It'll be opt-in on Pro+ and use a hosted vector search backend.
If you have an immediate need, reach out — we'll work with you.