:electron: Build cross-platform desktop apps with JavaScript, HTML, and CSS
Switch branches/tags
1-3-x 1-4-x 1-5-x 1-6-x 1-7-x 1-8-x 2-0-x 2-1-x 3-0-x-appcontainer-trials 3-0-x 3-1-x 4-0-x 69_enable_logging add-args-spec add-vsts-status-to-readme add-web-frame-add-origin-access-whitelist-entry appcontainer-trials appveyor-test-reporter appveyor_gpu_test asan-tests better-spec-runner brenca/accessibility-tests brenca/cookie-store-backport-4-0-x brenca/fix-14908 brenca/fix-paste-and-match-style-3-0-x build-gn buildFromTemplate-fix chromium-upgrade/71 deprecate-webframe-api dialog-refactor-p1 docs-index e2e enable-mixed-sandbox enable-power-monitor-tests expect-browser-window-spec expect-crash-reporter-spec export-patches fetch-electron fetch_job_uaf_patch fix-build-with-enable_run_as_node-disabled fix-drag-region-crash fix-last-crash-report fix-memory-tracing fix-mixed-sandbox-tests fix-power-observer-dbus_3-0-x fix-remote-debugging fix-vsts-mac-gn fix-webview-in-contextisolation-4-0-x fix-window-close fix-windows-release-test fix-zoom-in-mac gn-add-nonproprietary-ffmpeg gn-babel gn-ci-builds gn-ci-sccache gn-circleci-mac gn-release-win gn-resource-conflict-omg-again-srsly gn-win-link ipc-filter jest-spike kthulu120/moveTopBackport lang lenient-locale-mkdirs make-cppcheck-happy master menu-accel migrate-setpath-logs miniak/desktop-capturer-filtering miniak/dock-api miniak/drop-mavericks miniak/fix-patch-description miniak/object-shorthand miniak/prefer-spread miniak/release-context miniak/remote-promise-invoke miniak/remove-deprecated miniak/return-type-annotation miniak/screen-reader-detection miniak/tray-focus mkt/add-debugging-tools-to-windows-docs mkt/better-release-notes-note more-timeout multiple-globals no-chrome-common no-exit-event nornagon/gn-ci-builds ppontes/8100-backport-window.opener-null-fix-to-3-0-x ppontes/8100-use-proper-site-instance-candidate promise-changes promisify-affinity-tests promisify-cookies promisify-importcert promisify-tests publish-nightly-to-nightly reenable-nativeimage-specs release-1-7-x remove-blink_local_frame.patch rename-electron-build-configs resource-file-conflict-patch-explanation restore-clipboard-dcheck restore-url-dchecks restore-wtf-string-dcheck revert-10204-fix-window-opener revert-12293-revert-12193-master revert-15698-ppontes/8100-backport-window.opener-null-fix-to-4 rich-dialog roll-libcc route-permission-checks sandbox-ci-test single-core-fix-3-1-x system_netwok_context t-g test-build-appx test-change test-cr test-dirty-frame test-skips test-symbols-win unsafe-secure-origins upgrade_sqlite_4_x url_fetcher_rewrite wc-exec-js webview-in-sandbox-renderer win-width-fix windows-powermonitor-shutdown-event wrap-docs-toc-in-element yolo-tests
Nothing to show
Clone or download
Type Name Latest commit message Commit time
Failed to load latest commit information.
.circleci build: Enable arm embedded builtins (#15939) Dec 4, 2018
.github chore: add BinaryMuse to troppers (#16062) Dec 14, 2018
.vsts chore: add GN linting (#14678) Oct 3, 2018
atom feat: allow immediate MacOS notifications (#16060) Dec 14, 2018
build build: fix native_mksnapshot build (#15770) Nov 21, 2018
buildflags refactor: move color_chooser out of chromium_src (#15091) Oct 11, 2018
chromium_src feat: add support for DesktopCapturerSource.appIcon Dec 4, 2018
components/pepper_flash fix: linking pepper flash on Linux Oct 9, 2018
default_app fix: make windowMenu role correct on MacOS (#15930) Dec 3, 2018
docs-translations update references to renamed i18n repo Mar 2, 2018
docs feat: allow immediate MacOS notifications (#16060) Dec 14, 2018
lib fix: register webview in main world when using contextIsolation (#16067) Dec 14, 2018
manifests refactor: printing implementation (#15143) Nov 9, 2018
native_mate chore: fix v8 deprecation warnings Dec 3, 2018
npm chore: warn when people attempt to use the Electron module to do Elec… Dec 7, 2018
patches chore: enable v2 sandbox on mac (#15647) Dec 13, 2018
script chore: correctly capitalize releaseID (#16079) Dec 14, 2018
spec fix: register webview in main world when using contextIsolation (#16067) Dec 14, 2018
tools fix: restore missing .lproj directories (#15721) Nov 15, 2018
vendor chore: temporarily use submodule and gn DEPS for requests/boto Oct 6, 2018
.clang-format Add clang-format config file. Oct 4, 2016
.dockerignore ci: migrate libcc's Dockerfile to electron and update it (#14786) Sep 25, 2018
.env.example clarify purpose of .env.example Jul 11, 2018
.eslintrc.json chore(eslint): add extension to .eslintrc file (#15020) Oct 8, 2018
.gitattributes chore: force patches to be checked out with LF line endings (#14789) Sep 25, 2018
.gitignore refactor: eliminate brightray (#15240) Oct 24, 2018
.gitmodules chore: temporarily use submodule and gn DEPS for requests/boto Oct 6, 2018
.remarkrc add remark lint to ensure fenced codeblocks are formatted properly. Nov 20, 2017
BUILD.gn fix: register webview in main world when using contextIsolation (#16067) Dec 14, 2018
CODE_OF_CONDUCT.md Change Contact Emails (#12278) Mar 14, 2018
CONTRIBUTING.md add docs/development/README.md (#12373) Mar 20, 2018
DEPS chore: roll DEPS 70.0.3538.110 Dec 3, 2018
Dockerfile ci: migrate libcc's Dockerfile to electron and update it (#14786) Sep 25, 2018
Dockerfile.arm32v7 ci: use ubuntu 18.04 for arm testing (#14988) Oct 5, 2018
Dockerfile.arm64v8 ci: Trigger an arm test on VSTS after CircleCI build (#14898) Oct 4, 2018
LICENSE Update license year Dec 31, 2017
README.md docs: add Azure Pipelines status (#15455) Oct 29, 2018
SECURITY.md Change Contact Emails (#12278) Mar 14, 2018
VERSION Bump v4.0.0-nightly.20181010 Oct 10, 2018
appveyor.yml build: use different directory for generated breakpad symbols (#15716) Nov 14, 2018
electron_paks.gni chore: add webui_resources to pak (#16009) Dec 11, 2018
electron_resources.grd native_desktop_media_list.h depends on //chrome/app:generated_resources Oct 9, 2018
electron_strings.grdp refactor: printing implementation (#15143) Nov 9, 2018
filenames.gni chore: misc cleanup (#16037) Dec 12, 2018
package-lock.json chore: convert bump script to js (#15820) Dec 6, 2018
package.json chore: convert bump script to js (#15820) Dec 6, 2018
vsts-arm-test-steps.yml ci: Renable ffmpeg and mksnapshot tests on Azure Devops (#15800) Nov 30, 2018
vsts-arm32v7.yml ci: use ubuntu 18.04 for arm testing (#14988) Oct 5, 2018
vsts-arm64v8.yml ci: Trigger an arm test on VSTS after CircleCI build (#14898) Oct 4, 2018
vsts.yml ci: Cleanup build dirs on Azure Devops (#16047) Dec 13, 2018


Electron Logo

CircleCI Build Status AppVeyor Build Status Azure Pipelines Build Status devDependency Status Join the Electron Community on Slack

📝 Available Translations: 🇨🇳 🇹🇼 🇧🇷 🇪🇸 🇰🇷 🇯🇵 🇷🇺 🇫🇷 🇹🇭 🇳🇱 🇹🇷 🇮🇩 🇺🇦 🇨🇿 🇮🇹. View these docs in other languages at 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 coc@electronjs.org.


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 for Electron prior to version 2, as it does not follow semantic versioning. As of version 2.0.0, Electron follows semver, so you don't need --save-exact flag. 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 & Electron Fiddle

Use Electron Fiddle to build, run, and package small Electron experiments, to see code examples for all of Electron's APIs, and to try out different versions of Electron. It's designed to make the start of your journey with Electron easier.

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

git clone https://github.com/electron/electron-quick-start
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/i18n.


Info on reporting bugs, getting help, finding third-party tools and sample apps, and more can be found in the support document.



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