← All posts

Fast on 20,000 notes: how Plainva stays snappy

August 19, 2026

I’ve used enough notes apps that feel amazing on a demo vault of thirty notes and quietly seize up the moment you point them at a real one — years of notes, tens of thousands of files. I didn’t want to build another one of those, so a fair amount of unglamorous work went into making sure Plainva doesn’t much care how big your vault gets.

The trick is never touching the whole vault

Under the hood, Plainva keeps a local SQLite index with full-text search, and the part I actually care about is that it’s incremental. When a file changes — you edit it, or a sync pulls one down — Plainva re-indexes just that one path, not the entire vault. No “re-indexing…” freeze every time something moves; open a huge vault for the first time and you get a progress bar, not a locked-up window.

Search runs against that same index, so results come back instantly with the matching text highlighted, and it’s prefix-aware, so you see hits before you’ve finished typing the word. A handful of operators — "exact phrase", -exclude, path:, tag: — narrow things down without making you learn a query language.

A map, not a hairball

The vault graph is the other place a big vault usually falls apart. Plainva draws your actual folder structure as bubbles you can collapse and expand, instead of one exploding ball of dots that stops meaning anything past a few hundred notes. The layout is deterministic and settles fast instead of jittering forever, and once you’ve nudged nodes where you want them you can pin the arrangement so it stays put — panning and zooming stay smooth even on a busy graph.

Performance work is strange like that — done right, it’s invisible. You just don’t think about the app while you’re using it, whether your vault has two hundred notes or twenty thousand. That’s genuinely the whole goal.

— Marco