Skip to content

Two slow intros removed, and what they were hiding fixed

Performance passes on vandatateam.com and vanaxity.com, measured before and after on the same machine.

Delivered10/2026

Client
Van Data Team
Role
Contract work: both passes and the reports
Period
10/2026
Proof
10 claims
With
Tran Tien Van
Stack
Next.js · Playwright · Lighthouse · WebGL · CSS
  1. 1ProblemIntros hid the pages for up to 6 seconds and bundles shipped the whole blog.
  2. 2BuildRemoved the intros, moved WebGL to a worker, split bundles, stopped idle repaints.
  3. 3ResultHero visible on desktop at 526 ms instead of 4,493 ms.
4,493 → 526 msP1
Top of the page visible on desktop
0.160 → 0P2
Mobile layout shift (CLS)
5,436 → 716 msP6
Headline readable on desktop

Problem

On vandatateam.com an intro overlay held the home page for three to six seconds on desktop. It was unmounted and mounted again during hydration, so the page flashed into view and was then covered again. The client bundles also shipped the whole blog to every visitor.

On vanaxity.com a full-screen intro hid the headline, and once it finished the idle page kept repainting itself.

Build

I removed both intros and then fixed what they had been covering. On vandatateam.com the WebGL scene moved into a Web Worker with OffscreenCanvas, client bundles were split so blog copy stays on the server, and long pages got content-visibility.

On vanaxity.com the intro became a short CSS-only entrance that animates transform and opacity and starts before hydration. Decorative loops pause off screen, and scrolling went back to the compositor.

Both builds were measured as production servers on the same machine, back to back in alternating order, so background load hit both equally.

Result

The top of the page became visible on desktop in 526 ms instead of 4,493 ms P1, and mobile layout shift from 0.160 to 0 P2. JavaScript loaded in the first 6 seconds went from 2,425 KB to 695 KB P3, and the blog's initial JavaScript from 1,456 KB to 272 KB P4.

On vanaxity.com the headline is readable at 716 ms instead of 5,436 ms on desktop P6, the idle main thread on a throttled phone went from 95.6% busy to 3.7% P7, and 30 of 30 behaviour checks pass in three browsers P8.

Before and after, drawn to scale
Show as a table
MeasureBeforeAfterSource
Top of the page visible on desktop4,493 ms526 msP1, as of 21 Oct 2026
Mobile layout shift (CLS)0.160P2, as of 21 Oct 2026
JavaScript loaded in the first 6 seconds2,425 KB695 KBP3, as of 21 Oct 2026
Initial JavaScript on /blog1,456 KB272 KBP4, as of 21 Oct 2026
Lighthouse mobile score, home page8490P5, as of 21 Oct 2026
Headline readable on desktop5,436 ms716 msP6, as of 21 Oct 2026
Idle main-thread time on a throttled phone95.6%3.7%P7, as of 21 Oct 2026
Two rows of screenshots of the vandatateam.com home page at 0.3, 0.6, 1, 2, 3, 4 and 5 seconds. Before: an intro covers the page until about 5 seconds. After: the headline is readable from 0.6 seconds.
vandatateam.com, first five seconds. Top row before the pass, bottom row after. Same machine, same network.

What went wrong

While editing 69 machine-translated Vietnamese posts against the English originals, I found 8 where the translation had renamed a frontmatter key, which silently removed the call to action P9. Nothing failed; the button was just gone.

Limits

Lighthouse scores here are local, simulated medians; field data on real phones will differ. On phones the vanaxity headline now plays a short entrance instead of appearing at first paint. LCP did not change, and I kept one entrance on all screens.

My part

Van owns the sites and the agency. I did both passes, wrote the measurement scripts and the reports. On vandatateam.com, 403 of the 938 commits are mine P10.

My commits on vandatateam.com403 / 938 · 43%

Proof of delivery · NLV-26-PRF

#ClaimEvidenceAs ofConfidence
P1The top of the page became visible on desktop in 526 ms instead of 4,493 ms.
  • vandatateam.com runtime performance pass (On request)
  • Homepage, first five seconds, before and after (On request)
21 Oct 2026I hold the artifact
P2Mobile layout shift went from 0.160 to 0.
  • vandatateam.com runtime performance pass (On request)
21 Oct 2026I hold the artifact
P3JavaScript loaded in the first 6 seconds went from 2,425 KB to 695 KB.
  • vandatateam.com runtime performance pass (On request)
21 Oct 2026I hold the artifact
P4Initial JavaScript on the blog went from 1,456 KB to 272 KB.
  • vandatateam.com runtime performance pass (On request)
21 Oct 2026I hold the artifact
P5Lighthouse mobile score on the home page went from 84 to 90 (local, median of 5 runs).
  • vandatateam.com runtime performance pass (On request)
21 Oct 2026I hold the artifact
P6On vanaxity.com the headline became readable at 716 ms instead of 5,436 ms on desktop.
  • vanaxity.com landing performance pass (On request)
21 Oct 2026I hold the artifact
P7With the page idle, the main thread on a throttled phone went from 95.6% busy to 3.7%.
  • vanaxity.com landing performance pass (On request)
21 Oct 2026I hold the artifact
P830 of 30 behaviour checks pass in Chrome, Firefox and WebKit.
  • vanaxity.com landing performance pass (On request)
21 Oct 2026I hold the artifact
P9Edited 69 machine-translated Vietnamese posts against the English originals and found 8 where a renamed frontmatter key had removed the call to action.
  • vandatateam.com runtime performance pass (On request)
21 Oct 2026I hold the artifact
P10403 of the site's 938 commits are mine.
  • Commit counts per repository (On request)
21 Oct 2026I hold the artifact