First Impressions of Electron, a new Node.js IDE for Arduino

The Arduino IDE is great in that with a single download on any PC platform, new users can start writing code and see immediate results.   The same simplicity though, limits some of the more “advanced” features found in modern editors.  Also one of the IDE’s greatest strengths is cross-platform through Java.  This is also one of its weaknesses.  Java is outdated and it’s time to move on.

There’s a slew of other Arduino development environments out there, but most of them are limited to 1 or 2 platforms.  Electron is a novel idea because it is based on Node.js, meaning it runs in Google’s Chrome.

The initial implementation even includes a Serial monitor!

First Impressions

It is early, but the basic functionality is there.  You can write some code, hit compile, it generates magic hex code, and activates avrdude.  The connections to avrdude appear to work.  Appear because during my initial tests I didn’t have an Arduino handy so I couldn’t see serial communication work.  However, avrdude at least runs and complains about there being no serial port–which is a good sign!

Overall, the project has some way to go, but is interesting enough to checkout.  The idea of using modern web browser technologies for the IDE, rather than an outdated Java technology is exciting.  It meets the requirement of being cross platform, which is critical to Arduino’s success.

If you’d like to get started, I’ve expanded a little bit on the README’s Getting Started Steps.  I suggest you check it out.  Especially the included millis() examples, they look very familiar

Getting Started

As of this posting, the project is relatively new (0.2).  There are no download packages available yet nor is there an extensive list of features.  What is in place is an excellent framework for the next (note:  I’d settle for something current) generation cross-platform Arduino IDE.

The secret to making all of the tools work with a web browser is Node.js.  While intended for network applications, it is clear Node.js has other uses, as Electron shows.

I’m on a Mac and I believe the creator Josh is as well. Here’s my experience on what I did to get up and running.

1.  Sync Repository with GitHub

I have the OSX GitHub Mac client installed (windows client is also available).  So I visited the Electron GitHub Page and chose to locally sync the branch.  You can probably just downlaod the zip as well.  If you aren’t familiar with Git and GitHub, you might want to checkout these resources.

2.  Have to install NodeJS, which includes NPM on the Mac.

One of the, hopefully obvious, requirements for Electron is Node.js.  The download page has installers for most platforms, including OSX.  So download the pkg and install.  You may need to watch your GateKeeper settings since the pkg isn’t contained in any other file format (like a ZIP or DMG).

3.  run npm install (to install dependencies)

npm install

npm install

After you have cloned the Git repository, go to the electron direction and run “npm install”.  NPM was included with the NodeJS download.  This will install a number of dependencies and should only take a couple of minutes.  Good time to go find your Arduino board and plug it in.

4.  run “node electron.js”

Run node electron

Run node electron

One the the NPM install process is complete, simpy type “node electron.js” and hit enter.  You’ll see a flurry of activity along with a message to…

5. Connect to http://localhost:54329/ in Chrome

Electron - Running in Browser

Electron – Running in Browser

Ta-Da.  You’re now up and running with Electron!  As mentioned above, I didn’t test with an actual board yet.   Based on the avrdude output, I have no reason to suspect it isn’t working though. Write some code, check out the examples, watch the compiles, and send Josh some bug reports!


There’s much work to do be done, but I think this is one of the most promising projects to move the Arduino IDE forward.  It is the first project that I’ve run into that has the potential to be inherently cross-platform, which is key to being a successor for the current Arduino Java IDE. Have you had a chance to check out Electron yet?  If so, what did you think?

Long comments, URLs, and code tend to get flagged for spam moderation. No need to resubmit.

Leave a comment

2 thoughts on “First Impressions of Electron, a new Node.js IDE for Arduino

  1. The Arduino IDE is pretty terrible, but it has nothing to do with it being written in Java. Compare to, say, Eclipse or Intellij IDEA (also Java) and you’ll see. Java has got a lot of backlash for properly outdated concepts like Applets (big security hole, yadda yadda), but for cross-platform desktop applications it’s still pretty much unbeaten.

    The idea of using modern web browser technologies for the IDE, rather than an outdated Java technology is exciting. It meets the requirement of being cross platform, which is critical to Arduino’s success.

    The thing is, none of this makes sense. You’re not using only browser technologies (which would be needed for getting the benefits), that’s only driving the UI; you’ll still need the Node.js server process running in order to, if nothing else, interact with the file system and the Arduino board. The max thing this setup would get you is potentially network neutrality (so you could host the node server on one computer, while working from another), but that is at the cost of getting rid of all the current work and starting over, as well as using Javascript. IMO, if you’re going to rewrite the Arduino IDE, do it as a plugin for an existing IDE instead.