The action
.github/workflows/crust.yml
What fails without configuration
Once a comparable baseline exists, no budget file is required for strict regressions:- a route became less static
- a new uncached read appeared
- a route stopped emitting a static shell
crust ci exits non-zero when one is detected.
New routes are not regressions. A transition involving
unknown is reported but not assigned a
direction. Different bundlers, Next.js majors, or snapshot schemas are not compared.Add project-specific ceilings
Create.perf/budgets.json at the workspace root for limits crust cannot choose for you:
.perf/budgets.json
allowRegression exempts only automatic rendering-mode, cache, and shell-disappearance checks for
the named route. Explicit byte, growth, and shell-ratio ceilings still apply.The comment
<!-- crust-report --> marker so the action updates the existing one
instead of stacking a new comment on every push. Regressions receive prose and source blame;
improvements and neutral changes stay behind a disclosure. If the builds are incomparable, no
route deltas are printed.
crust ci exits non-zero on a breach.
Snapshot history
A fresh CI checkout has no.perf/ directory, so the baseline lives on an orphan branch:
git log or complicating rebases.
Run the check without the action
--comment writes Markdown only; posting it is the CI
provider’s responsibility.