SnapSiteScan verdict
JavaScript is your bottleneck
When JavaScript is the largest measured cause, the page usually appears quickly and then refuses to respond, because the browser is busy parsing and executing code instead of reacting to the visitor.
Ownership
Front-end development
Investigate with the front-end team first. The script breakdown may point to your bundle, a theme, a plugin or third-party code; the team controlling that code owns the repair. Faster hosting alone does not remove main-thread execution.
What happens if you do nothing?
Visitors see the page, tap a button, and nothing happens. That reads as broken rather than slow, and it is the failure mode most likely to lose a sale that was already half-made.
Do this first
- 1
Delete before you optimise
Find the largest bundle and ask what would break if it were removed. Sliders, chat widgets, animation libraries and analytics wrappers are removed far more often than they are missed.
- 2
Load the rest later
Anything below the first screen — carousels, maps, tabs, modals — should load on interaction or on scroll, not during the initial page load.
- 3
Stop shipping code for browsers nobody uses
Inspect legacy-code evidence and your supported browser requirements before adjusting transpilation or polyfills. A modern build can reduce unnecessary output, but compatibility must be tested.
- 4
Break the long tasks that remain
Any single task over 50 ms blocks input. Splitting hydration and deferring non-critical work is what moves Interaction to Next Paint.
From Lighthouse finding to a testable change
Lighthouse evidence: Reduce JavaScript execution time (bootup-time); Minimize main-thread work (mainthread-work-breakdown); Reduce unused JavaScript
Execution-time and main-thread findings can describe the same work. SnapSiteScan groups this overlapping evidence into one main-thread cause instead of adding both savings. Use the script breakdown to distinguish parsing, execution and other main-thread activity; transferred bytes alone do not establish execution cost.
A scoped code example
<!-- Only for a noncritical external classic script. -->
<script src="/noncritical-widget.js" defer></script>When this recommendation does not apply
defer waits until HTML parsing completes and preserves order among deferred classic scripts; async does not preserve that order. Neither makes expensive execution free. Do not defer a dependency without checking its consumers. Module scripts already defer by default. If execution still dominates, remove unused code, split bundles or shorten long tasks.
Verify the result, not the estimate
Test navigation, forms and interactive widgets. Rescan & Compare the same URL/device and inspect lab TBT plus the original execution-time audit. Lower lab TBT does not prove lower field INP; review available CrUX observations separately.
How First Fix and Rescan & Compare work · Run a scan and keep a before/after report
Official technical referenceHow do you know this verdict is yours?
- Total Blocking Time above 600 ms.
- Large 'unused JavaScript' or 'legacy JavaScript' findings measured in hundreds of kilobytes.
- The page looks finished long before it can be used.
- Mobile score is far worse than desktop, because phones execute the same code several times slower.
Not worth your time given this verdict
- Upgrading hosting — the delay is happening on the visitor's device, not yours.
- Image formats, unless images also appear as a top cause.
- Minification alone: it shrinks bytes but barely reduces execution time.
Deprioritising a finding is a prioritisation call, not a claim that it never matters.
When to stop
When should you stop working on this?
Reprioritise when fresh same-device runs no longer identify this as the dominant cause and interaction tests work. Lab TBT below 200 ms is a useful diagnostic target, not proof of field INP; remaining work depends on the evidence.
Send this to your team
The message that ends the discussion
Our slowness is JavaScript execution, not hosting. The page paints fine and then blocks input. First step is removing or deferring the largest bundles, not upgrading the server.
Quick answer
Lighthouse says JavaScript is slowing my site down — what should I fix first?
When JavaScript is the largest measured cause, the page usually appears quickly and then refuses to respond, because the browser is busy parsing and executing code instead of reacting to the visitor. Investigate with the front-end team first. The script breakdown may point to your bundle, a theme, a plugin or third-party code; the team controlling that code owns the repair. Faster hosting alone does not remove main-thread execution.
- Owner
- Front-end development
- First action
- Delete before you optimise
What to do next: Find the largest bundle and ask what would break if it were removed. Sliders, chat widgets, animation libraries and analytics wrappers are removed far more often than they are missed.
Not sure which verdict is yours?
Run a scan to find an eligible First Fix from the returned Lighthouse evidence. Review its applicability, make one change, then use Rescan & Compare in the report to check fresh measurements. If no eligible finding remains, no fix is invented.
Scan your siteThe other verdicts
- Your server is the bottleneckHosting or backend
- Images are your bottleneckContent or design
- CSS is blocking your renderingFront-end development
- Web fonts are delaying your pageFront-end development
- Third-party scripts dominate your pageMarketing or analytics
- Your site is already fast enoughNo one — this is finished
- There is nothing measurable left to fixNo one — this is finished
- Your site is slow on mobile onlyFront-end development
- Your site is slow on desktop onlyFront-end development
