Why a notes app should open instantly

By Lior Rabanian · · 6 min read
  • Performance
  • macOS
  • Design

A notes app that takes two seconds to open is not slow. Two seconds is nothing; you have waited longer for a kettle without resenting it.

What two seconds is, is long enough to notice. And the thing you do when you notice is decide — quickly, without articulating it — whether the note is worth the wait. Most of the time it is. Some of the time you were only going to write down four words, and four words are not worth a spinner, so you keep them in your head instead and they are gone by lunchtime.

That is the actual cost of a slow launch. Not the seconds. The notes that never got written because opening the app was a decision.

The four-second thought

Capture has a shelf life. Something occurs to you — a name, a thing you owe someone, a fix you just worked out — and you have a few seconds of willingness before your attention is somewhere else.

Everything that happens in those seconds is competing for the same budget: reaching for the machine, finding the app, waiting for it, finding where to type. A launch that costs two of the four is not taking half your time. It is taking half your willingness, and willingness is the scarce thing.

You can watch this in how people behave rather than what they say. The app that ends up holding the scraps is almost never the most capable one. It is whichever one is already open, or opens fast enough that using it never felt like a decision. Fast is not a nice-to-have in this category; it is most of the product.

What makes a launch slow

Four things, roughly in order of how much they cost.

A network request on the critical path. The app opens, then asks a server something — is this session valid, is the licence current, what changed since last time — and will not draw your notes until it has an answer. On good wifi this is a few hundred milliseconds and nobody notices. On hotel wifi it is a spinner, and on no wifi it is a spinner that eventually times out, which is the worst launch in software: slower when there is nothing to fetch.

Loading everything before showing anything. Some apps read the whole collection into memory at startup. Fine at 50 notes. Not fine at 5,000, and it degrades exactly as your investment in the app grows, so the app gets worse the more you have used it.

Rendering the world before the window. Building every sidebar, every list and every panel before painting anything. The fix is boring and known — draw the window, then fill it — but it takes deliberate work that nobody does unless somebody measures.

A runtime that has to start first. If the app ships its own browser engine, that engine boots before your notes exist. This is the one people argue about, and the honest position is that it is real but smaller than the internet thinks: a well-built Electron app can start fast, and a badly built native one can be slow. It is a handicap, not a verdict.

The steps between clicking an icon and being able to type, with and without a server in the path
The first two boxes on the top row are the ones that get slower when the network is bad — which is to say, slower when there is nothing to fetch.

Cold, warm, and the number that matters

If you measure this yourself, measure the right thing.

Cold start is after a reboot, or after the app has been closed long enough to fall out of the file cache. It is the slowest number and the least frequent.

Warm start is the one you live with: quitting and reopening in the same session, everything still cached. This is what "open the app to write four words" actually costs, and it is usually a fraction of the cold number.

Time to first useful keystroke is the only measure that matters, and almost nobody publishes it. Not when the window appears — when you can type and the characters land in the right place and are being saved. Plenty of apps show a window quickly and then swallow the first half-second of typing, which is worse than a longer honest wait, because you have to check whether your words survived.

Test it the way you use it. Quit the app, open it, and start typing immediately. Did every character arrive?

Memory, and why it shows up as speed

Idle memory footprint gets discussed as if it were a virtue in itself, and mostly it is not — unused RAM is wasted RAM, and a browser tab you left open probably costs more than any of this.

It matters at the edges, and the edges are where people live. If you keep an app open all day alongside a browser, a chat client, a design tool and a couple of editors, a laptop with 8 or 16 GB starts swapping, and swapping is felt as everything being slow. The app that quietly holds several hundred megabytes to show you a list of notes is not committing a crime; it is spending a shared budget you did not know it was spending.

The mechanism worth understanding is where the browser engine comes from. Apps built on Electron ship their own copy of Chromium, so every such app on your machine is a separate browser. Apps built on the system webview — which is what Tauri does, using WebKit on macOS — use the engine that is already running as part of the OS. It is the same rendering technology either way; the difference is how many copies of it are resident.

What "instant" is worth as a target

Under a second to a usable window, on the machine you actually own rather than the developer's.

The reason to hold that line is not benchmark pride. It is that under a second, the app stops being something you open and becomes something that is simply there — the same way a text field on a page you are already looking at is there. Above a second or two, some fraction of your thoughts stop making the journey, and you will never know which ones, because unwritten notes leave no trace.

It is the same argument as the habit tracker that needs its own icon and the clipboard popup that comes to you: every unit of friction between the impulse and the writing costs you some of the writing, and the losses are invisible.

The honest version

Startup time is not the most important thing about a notes app. It is a hygiene property, and plenty of excellent apps take a beat to open because they are doing something worth doing — indexing a large library, restoring a real session, rendering a document that deserves it. If an app is slow and you love it, that is a completely defensible trade and I would not switch either.

What is not defensible is being slow because of a server, on a machine that already has all your notes on it. That is a launch delay you are paying for architecture you did not ask for.

Cyanote's startup budget is under a second to a usable window, and it holds because there is nothing to wait for: no session check, no sync handshake, no server in the path. Everything is read from one SQLite database on your own disk, and the app is built with Tauri, so it draws through the WebView macOS already has rather than shipping a browser of its own. With the wifi off it opens in the same time, because the wifi was never part of opening it.