Performance
Kestrel is fast because there is almost nothing to wait for: static pages, bundled fonts, token artwork, and no runtime requests.
On this page
Static output
The build writes plain HTML, CSS, and small scripts to dist/. No page issues
a runtime request for its content: the library records, the docs search index, and the
pricing values are all embedded at build time. A page that needs data waits for nothing,
because the data is already in the page.
Budgets
Hold these budgets when changing the site:
- No new runtime requests. A component that loads data after paint breaks the model.
- No new web fonts and no external images. Fonts and artwork are bundled or drawn from tokens.
- Keep scripts small and page-local. A script that every page loads is a script every visitor pays for.
A budget breach is a design discussion, not a quiet exception: measure first, then decide.
Images and fonts
Fonts are bundled from the package (IBM Plex Sans and IBM Plex Mono), so text never waits on a font service. Artwork defaults to design tokens; if a photograph is supplied later, it must keep its dimensions, alternative text, and license, and it must ship with the build rather than loading from elsewhere.
Measuring
Measure from the build output, not from memory:
npm run build
ls -la dist/ Compare page sizes before and after a change. A page that grew without new content gained weight somewhere; find it before publishing. The Troubleshooting docs cover build failures.
Continue with the Troubleshooting docs.