In the past couple of years, I've developed a deep passion for developer tools. I now work at Netflix, where I spend most of my time building tools for engineers. Since I'm very interested in the devtools space, I'm always looking forward to trying new dev tool products, especially when I see immense potential for the tool to make a difference.
I wanted to try it out because I spend significant time on the terminal at work. Luckily, I got an invite to Warp and have been using it pretty much as my primary terminal for the past ten days. While using it, I kept taking notes, hoping to share a review type of blog post soon. So, here we are, me sharing my first impressions with you.
I've been a royal iTerm user for the past 4-5 years and never had any big complaints or issues with it. It does its job, and it's very performant. However, it's also boring. The terminals I use haven't changed since the day I got into programming. It's the same old UI with a one-dimensional interface.
However, I always imagined that terminals should do more, and they lack new innovation. Command-line interfaces are incredibly powerful, and upon investing in familiarizing yourself with them, they can become your swiss army knife for running everyday engineering tasks and workflows.
Anyway, let's get to my notes.
The Warp team understands how important the first impression is for developers, and they've done remarkable work to make the initial setup of Warp seamless. The main setup of Warp is that it doesn't have any setup. It just works out of the box with no additional configuration required. For example, I use Z shell (zsh), and it picked up everything that I set in my .zshrc file, including the aliases that I've created over the years. The first experience is immensely important for most users, especially for developers and I’m glad Warp got it right.
Warp is fast, and I can confidently say it's as fast as iTerm. I've done some heavy lifting with running long and high-CPU commands with multiple tabs open and didn't feel that performance degraded. It never crashed. I've had instances with iTerm2 in the past when it just gave up, and I had to force close the app. To make it a fair comparison, I should probably use Warp more and see if I hit some edge cases.
The autocomplete is fast without a noticeable lag. I don't rely too much on autocomplete, but sometimes it's handy when you try to navigate in an unknown environment. I often search my terminal history (Ctrl+r), which is blazingly fast in Warp.
Overall, I'm impressed by the performance but saying that Warp is significantly faster than iTerm, or Mac's native Terminal will be an overstatement. I think the Warp team's goal was to create a native experience that can compete with existing native terminals like Terminal and iTerm2, and they were successful here.
User Interface (UI)
Now let's talk about the UI. At first glance, Warp looks like any other terminal, but it introduces a concept or experience that is relatively new to terminal users. Warp is a Graphical Command Line Interface that combines UI with CLI. It's interactive, which makes it more fun to use and more approachable for a wider audience. You can type, use your keyboard, or you can click on things that pop up on Warp. For instance, when you use the autocomplete, you can click on the menu items.
One thing that was hard for me to get used to was the cursor location. You have two lines instead of one at Warp. The top line shows where you are in the file structure, and the line below is where your cursor starts. If Warp didn't support grouped commands (which I will talk about a bit later), would they keep the same design? Maybe yes, because you have more space now for your commands.
Warp has a Command Palette. I've not used it much because I didn't have to, but if you're not into shortcuts, then CP (Cmd+p) can be super handy for quick actions. I feel that CP will be a crucial part of Warp and will become home for new actions and workflows in the future.
The team has done an incredible job with shortcuts. The only new shortcut that I had to learn was "Cmd+u" to focus the pointer. Unfortunately, the pointer disappears in the non-focus mode, so I have to often use “Cmd+u” to focus it back. Other than that, most of the shortcuts were quite familiar. I loved using “Option+left/right” shortcuts for moving the cursor between words. I could tell that the team thoroughly thought about shortcuts and understands the actual value of shortcuts for developer productivity.
The only missing shortcut from my arsenal was "Cmd+m" to minimize the window, but I'm sure they will add it sooner or later. I also tend to use "Cmd+Shift+t" to open the accidentally closed tabs on Chrome and terminals, so maybe that could become a menu option as well.
Another new concept that Warp introduces is called “Blocks”. A block is a single command output. Over time your terminal output becomes a collection of blocks that you can search and share. You know that dreadful feeling when you have to endlessly scroll your terminal because you can't find where one command started and the other finished? That's gone with Warp with the help of blocks. You can easily separate command outputs in the history, and color-coding helps with that.
What makes blocks even more valuable is that they are sharable. You don't have to take screenshots and crop your terminal outputs anymore. You can click on the block, choose to share, and it generates a sharable link. I think this will be really useful for debugging sessions within engineering teams.
If Warp wants to become the go-to terminal for engineering teams, they have to heavily focus on collaborative features, which I think will happen after they excel in the individual developer experience to which they are very close.
You can also run group commands in Warp. I think it's cool, but it's not that useful for me. I do have a lot of aliases defined in my .zshrc file, which combines multiple commands together. However, most times, I end up running a single command and using "Ctrl+r" for searching my history.
I've likely missed some features in the UI that are worth mentioning in this post, but I think I might have covered most of it.
Here is a short wishlist that I have for the Warp team.
I wish there was a way to create and store templates within Warp. I run the same commands with slight alteration quite often, and templates can be very useful here. If there was a command template, I could simply pull it up, fill in some values and run the command.
I still run many manual workflows on the terminal. I'd like to automate them in Warp. My workflows are usually a sequence of commands that sometimes include conditions. I think, especially for engineering teams, this can be super valuable. Imagine you join an engineering organization and inherit the most common workflows in your terminal. It can help with onboarding as well as with any common tasks like setting up your dev environment.
The future of work will be collaborative. As more teams embrace remote work, I believe many software tools will focus on building collaborative features. For Warp, I would like to see a live collaboration feature that is fast with minimal latency so I can run debugging sessions with my co-workers.
As more engineers switch to VS Code, they might end up using the built-in terminal. It works great, and it's right in the window, so you don't need to jump from your editor to another terminal. I wonder how this will play out for Warp and whether they will compete with VS Code to become engineers' primary terminal. Having all your toolset in one place is a significant advantage for VS Code, and Warp needs to find creative approaches to bring the terminal closer to its users.
Overall, I like Warp very much and it certainly beat my expectations. Congrats to the team for building this great tool! 🎉