Introduction

‘Pound for pound’, in my book, when it comes to text editors, nothing beats Sublime Text for the feeling of speed. It just always feels instant.

But right now, if you took Sublime away from me, and made me pick another editor, it would be Panic’s Nova.

Let’s take a look at it.

Want to watch the YouTube version?

My text editor history

I’m a sucker for spending time with new code editors. I spend the majority of my working life in a text editor so seeing how a product solves the same problems I understand well is fascinating to me.

Principally I write code for a living. But I’ve also used text editors to write books, articles and even screenplays.

I’ve been using a text editors daily for a long time. Here’s a non-exhaustive list of editors I have used for some period of time:

  • Pagemill
  • Dreamweaver
  • Espresso
  • CSSEdit
  • TextMate
  • BBEdit/Text Wrangler
  • Coda
  • Sublime Text
  • Vim
  • VSCode

Plus brief looks at things like Atom and Brackets and no doubt some others I’ve forgotten about.

Through all that, the value I have appreciated beyond all else is speed. Generally, the length of time I stuck with an editor was directly proportional to the speed, or perceived speed, of the interface.

And that brings me to the blue elephant in the room. And why I always come back to Sublime Text.

VS Code feels slow

Despite the near complete domination of VS Code in the hearts and minds of developers as I write this, I just can’t stick with it. Yes, it is fantastic. Yes, it has (almost) every feature you could possibly want. But it feels slow. Sorry, it does.

It’s slow to start. And it feels slow to navigate the interface. This is most obvious when you switch to a new file, when there’s a horrid FOUC, just before the syntax highlighting kicks in. Plus it still feels very ‘Windows’. Now there is nothing inherently wrong with a ‘Windows’ feel. Heck, I was on of the few people that liked the Windows phone UI, but if you are on a Mac it just feels a little off.

Now, this isn’t going to be about me ragging on VS Code. I’m merely explaining why, when nearly everyone else is using VS Code, I am not.

Oh, just one more little point; you are still ‘paying’ for VS Code. You are just paying for it with your data and usage. And that’s fine. But just don’t be under any doubt you are ‘paying’ for it in some way.

OK, I know some of you will have opinions here so stick them in the comments but for now, let’s move on.

Have you forgotten how great Mac apps can look?

As a long time Mac user, I occasionally get nostalgic for when Mac apps used to take you back by how, just ‘great’ they looked. Apps like Espresso were just stunning. Just that starting logo by Verle Peters.

Illustration of Espresso
The start screen of Espresso was a thing of beauty

It showed an app can have some kind of soul. It made the whole experience feel different. Premium somehow. It just put a little joy into using such utilitarian software. To use an analogy: sure you can drive to work in a Ford, but Apps like Espresso and Coda felt like driving to work in a … (insert your own aspirational car here).

And that brings me, finally, to Panic’s Nova.

Is it too pretty for its own good?

When Nova first came out in September of 2020, I took a brief and instantly dismissed it. Despite there seeming to be a few basic essentials it couldn’t do, it just, visually, felt too blingy. Almost ostentatious!

I was used to my editor looking dark, serious and spartan. Like the coding equivalent of the Dalai Lama’s bedroom.

And here was Nova, waltzing around my screen like some kind of 70s pimp; with it’s neon colour schemes, quirky animations, glowing text and unadulterated sense of fun and visual splendour.

Pretty text editing interface of Nova
The splendor of Nova is a little unsettling at first

I’m British I thought. This simply won’t do! So I let Nova 1.0 languish in my Application folder for months. That will teach it to show off on my screen I thought.

Nova has grown up

Skip forward to a few weeks ago, and for some reason I started thinking about application design, and in turn Nova.

The trial I had downloaded had expired but in the intervening months, Panic had reset the trial period for downloads. I clicked the link to get v6.2 of Nova, opened it up and spent the next 7 days with it.

Let me tell you now, if you have only looked at Nova when it first came out, this is now an different beast entirely.

And crucially. It’s fast.

What’s great about Nova?

  • drag and drop files. You can do this with files in the sidebar and you can drag files to view them (yes, I know VS Code does this too, this just does it better!)
  • The interface is quick, everything feels responsive, there’s no delay before files are syntax highlighted for example
  • There is a great Preferences panel. Now I know this is a bit of a ‘so what’ but it just shows it doesn’t need to be a JSON file or a bunch toggle boxes
  • The interface for adding themes/extensions is great. I forgot that things could even work that way. When you swap a theme it just feels so smooth and controlled. And when you want to install an extension, it’s just seamless
  • I really like how it exposes the indentation levels for folding, it has a kind of track in the gutter that’s very intuitive
  • Little things like the Git information for a project, visually is fantastic, you get to see lists of remotes in there too
  • When you are working with CSS, there are little colour indicators sitting in the gutter and this brings up a custom colour picker if you want to make a change
  • it has there fun ‘boing’ indicators when you go over a matching bracket. I know if can seem a bit gimmicky but I find that genuinely useful
  • You can set bespoke artwork for your project. Honestly, it’s not like I miss this in other editors, but it’s a lovely touch
  • It’s got Transmit (FTP software) kind of built in! I’m a little embarrassed to say I still do SFTP on my own site; I’ve just never gotten around to moving to a modern workflow, so the fact this is built in, is genuinely useful – don’t judge!
  • You can set up build scripts and run them from within the interface
  • You can hook up your Git service providers like GitHub, for easy access, even local GitLab instances
  • Extensions can create completely new sidebar groups. Look forward to seeing what people dream up
  • Speaking of the sidebar, you can drag sections around in the sidebar, so if you want to keep an eye on version control, you can just drag it down and resize it
  • You get a Markdown preview, and although a bit of a hack, you can get the conversion into HTML too as Nova has a built in browser preview (Safari based)
  • There is a setting to show ‘Type and Function separators’ which is something I’ve not seen before and that brings a horizontal line across where there are nested functions

