Tommaso Negri

Nova by Panic

For the last 6 months I’ve been able to extensively try Nova, the new text editor for macOS by Panic.

I used it as my main IDE in all the projects I worked on and I also had the opportunity to write a couple of extension for the library. Today I want to tell you my experience so far and what you could expect from Nova if you’ll decide to give it a chance.

Overview

Let’s start with some context.

Nova is an IDE which targets the general purpose market just as Atom, Sublime Text and VS Code. The app has been in closed beta for several months and officially released to the public on September 16, 2020.

Panic, the software house, is one of the most appreciated companies in the field, at least in the macOS and iOS space. You may have heard about them for Transmit (de-facto FTP client for Mac), Coda, Prompt or Code Editor. In recent years, they have also entered the world of video games as producers. If you never heard about Firewatch and Untitled Goose Game before, well… Their upcoming project, Play Date, is also highly anticipated. Go watch it, that’s all I’m saying…

Nova is not the first experience for Panic in the world of text editors. Coda has been for years a valuable ally for many developers around the world. However, with time passing by Coda has fallen behind other solutions. That was caused especially by the improvements in the tooling for development. Nova is the Panic’s response to all of this. What’s surprising is that they didn’t simply update Coda, they build a new app from scratch.

To avoid nasty surprises in the end, let’s immediately address what many may consider Nova’s biggest flaw. The price. Indeed Nova isn’t free software. You will have to pay $99 for the first year of updates and after that you can renew for another year for just $49 or you can keep the app with the latest update you received. A pricing model we’ve already been used to with other apps like Sketch.

The fact that Nova isn’t free and only available for the macOS platform is for sure a big limit for many people. However, I believe there are valid reasons to consider such a purchase and now I will try to name a few.

Features

Of course I don’t have to say that Nova has all the basic features you will expect from a text editor. Syntax highlighting, tree view, git, split view, multi cursor, etc. So let’s see what is really special about it.

Native app

If you are like me, you believe that web technologies are great but they are not the right fit for every application. I’m not a native nazy, I just believe that for some use cases a native solution is better suited. I appreciate products like Basecamp or Notion but I will always choose Sketch over Figma or Keynote over Google Slides. Every time I have to do something more advanced than content management I try to find a native solution. Nova is a native solution.

Brand

Nova is the only IDE I’ve ever seen which integrates brand elements in every corner of the interface. Usually this kind of apps barely have a logo and a landing page for marketing purposes. Nova, on the other hand, goes all in with his characteristic brand and tone of voice. Every icon, label and button has a vibe. The Nova vibe.

Being able to scream that loud but at the same time not enough to overwhelm you raises Nova to a new level. It’s no more just a tool to get the job done.

Nova - Brand

Tasks

Tasks are configurable actions for each project. They give you access to quick commands that you would normally have to launch from terminal. Each project can have different “groups” of Tasks. Each group can have three type of actions: build, run and clean. A practical example is to associate these actions to corresponding NPM scripts.

Once configured, Tasks appear in the Toolbar and obviously there are shortcuts associated with them.

Tasks generate also a Report on the activity. You can choose to show the Report on run, on finish, on success or failure. Alternatively all Reports are accessible from the Reports panel of the Sidebar.

Remote files

Nova let you access all your remote assets from the built in File Browser or the Remote panel of the Sidebar. You will be able to upload, download, modify and delete a file on ftp, S3, WebDav, Google Drive, etc.

I found this feature pretty useful for managing my assets on S3 and easily get their links to place in code. All inside Nova!

Preview

Nova comes with a built-in static web server. You can set a custom port and allow connections from other devices on your network.

By clicking on the eye icon in the top-right corner Nova will show you a web view directly inside the app. If you long-click the same icon you will be able to choose another browser or app to see the preview in.

If you don’t need the integrated web server but you want to take advantage of the preview within Nova, you can set a custom URL.

Terminals

