3.0 KiB
3.0 KiB
Performance Review — santhoshj.com
Date: 2026-04-11
Lighthouse Scores
| Category | Desktop | Mobile |
|---|---|---|
| Performance | 100 | 95 |
| Accessibility | 100 | 100 |
| Best Practices | 100 | 100 |
| SEO | 100 | 100 |
Core Web Vitals
| Metric | Desktop | Mobile | Rating |
|---|---|---|---|
| FCP | 0.4s | 2.3s | Desktop: Great / Mobile: Needs improvement |
| LCP | 0.6s | 2.4s | Desktop: Great / Mobile: Good |
| TBT | 0ms | 0ms | Great |
| CLS | 0.001 | 0.001 | Great |
| SI | 0.5s | 2.4s | Desktop: Great / Mobile: Great |
| TTI | 0.6s | 2.4s | Desktop: Great / Mobile: Great |
LCP element: H1 text node (no image resource).
Actionable Items (Priority Order)
1. Fix forced reflow — 48ms waste
setOpen()atindex.html:502causes 47ms forced sync layoutupdateNotchTop()atindex.html:623also triggers reflow- Root cause: reads geometric properties (e.g.
offsetWidth) after DOM writes - Fix: batch all layout reads before writes, or wrap writes in
requestAnimationFrame
2. Add cache headers to JS bundles
- Astro-hashed JS assets served with
cache-controlTTL=0 - These files have content hashes in filenames — safe to cache long-term
- Fix: set
cache-control: public, max-age=31536000, immutableon/_astro/*and other hashed assets - Location: nginx config or CDN cache policy
3. Remove cache-control: no-store from HTML
- Current: HTML doc uses
no-store→ back/forward cache disabled - Prevents instant back navigation (bfcache)
- Fix: replace
no-storewithcache-control: max-age=0, must-revalidate - Also affects JS network requests receiving
no-storeresources
4. Tree-shake unused CSS — 30KB waste
- Two CSS chunks (16KB + 14KB) are entirely unused on the homepage
- Likely page-specific styles loaded eagerly
- Fix: ensure Astro code-splitting for CSS per page, or remove unused selectors
- Check
/_astro/_slug_.*.css— may bundle all page styles into one sheet
5. Defer render-blocking JS — 550ms mobile waste
- Main JS bundle and CSS are render-blocking
- Fix: inline critical JS/CSS, defer remaining with
asyncordefer - Or: use
<link rel="preload">for critical resources +deferfor non-critical
6. Reduce unused JavaScript — 38KB / 99KB (38% waste)
- Main Astro JS bundle: 38KB unused out of 99KB
- Fix: audit Astro client-side scripts, remove unused island code, or split into smaller chunks
- Check if
setOpen,updateNotchTop, umami analytics, and other inline scripts can be deferred
7. Optimize image delivery — 323KB mobile savings
- YouTube thumbnails served as-is (JPEG, no WebP/AVIF)
- No responsive
srcset— full-size thumbnails on all viewports - Fix: use
<picture>with WebP/AVIF fallback, addloading="lazy"for below-fold images, considerwidth/heightattributes to reduce CLS risk - Note: these are 3rd-party
ytimg.comURLs — limited control. Consider proxying or using YouTube'smqdefault.jpg(smaller) for mobile