gaugeEngineering
Bundle size, code splitting, memoization done right, images and fonts, and the Core Web Vitals that matter.
1 item
The biggest lever is shipping less JavaScript
Most frontend slowness is too much JS parsed and executed on load, not slow React renders. Tackle bundle size first.
"use client" at the leaves.next/dynamic / React.lazy so they load on demand, not upfront.Memoization — only where it pays
React.memo, useMemo, useCallback prevent re-renders/recomputation, but they aren't free and most renders are cheap. Don't sprinkle them everywhere.children so a subtree isn't re-created.Images & fonts (usually the real LCP culprit)
next/image — automatic resizing, modern formats, lazy loading, and it reserves space to prevent layout shift.next/font to self-host fonts, avoid a render-blocking request, and eliminate font-swap layout shift.Core Web Vitals — what to actually watch
Render strategy
<Suspense> so users see a shell instantly instead of waiting for the slowest query.@tanstack/react-virtual) so only visible rows mount.The rule: measure with Lighthouse and the Profiler first; optimize the thing that's actually slow, not the thing that feels slow.