Nova offers two different terminals. One is the classic one, the other is specifically built for remote connections through SSH. From the second connection on you will be automatically logged in.

Color picker

Version 5.0 added also a powerful Color Picker. It allows you to work with both sRGB and Display P3 profiles. Of course there is support for working with different color codes: HEX, rgb, rgba, hsl, ecc.

It’s also possible to save color for later use both globally and scoped to a project. However I guess that css variables are still preferable.

Snippets (Clips)

Nova comes with a system for managing code snippets. Snippets in Nova are called Clips. You can save a Clip as global or project specific. Clips in Nova are smart and you can easily create placeholders or add data that will be compiled at insertion time.

Clips can be offered by extensions too. For example my extension Vue for Nova comes with several Clips for scaffolding new Vue files.

Publishing

For projects without Continuous Deployment in place there is also the possibility, after having specified a remote server, of tracking file changes in scope. You will then find them listed in a panel of the Sidebar, ready to be uploaded.

Palettes

Thanks to the Cmd + Shift + O shortcut is possible to access a Palette for searching files and symbols in you project. With the Cmd + Shift + P shortcut you will reach the commands Palette.

In addition of the default Palettes there are also the ones offered by extensions. Quite interesting is Advanced New File. This extension adds a Palette that helps you create files and folders quickly.

.nova

All the project configurations (Tasks, Servers, Clips, color, etc) are saved in json format in the handy .nova folder. You can place it under version control and be ready to switch device on the fly.

Extensions

In the next article I’ll go deeper in this topic. I’ll tell you about the current state of the library, the community, some extensions I personally find useful and my experience developing a couple of them, Vue for Nova and Copyright.

For the moment, just know that Nova offers a fairly complete library of extensions. If you have no special needs you should be covered. Not to be interpreted as if there is nothing but the most mainstream tools, au contraire!

Nova - Extension library

Anyway if you are worried you can check the availability of your tools before the purchase at this domain.

What’s missing

Even if as we saw the overall experience is already rock solid, Nova has still a bit of work ahead to be 100% complete. In my opinion, these are the biggest flaws at the moment.

Debugger

The missing of a debugger is there and visible. You can always use the debugger integrated in the majority of browsers but it’s not a suitable solution for every use case.

The good news is that Panic has confirmed this is a feature that will arrive in the near future.

Vim mode

Needless to say, this is an essential feature for many of us. Again, the good news is that Panic is working to at least allow the development of an extension which addresses the problem.

From the Release Notes of version 5.0:

Commands API: Added support for commands with unmodified key events when an editor is focused to allow for emulation of alternative key binding schemes. (This lays the groundwork for the possibility of, for example, Vim modes in the future.)

General stability

Even if this problem has been reduced version after version, sometimes a crash happens. In my experience these are caused mostly by extensions, but I don’t have enough proofs to confirm it.

It should be clear that this does not happen so frequently as to invalidate the user experience and the positive features largely balance this flaw. However, I cannot fail to mention it as a sore point.

Conclusions

As we saw from this general overview Nova is a quite interesting piece of software. It offers unique functionalities and the added bonus of using a 100% native software. I strongly believe in the project even if I recognise that in some ways it is still a bit immature. Let’s give it some time.

Despite all the features, however, I believe that the only real yardstick is how you use something on a daily basis. In these terms I can say that in 6 months I used exclusively Nova for writing code (besides Xcode) and I guess I’ve become addicted to certain workflows that only Nova offers. Since the first start-up I have returned to VS Code just once to see the name of my favourite theme. Although, for the moment I didn’t uninstall it completely. Let’s see in another 6 months.

What I appreciate the most about Nova is the workflow. What in general leads me to appreciate a software is the workflow and the vision it brings forward. Apps like Nova, Basecamp, Affinity and Sketch don’t simply offer a set of tools in a beautiful UI. They try to rethink the way a problem should be addressed, finding new solutions that simplify the process. This is what I think every piece of software should aspire to and what Nova does best.