Abstract vs Kactus vs Plant: a guide of version control solutions for Sketch

Designers, we live in exciting times. The new generation of tools created for digital media is slowly breaking the ties with the old world. It’s time for the links between the design and build processes strengthen to close the loop. Design learns from code, and code learns from design. We’re finally getting one of those processes: version control. It was way overdue
Version control in the design workflow is here, and it’s here to stay.
I previously wrote about version control for Sketch projects, in particular with using Abstract. In this article, I’ll share my thoughts on three apps that manage versions for Sketch projects, all based on Git.
Version control is a key tool in a developer’s workflow, but for a designer? The notion of non-linear history, of branches, remotes and all is pretty foreign. The common workaround is renaming files continuously using numbers, initials of the team member, date, time, what-have-you. It is clunky, but very visual.
Edit August 2018: please note this article was written end of 2017, and hasn’t been updated to account for the updates of each platform.
Overview: different apps, different approaches

⚫️ Abstract
Reflecting on their experiences with Git, and with platforms such as LayerVaults or Folio, the Abstract team created an app that takes a Git workflow, simplifies it into the key concepts and presents them in a GUI specially crafted for visual files. By limiting the Git features, Abstracts guides users towards a slightly opinionated workflow that is beginner-friendly and helps designers to embrace a new way of working.
“The power of a Git-based workflow without all the baggage” — Josh Brewer
🌵 Kactus
Kactus’s approach stay true to the original flow and tools, and ports it to Sketch. It does not shy away from the original terminology, nor does it try to simplify what is inherently a powerful tool.
Its most exciting feature and intent is the drive to bring together designers and developers onto a share workflow and a shared platform: GitHub. Developers already rely on GitHub (or other Git client) to collaborate on a codebase, and Kactus aims to bring designers on board to have an integrated design process. This opens the door to some interesting cross-disciplinary opportunities (think about code-driven Sketch files, designing with data, working with copywriters), as well as growing the open design movement. This brings on interesting challenges to team and to the ways of working but is still a fair distance away.
🌱 Plant
Unlike Abstract and Kactus which have decided to implement the branching model for collaboration, the Plant team has decided to stick to show only a linear history. Using the known paradigm of uploading/downloading changes, Plant has created a simple and elegant solution that would satisfy many people.
A closer look at each solution
Each app has its particulars, and will require you to change how handle you manage your files. Plant has a simpler workflow, but sacrifices the more advanced capabilities that Abstract and Kactus give you.
⚫️ Abstract

The front-runner of the bunch, Abstract is going strong. Exiting its beta stage earlier this summer, it is now going full steam ahead, having adapted its various pricing plans and actively working on supporting Sketch’s continuous updates. It requires you to run an additional application and open your files using the Abstract app.
(Psst, you can also read my previous article, for a more detailed review of Abstract and its impact on the design workflow.)
Strengths
- Stable product, with frequent updates and support for new versions and features of Sketch.
- Beginner-friendly terminology rather than technical terms, and clear prompts to facilitate the workflow.
- Visual representation of active branches and commits.
- Handling merge conflict with a visual representation
- Integration with Sketch Libraries: by marking files as a “library”, it is directly available to use in your other tracked files.
- Review the changes in each updated artboards, and leave comments, following the same principle as code reviews.
- Automatic sync: files synchronise automatically to the cloud, and you don’t need to remember to upload (push) or download (pull) changes.
- Ability to restore to previous commits
Shortcomings
- Abstract has to be the pillar of your workflow. Files have to be opened from Abstract itself, instead of Sketch or Finder. This unfortunately takes some time, even more if you are working off a gigantic Sketch file.
- Performance: after running Abstract on a large scale project on laptops, our team members experienced Sketch & Abstract using a lot of resources while working but also when trying to open files. It’s not entirely clear what is causing this.
- Automatic sync: with large files, numerous files, or simply a bad internet connection, the synchronisation can take a long time. Unlike Kactus, which creates text version of Sketch files to store online, then reconstructs them when you get to work.
- Commits are done on a file-level: changes have to be saved for one or more file at a time. Abstract doesn’t allow you to selectively commit Sketch pages or artboards. This has its advantages, but also some inconveniences, depending on how you like to structure your files.
- Non-visual, structural changes are often detected in Abstract, causing it to show artboards as “edited” when no changes have been made. For example, just opening a page or clicking on an artboard to copy it, then saving the file, is likely to cause Abstract to show it as “edited” (gif)
- Closed ecosystem hosted on Abstract’s servers: you cannot store the files on your own servers, and the system is still hidden from the eyes of the world as there is no ‘public project’ mode. Public projects would bring Abstract closer to a true “GitHub of design.”
Pricing: $9/month/contributor on the starter plan, $15/month/contributor on the business plan. Enterprise plan coming in 2018.
🌵 Kactus

