Figma System Design Interview Questions
- See why most Figma loops carry two design rounds, and how one bends toward your track
- Put each kind of data on the right consistency regime, the axis that marks a Figma answer
- Meet the five worked designs ahead and a five-phase way to run any of them
Figma's system design interview questions center on one hard problem: keeping a shared canvas in sync across many live editors. Most loops carry two design rounds, one framed over Figma's component model and one bending toward your track. The prompts that recur are multiplayer editing, live presence and cursors, real-time comments, version history, and the canvas rendering engine.
Figma is a real-time collaborative design tool, so its system design round asks you to reason about the exact problem the product solves. That problem is keeping one document in sync across many people editing at once, fast enough that it feels like everyone is in the same room. Most software loops here carry two design sessions of roughly an hour each, and they are the place a senior verdict is made. The first is framed as a feature over Figma's own component model, and candidates are typically sent a short public guide to Figma components to read beforehand. The second bends toward the work you would actually do, backend distributed systems or frontend client and rendering, so the prompt tracks your specialty. For the other two rounds in the loop, see the Figma coding interview questions and behavioral interview questions sections.
The round, and the two forms it takes
The format is conversational and, fittingly, often run inside Figma or FigJam rather than a generic whiteboard, so being comfortable diagramming in the product itself helps. One open prompt, a shared canvas, an interviewer who interrupts and hands you a new constraint partway through to watch you adapt. The two design slots differ in what they are testing, and the grid below is their shape. Figma does not publish a question list, so read this as a steer toward where preparation pays off rather than a bank to memorize.
- Round 1: Feature over components. Design a feature that lives inside a Figma file, framed around the Figma component model (Figma equates a component to a class). The reported example is a poll inside a file with many concurrent users, with follow-ups on scaling and storage. Candidates are usually sent a public components guide to read first.
- Round 2: Role-specific. Bends toward your track. Backend is classic distributed systems with a real-time tilt: pub/sub, caching, rate limiting, sharded stores, WebSocket fan-out. Frontend is client architecture and the rendering engine, a genuinely rare form of design round that Figma is one of the few places to run.
- Run inside Figma: Diagram in-product. The design sessions are often conducted in Figma or FigJam rather than a third-party whiteboard. Be ready to lay out boxes and arrows in the product without fighting the tool. A small, real, and easy-to-miss part of the format.
- Graded live: Collaborative narration. How you think with the interviewer is scored, not just the end state. A candidate who narrates a slightly slower path, asks clarifying questions, and treats the interviewer as a thinking partner scores higher than one who reaches the answer in silence. This is a real Figma signal, not generic advice.
Where the prompts cluster
Across candidate reports and role-specific guides, the prompts concentrate in the real-time-collaboration family. The percentages below are relative weightings across the pooled evidence, not measured ask-rates, so treat them as editorial guidance about where the depth is. Every one of these leans on the same substrate, a WebSocket connection layer and a per-document coordinator. So be fluent in the connection layer even when it is not the headline prompt.
What the round rewards, past drawing the right boxes, is three things. First, sync reasoning: can you order concurrent writes, apply a local change optimistically, and reconcile the stream from the server without flicker. Second, conflict resolution stated concretely, at the right atomicity boundary (Figma resolves at the property level, so two people editing one text value do not merge, one full value wins). Third, client performance, because a design tool lives or dies on staying at sixty frames per second while a large document is panned and zoomed. Weak answers stop at availability and throughput. Strong ones name the failure modes a live canvas actually hits: partition recovery, cursor storms, offline merges, and per-document memory bounds.
The reference spine most Figma answers share
The most useful mental template is the split below, because it encodes the insight that separates a senior Figma answer from a generic one: different kinds of data ride different paths with different guarantees. Document edits are durable and ordered. Cursors are ephemeral and lossy. Comments and notifications are relational data surfaced by a live read layer. Draw the whole split before you zoom into any one path.
Read the spine in chips. An editor client holds a socket to the WebSocket gateway, which routes edits to a single per-doc process that orders writes into document state and rebroadcasts them. A separate cursor fan-out carries lossy presence back to clients, and LiveGraph surfaces comments and notifications by tailing Postgres. The instinct to carry from this: name the three regimes early, keep them separate, and never let comments or cursors drift into the document-sync path where they do not belong.
Running a Figma design
Five phases carry any of these prompts without thrashing. First, pin the real-time constraints and the numbers you are designing for. How many concurrent editors share one file, how often does a cursor move, how fresh must a comment feel, and what happens after thirty minutes offline? Nail scale and one or two hard guarantees before you draw. Second, lay out the whole spine, the three data paths above, so the interviewer sees the machine before you zoom in.
Third, commit to a conflict-resolution model and defend it: server-ordered last-writer-wins at the property level, and why not operational transforms or a decentralized CRDT. Fourth, tell the failure story, because it is where seniority is read. What happens when the per-document process crashes (recover from a snapshot plus the operation log), or when five hundred people join one file (per-document memory bounds)? What happens when a deploy reconnects everyone at once (a thundering herd on the gateway), or when two branches touched the same component? Fifth, close on cost and the metrics that decide success, bandwidth per cursor and per-document memory ahead of raw requests per second. Go deep on one stage and keep the rest brisk.
The Figma answer
- Opens on real-time constraints: concurrent editors, cursor frequency, offline reconnect, and latency as a first-class axis
- Puts each data kind on its own regime: ordered durable edits, lossy ephemeral cursors, live-read relational comments
- Commits to server-ordered property-level last-writer-wins and can say why operational transforms and pure CRDTs were rejected
- Reasons about the one-process-per-document coordinator, its memory bounds, and its crash-and-recover story
- Narrates the reasoning and adapts when a constraint is injected mid-problem, treating the interviewer as a thinking partner
The generic answer
- Sketches stateless app servers over a sharded database and never engages the live-sync problem at all
- Says "just use a CRDT" without naming the atomicity boundary or why a central server changes the calculus
- Reliably queues every cursor delta as if presence needed the same durability as an edit
- Routes comments through the document-sync path instead of a relational store with live reads
- Reaches a correct design in silence, which scores lower here than a narrated, slightly slower path
The worked designs
Five designs follow, each mapped to a reported prompt and grounded in a system Figma has actually published. Start with multiplayer editing: it is the flagship, the most-reported prompt, and the one whose architecture the rest of the section builds on.
Design Real-Time Multiplayer Editing
The flagship: many people edit one design document live. The document as a tree of objects, one authoritative process per file over WebSockets, and server-ordered property-level last-writer-wins with an explicit contrast against operational transforms and pure CRDTs. Client-generated object ids for offline creation, fractional indexing for sibling order, optimistic local apply, cycle rejection on reparenting, undo and redo, and offline reconnect.
Design Live Presence & Cursors
Show who is in a file and their live cursor and selection, hundreds per document, plus presence for a million concurrent connections. The ephemeral lossy cursor channel against the durable edit channel, the WebSocket gateway with connection-affinity routing, per-document fan-out, presence heartbeats and expiry, and the cursor-storm problem: coalesce, rate-limit, and batch broadcasts on a tick.
Design Comments & Notifications
Threaded comments, mentions, and a notifications feed that updates live for everyone viewing. The lesson that separates it: comments are relational data in Postgres, not part of document sync, surfaced by a live read layer that tails the replication log rather than polling. Exactly-once and in-order delivery, subquery dedup across many subscribers, and permission-aware subscriptions.
Design File Storage & Version History
Persist design files with auto-saved checkpoints, named versions, restore, and branch and merge. The object-tree state plus an operation log, and the snapshot-versus-delta tradeoff. Object storage and a CDN for large binaries with metadata in Postgres, and merge semantics that reuse the same property-level last-writer-wins philosophy from the multiplayer design.
Design the Canvas Rendering Engine
The rare frontend design round: draw a large vector document at sixty frames per second as the user pans, zooms, and edits. Why the browser 2D canvas is immediate-mode and does not scale. A custom tile-based WebGL and WebGPU engine in retained mode, with geometry cached on the GPU, viewport culling, and level-of-detail. A C++ and WebAssembly core with a pre-allocated heap to avoid garbage-collection pauses.
Each design assumes the fundamentals from the System Design course. Use the scaling playbook for read and write paths, and the toolbox for when to reach for a log, a cache, a queue, or an index. These pages stay on the real-time-collaboration shapes Figma actually tests and leave the general mechanics to those.
Common questions
What does the Figma system design interview test?
Real-time collaboration on a shared canvas. Most loops carry two rounds: one framed as a feature over Figma's component model, and one that bends toward your track, backend distributed systems or frontend rendering. The axis is synchronization, low latency, and concurrency from your first sentence, not a generic microservices sketch.
How does Figma handle concurrent edits?
With a server-ordered, property-level last-writer-wins register, not operational transforms and not a pure CRDT. A central server process per document defines a single order of events, so the peer-to-peer machinery a CRDT needs buys nothing. Being able to say why Figma rejected both textbook options is the clearest credibility signal in the round.
Key Takeaways
- ✓Most Figma loops carry two design rounds. One is framed as a feature over the Figma component model (you are usually sent a components guide beforehand). The other bends toward your track, backend distributed systems or frontend rendering. Both are often run inside Figma itself.
- ✓Real-time synchronization, low latency, and concurrency are the axis from sentence one. The senior signal is putting each kind of data on the right regime: durable ordered edits, ephemeral lossy cursors, and live-read relational comments, never one generic microservices sketch.
- ✓The conflict-resolution model is the credibility flag. Figma uses server-ordered property-level last-writer-wins, not operational transforms and not a pure CRDT. Knowing why the central-server-per-document design makes both textbook options unnecessary is the flex; "just use a CRDT" is the trap.
- ✓How you think out loud is graded. A narrated, slightly slower path that invites the interviewer in scores higher than a silent correct answer. Run the five phases, then go deep on one stage, and let the failure story carry the seniority verdict.
Figma interview guideKnow what Figma asks before you walk in.
28 coding · 5 system design · 17 behavioral questions
Get their questions first.
InterviewLegend is independent and not affiliated with or endorsed by any company it covers.