Speed, measured the way Google measures it.
What the three vitals mean for a roofing site, and why JavaScript is almost always the cause.
The three metrics
Google publishes three, each with a documented threshold for a good experience.
When the main content of the page becomes visible.
How quickly the page responds after a tap.
How much the page jumps around while it loads.
Measured on real visits, not on your desktop
The scores that matter come from field data: real visits, mostly on mid-range phones on mobile networks. A site that scores well in a lab test on office wifi can fail in the field, which is why a contractor's impression of their own site being fast is not evidence. Check the field data, and check it segmented by mobile.
The usual cause is scripts
Page builders, tag managers, chat widgets, review carousels, and call-tracking snippets all load code that must execute before the page becomes usable, and each one is usually added by a different person for a good reason. Layout shift is the visible symptom: a hero image without dimensions, a font swapping late, a cookie banner pushing content down after you have started reading.
What actually fixes it
Six changes, in order of effect.
Most sites carry at least one widget nobody can name the owner of.
Accordions, menus, and forms all have native equivalents.
Why this site ships zero JavaScript by default
Not as a purity claim. A page built from native HTML for accordions, forms, and navigation has almost nothing to execute, so the vitals are structural rather than tuned after the fact. The same property makes the page legible to an answer engine, which reads markup rather than waiting for a script, so one decision serves both speed and citability.
Where speed stops being the problem
Speed is a threshold, not a ranking lever you can keep pulling. Once the three vitals are in the good band on mobile field data, further tuning returns very little, and the constraint moves to whether the page answers the question someone typed. A fast page that answers nothing still loses to a slower page that answers the query, which is why an audit reports both.
How to check your own field data
Four steps, no vendor required.
Images are the other half of the problem
Roofing sites are image-heavy by nature, and project photographs are usually uploaded at whatever size the camera produced. Serve them at the size they display, in a modern format, with explicit dimensions so nothing reflows, the hero image loaded eagerly and everything below it lazily. On most contractor sites that single pass does more for load time than any script removal.
What to do about the widgets you want to keep
Chat, reviews, and call tracking all have legitimate uses. Load them after the page is usable rather than before, keep them off the templates where they add nothing, and audit them annually. Every contractor site accumulates at least one widget nobody can name the owner of, and removing it costs nothing.
Related guides.
60.8 percent of roofing homepages ship a critical violation. Here is what that means and what to check first.
The documented failure is a phone number buried in the footer and nothing actionable above the fold.
60.8 percent of roofing homepages ship a critical WCAG violation, against 3,948 federal ADA filings in 2025.
Find out what your site fails.
$2,500, and every accessibility and speed failure comes back in writing.