Miro System Design Explained

Miro System Design Explained

Explore how Miro powers real-time collaboration on infinite whiteboards. This deep dive covers object-based syncing, conflict resolution, versioning, and how teams stay in sync during live collaboration.

7 mins read
Jan 06, 2026
Share
editor-page-cover

Miro feels fluid and limitless. You open a board, zoom endlessly, drag shapes, add sticky notes, draw arrows, and collaborate with teammates in real time. Dozens of cursors move simultaneously, updates appear instantly, and the board never seems to “reload,” no matter how large it gets.

Behind that experience is a deeply complex distributed system. Miro System Design must support real-time multi-user collaboration, infinite canvas rendering, fine-grained object updates, conflict resolution, versioning, and low-latency synchronization, often with hundreds of concurrent users on the same board.

This makes Miro a strong System Design interview question. It tests whether you can design systems that handle high-frequency collaborative interactions, spatial data models, and real-time sync, all while remaining fast, resilient, and intuitive. In this blog, we’ll walk through how a Miro-like system can be designed, focusing on architecture, data flow, and real-world trade-offs rather than UI or rendering specifics.

Grokking Modern System Design Interview

Cover
Grokking Modern System Design Interview

System Design Interviews decide your level and compensation at top tech companies. To succeed, you must design scalable systems, justify trade-offs, and explain decisions under time pressure. Most candidates struggle because they lack a repeatable method. Built by FAANG engineers, this is the definitive System Design Interview course. You will master distributed systems building blocks: databases, caches, load balancers, messaging, microservices, sharding, replication, and consistency, and learn the patterns behind web-scale architectures. Using the RESHADED framework, you will translate open-ended system design problems into precise requirements, explicit constraints, and success metrics, then design modular, reliable solutions. Full Mock Interview practice builds fluency and timing. By the end, you will discuss architectures with Staff-level clarity, tackle unseen questions with confidence, and stand out in System Design Interviews at leading companies.

26hrs
Intermediate
5 Playgrounds
23 Quizzes

Understanding the Core Problem#

widget

At its core, Miro is a real-time collaborative canvas. Users create and manipulate visual objects, shapes, text, connectors, and images on an effectively infinite two-dimensional plane.

Unlike documents or spreadsheets, a whiteboard has no fixed structure. Objects can exist anywhere, overlap, group, or link arbitrarily. Users may interact with dozens of objects per second, and many users may do so simultaneously.

The system must continuously answer difficult questions. Which objects exist on the board right now? Where are they positioned? Who last modified them? How do we merge concurrent changes without freezing the board or losing updates?

These questions define the heart of Miro System Design.

Core Functional Requirements#

To ground the design, we start with what the system must do.

From a user’s perspective, Miro must allow users to create boards, add and manipulate objects, collaborate in real time, zoom and pan infinitely, and recover previous states. From a platform perspective, it must store board data durably, synchronize edits across clients, and manage access control.

More concretely, the system must support:

  • Infinite canvas with spatial positioning

  • Real-time multi-user collaboration

  • Object creation, movement, and deletion

  • Version history and recovery

  • Sharing and permissions

Requirement

Description

Infinite canvas

Users can zoom and pan freely across an unbounded 2D space without predefined limits

Real-time collaboration

Multiple users can view and edit the same board simultaneously

Object creation & manipulation

Users can create, move, resize, group, and delete objects on the board

Version history & recovery

Users can view past board states and revert changes when needed

Sharing & permissions

Boards can be shared with specific users or teams with different access levels

What makes this challenging is that interactions are continuous and fine-grained, not discrete or document-sized.

Non-Functional Requirements That Shape the Design#

Miro System Design is driven heavily by non-functional requirements.

Latency is critical. Dragging an object must feel immediate, even with many collaborators. Consistency matters, but not all operations require strong consistency. Scalability is essential, as boards may range from solo use to hundreds of simultaneous editors.

Availability matters during live workshops and meetings. A short outage or lag can disrupt entire teams. Durability matters because boards often represent hours or days of collaborative work.

User perception is key. Even small delays or visual inconsistencies break the illusion of a shared, live space.

