A branch is most useful when you’re starting individual work that’s derived from an existing source, particularly if it’s experimental or iterative in nature. Here, we'll take a look at a few common use cases where you may want to consider creating a branch from an existing design file.
Branches can be helpful for those tasked with maintaining asset libraries and those interested in contributing to them. Those who maintain asset libraries can have peace of mind knowing that the main file is the published source of truth, while branches can be used to explore:
Using a branch can help alleviate confusion around which components are approved for use, have an existing code counterpart, or are still in an exploratory phase. If your teams regularly view the main file to read accompanying documentation or use it as a sticker sheet, making updates in a branch ensures the main file always has the most up-to-date assets and information.
Branches can also be used to facilitate design contributions to your library, allowing non-editors of the library file to create branches for exploring their proposals and open a conversation with maintainers to contribute the change back. This means less detaching of components, redesigning and sharing files, and manually having an editor copy and paste the changes into the library.
When starting to work on a new feature or additional steps in a flow, a branch can give you a snapshot of the current experience so that you can easily iterate. When you’re ready to share your work and get feedback from stakeholders, you can share a file or prototype link directly to the branch. That way, collaborators can view, comment, or edit within the branch without affecting the main file.
This is also helpful when collaborating during design handoff, during which collaborators can have a back-and-forth conversation within the branch, as the feature is being built. Once the feature is built, you still have an easily visible place in time to QA the design and can merge it with your main file when the feature merges on the code side. This establishes a similar workflow between design and development and can help create cohesion around a shared language—from conceptualization to release.
Branches allow you to test prototypes of derivative design explorations, so you can get valuable insights earlier in the design process. For example, if you're working on a purchase flow, you may want to compare the current flow with an alternate approach. If the alternate performs better, you can then update your main file.
You can generate a prototype link from your current design while creating a branch to prototype the variation and get sharing links for each. You can then test each of the designs using the sharing links, and if the alternate variation performs best, leave it as a branch to share with developers to build or merge it to become the new main file.