Performance budgets
Editor docs
The editor has three performance budgets: open a 5,000-entity scene in under two seconds, paint a 100,000-cell tilemap at interactive rates, and refresh the Inspector within a frame. A headless benchmark in the editor's repository checks them. The editor is a preview.
The budgets and the numbers#
Medians, measured on 3 November 2026 on an Apple M1 with 16 GB (macOS, Node 26), as ranges over four runs while other builds were running:
| Measurement | Median | Budget |
|---|---|---|
| Open a 5,000-entity scene, up to the Hierarchy | 55–142 ms | 2,000 ms |
| A second window attaches to the open scene | 25–56 ms | — |
| Paint 1,000 cells of a 100,000-cell tilemap | 0.6–1.1 ms | 16 ms |
| Undo of that paint | 0.4–0.6 ms | 16 ms |
| Fill all 100,000 cells, apply and undo | 12–23 ms | — |
| Refresh the Inspector for 20 components | 0.5–0.8 ms | 16 ms |
Every budget passes with at least ten times to spare. The Tilemap panel also now redraws only the cells a stroke paints while you drag, not the whole map.
How it is measured#
pnpm bench:budgets, in the editor's repository, runs the editor's real modules with no Electron:
the main process's scene document, the window's copy of it over a stand-in for IPC that copies as
IPC does, the Hierarchy's rows, the tilemap store and history, and what the Inspector computes on a
render. Each measurement runs once to warm up and five times to measure; the script prints the
medians and fails when one is over its budget. It is not part of the editor's regular checks.
Not measured yet#
- What Electron adds: real IPC, React rendering of the Hierarchy and the Inspector, and the scene view loading the scene.
- The tilemap canvas in a browser. A long stroke still redraws every cell it has painted so far.
- Filling a whole 100,000-cell map takes more than a frame, because both the main process and the window apply it; it has no budget.