Benchmarks

This page quotes a number only when a committed, reproducible command produced it. Today that is the size of the JavaScript the app must download before first paint, plus the ceilings the release pipeline enforces on a build. Launch time, memory, per-action latency and the rest are not published here.

Measured

Sift219.9 KiB
Ceiling250 KiB

219.9 KiB gzip, against a 250 KiB ceiling. Command: node scripts/eager-js.mjs --dist dist --max-js-kib 250. It sums gzip level 9 of every chunk the first paint pulls in, walked through dist/.vite/manifest.json static imports only (lazy chunks are excluded by construction). Measured on Apple M1, arm64, macOS 15.6.1, 2026-09-14, against the fix/reliability-hardening build in the working tree. Not a released artifact: this figure measures a fresh production frontend build, not application memory or launch latency.

Ceilings (targets, not measurements)

These are hard gates, not observations. A build that crosses one fails the job, which is why they are quoted here rather than as claims about the app.

250 KiB Eager JavaScript · gzip · scripts/eager-js.mjs fails above this. Runs on every pull request.
20 MiB DMG · scripts/check-bundle.sh --require-artifacts --max-dmg-mib 20 fails a universal build whose disk image is larger. Runs in the release job.

Figures this page does not publish

Each row below would need a committed, reproducible measurement before it earns a number here. Until then this site quotes none, because a launch-time, memory or latency figure without a command behind it is a guess dressed as a result.

No figure Cold start, launch to first paint · no stored result here that names the command and machine behind it
No figure Idle and working memory, CPU · no stored result here that names the command and machine behind it
No figure Per-action latency (open, archive, search, list page) · no stored result here that names the command and machine behind it
No figure Download size of a shipped build · the download page reads the current installer size from GitHub
No figure Per-account connection counts · needs a live Gmail account, which no number on this site has been taken with
No figure Large-mailbox behaviour (100k messages) · needs a large-mailbox fixture that does not exist in the repository

How a number gets published here

A figure earns a place on this page when it comes from a command anyone can run against this repository, on a named machine, on a named date, with the ceiling or the comparison it is judged against. The eager-JavaScript measurement and the two size gates above work that way; the rows above do not, yet.

The project keeps its own record of what is proven, what is pending and what has not been measured in docs/acceptance-dossier.md, and its executable gates in scripts/. Read those rather than a landing page when the number matters.

Sift is open source under the MIT License, so every command above can be read and run against the same repository you would build from.