squirrelscan
GitHub

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 message 18 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 --render

A 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 IDperf/browser-required
CategoryPerformance
ScopePer-page
Severityinfo
Weight1/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.

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.

Type to search…

↑↓ navigate↵ openesc close