How to Answer Frontend Performance Questions in Interviews
How to answer practical frontend performance interviews in React: a seven-area framework—rendering, network, mobile, bundles, assets, memory, and measurement.
The browser rendering pipeline, frame budgets, CSS internals, and everything that makes the web fast or slow.
20 blog posts
How to answer practical frontend performance interviews in React: a seven-area framework—rendering, network, mobile, bundles, assets, memory, and measurement.
All blogs in the React & JS Performance series in reading order, plus quick reference on layout thrashing, will-change, passive listeners, and INP.
Why a perfect Lighthouse score doesn't prevent out-of-memory tab crashes in long-running SPAs — and how to build apps that survive 8-hour sessions.
How V8's generational garbage collector works, why high allocation rate causes jank, and practical strategies to reduce GC pressure in frontend code.
How WebSocket subscriptions, stale closures, and unbounded caches create memory leaks in React apps — and how to find and fix them with Chrome DevTools.
How image formats, font loading, and third-party tag managers silently destroy LCP and CLS scores, and the exact fixes for each that actually work.
Your 2MB bundle isn't fate. How bundlers merge modules, why tree shaking fails silently, and how to split code so users only load what they need.
Why React SPAs refetch data you already have, and how to fix it: HTTP cache headers, stale-while-revalidate, request deduplication, and prefetch strategies.
Budget Android devices run your JS 5-10x slower than your MacBook. Content-visibility, CSS containment, touch scroll, and real debugging on low-end hardware.
Origin Private File System gives browsers a real sandboxed filesystem. How it compares to IndexedDB, Cache API, and why it's the right tool for 200MB+ assets.
CPU-heavy tasks block the UI — Web Workers fix that. Integrate Workers in React with Comlink, custom hooks, and Vite, with before/after profiling results.
10,000 DOM nodes is slow even if they're not visible. When to paginate, when to infinite scroll, when to virtualize — and the real cost of each approach.
How startTransition and useDeferredValue fix frozen inputs and laggy UIs by separating urgent updates from deferred ones — with real before/after examples.
Most React memoization is premature. Learn when memo, useMemo, and useCallback actually help and when they add memory overhead with zero gain.
Render phase vs commit phase, reconciliation and fibers, what triggers re-renders, referential equality traps, context pitfalls, and React 18 batching.
What >50ms Long Tasks are, why they destroy INP, and how to chunk work with scheduler.yield(), postTask(), and Web Workers to keep the UI responsive.
LCP, CLS, INP, and TTFB explained at the technical level. Why lab scores lie, how CrUX data differs, and how to debug each metric in the real world.
At 60Hz the browser has ~16.6ms per frame for JS, layout, and paint. Why load scores miss jank and what it means for trading and live data UIs.
Browsers share one CSS model; Figma uses WASM and GPU shaders. Where design-to-code breaks: radius, strokes, blur, gap, and what to verify before you build.
Parse → DOM → CSSOM → Layout → Paint → Composite. What the main thread actually does each frame, what jank physically is, and how to stop causing it.