High-Level Architecture Overview#

widget

At a high level, Miro can be decomposed into several major subsystems:

  • A board data and object storage service

  • A real-time collaboration and sync engine

  • A conflict resolution and operation merge layer

  • A versioning and snapshot system

  • A sharing and access control service

  • A client sync and presence system

Each subsystem is designed to handle a specific concern, but they must work together seamlessly to maintain a smooth collaborative experience.

System Design Deep Dive: Real-World Distributed Systems

Cover
System Design Deep Dive: Real-World Distributed Systems

This course deep dives into how large, real-world systems are built and operated to meet strict service-level agreements. You’ll learn the building blocks of a modern system design by picking and combining the right pieces and understanding their trade-offs. You’ll learn about some great systems from hyperscalers such as Google, Facebook, and Amazon. This course has hand-picked seminal work in system design that has stood the test of time and is grounded on strong principles. You will learn all these principles and see them in action in real-world systems. After taking this course, you will be able to solve various system design interview problems. You will have a deeper knowledge of an outage of your favorite app and will be able to understand their event post-mortem reports. This course will set your system design standards so that you can emulate similar success in your endeavors.

20hrs
Advanced
62 Exercises
1245 Illustrations

Board Data Model#

The board data model is the foundation of Miro.

A board consists of many objects. Each object has an ID, type (sticky note, shape, connector), position, size, style properties, and content. Objects may reference or link to other objects.

Unlike documents, boards are not linear. They are spatial graphs. Updates usually affect individual objects, not the entire board.

To support fast updates, the system stores objects independently rather than as a monolithic document. This allows small changes to be processed and synced efficiently.

Board data model overview#

Entity

Key fields

Notes

Board

board_id

, metadata

Logical container for all objects

Object

object_id

,

type

,

position

,

size

Stored independently for fast updates

Style

color, font, shape properties

Visual attributes of an object

Content

text, media, links

Object-specific payload

Relationships

object references, connectors

Forms a spatial graph, not a linear document

Infinite Canvas and Spatial Partitioning#

Supporting an “infinite” canvas requires careful design.

Although the canvas feels infinite, the system partitions it internally into regions or tiles. Objects are indexed spatially so that only relevant portions of the board are loaded and synced based on the user’s viewport.

This approach limits memory usage and network traffic. A user zoomed into one corner of a board doesn’t need updates from the opposite side unless something changes there.

Spatial partitioning is key to scalability as boards grow large.

Real-Time Collaboration Engine#

widget

Real-time collaboration is the most demanding part of Miro System Design.

Multiple users may move, resize, or edit objects simultaneously. The system must propagate these updates quickly and merge them safely.

Collaboration constraints:

  • Updates must propagate with very low latency

  • Concurrent edits must converge deterministically

  • No user should “lock” the board

Miro typically uses an operation-based sync model, where user actions are sent as operations rather than full state updates.

Handling Concurrent Object Updates#

Concurrency in Miro is object-centric.

If two users edit different objects, their changes can be applied independently. If they edit the same object, the system must resolve conflicts predictably.

Common strategies include last-writer-wins for simple properties or field-level merges for richer objects. The key is determinism; every client must arrive at the same final state.

Operations are idempotent and ordered to prevent duplication or reordering issues.

Sync Protocol and Client Communication#

Clients maintain persistent connections to collaboration servers.

Edits are streamed to the server and broadcast to other clients viewing the same board or region. Clients apply remote operations incrementally to keep their local state up to date.

Because operations are small and frequent, the system optimizes for streaming rather than batching. This keeps the board feeling alive and responsive.

Temporary inconsistencies are acceptable for milliseconds, but long divergence is not.

Aspect

Approach

Client connection

Persistent (long-lived)

Update unit

Small, object-level operations

Data flow

Client → server → peers

Sync strategy

Streaming (not batching)

Consistency model

Near-real-time, eventual convergence

Tolerance

Millisecond-level divergence only

Presence, Cursors, and Awareness#

Presence is a core part of the Miro experience.

Users see each other’s cursors, selections, and viewports. This requires frequent updates that are not strictly part of the board state.

