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.