Daniel Strunk



Create native cross-platform applications using HTML, CSS and JavaScript

If the idea of creating native applications using the same tools you’re using for front-end developement sounds up your alley, electron is for you. Electron is a relatively new development offering by GitHub which allows you to create serious desktop applications using HTML, CSS and JavaScript. I know this post reads like a product push, but I’m seriously enamored with how easy this is. Architecting an application using frameworks or libraries such as React, Ember or Vue, then bundling said applications into binaries that can be utilized by Linux, Mac and Windows is an immensely powerful skillset.

A little history

A couple of years ago, GitHub decided to open source a new editor, named Atom, into the world. This editor was built on front-end technologies, was extensible and “hackable to the core”. A cool idea, to be sure. At Atom’s core was something literally called ‘Atom Core’. This was, basically, an API for interacting with core desktop operating systems. When it started, it was pretty sparse—only offering APIs that made sense for Atom. But, people began using Atom Core for other reasons—Slack built their Windows and Linux applications with it, Microsoft used it to build Visual Editor Studio—and GitHub saw the use in extracting out the foundation and renaming it to something more generic.

Fast forward

Most recently in May of 2016, Electron reached 1.0. In that time, people have pushed out cool projects such as hyperterm: an extensible terminal, mojibar: a searchable reference for emoji, among other things. As a matter of fact, this post was written in Simplenote, an electron note taking app that features tags, markdown preview, and syncing across devices!

I’ve only just started playing with Electron, but it seems a fantastic addition to a skillset you probably already have. Using my knowledge of HTML, CSS and JavaScript to bundle an application that can be used by members of all operating system ecosystems? Sounds good to me!