Choosing a JavaScript Editor

There are a long list of editors and IDEs capable of editing modern JavaScript code out there, and it can be overwhelming to have to pick just one. In this article I want to share my experience of switching between various editors, and which one I found best fit my coding habits and needs.


Before I entered the realm of JavaScript development, I had done a lot of low-level programming, mostly in C/C++. As a result, I had gotten into the habit of using a text editor to write my code and a terminal window to build and run it. Thus this was the mindset I had when getting into JavaScript, which is why I started out using text editors to write my JavaScript code initially. It was only later on that I realized the utility that full IDEs provide.

Additionally, although all screenshots in this article were taken on Windows, every editor mentioned has both Windows and macOS versions (and other platforms too), and I used most of them cross-platform frequently.

Sublime Text 3

Sublime Text 3 (I usually have the folder tree collapsed)

My JavaScript development story starts with Sublime Text, which I first started using at the beginning of my internship, around May 2016. Sublime Text is probably my favorite notepad-replacement-type editor (I’m sure many feel the same way), as it feels the most polished, has all the features I need, and mostly just works. Editing JavaScript code in it gives you regular editor options like finding/replacing words, auto-indentation, auto-bracket-insertion, and the like. It also has a convenient feature of highlighting all matching instances of whatever text you select, kind of like an always-active soft-find feature, which made renaming things or finding usages within the same file a lot easier. I also enjoyed how it restored open files when closed and relaunched — including unsaved ones. It was really a pleasure to use.

Unfortunately, being a text editor, Sublime lacks full IDE features, such as go-to-declaration or finding/replacing all usages of a symbol. For that reason, it’s not ideal for working on anything beyond very simple one-file projects, and I decided to try something different.


Atom in its default theme

Atom quickly became a popular editor in the developer community due to its extensive package/plugin system, which lets you add custom modules to the editor to do any number of things. It’s built on the Electron stack, and even open source. I decided to give it a try, since my boss at the internship was using it as his main editor at the time, and one of my friends spoke highly of it as well. In addition to the long list of plugins people made, you can also build your own if you can’t find something that suits your needs. Similarly, you can download and apply style packages that let you customize the look and feel of the editor completely. Personally I ended up using the material design theme.

However behind all those features, it’s still just a text editor, not unlike Sublime Text. It features the same editor-esque features, but still lacks more powerful IDE functionality. It’s worth noting though that there are some plugins that can bring you pretty close to IDE-like functionality. On top of that, I could feel it slowing down at times, though I’m sure that should improve as it’s developed further. I didn’t delve too deep into the Atom ecosystem, and I wouldn’t recommend Atom for larger projects.


Webstorm in its dark theme

My first foray into a real IDE was Webstorm. It’s possibly the most popular full JavaScript IDE, and a lot of my coworkers used it or another offering JetBrains’ IDE spectrum as their go-to IDE. It’s also the only editor I explored that’s built exclusively for JavaScript — all the others can edit a slew of other languages too. Being a full-featured IDE, it does a lot — I finally gained the ability to look up function/variable definitions with a simple CTRL+click, and similarly finding/replacing all usages of some symbol was easily done. This makes it a lot easier to refactor code in large code bases, where functions and variables are all tangled up between multiple files.

Unfortunately it wasn’t perfect either. It feels quite bloated and heavy when working with any code base, and it only gets worse for large code bases (as was the case during my internship). It lagged frequently for me. Furthermore it sometimes crashes or exhibits inexplicable odd functionality; one time it registered all my source code files as being external to the project, thus refusing to index symbols in them and essentially turning into a mere text editor. Webstorm feels like it has gotten too big to maintain consistency and high quality throughout its various components, so it ends up being somewhat unpleasant and unintuitive as an whole.

Visual Studio Code

Visual Studio Code in its dark theme

The latest step in my editor exploration journey has been VS Code. It’s another Electron-based editor, developed by Microsoft, that has seen an explosion of popularity among the developer community since its recent launch. To me it almost feels like Webstorm, but redone from scratch, and refined. Its interface feels more clean to me, and it still does everything I want out of an IDE. Importantly, it hasn’t been as laggy or buggy in my usage either. VS Code manages to do this without giving up full-fledged IDE features, so I can do mostly all the same things as I could with Webstorm. This is the editor I use presently, and I’m really enjoying my experience with it so far. It might be important to note, however, that I haven’t tested very large codebases in VS Code, as I only started using it after my internship ended. Thus I can’t speak to how well it’d perform in that scenario.


I’ve tried a number of editors for my JavaScript coding needs, and so far that journey has led me to Visual Studio Code. I value its responsiveness, stability, aesthetic appearance, and full-IDE functionality; the editors I’ve tried previously fall short in at least one of those areas. Of course it’s not perfect, but I look forward to seeing it develop over time. What’s your favorite JavaScript editor?