The only open source alternative, Kactus holds many opportunity for growth and improvement. The project has yet to mature to fit in a design workflow, but will still suit small design teams. Interestingly, Kactus’s creator Mathieu has recently joined the Sketch team, so we can look forward to Sketch and Kactus evolving for the better.
Strengths
- Make it yours, contribute: it’s open-source, so you can actively chip in to improve the platform. Submit ideas for new features, give feedback and report issues directly on GitHub.
- Integration with GitHub: centralising where design and development files are stored, and leverage GitHub’s own functionality. You can also make use of organisations and GitHub enterprise to hold private projects. Projects are otherwise public, and thus allow others to chip in.
- Thanks to the way Kactus records the changes in your file, you can be quite granular in each commit and select layer-level changes rather than artboard or file-level. That said, it may be dangerous to do this as you could create faulty Sketch files (e.g. 2 layers with the same ID, but different content)
Shortcomings
- Relies on good knowledge of Git: without first being familiar with a proper Git workflow and terminology, it will be difficult for your design team to jump straight into using Kactus.
- The interface is based off the GitHub desktop app, originally created for code and not visual files. It includes very little visual cues and sign-posting for non-expert users. This, in combination with the required understanding of Git, makes for a painful learning curve.
- Merge conflicts aren’t handled visually or as straightforward as Plant or Abstract. (“Unless I am missing something here” ?)
- With the free version of Kactus, you can only integrate with GitHub. Thus the only way of having private projects, is for you to be part of a GitHub organisation, or GitHub enterprise.
- Still in its infancy, I think the app itself will benefit from some thinking about how to work and change a designer’s workflow.
Pricing: Free for public projects hosted on GitHub, or use Kactus’s own pricing plans: $4.99 premium plan for private projects, $11.99 for enterprise plan and support for alternative Git services (Gitlab, Bitbucket,..) or self-hosted.
🌱 Plant

Instead of requiring you to run another application on your computer, Plant integrates with Sketch through a plugin that shows on the right hand-side of the interface, without the need to run another application like Abstract or Kactus. With only a few commands in play, and simple workflow, Plant is without doubt the option with the lowest barrier to entry.
Strengths
- Uses a plugin without the need for another app, and thus integrates more inconspicuously to your workflow by only adding an additional side panel to Sketch.
- Once a project is downloaded, the files are treated like normal files: you can launch them from Finder or Sketch, and upload the changes when ready.
- Simple linear workflow with opinions. With Plant, your design team works off a single timeline. No branches, nor local commits. The workflow is incredibly simple, and will feel familiar to many. Plant will prompt you to write a commit message when uploading changes, and if the master version on Plant has been updated, it will force you to update your local file before you can publish the changes. This is essentially a typical “pull before pushing” mindset.
- Merge conflicts resolved inside Sketch itself, on an artboard level. A particularly neat way of handling of merge conflicts, as it truly allows you to navigate the details that have changed; rather than working off renders of the artboards the way Abstract does.
- Plant also allows you to see your project online, viewing the artboards, commit by commit, and commenting on them.
- Restore to a previous commit
Shortcomings
- 1 Plant project = 1 Sketch file only. This means tracking each file independently, rather than a collection of files like Abstract, Kactus or development workflow.
- No branching system, although this may not be everyone’s thing (after all, we managed without it so far?).
- The ability to view the project on the online platform might be missed, as there is no strong direction to do so. Without the branching mindset, all changes are automatically accepted without implementing a more structure “review” process.
- Currently in Private Beta, officially releasing its public version beginning of November 2017.
I have only tested Plant on small-scale project, and I am curious to try its performances with bigger project team and bigger files. If your design team tends to work on 1 key file, and branching isn’t the sort of workflow you are looking for, this might be a good solution.
Pricing: Starting November 9th 2017. It will continue offering free plans (3 projects, 5 contributors); and announced a team version starting at $12/month (+ $6/additional contributors).
Conclusion
Each of those solution offers a different way of working, and it may be easy to go with the cheap or the easy option, and hold tight to how we did things. Change is hard, but exciting. We are at a turning point to redefine how digital designers does their work. How will each of those grow as our ways of working evolves, and becomes more integrated with code?
Currently, my preferred choice is Abstract because of its interface and how easy it is to bring new members onto a new way of working. It is also getting close to what I aim our design team workflow to adopt. Still, I see Kactus as the opportunity to bring a more integrated workflow to the world of software development & associated design. As for Plant, I like its simplicity and conflict resolution, but dislike the detachment from development workflow.