Over the years the choices of IDEs and code editors have reduced significantly. We earlier had quite a few options across OSes from BBEdit, Notepad++, Eclipse, etc. However now with the need for advanced IDEs there are only a handful picks that work across all OSes, and that is great! We have contenders in both the open source (VS Code, Vim, etc) and commercial (Intellij, Sublime Text, etc) spaces. These are all amazing editors and IDEs but when it comes to native ones that are fast and native the choices are quite limited.
I've been a fan of Panic since I started using a Mac professionally about a decade ago. Transmit has been a god send when dealing with file transfers and they've improved it over the years to work seamlessly with cloud platforms. That's not the best part, Panic does an amazing job adhering to and most of the times improving the Apple Human Interface guidelines. If a product is coming out of the Panic stable, it's virtually guaranteed to be aesthetically pleasing and conforming to the Mac experience.
So when Nova was announced, I was unsurprisingly excited to try it out. Unfortunately I did not get a chance at the beta and eventually my enthusiasm died out as I went back into the traditional IDE world.
Recently though I had a chance to get my hands on Nova and I was thoroughly excited to try it out. The below review points are based on my usage for a few days using it for a relatively small Typescript project.
To set the context straight, I work on a Macbook Pro 2019 with 16GB RAM and a touch bar (Almost never use it). I have two code editors that I use daily:
- Intellij Idea Ultimate as my IDE for Python, Flutter, Web
- Neovim (goneovim) as my code editor for Web, Go, articles
The distinction is important because I crave performance, speed and efficiency when coding as much as possible, but also need the expansive IDE experience for refactoring, wiring, etc which is too cumbersome with a deeper integration.
With the advent of LSPs (https://microsoft.github.io/language-server-protocol/), even editors can now provide features of an IDE out-of-the-box. The trick is presenting those features in a seamless manner.
VIM has LSP support but there is a lot of fumbling needed to get it to work correctly although coc (which I use) does a pretty decent job.
Coming back to Nova, my expectations from Nova are that of an IDE. Something that goes beyond the typical editor experience whilst retaining all of the goodness of a native app from Panic (native look and feel, speed, chock full of features) and Nova does not disappoint.
Installation of Nova is pretty straightforward, download the dmg from https://nova.app/ and install it. The default configuration works really well however I was quick to change the font to Fira Code and higher point size.
You can open single files and get editing right away.
Configuring Nova can be a bit jarring if you come from an IDE. The nomenclature is a bit different alongwith the organization of options (more Xcode). There is no search provided for so many settings which I am used to with Intellij/VSCodium (yay! no telemetry). It does take time to get things setup the way one likes and it does not follow the dark theme.
Compare this to Intellij settings
Nova supports a ton of extensions and alongwith a rich API that will allow you to work with a myriad of languages, themes, etc. I believe the choice of available extensions is based on popularity. For e.g. all the popular themes on Vim, Idea are available but none of the key bindings. If your language is supported good for you, mine wasn't (Dart).
The experience of working with extensions is great. A simple search and install feature and off you go. More extensions are being made available regularly and the ecosystem will get richer. How much of this is Panic's push? No idea.
You got one job Nova! Code editing is generally good with lots of panes and information floating around to work with. The command palette similar to Sublime Text, Idea, VSCode gives you quick access to functionality. The default keybindings are bit off putting especially coming from Idea/Vim/VSCode.
You get the standard code folding, structure navigation, etc similar to others.
Even with support for LSP, the code actions are limited and does not allow a lot of refactoring.
Another gripe is that basic string manipulation is not available out-of-the-box such as duplicate line (WAT!). We need an extension to get that working (DOUBLE WAT!)
This is not correct, nova has included this since v1, the problem is that they decided to name it "Copy lines Down and Copy Lines Up" the guy who did that extension did not find it either. - imustknowsomething
Workflows is similar to Run actions that others provide. Honestly I didn't get time to explore it much and I don't need it a lot too. I prefer to execute workflows via the terminal. I am sure there is good stuff in there.
This is where Nova shines. It has Transmit kinda built-in. It allows you to push content to remote servers which they support a lot of.
Nova has a steep price point of $99 USD with each additional year at $49 USD especially when you consider open source alternatives like VSCode. Having said that, in some way this price is justified with the overall experience and the potential of Nova improving rapidly. Their robust API gives me a lot of hope that the language support and features will only get better.
I went in thinking I'll get a cool new IDE but I believe Nova can be best termed as a code editor on steriods that looks pretty (and this is important cause you spend 8 - 12 hours on this screen).
Folks in web development should definitely try it and consider it for themselves. If you're working in Android, Flutter, etc then you may need a full fledged IDE where I can recommend Intellij Idea and VSCode.