Looking Back On Phabricator For Code Review

In my professional software engineering career, I've used a few different code review tools:

  • Launchpad ~2012-2014 (Bazaar was great... IYKYK), and also GitHub
  • 2016 – 2019 Phabricator
  • 2019 – 2023 GitLab
  • 2023 – 2025 GitHub
  • 2025 – 2026 Graphite

But I sometimes miss Phabricator, and I've been meaning to write down why since it comes up so often in conversations.


#1 The colors!

Phabricator used 4 different colors for code:

  • Green for additions
  • Red for deletions
  • Light yellow for pure moves
  • Dark yellow for moves with modified formatting

GitHub only has green and red, but Graphite has three colors (yellow for pure moves). This alone already makes Graphite so much better than GitHub. If a piece of code was simply moved from one place to another, I want it to be shown in a different way from new code being added.

#2 A single vertical web page with the PR title/summary/test plan as well as the code changes

In GitHub, you have to switch tabs (which is slow and distracting) to go between the PR summary and the code. This is not true in either Graphite or Phabricator and it makes a huge difference in my ability to go back between a PR's summary and the diff.

#3 Comments are submitted a a draft by default

In GitHub and GitLab, you have to Cmd-Enter comments to submit them as a draft into a review. In Phabricator, everything is a draft by default, and you have to submit at the end. Even after years of using GitHub, I still haven't been able to build the muscle memory to always press Cmd-Enter, it's unnatural to me and I wish I could change the default behavior. 99% of the time I don't want to submit a single comment immediately, I want to do a proper review with potentially multiple comments.

With Graphite, the default is "add to review", but unfortunately you still have to hit Cmd-Enter since Enter is for newlines. Hopefully, this can be made customizable in the future.

#4 UI Performance

Graphite and Phabricator are both much snappier than GitHub. I was recently on a plane with very poor Wi-Fi, and while I could watch a Youtube video, I couldn't browse or create PRs in GitHub. As part of creating this blog post, I just tested the same fairly large PR in both GitHub and Graphite:

(Lower is better)

The performance of GitHub leaves much to be desired. Also keep in mind that Graphite's page has the entire code in it, and GitHub's page only has the PR summary. And still, Graphite loads the page 10x faster.

Finally, GitHub collapses files if they're too large (for performance reasons), and this is a really bad experience because it's very hard to tell that a file was collapsed, particularly if you're trying to Cmd-F for something. Now, I don't know for certainty if Phabricator and Graphite don't also do this though.

#5 Stacking

(Can you believe I only got to stacking at this point in the blog post?)

Enough has been written by others about PR stacking. See https://www.stacking.dev/ if you haven't heard of this, but it's insanely useful. And it's more important than ever today given how many PRs per day we are putting up with AI writing all of our code.

GitHub is going to roll this out soon though!

#6 Easy to see changes between "ammended" updates to the PR

I usually have a single commit per PR, and I keep them as small as possible. But I do update this commit with git commit --amend. This is a very common workflow in teams that use rebase, and stack PRs.

The GitHub UI does let you see the "deltas" between updates to the same PR via git commit --amend. However, it's not easy to find and not something they've really optimized the experience around.

Both Graphite and Phabricator support this as a first-class experience.

#7 The CLI Dev Experience

Phabricator came with its own CLI for managing PRs called arc. As you might expect, it made stacking feel really easy and it meant that you barely had to use the git CLI.

But, more recently I've started using Graphite's gt and it is a godsend. It should be a reference for anyone building CLIs and for anyone interested in top-tier DevEx in general. Once you get used to gt create and gt submit [--ai], it's very hard to go back to gh.


Before I finish, I must say that Phabricator was also limited in some weird ways, mainly because the company behind it was made up of just two engineers. So, especially in terms of administration and integrations, it was a bit lacking. Fortunately, there is a community-maintained fork that seems to be very active called Phorge.

With coding becoming automated, we will have to rethink the entire experience of reviewing PRs. I don't believe that we'll be looking at the code in the same way that we do today. A completely new experience needs to be built from the ground up.

But for the time being, I'm much happier using Graphite every day. It's definitely the modern, better version of Phabricator. The ethos lives on.