HLD walkthrough of your current/past frontend system
Structure: business context → user flows → architecture (rendering, state, routing, auth) → data layer (APIs, caching, realtime) → observability → key tradeoffs → what you'd change. Talk about decisions and constraints, not features. Bring a diagram.
An HLD (high-level design) walk-through is a senior interview staple. The goal: show you reason about systems, not features. Have a story prepared.
Skeleton
- Context (30s) — what the product does, scale, who uses it.
- Key user flows (1m) — the 2–3 flows that drove architecture.
- Architecture diagram — boxes + arrows. Draw it.
- Per-layer detail: rendering, state, data, auth, observability.
- Tradeoffs — the choices you made and the rejected alternatives.
- What you'd change — honest assessment.
What to include
Rendering
- SSR / SSG / CSR / RSC split per route + why.
- Edge vs origin rendering.
- Hydration strategy.
State
- Server state (React Query / SWR / RTK Query).
- Client state (Zustand / Redux / Context).
- URL state (filters, deep links).
- Persistence (localStorage, IndexedDB, server).
Data layer
- REST / GraphQL / RPC?
- Caching strategy (HTTP + client cache).
- Realtime (WebSocket / SSE / polling).
- Optimistic UI patterns.
Routing
- App router / file-based / programmatic.
- Code splitting strategy.
- Protected routes.
Auth
- Provider (OAuth, custom).
- Session storage (cookie vs token).
- Authorization at component + API level.
Observability
- RUM (web-vitals).
- Error tracking (Sentry).
- Custom analytics events.
- Logging.
Build + deploy
- Bundler, CI gates, preview deploys.
- CDN, image pipeline.
- Feature flags.
What to leave out
- Implementation minutia ("we used
useCallbackhere"). - Brand-new buzzwords without justification.
- Org politics.
Tradeoffs section
This is where seniority shows. For each major decision, state:
Decision: Adopted Next.js App Router.
Why: SSR for SEO on marketing routes, RSC to ship less JS, file-based routing kept the team productive.
Tradeoff: Less mature than Pages Router at the time; some libraries weren't compatible.
Rejected: Vite + custom SSR. Faster dev, but more glue, less prerendering story.Scale numbers
If you can: traffic (DAU/QPS), data size, perf targets (LCP, INP). Concrete numbers > "lots of users."
What you'd change
Pick 2–3 honest things:
- "I'd move state X from Redux to React Query — it's server state."
- "Our image pipeline still serves JPEG; we'd add AVIF."
- "Bundle budget wasn't enforced in CI; regressions slipped in."
Shows reflection without trashing past colleagues.
Common pitfalls
- Listing features ("we have login, profile, ...") instead of design.
- "We just used React" — not a design.
- Skipping tradeoffs.
- No diagram.
Interview framing
"I'd start with the product context and the 2–3 user flows that drove design — say, an authenticated dashboard with realtime data and a public marketing surface. Then a layered diagram: rendering split (SSG marketing, SSR/RSC for SEO routes, CSR for the app), state separation (React Query for server, Zustand for client, URL for filters), data layer (REST + WebSocket for realtime, optimistic UI for sends), auth via httpOnly-cookie sessions, observability via Sentry + web-vitals. Then I'd walk through 2–3 explicit tradeoffs — choosing the App Router and what I'd give up — and end with what I'd change today. The key is reasoning, not feature list."
Follow-up questions
- •What was the hardest tradeoff?
- •Walk through your data fetching architecture.
- •What would you change if you started over?
Common mistakes
- •Feature list instead of design.
- •No tradeoffs articulated.
- •Buzzword soup without justification.
- •Skipping observability.
Performance considerations
- •Walk through perf budget, bottlenecks identified, and the wins shipped (with numbers).
Edge cases
- •If the system is small, talk through the constraints that made it small.
- •If you joined late, talk about what's there and what you'd change.
Real-world examples
- •Linear's HLD blog posts, Vercel architecture talks, GitHub Universe sessions on frontend infra.