Skip to main content
StackraStackra
Case Study
April 2026

We found 4 things wrong with our own website and fixed all of them.

A tracking script loading too early, a spinner collapsing the page, a cookie banner appearing after load, and a nav that shifted for logged-in visitors. All found with Google's own tools. All fixed in 7.3 hours.

+9 ptsMobile score improvementMarketing pages average
EliminatedPage content jumpingWas happening on 11 of 13 pages
$1,118Total estimated costvs $3,600+ without the right tools

What was wrong, what was fixed

01

What was wrong

Google Analytics was loading before the page painted

What was fixed

Moved GA to load after paint, only for users who accepted tracking

PSI's bootup-time audit showed the GA script consuming 226ms of main thread time on every page load. The standard install puts it in the page head -- correct for tracking, wrong for performance. GA now fires via idle callback after the page is visible. Pages that declined tracking never fetch it at all.

~226ms removed from load time on every page for every visitor.
02

What was wrong

A loading spinner was collapsing the page height during load

What was fixed

Removed the spinner from the main content area on 7 pages

The homepage and six other pages used a loading spinner while below-fold content loaded. While it showed, the page shrank to half height -- and the footer jumped into the visible area. When the real content loaded, the footer jumped back. That jump registered as a layout shift score of 0.428 on 11 pages. Removing the spinner removed the collapse.

Homepage mobile score: 71 to 88. Layout shift eliminated on all affected pages.
03

What was wrong

The cookie consent banner appeared after the page loaded

What was fixed

Banner is now present from the start, slides in via CSS transform

The banner was rendered as nothing on first load, then inserted into the DOM after React finished. Every anonymous visitor -- including Google's testing tool, which always runs as a first-time visitor -- triggered this shift on every scan. CSS transform animations are not counted as layout shifts by the browser. The banner now slides in visually without moving anything else.

Remaining CLS dropped to 0.000. Final desktop score: 100.
04

What was wrong

The nav shifted when logged-in visitors arrived

What was fixed

Auth-only nav items moved to the end of the nav bar

History and Pipeline links were inserted mid-nav when login state resolved after hydration. Every item to their right shifted. Moving them to the end of the nav means stable items always occupy the same positions -- auth items only ever append.

Desktop nav shift eliminated for authenticated users.

Before and after

Before

Homepage mobile score71
Homepage load time (mobile)4.8s
Pages with jumping content11 of 13
Marketing pages avg (mobile)83

After

Homepage mobile score88
Homepage load time (mobile)3.0s
Pages with jumping content0
Marketing pages avg (mobile)92

How we found them

The scores came from Google PageSpeed Insights -- the same tool Google uses to evaluate sites for search ranking. Running it across all our marketing pages at once showed the same layout shift score (0.428) repeating identically across 11 pages. That pattern made the cause obvious: something shared across all those pages was responsible, not anything page-specific.

Identifying what was shared required a different tool. PageSpeed Insights tells you the score. Chrome DevTools' Lighthouse diagnostic tells you the element. One run, one output:

Lighthouse -- Avoid large layout shifts
Element: footer.mt-16.border-t.border-border
Score: 0.415
1 element. That's it.

The footer. Not fonts, not animations, not a third-party script. The footer was jumping because a loading spinner was collapsing the page height during load. Thirty seconds to name the cause. Two lines of CSS to fix it.

The GA issue and the cookie banner were found the same way -- PageSpeed Insights flags the symptom, the specific audit tells you the source. None of these required guesswork. They required using the right tool for the right question.

Why this took 7 hours, not 3 days

With the right diagnostic tools

Each issue was identified on the first targeted measurement. The footer jump took 30 seconds to name once we used the element-level diagnostic. The GA issue was in the bootup-time audit. Total: 7.3 hours including all investigation, fixes, and verification.

Estimated cost: $1,118

Without targeted diagnostics

The same investigation without element-level tooling means guessing at causes -- fonts, animations, scripts -- and redeploying to test each theory. The CLS investigation alone would likely take 1-2 days before landing on the footer. Total: 3-5 days.

Estimated cost: $3,600 -- $6,000

These problems are common. They don't announce themselves.

Visitors who left in 3 seconds aren't in your analytics

They bounced before the page finished loading. You can't see them. The only way to know they're leaving is to measure load time with the same tools Google uses.

The standard GA install is wrong for performance

Every guide says put it in the page head. That's the right place for tracking coverage and the worst place for load time. Moving it back costs nothing in data.

Content that jumps on load costs you real clicks

Cookie banners, login states, lazy-loaded sections -- any of these inserted post-load can move a button before a visitor touches it. Google penalizes each one.

Measurement is not the same as diagnosis

A score tells you something is wrong. An element-level diagnostic tells you exactly what. The gap between those two tools is usually the gap between days of guessing and minutes of fixing.

See what's affecting your site

Stackra audits your site with the same Google tools and flags issues like these with plain-English explanations. Free, no credit card required.

Free to sign up ยท Results in ~5 minutes