Generated: 2026-02-26 Tool: Chrome DevTools MCP (no CPU/network throttling, lab conditions) No CrUX field data available for this site.
| Page | LCP | CLS | Status |
|---|---|---|---|
Homepage (/) |
463 ms | 0.00 | Good |
User Dashboard (/dashboard) |
463 ms* | 0.00* | Good |
Admin Dashboard (/dashboard/admin) |
827 ms | 0.25 | CLS needs fix |
* Dashboard page not independently traced — estimated similar to homepage.
| Metric | Score | Threshold |
|---|---|---|
| LCP | 463 ms | Good (<2,500ms) |
| CLS | 0.00 | Good (<0.1) |
The LCP element is a <p> text node — no network fetch needed.
| Phase | Time | % of LCP |
|---|---|---|
| TTFB | 53 ms | 11.5% |
| Element Render Delay | 410 ms | 88.5% |
The large render delay is caused by Next.js JS hydration blocking text rendering before it becomes the LCP element.
LCP text is not painted until after JS hydration completes.
Fix: Ensure the LCP text is present in the initial SSR HTML and is not dependent on client-side JS to render.
HTML → CSS (a25ca756ef64d4e8.css, 400ms)
└── Font (material-symbols-sharp.fcbbf02a.woff2, 411ms)
The font is only discovered after CSS is parsed. No preconnect hints configured.
Fix: Add a preload hint in <head> to break the chain:
<link
rel="preload"
href="/_next/static/media/material-symbols-sharp.fcbbf02a.woff2"
as="font"
type="font/woff2"
crossorigin
/>The logo carousel triggers 34 micro layout shifts (589ms–4,134ms) from unsized <img> elements:
| Image | Shifts |
|---|---|
foodbank_logo.svg |
1 |
csf_logo_dark.svg |
26 |
repair_lab_logo.png |
7 |
Fix: Add explicit width and height attributes to carousel <img> tags:
<img
src="/clients/csf_logo_dark.svg"
width="160"
height="60"
class="brightness-110 contrast-[0.2] grayscale transition duration-300"
/>Or use CSS aspect-ratio to reserve space before images load.
| Metric | Score | Threshold |
|---|---|---|
| LCP | 827 ms | Good (<2,500ms) |
| CLS | 0.25 | Bad (>0.1, at Bad boundary) |
The LCP element is the footer logo cfc_logo_white_full.svg — unusual, as the actual page content (user data table) is not the LCP element, suggesting the table content is rendered client-side.
| Phase | Time | % of LCP |
|---|---|---|
| TTFB | 55 ms | 6.6% |
| Resource Load Delay | 667 ms | 80.6% |
| Resource Load Duration | 57 ms | 6.9% |
| Element Render Delay | 49 ms | 5.9% |
A single layout shift of score 0.2482 at 1,308ms dominates. Root cause: the footer logo cfc_logo_white_full.svg has no width/height attributes.
Fix: Add explicit dimensions to the footer logo:
<!-- In the footer component -->
<img
src="/logo/cfc_logo_white_full.svg"
class="!w-auto object-top md:!h-auto"
width="200"
height="50"
alt="Coders for Causes logo"
/>The LCP image (cfc_logo_white_full.svg) failed two discovery checks:
fetchpriority=highnot setloading="lazy"is applied (delays the LCP image)
Fix:
<img
src="/logo/cfc_logo_white_full.svg"
fetchpriority="high"
loading="eager" <!-- remove lazy loading from LCP images -->
width="200"
height="50"
/>The logo image isn't requested until 722ms after navigation starts. The browser can't discover it until late in page load.
Fix: Add a preload hint for the logo if it consistently appears as the LCP element:
<link rel="preload" href="/logo/cfc_logo_white_full.svg" as="image" />The logo SVG returns cache-control: public, max-age=0, must-revalidate, meaning every page load triggers a revalidation request. The 304 response still adds latency.
Fix: For static/versioned assets, use long-lived caching:
cache-control: public, max-age=31536000, immutable
Since this is deployed on Vercel, configure this in next.config.js or vercel.json.
HTML → CSS (a25ca756ef64d4e8.css, 717ms)
└── Font (material-symbols-sharp.fcbbf02a.woff2, 786ms)
Same font chain issue as the homepage — no preconnect or preload hints.
| Priority | Issue | Page(s) | Impact |
|---|---|---|---|
| 1 | CLS 0.25 from unsized footer logo | Admin Dashboard | CLS (Bad) |
| 2 | Remove loading="lazy" from LCP image |
Admin Dashboard | LCP |
| 3 | Add fetchpriority="high" to LCP image |
Admin Dashboard | LCP |
| 4 | Preload material-symbols-sharp.woff2 font |
All pages | LCP / FCP |
| 5 | Fix LCP text render delay (JS hydration) | Homepage | LCP |
| 6 | Add width/height to carousel logos |
Homepage | CLS stability |
| 7 | Fix logo cache-control to long-lived |
Admin Dashboard | Load speed |