How Framer Manages Their Codebase with Tower
January 2024 by Bruno Brito

How Framer Manages Their Codebase with Tower

Table of Contents

In the inaugural episode of a new series, we had the opportunity to interview Jonas Treub and Niels van Hoorn from the Framer team. They shared how Tower helps them effectively manage version control for the Framer codebase, enabling their users to create visually stunning websites.

Framer has revolutionized the way teams can collaborate to publish outstanding websites. With its innovative design tools, anyone can effortlessly build a website that wows the audience — no coding knowledge needed!

Many members of the Framer team are fans of Tower — including Koen Bok, Framer's CEO, who was kind enough to provide a testimonial for Tower in the past.

This time, we had the opportunity to speak with Jonas Treub and Niels van Hoorn, who were delighted to share their experience with our Git client and collaborate on this article ✌️

Who is Jonas Treub?

Jonas is a Principal Product Engineer at Framer. He joined in 2015 and has dedicated most of his time to developing all the incredible interactive editing tools on the canvas that Framer provides. His team consists of 1 designer and 6 software engineers.

Who is Niels van Hoorn?

Niels joined the company in 2016 and is currently the Tech Lead of the Canvas Team, which consists of 8 engineers and 1 product designer. They handle everything from making changes on the canvas to generating the code that is ultimately published on websites.

The Early Days with Git… and Tower!

Jonas has been using Git since he started his first programming job, back in 2013. Using Git over the CLI wasn't exactly his cup of tea:

“I never really learned how to use Git through the terminal. It looked way too scary and complicated for my liking,” he shares.

“So I’ve been using Tower and other visual Git tools since I started my first programming job in 2013. Tower quickly won over all of the alternatives I tried.”

I've been using Tower and other visual Git tools since I started. Tower quickly won over all of the alternatives I tried.

Niels initially worked with SVN during his first job. When he was introduced to Git, he was completely amazed by the ability to commit asynchronously and push afterwards.

He used the CLI for a short while but quickly switched to Tower for most Git operations. “I love that it gives me a visual overview of what's happening while staying true to the Git concepts. And it's great how I can just switch back and forth between the command line and Tower, and it’s always in the correct state”.

Favorite Tower Features

Both started using Tower about 10 years ago, so we were very curious to know what their favorite Tower features were.

Jonas wasted no time praising our life-saving Undo feature.

“One of the best features is its excellent support for CMD + Z. This feature has saved me an entire day's worth of work on multiple occasions.”

“At first, I tried to search on Google for a solution on how to fix the issue using Git in the Terminal. After about an hour of feeling desperate, I suddenly recalled that Tower supports the CMD + Z command. Boom! The problem was resolved with a single, simple command.”

Tower — Undo Anything with CMD+Z (CTRL+Z on Windows)

Jonas also values the fact that “Tower is a native app, which makes it very intuitive to use”. This is something that Niels also pointed out: “Tower is a good looking, well-crafted Mac app. The Tower team clearly cares about the user experience”.

While the Framer team is primarily on Mac, Tower is also available as a native app for Windows. If you're curious to learn more about this topic, we have an interview with our CTO, Alex Rinass, on how we develop desktop applications for both platforms using native technologies.

Tower is a good looking, well-crafted Mac app. The Tower team clearly cares about the user experience.

Niels highlighted Tower's single-line staging feature as his favorite. “There’s nothing that I have used that comes close to that. I never commit anything from anywhere else than Tower, I love that interface”.

One of version control's most important practices is to create small, granular commits. Tower's single-line staging feature allows you to easily stage chunks (or specific lines) with just a couple of mouse clicks.

Tower — Single-Line Staging

Niels also mentioned Tower's Quick Actions as a time-saver: many Git operations, like switching branches or inspecting files, can be performed with Tower's version of the Command Palette.

“As a Tech Lead, I'm often jumping around between helping others and working on my own tasks, so stashing and switching branches quickly with Tower's Quick Actions is really helpful for me.”

Tower — Quick Actions

Tower at the Heart of the Framer Team

Framer employs approximately 30 engineers, and throughout the years, Jonas and Niels have frequently recommended Tower to their coworkers. After going through a seamless onboarding process, many of their teammates have now started using Tower and they have become exceptionally productive as a result.

We then talked about Framer's workflow. The company has implemented a rebase strategy where Pull Requests are only merged when they are ahead of the current base branch.

But rebasing is often times a complicated process. Luckily, the team appreciates Tower's ability to simplify the process of Interactive Rebasing:

“Rebasing, which used to be daunting and complicated, no longer frightens me”, Jonas discloses. “Tower has made interactive rebasing work exceptionally well.”

Rebasing no longer frightens me. Tower has made interactive rebasing work exceptionally well.

Jonas and Niels both mentioned that they find the "fixup" feature quite useful. They enjoy the convenience of fixuping in just a matter of seconds with Tower's Drag and Drop feature.

Tower — Fixup with Drag and Drop

💡 Fixup works very similarly to the squash feature as it combines two commits. The key difference is that it only retains the commit message of the older commit since it regards the newer commits as fixups.

In Tower, you can hold the key while dragging and dropping to perform a fixup instead of a squash.

Another popular approach is typing /fixup! directly when composing a new commit. You will be prompted to select the commit message you would like to fixup, and a new "Autosquash" banner will be visible in the "History" view.

Since we've been showing Tower for Mac a lot of love, here's how you would do it on Tower for Windows.

Tower — Fixup with Autosquash

Tower = Productivity Boost

The “GUI versus CLI” debate is a popular topic among developers. As someone who values productivity and visual aid, Jonas firmly stands on the side of using a GUI:

“I'm confident that I am faster than some colleagues who still prefer using the terminal when it comes to many tasks in Git. This is especially true when it comes to complex rebases, where I have observed them struggling to have a clear visual overview.”

I'm confident that I am faster than some colleagues who still prefer using the terminal when it comes to many tasks in Git.

When it comes complex rebases, both acknowledge that one of the biggest concerns is dealing with merge conflicts. Tower's rebase approach provides all the necessary information to confidently and effortlessly resolve them with ease.

Here's an example, this time in Dark Mode! 😎

Tower — Rebase Interface
Tower — Rebase Interface

Framer is doing a stellar job in making things easy and accessible for web enthusiasts to ship amazing websites, so it comes as no surprise to us that they recognize the value of the visual aid that Tower can bring to version control.

We would like to extend a heartfelt thank you to Jonas, Niels, and the entire Framer team for their exceptional availability and assistance in putting together this article!

Not a Tower user yet? Download our 30-day free trial and experience a better way to work with Git!

Try Tower Now

Your Download is in Progress…

Giveaways. Cheat Sheets. eBooks. Discounts. And great content from our blog!