Intermediate interview questions in Design Systems

How would you build a design system business case for leadership?
Audit inefficiencies with metrics, map the pitch to stakeholder priorities like ROI and velocity, and contrast build cost with projected savings.
What are design tokens and why standardize them?
Tests whether you treat tokens as API contracts between design and engineering. Strong answers define platform-agnostic decisions, cite W3C DTCG spec for cross-platform codegen, and note aliasing prevents drift.

What metrics measure design system success and adoption?
Tests if you connect design system health to delivery speed and consistency. Strong answers hit adoption rate, component usage, design-to-code parity, and accessibility compliance tied to team behavior.

Design token pipeline serving Web, iOS, and Android
This tests cross-platform design system architecture and governance. A strong answer uses W3C JSON tokens in option, decision, component layers, with Style Dictionary generating Web, iOS, and Android outputs. Red flag: using Figma or CSS as source of truth.
Choosing a spacing scale for a design system
A numeric base-grid gives predictable math, semantic t-shirt names give readable intent, often combine them.

How would you structure a flexible Card component API?
Tests composition-over-configuration thinking in design systems. A strong answer uses compound components or slots so consumers reorder or omit title, image, and body freely without prop drilling. Red flag: rigid boolean props that freeze layout order.

What WAI-ARIA attributes and keyboard interactions make Tabs accessible?
This tests mastery of the W3C Tabs pattern. A strong answer covers role tablist tab tabpanel, aria-selected, aria-controls, and arrow-key roving focus with optional auto-activation. A red flag is treating tabs as buttons and relying only on the Tab key.
Designing a Modal with controlled open state
Parent owns isOpen and onClose, portal renders content with focus trap, children for static content, render prop when content needs modal state.
Decoupling Form state from its Field components
Form holds values, errors, and status in context, Fields self-register and read/write via a hook, validation composes per field.
The slots pattern for a PageLayout component
Slots are named insertion points so a layout owns structure while consumers fill header, sidebar, and main, via named props or compound subcomponents.
Auto-generating component API docs from source
Extract types via react-docgen-typescript, surface in Storybook ArgsTable, enrich with JSDoc.
Documenting component anti-patterns and don'ts
Paired do/don't examples, explain the why, enforce with lint rules.
Monorepo vs polyrepo for a design system
Atomic cross-package changes and shared tooling versus build orchestration, caching, and versioning complexity.
Releasing a breaking change without forcing upgrades
Ship a major bump, keep the old major published, document migration, automate with Changesets.
Bundling a library for tree-shaking and multiple formats
Externalize peers, emit ESM and CJS, preserve modules for tree-shaking, set sideEffects false, ship types.
Syncing design tokens from Figma to code
Export Figma variables to a token spec, transform with Style Dictionary into platform outputs, automate via CI.
ARIA roles and keyboard nav for a Tabs component
Tablist, tab, tabpanel roles with aria-selected and aria-controls; arrow keys move tabs, Tab moves to the panel via roving tabindex.
Enforcing an accessible name on icon-only buttons
Require aria-label via the type system for icon-only variants, warn at runtime, decorate the icon as aria-hidden.
Accessible toasts with ARIA live regions
A persistent live region, polite vs assertive by urgency, role status or alert, content injected after mount.
Designing a contribution model with quality gates
Define a federated model, branch-and-PR flow, required reviews, and automated gates for tests, a11y, and visual regression.
We are hiring for this. Every open role lists the topics its interview covers, so you can prepare for the real thing rather than guessing.
See open roles