What’s not so great

  • When I start Nova, I want it to start with the project I’m working on. It doesn’t seem to give you that option??
  • There’s no simple way to do say a 4-way split of the panes
  • wish the tabs could be made deeper, and I’m not sure about them gobbling up space. Might just be because I’m not used to it.
  • Terminal built in but always as a tab, I’d like a littler window. Or maybe a little pop up window as I tend to use it mainly for firing up Vite or something? If anyone can do something cool here, Panic can! Then again, maybe I need to just need to look at the tasks section
  • I’m being picky, but performance compared to Sublime for things like opening/closing the sidebar not quite as good. But that’s the only bit where it falls behind Sublime. Of course, compared to VSCode, speed wise, it’s night and day.
  • Occasionally crashes and bombs out completely. At the minute that’s happening maybe once a day. It never happens with Sublime. I really hope that improves.
  • ‘Goto symbol in Project’ – nothing can hold a candle to Sublime (in fact hardly any other editors do this)
  • There’s no built in diffing tool yet but as their website says, it’s on the list! You do get indicators to show where changes happen though.
  • There’s no extension sync. So, if you have more that one machine, there is no way to sync your settings and extensions. That’s something VS Code does impeccably
  • Selection, in general, is lacking in Nova. It seems to know the bounds in a lot of cases, it just doesn’t seem to expose them as selection methods. Most importantly, there is no ‘expand selection’ in Nova, that’s something I use all the time. I really hope they add that
  • There is no ‘Transpose’; a manipulation you can do in Sublime where you can switch one block of text with another. It isn’t something I use all the time but I miss it when it’s not there.

So that’s some of the great, and some of the not-so-great features of Nova. So what’s it going to set you back?

Pricing model

Nova is $99 initially with a year of free updates. When a year is up you can pay $49 for another year of updates or leave it at the version it is currently and continue to use it ‘as is’.

If you own a prior version of Coda (scurries to find old email with serial number), you can update from Coda for $79 rather that $99.

I’m completely fine with this model. I make my living from using a text editor so I’m happy to pay for products that push these products on, because ultimately I will benefit from it.

JavaScript API

One really smart move by Panic is exposing a JavaScript API to developers, as well as a Developer forum.

I don’t know if it is just because I’m familiar with it, but JS just seems more accessible than something like Python, that Sublime uses.

There is already a swathe of extensions for Nova, and nothing I wanted was missing; chiefly Prettier and TypeScript support. Other things I need an extension for in Sublime such as a Terminal and sidebar utilities are already part of Nova.

Thanks to the API being JavaScript based, I can imagine extensions in Nova are going to do very well indeed.

Resource usage comparison

I give a lot of lip service to Sublime’s performance so I wanted to take a look at how Nova, and also VS Code and Sublime handle something difficult; a large file.

In the interests of academic research I spent an entire 27 seconds to find a large JSON file to use as a test. I then loaded the file up, alongside the same project in Sublime Text, VS Code and Nova.

I expected VS Code to be the worst in terms of performance and resource usage and in the main it was, but there were some odd situations where it wasn’t.

Sublime handled the file with ease, and scrolling performance was perfect, with the minimap not skipping a beat. For some reason it had the syntax as ‘plain text’ but even when I swapped it to ‘JSON’ it laughed in the face of this 25MB file.

VS Code came up with a couple of warnings that (the code editor equivalent of, ‘Please Miss, I’m feeling a bit poorly for PE, and I don’t have my best trainers on, so I might not do as well’) it had turned off tokenisation, along with wrapping and folding in order to avoid freezing and crashing.

Nova was weird. It too came up with a warning to say automatic parsing was disabled. However, even when I accepted that, with that file, the minimap wasn’t displayed, and it never actually seemed to actually parse the file. In addition, in the activity monitor, CPU usage for Nova was 100%.

This felt like a bug, as under normal file editing, and not dealing with multi MB beast files, Nova was actually very efficient; usually within a hairs breadth of Sublime. Both of them hovered around 0.6% of CPU/280MB memory.

Compared that to VS Code which, as you likely can guess, as an Electron app, was pretty awful by comparison. At first glance it seems to be doing quite well but once you add up the scores of spawned processes it has going on… well, not so much. It was typically over 1% CPU and 1GB+ in memory.

Cross platform considerations

The fact that Nova is Mac only is a blessing and a curse. It’s great because it means Panic can do whatever the Mac platform alone is capable of, without needing to worry about the implementation details of another OS.

The downside is that if you are someone who needs to work across different OS’s, it’s unlikely it’s worth your time getting too familiar with Nova. There is a lot of muscle memory when it comes to text editors, and needing to hold two in your head doesn’t seem particularly efficient.

Close, but no cigar

There are some wonderful and unique flourishes to this editor, and some genuinely useful tools.

But there are still some real shortcomings for me. The selection methods are lacking, for example, and the odd crash, rare as it has been, is enough to make me cautious.

But, the speed of this editor, the cadence of the updates and the expansion of extensions from the community means this is one to watch. For now at least, it’s my No2 choice, right behind Sublime Text.