Presence data is ephemeral and not stored durably. If it’s lost, nothing breaks. This allows presence systems to prioritize speed over reliability.

Separating presence from board data prevents high-frequency cursor updates from overwhelming storage or sync systems.

Versioning and Board History#

Version history provides safety and trust.

Miro periodically captures snapshots of the board state. In addition, it records a log of operations that led to the current state.

This allows users to rewind the board to earlier moments, recover deleted content, or audit changes during long sessions.

Versioning requirements:

  • Snapshots must be efficient to store

  • Operation logs must be replayable

  • Restoration must not corrupt the current state

Versioning adds storage and complexity, but it’s essential for collaborative confidence.

Undo and Redo Semantics#

Undo in a collaborative system is non-trivial.

A user expects undo to reverse their last action, not someone else’s. Miro tracks per-user operation stacks and applies inverse operations where possible.

Undo operations are themselves operations and must be synced like any other change. This ensures consistency across clients.

Clear undo semantics improve usability, even if they require careful design.

Sharing and Access Control#

Boards can be shared publicly or privately with different permission levels.

Users may have view-only, comment, or edit access. Permissions can change dynamically, even while a session is active.

Access control checks must be fast because they gate every incoming operation. Permission changes must propagate quickly to prevent unauthorized edits.

Sharing logic is isolated from the collaboration engine to reduce complexity and improve security.

Performance Optimization and Caching#

Miro is extremely latency-sensitive.

Active boards are cached in memory on collaboration servers. Objects in the current viewport are prioritized. Inactive regions are loaded lazily.

Client-side caching also plays a major role. Clients retain the recent object state locally and apply incremental updates.

Cache invalidation is carefully controlled to avoid unnecessary redraws or state resets.

Layer

Strategy

Focus

Server

In-memory board cache

Active boards

Server

Viewport-based prioritization

Visible objects

Server

Lazy loading

Inactive regions

Client

Local state cache

Recent objects

Client

Incremental updates

Minimal redraws

Both

Controlled invalidation

State stability

Failure Handling and Resilience#

Failures are inevitable in real-time systems.

Clients may disconnect. Servers may restart. Network latency may spike. Miro is designed so that no single failure destroys the board state.

Operations are acknowledged only after being durably recorded. Clients can reconnect and resync using operation histories.

If real-time sync degrades, users may temporarily lose collaboration features, but their work remains safe.

Scaling to Large Boards and Teams#

Some Miro boards are enormous.

They may contain tens of thousands of objects and hundreds of collaborators. The system must scale gracefully without degrading performance for smaller boards.

Load is distributed across collaboration servers based on board activity. Hot boards may be allocated more resources dynamically.

This elasticity is crucial for enterprise use cases like workshops and planning sessions.

Data Integrity and User Trust#

Trust is fundamental to collaborative whiteboards.

Users trust that their ideas won’t disappear, that collaborators won’t overwrite work unexpectedly, and that the board reflects a shared reality.

Miro System Design prioritizes convergence, durability, and predictable behavior, even if that means slightly delaying some updates to preserve consistency.

How Interviewers Evaluate Miro System Design#

Interviewers use Miro to assess your ability to design real-time, interaction-heavy collaborative systems.

They look for strong reasoning around operation-based syncing, conflict resolution, spatial data modeling, and performance trade-offs.

Clear articulation of how you keep hundreds of users in sync without locking the board is often the strongest signal.

Interview evaluation focus areas#

Area

What interviewers look for

Real-time sync

Operation-based updates, low latency

Concurrency

Conflict handling without locks

Data modeling

Spatial, object-level design

Scalability

Hundreds of active collaborators

Performance

Smooth interaction under load

Communication

Clear, structured trade-offs

Final Thoughts#

Miro System Design demonstrates how collaboration, spatial data, and real-time sync intersect at scale.

A strong design emphasizes object-level operations, low-latency streaming, deterministic conflict resolution, and resilient versioning. If you can clearly explain how Miro keeps an infinite canvas responsive and consistent under heavy collaboration, you demonstrate the system-level judgment required to build modern creative platforms.


Written By:
Mishayl Hanan