Engineering
Fixing Lighthouse Performance without guessing
Fix Performance audit findings from the route evidence outward—key page, browser signal, owner—without guessing from a single lab percentage.
· by Sam Ortega

Guessing looks like deleting random plugins until a percentage twitches. Fixing looks like opening the finding's page, reproducing the browser-based performance problem, and changing the payload, order, or layout reservation that caused it.
SlaySlop's Performance audit "Runs browser-based performance checks on key pages." Your fix loop should stay inside that sentence.
Outcome you want
Each finding closes on the same route with a verified browser pass, or stays open with an owner and a dated risk accept. LCP, CLS, and Interaction readiness get separate fixes when they are the actual signal. Clients see a portal that matches the launch list.
Boundaries
Permissioned work on properties you own or manage. Read-only scanners do not patch your CDN for you. Do not "fix" by blocking measurement or removing the page from navigation while the URL still publicly resolves. Not a pentest.
Loading diagram.
Step 1: freeze the route list
Copy URLs from findings and from the handoff key-page list. If Linked pages shows additional public templates that ship traffic, add them.
printf '%s\n' \
"https://staging.example.com/" \
"https://staging.example.com/pricing"Step 2: reproduce with the right observer
Cold load in a real browser. Mobile width and desktop width. Network and Performance panels on. Compare staging and production if tags differ.
fix_input:
check: Performance audit
route: /pricing
evidence: report signal + page attachment
siblings_to_peek:
- LCP: primary content loading signal
- CLS: visual instability during page load
- Interaction readiness: responsive interaction signalsStep 3: patch causes, not cosmetics
Late hero images need dimensions and modern formats. Blocking scripts need deferral, async, or removal. Fonts need a loading strategy that does not shove text. Layout slots for banners need reserved space—that is often a CLS fix riding beside a Performance audit row.
<!-- Reserve space; avoid late shift when media arrives -->
<img
src="/images/hero.avif"
width="1200"
height="675"
alt="Product dashboard on a laptop"
/>If LCP is the named sibling finding, focus on what paints as primary content. If CLS is named, focus on instability during load. If Interaction readiness is named, focus on responsiveness signals. Do not burn a week micro-optimizing unused CSS while the autoplay video stays.
Step 4: verify on production parity
Re-scan or manually re-check the same routes after deploy. Confirm third parties match what you fixed against. Product copy emphasizes catching regressions early with scheduled scans after release—wire that to an owner before you call handoff done.
Loading diagram.
Pitfalls while fixing
Chasing a different page's score. Accepting staging clean while production stays heavy. Declaring victory from uptime alone. Merging accessibility failures into the performance ticket so neither gets a real fix. Accessibility audit remains a separate automated check on the rendered page.
Lab notebook addendum
Agency ops tip: put the finding URL in the ticket title. "Pricing slow" spawns duplicate work. "Performance audit — /pricing — late hero + tag weight" gets the right specialist. After fix, paste the re-check time in Africa/Cairo or the client's zone and name who clicked the page.
# Permissioned after deploy
curl -sI "https://www.example.com/pricing" | sed -n '1,8p'
echo "now open browser Performance panel on the same URL"If Interaction readiness still fails while paint metrics improved, leave that sibling open. Responsive interaction signals are part of how the page feels, which is exactly what handoff calls argue about.
Depth notes
Coordinate with whoever owns tag managers. Many "performance" tickets are actually marketing-ops tickets. Name that owner in the first comment or you will rediscover the same pixel after the next campaign launch.
When the fix is "delete the feature"
Sometimes the honest patch is removing an autoplay background video or a third-party chat widget on mobile. Record that product decision. Performance audit evidence should drive prioritization; it should not force you to keep a feature that cannot meet the bar.
Related next step
When performance and accessibility findings share routes, keep them in one browser-context report. SlaySlop is built for that pass.