A branch is most useful when you're starting individual work that's derived from an existing source, mainly if it's experimental or iterative in nature. Here, we'll look at some 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 support and 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 a branch for exploring their proposal and open a conversation with maintainers to contribute the change back much like a pull request in code. 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 work on a new feature or additional steps in a flow, using a branch will give you a snapshot of the current experience where you can quickly begin to iterate. When you're ready to collaborate or share progress 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, and all comments will be preserved in context with the branch when it's merged and/or archived.
In addition to sharing with stakeholders, sharing feature work completed in a branch with development partners gives them a clear view of any new assets and design work that has been completed and is ready to be built. Collaborators can have a back-and-forth conversation within the branch as the feature is being built, and when it's complete, there is an easily accessible and visible place to QA the build against the design.
You can merge the branch to your main file when everything looks good, while the feature also gets added 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 layout or copy.
You can generate a prototype link from your current design while creating a branch to prototype the variation(s) and get sharing links for each exploration. You can then test each of the designs using the sharing links, and if an alternate version performs best, leave it as a branch to share with developers to build and merge it to become the new main file. If the current flow continues to perform best, you can archive the test branches to be referenced later while keeping your main file as it was.