Build cross platform desktop apps with JavaScript, HTML, and CSS
C++ JavaScript Objective-C++ Python Objective-C HTML Other
Switch branches/tags
Latest commit 19f1fef Dec 12, 2017 @zcbenz zcbenz Merge pull request #11283 from electron/fix-event-subscriber-race
Fix race condition in event_subscriber.h
Failed to load latest commit information.
.circleci Enable testing with python-dbusmock Dec 5, 2017
.github updates to probot config Sep 29, 2017
atom Merge pull request #11283 from electron/fix-event-subscriber-race Dec 12, 2017
brightray Security Improvement: Enable Control Flow Guard on Windows - https://… Dec 8, 2017
chromium_src Fix printing_handler_win compilation errors Nov 24, 2017
default_app Replace default_app icon Dec 7, 2017
docs-translations Merge Nov 22, 2017
docs update value type to Any Dec 11, 2017
lib 🔧 Last round of feedback Dec 11, 2017
npm revert electron-download dependency to ^3.0.1 Nov 3, 2017
script Add linux powerMonitor tests using python-dbusmock Dec 5, 2017
spec Merge pull request #11385 from electron/async-menu Dec 12, 2017
tools Use real shared library names for symbol files Oct 16, 2017
vendor Updated libchromiumcontent submodule Dec 2, 2017
.clang-format Add clang-format config file. Oct 4, 2016
.dockerignore Add to docker context Aug 15, 2017
.gitignore Ignore all npmrc and package-lock Dec 4, 2017
.gitmodules Move brightray submodules to root vendor May 10, 2017
.node-version Bump node version number Sep 14, 2017
.remarkrc add remark lint to ensure fenced codeblocks are formatted properly. Nov 20, 2017
.travis.yml Add arm64 task in travis ci Aug 22, 2017 fix word Nov 22, 2017 clean up remaining references to docs-translations content Nov 9, 2017
Dockerfile Enable testing with python-dbusmock Dec 5, 2017
Dockerfile.circleci Enable testing with python-dbusmock Dec 5, 2017
Jenkinsfile Add 1 hour timeout Dec 4, 2017
LICENSE Update copyright year in LICENSE file Jan 3, 2017 Make 'https' explicit in the link to Dec 11, 2017 Add Jan 30, 2017
common.gypi Fix "nghttp2" build Nov 24, 2017
electron.gyp Merge pull request #11144 from dittos/mas-login-helper-again Nov 27, 2017
features.gypi Add enable_osr build flag Jun 28, 2017
filenames.gypi Implement powerMonitor "suspend"/"resume" events for Linux. Dec 5, 2017
package.json 📦 Upgrade to StandardJS 10 Nov 23, 2017
toolchain.gypi Some compiler flags are clang only Nov 21, 2017

Electron Logo

CircleCI Build Status AppVeyor Build Status Jenkins Build Status devDependency Status Join the Electron Community on Slack

📝 Available Translations: 🇨🇳 🇹🇼 🇧🇷 🇪🇸 🇰🇷 🇯🇵 🇷🇺 🇫🇷 🇹🇭 🇳🇱 🇹🇷 🇮🇩 🇺🇦 🇨🇿 🇮🇹. View these docs in other languages at electron/electron-i18n.

The Electron framework lets you write cross-platform desktop applications using JavaScript, HTML and CSS. It is based on Node.js and Chromium and is used by the Atom editor and many other apps.

Follow @ElectronJS on Twitter for important announcements.

This project adheres to the Contributor Covenant code of conduct. By participating, you are expected to uphold this code. Please report unacceptable behavior to


To install prebuilt Electron binaries, use npm. The preferred method is to install Electron as a development dependency in your app:

npm install electron --save-dev --save-exact

The --save-exact flag is recommended as Electron does not follow semantic versioning. For info on how to manage Electron versions in your apps, see Electron versioning.

For more installation options and troubleshooting tips, see installation.

Quick start

Clone and run the electron/electron-quick-start repository to see a minimal Electron app in action:

git clone
cd electron-quick-start
npm install
npm start

Resources for learning Electron

Programmatic usage

Most people use Electron from the command line, but if you require electron inside your Node app (not your Electron app) it will return the file path to the binary. Use this to spawn Electron from Node scripts:

const electron = require('electron')
const proc = require('child_process')

// will print something similar to /Users/maf/.../Electron

// spawn Electron
const child = proc.spawn(electron)


Documentation Translations

Find documentation translations in electron/electron-i18n.


You can ask questions and interact with the community in the following locations:

Check out awesome-electron for a community maintained list of useful example apps, tools and resources.



When using the Electron or other GitHub logos, be sure to follow the GitHub logo guidelines.