Audits that need a browser: what a static crawl cannot see
The runtime metrics no HTML analysis can produce. squirrel lists them so the gap in a static audit is explicit.
What a static audit cannot measure
Reading HTML tells you what a page declares. It cannot tell you what the page does once a browser executes it. Every Core Web Vital is a measurement of a real render: Largest Contentful Paint needs a paint, Cumulative Layout Shift needs elements moving, Interaction to Next Paint needs an interaction.
The same applies to the main thread. How long the JavaScript takes to execute, whether any task blocks for over 50 milliseconds, and what the console logs are all runtime facts. The static rules in this category are hints about likely causes, not substitutes for the measurement.
What squirrel checks
The rule runs on every crawled page and emits one check:
browser-required-audits, at info status with the message18 audits require browser execution, listing the first ten as items and recording the total in the details.
The list is fixed and does not depend on the page. It covers the six Core Web Vitals and related paint metrics, four main-thread and execution measurements, three runtime behaviours including console errors, two network waterfall measurements, and three permission and API detections that only exist at runtime.
This rule never fails and never warns. It exists so the boundary of a static audit is written down in the report rather than assumed.
How to fix it
There is nothing to fix. Run a browser-based measurement alongside the audit when you need the numbers this rule lists:
squirrel audit https://example.com --renderA rendered audit executes the page, which is what ax/content-without-js and the other render-backed rules need. Field data from real visitors, rather than a single lab run, is what tells you whether a Core Web Vital is failing for the people who use the site.
| Rule ID | perf/browser-required |
| Category | Performance |
| Scope | Per-page |
| Severity | info |
| Weight | 1/10 |
Enable / disable
Disable this rule
[rules]
disable = ["perf/browser-required"]Disable all Performance rules
[rules]
disable = ["perf/*"]Enable only this rule
[rules]
enable = ["perf/browser-required"]enable replaces the default ["*"], so this is the only rule selected. Leave disable out: a rule that matches any disable pattern is skipped even when enable names it. Only an enabled setting under a rule’s own [rule_options] table overrides both lists.
For one run without editing the config: squirrel audit https://example.com --rule-include perf/browser-required.
Related rules
- perf/lcp-hints: the static hints for the paint metric this rule says it cannot measure.
- perf/cls-hints: the same for layout shift.
- perf/inp-hints: the same for interaction.
- ax/content-without-js: a rule that does use a real browser render.
Performance findings ship in every audit next to the SEO, security and agent experience rules. See Core Web Vitals for how an agent works through a report.
References
Check your site
Run squirrel audit https://example.com and open the Performance section of the report. The list appears once per page as an informational note. Signed-out local audits need no account and cost nothing. Signed-in audits spend credits.