Cheat Sheet

Frontend System Design Interview Guide

Interview Cheat SheetSenior & Staff Level

Frontend System Design Interview Guide45-60 Minute Interview Script

A repeatable structure candidates can follow in a 45–60 minute frontend system design interview. Use it as a script, checklist, and evaluation rubric.

The Goal

Produce a strong, repeatable answer without missing core frontend system design dimensions.

Core Dimensions
StateAPIsRenderingPerformanceAccessibilitySecurityResilienceObservability

Interview Structure

0–5 min

Clarify the problem

Ask about users, key flows, scale, failure expectations, and what success looks like.

Clarify whether the problem is mostly a rendering problem, a collaboration problem, a server-state problem, or a workflow-heavy UI problem.

5–12 min

Layout the architecture

Sketch the main surfaces, state boundaries, and external contracts.

Explain rendering strategy, data flow, and where the most performance-sensitive loops live.

12–22 min

Define data and state ownership

Show what the client stores, what the server owns, and what can be cached or normalized.

This is where senior answers become much stronger than generic component-level answers.

22–35 min

Define APIs and interactions

Describe payload shapes, pagination, mutation flows, optimistic UI, and error behavior.

35–50 min

Stress test the design

Walk through performance, accessibility, security, reliability, and observability.

50–60 min

Summarize tradeoffs

Close by restating your architecture, major tradeoffs, and what you would optimize next if scale or product constraints changed.

RADIO Answer Format

R

Requirements

  • Core product flows
  • User types and permissions
  • Scale assumptions
  • Latency and correctness expectations
A

Architecture

  • Main UI surfaces
  • Rendering strategy
  • Realtime vs request-response flows
  • Boundaries between client and server responsibilities
D

Data Model

  • Core entities
  • Client state shape
  • Normalization where relevant
  • Transient state vs durable state
I

Interfaces

  • Read APIs
  • Mutation APIs
  • Realtime events
  • Error states and retries
O

Optimizations and Tradeoffs

  • Render performance
  • State management tradeoffs
  • Caching and invalidation
  • Accessibility, security, and resilience

State Management Deep Dive

"State management is important, but the strongest answer is not “I would use Zustand” or “I would use Redux.” The strongest answer is to explain what state exists, who owns it, and why that split is correct."

Local UI state

Open panelsHover statesActive tabsModal visibility

Shared client state

FiltersSelection stateTemporary workflow stateOptimistic queues

Server state

Fetched resourcesPaginated listsMutation resultsCache freshness

Hot interaction state

Editor stateDrag stateRequest lifecycleComposition state

Golden Phrasing

“I would separate server state from shared client interaction state. Fetched resources and mutations can use React Query, while hot interactive state would stay in a dedicated local store or lightweight client store so the UI remains predictable and performant.”

API & Data Contracts

Prefer cursor pagination for unstable ranked lists.
Use idempotency keys where retries could duplicate actions.
Keep payloads small and explicit.
Batch requests where possible and avoid request waterfalls.
Design with HTTP/2 multiplexing in mind, but still reduce request count and payload size.
Design realtime events as patches when full reloads are too expensive.

Performance Checklist

Focus first on above-the-fold work and first meaningful interaction.
Virtualize long lists and grids to bound DOM and layout cost.
Use route and component-level bundle splitting; remove dead code via tree shaking.
Debounce and throttle high-frequency input and scroll handlers.
Use modern image formats (WebP/AVIF) and lazy loading for offscreen media.

Accessibility & Security

Keyboard navigation and focus management
Screen reader support and semantic roles
I18n readiness (copy expansion, RTL, locale-aware formatting, pluralization)
Mobile-first constraints (touch targets, input latency, low-memory devices)
Offline behavior (read-only fallback, queued writes, replay strategy)
XSS-safe rich content handling
Permission boundaries and unsafe client trust assumptions

Reliability & Observability

What fails if the network drops?
What retries safely, and what should not retry automatically?
What metrics would reveal user pain quickly?
Define product analytics for key funnels and regression detection.
Plan A/B testing with feature flags, guardrails, and fast rollback.
Cover critical paths with tests and CI/CD gates before release.
How would you debug production divergence or bad client state?

Question-specific Patterns

News Feed

Emphasize React Query, normalization, cursor pagination, optimistic mutations, and realtime reconciliation without reordering visible rows.

Autocomplete

Emphasize request lifecycle, cancellation, stale response protection, keyboard navigation, and IME handling more than generic global state tools.

Collaborative Docs

Emphasize editor store, pending ops, rebasing, comments anchoring, offline replay, and why React Query is only secondary here.

Jira Board

Emphasize normalized board state, optimistic drag-and-drop, workflow validation, permission boundaries, and local drag state versus server-backed board data.

Final Closing Script

A perfect summary

“I would start by clarifying scale, latency, and correctness requirements, then define the architecture and state boundaries. I would separate local interaction state, shared client state, and server state, define APIs and mutation flows, and then validate the design against performance, accessibility, security, and observability constraints. Finally, I would summarize the key tradeoffs and what I would optimize next if scale or product constraints changed.”