Astro
Zero JS by default
Zero JS by default is Astro's rule that pages ship HTML and CSS only. JavaScript is included only for islands and script tags you add.
How it is measured
Build a page with no client directives and no script tags. The output has no script requests. Add one directive and a script for that component appears. The bytes show the cost of what you chose.
Audit with the network panel filtered to JS. Zero requests means the claim holds for that route. Any request should be traceable to a directive or script.
Worked example
A county library site has 90 pages. 87 have no JavaScript. The catalog search page loads one 11 KB island. Total JS across the site is that one file.
Then a marketing plugin injects a 70 KB script on every page. The audit catches it because the three-script budget on the home page was already stored in CI.
How it differs
Zero JS by default is a starting condition. Astro is the framework that provides it. The default excludes JavaScript you did not ask for; the framework excludes nothing you opt into.
Common errors
Believing it means never any JS. Adding third-party tags and losing it. Assuming dev mode matches. Forgetting framework runtimes arrive with the first island. Not checking after upgrades.
In practice
Set a script budget per route and check it in CI. Review every new tag. Keep the claim true by measuring it.