figma

How (and why) we built branching | Figma Blog (opens in new tab)

Figma built branching to preserve the benefits of real-time collaboration without letting unfinished or experimental work disrupt approved designs. Branches provide isolated spaces for exploration while keeping the main file a reliable source of truth. The design prioritizes simplicity, familiar multiplayer behavior, and protection against data loss.

The Need for Branching at Scale

  • Figma’s real-time multiplayer model usually helps teams work in one shared file.
  • As organizations grow, however, design workflows become harder to manage:
    • Unapproved changes can reach production code.
    • Work may be overwritten.
    • Teams may struggle to distinguish work in progress from approved designs.
  • Branches let designers experiment, iterate, contribute to libraries, or preview work without changing the main file.
  • Changes can be incorporated into the main file only after review and approval.

Balancing Freedom and Structure

  • Growing design teams increasingly requested stronger version-control workflows.
  • Traditional branching comes from software development, where files and changes are stored locally.
  • Figma had to adapt the concept for cloud-based files, asking:
    • Whether people should continue editing the main file simultaneously.
    • How collaboration should work within branches.
    • How to introduce version control without overwhelming designers with complexity.

Designing Around Figma’s Multiplayer Model

  • Figma chose a purpose-built approach rather than copying existing development tools.
  • Simplicity and consistency became core principles:
    • The main file remains multiplayer.
    • A branch behaves like a regular Figma file.
    • Existing editor and viewer permissions continue to apply.
  • The system emphasizes data safety so users’ changes remain protected.
  • Figma intentionally limited complexity, including preventing branches from being created from other branches.

The Complexity of Merging

  • Merging involved more than simply resolving conflicting edits.
  • Figma also had to handle operational problems such as:
    • The file changing while someone reviews a merge.
    • A user losing their connection midway through the process.
  • These cases required safeguards to ensure merges remain understandable, recoverable, and safe.

Branching is therefore presented as a structured layer on top of Figma’s collaborative model: teams can explore freely in branches while maintaining a dependable, approved main file.