Are you happy with your logging solution? Would you help us out by taking a 30-second survey? Click here


Build cross platform desktop apps with JavaScript, HTML, and CSS

Subscribe to updates I use electron

Statistics on electron

Number of watchers on Github 58146
Number of open issues 951
Average time to close an issue about 17 hours
Main language C++
Average time to merge a PR 1 day
Open pull requests 184+
Closed pull requests 99+
Last commit over 1 year ago
Repo Created over 6 years ago
Repo Last Updated over 1 year ago
Size 35.6 MB
Homepage https://electronj...
Organization / Authorelectron
Latest Releasev1.8.4
Page Updated
Do you use electron? Leave a review!
View open issues (951)
View electron activity
View on github
Fresh, new opensource launches πŸš€πŸš€πŸš€
Trendy new open source projects in your inbox! View examples

Subscribe to our mailing list

Evaluating electron for your project? Score Explanation
Commits Score (?)
Issues & PR Score (?)

Electron Logo

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

:memo: 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


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/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.

electron open issues Ask a question     (View All Issues)
  • almost 3 years Middle mouse click on program icon in Windows taskbar doesn't open a new instance
  • almost 3 years Electron tray.displayBalloon()
  • almost 3 years Electron is opening WebView process so long
  • almost 3 years Windows notifications display application user model id if `icon` is set
  • almost 3 years Box-shadow in browser window doubled after some hover
  • almost 3 years BrowserWindow - transparent not working
  • almost 3 years [Enhancement] Safe IPC Bus
  • almost 3 years how to controll subwindow display in the same desktop in macOS
  • almost 3 years JavaScript execution from ipcRenderer or setImmediate not recorded in devtool timeline
  • almost 3 years TypeError when accessing remote objects
  • almost 3 years When opening a window, closing it, and reopening it old IPC listeners stay intact
  • almost 3 years SetDefaultFolder
  • almost 3 years Certificate error
  • almost 3 years Slow startup time (2 minutes!) on Windows
  • almost 3 years Strange fs async lock issue.
  • almost 3 years Support native progress dialogs
  • almost 3 years Add event for vetoing SSL certificate validation
  • almost 3 years Add mechanism for bypassing DNS host resolver
  • almost 3 years Disabled menu items can be triggered with their accelerator
  • almost 3 years will-finish-launching not always fired on Windows
  • almost 3 years Wrong window:close and app:before-quit order of events with autoUpdater.quitAndInstall()
  • almost 3 years Add a way of knowing if the resize event has been triggered manually
  • almost 3 years AutoUpdater returns localized error strings
  • almost 3 years Window level `screen-saver` doesn't work on macOS
  • almost 3 years Widevine version not working with Electron 1.4.4-1
  • almost 3 years GlobalShortcut doesn't call callback function
  • almost 3 years Rendering on bad monitors leads to strange colour differences
  • almost 3 years autoUpdater cannot find updates (Nuts Server)
  • almost 3 years Printing needs more options
  • almost 3 years remote debugging port only works the first time
electron open pull requests (View All Pulls)
  • session: webRequest.OnHeadersReceived should accept status line.
  • Add `isMainFrame` param to WebContents `did-fail-load` event
  • browser: create cert verifier when browser context is created
  • Docs: Update Korean docs as upstream
  • Add squirrel-updates-server link in the docs
  • Don't emit 'will-quit' when 'app.exit()' is called.
  • [OSX] Distributed notification center
  • Fix broken template image support in Tray icon
  • Allow sheets to be attached at a custom offset #4679
  • Add node-gyp windows compile command &minor update
  • Add Security Tutorial
  • spec: show failing protocol.registerStandardSchemes api
  • Fetch Process resource usage from WebContents
  • protocol: fix registerStandardSchemes api
  • Remove deprecated apis
  • Upgrade to 50.0.2661.94
  • Support document visibility and events in webviews
  • Rename remaining Atom Shell references
  • Update
  • Feature/multiple preload scripts
  • Create guide for how to create your own from-source Electron fork
  • Update Windows Build Instructions
  • Add fallback URL to handoff
  • Add more bindings to DownloadItem
  • [WIP] Implement chrome.i18n.getMessage
  • Extend autoUpdate API
  • Specify filePath behavior in shell
  • Add details to docs/
  • beginFrameSubscription bugfix and improvement
  • require shell
  • [WIP] Publish the public API as a JSON object
  • Upgrade to Chrome 52
  • add REPL documentation
  • :memo: Translation of CODE OF to pt-BR [ci skip]
  • [browser] fix the memory leak
  • :memo: Translation of to pt-br [ci skip]
  • Update year in LICENSE file
  • Update license in README file
  • Ignore already closed windows
  • Add webview attributes for more webPreferences
  • Fix for issues seen on frameless window (Windows) when at 200% resolution
  • New-window event handler can return its own BrowserWindow instance
  • Move reused object structures to a standard structures folder
  • Add process.setDefaultErrorMode()
  • Add /LARGEADDRESSAWARE to linker options for electron.exe
  • Fix for missing additional features fields when creating new popup windows
  • [WIP] Wrap API's to use the Squirrel trampoline when it is available
  • Supports Object and Array for `extraHeaders` option in loadURL
  • Formatting JavaScript sample code.
  • [WIP] document the process(es) in which APIs are available
  • Consolidate log files
  • When hiding a window, exit fullscreen
  • Add the sender's WebContents ID to IPC messages
  • Add zoomToPageWidth window option
  • [WIP] update native modules doc
  • Minor formatting changes
  • fix for Window hidden behind taskbar after maximize #7672
  • Add protocol.registerSecureSchemes
  • Allow webview guests to be resized manually
  • Supress released window errors when an env var is set
  • Shell openExternal can take optional callback (macOS)
  • Functions returned from the backend to the frontend now get reference…
  • webContents: handle POST navigation for new windows
  • Allow web frame methods to return async promises
  • Fixed linting on Windows
  • Prevent systemPreferences.getUserDefault crash for missing arrays/dictionaries
  • Process doc followup
  • Clarify docs on a `before-quit` behavior edge case
  • session: provide chromium cert verification result to setCertificateVerifiy calback
  • Added BrowserWindow.setAppDetails to set user model id, icon and relaunch command
  • Add {secure:} opt to protocol.registerStandardSchemes
  • Chrome 54 update
  • Rename autoUpload to shouldUpload
  • Rename web-view to webview for consistency
  • Add a glossary of terms
  • Initial scripts to publish electron.d.ts
  • Add an API to fetch file icon
  • Add BrowserWindow.setCursorAutoHide
  • document the risks of preload scripts
  • override window.confirm in devtools
  • protocol: support custom session with interceptHttpProtocol
  • Add systemPreferences.setUserDefault for macOS
  • Clarify where Electron's resources directory can be found
  • Update Docs
  • Clarifying crash reporter behviour in Mac
  • session: api to resume canceled downloads from previous session
  • [WIP] Update directory structure docs
  • Emit the open-url event on windows when makeSingleInstance has been called
  • Add 'win.closeFilePreview()'
  • [WIP] Fix and addition on content_scripts basic support
  • Adding CPU & Memory metrics for App
  • Remove page url check during `history.pushState`
  • Additional small OSR fixes
  • Add option to override webview creation with node integration disabled
  • Add Math.ceil to pageSize.height and pageSize.width to printToPDF() o…
  • Keep track of remote object reference count.
  • protocol: use streaming interface between fetcher and requestjob
  • Make OSX child windows honor the show option to fix #8836
  • [WIP] Notifications from the main process
  • [WIP] Support writing custom formats into clipboard
  • Update
  • Let Chromium manage `document.visibilityState` and `document.hidden`
  • update document
  • Area near the top border in frameless window is clickable
  • Don't use JSON to send the result of `ipcRenderer.sendSync`.
  • Add example to webview-tag doc on how to pass ipc inside guest
  • Pass correct window to menu items
  • Print enhancement
  • Allow setting Activity Monitor's title dynamically
  • feat(worditerator): bump up worditerator into latest
  • Fix child touch bar items not updating
  • feat(powerMonitor): expose interface to query system idle state
  • Fix protocol filtering of net.request
  • Improvements to release process
  • Handle invalid utf8 characters for debugger
  • getLastCrashReport does not return latest crash report
  • feat(webframe): export set cache capacity interface
  • Improve OSR API (1-7-x)
  • Improve OSR API (1-8-x)
  • Improve OSR API (master)
  • Implement App-Scoped Security scoped bookmarks
  • Arm clarification added
  • Use same screen capturer settings for thumbnails as getUserMedia (Chrome 59/1-8-x)
  • feat: Set macOS notification close button title
  • feat: Accept additional notification actions
  • Implement dialog (alert/confirm) blocking as a user switch after the first dialog
  • frame navigation API
  • Handle empty handles
  • Use task scheduler for app.getFileIcon API
  • fix: input accept not work in mac
  • fix: Update touch bar type documentation
  • Feature : Affinity option for gathering several pages in a single process
  • Fixed Bluetooth chooser bug. Closes #11399
  • add app.setLocale()
  • [WIP] Upgrade to Chromium 63
  • [RFC] New API: powerMonitor "shutdown" event
  • Clean up the implementation of the registerStreamProtocol
  • Adds --chromium_dir argument to script/
  • Fix implicit setting of appUserModelId
  • improve Menu and MenuItem testing
  • Refactor NativeWindow (Part 1): Remove WebContentsObserver methods
  • show file filter name for accessory view of file dialog
  • Fix Linux notifications' `name` and `desktop-entry` fields
  • fix: input accept not work in mac
  • [WIP] fix debug build on linux
  • Fix context menu for sandbox devtools
  • remove defines parameter from build-libchromiumcontent
  • Indicate that ArrayBuffer are not JSON serialized
  • expanded release docs
  • Upgrade to Chromium 62
  • DO NOT MERGE: Add googletest
  • Windows 10 focus fix
  • Support Notification actions on Windows 10+
  • Make link to related guide/tutorial more obvious
  • Update to the latest libcc from electron-1-7-x
  • Fixed passing of exception to the system crash handler
  • Fixes electron/electron#12147
  • Linux named notifications
  • Ensure that a document has been created before sending IPC messages
  • [WIP] Cleanup the static methods of WebContentsPreferences
  • Expose process.env from sandbox renderer
  • [wip] Enable V8 DCHECKs
  • feat(performspellcheck): queue spell check request asynchronously
  • using async_hooks instead of monkey patching to call activateUvLoop
  • chore(build): support generating compilation db
  • Workspace notifications support on macOS
  • W/A for Narrator not working with electron on Win10
  • update doc for setProgressBar
  • Provide an easy way to use a local build of Electron
  • Support for navigator.languages
  • Add a screen_api_id parameter to the desktopCapturer API.
  • Correct app-command name corresponding to APPCOMMAND_MEDIA_PLAY_PAUSE
  • Propagate referrer to new windows
  • Fix broken link
  • Backport (1-7-x) - net: change mime type deduction in URLRequestAsarJob
  • move window z-order top with out focus
  • Add menu item order control
  • Update CI to use Node 8
  • Set window top position
  • [WIP]: Cleanup destruction of URLRequestContextGetter
  • refactor showSaveDialog and showOpendialog
  • Mouse forward on macOS
  • docs: Document Python TLS requirements
electron questions on Stackoverflow (View All Questions)
  • Electron: Inject raw html into BrowserWindow
  • Programmatically Changing the Contents of a Webview in Electron
  • Electron auto-updater doesn't exist?
  • electron quick start application not working
  • Electron- ipc sendSync - Returning event.returnValue inside a callback
  • Submitting Electron App to Mac App Store: Error "Invalid Signature"
  • Electron create MSI installer using electron-builder 3.2.0
  • How can I get the right string when capturing http post response in Electron?
  • Electron Builder Code Signing Download Certificate Error
  • three.js inside a Electron Desktop app
  • Electron and Typescript: How do I handle modules at runtime correctly?
  • How to access DOM elements in electron?
  • Electron printToPDF page break in middle of text
  • Node require() inside Angular 2 App with Electron
  • What framework can i use with electron?
  • Electron App Jquery Module not loading
  • how to unit test components in main process of an electron app?
  • How to handle blob data in Electron?
  • Unexpected token import on Electron app
  • Remove menubar from Finder in Electron on OSX
  • What is the best way to communicate from Angular2 to Electron and back?
  • How to use the <webview> methods in Electron
  • Why do I need to make my electron window bigger than my canvas?
  • How to use `electron` based app update file which requires `sudo` permission
  • Google API causes huge page hangs in Electron
  • Unable to find electron-prebuilt's version number. - When trying to use electron-rebuild
  • unable to import electron modules from the BrowserWindow page
  • Invoke ActiveX In Electron
  • How to integrate Electron ipcRenderer into Angular 2 app based on TypeScript?
  • electron-react-boilerplate - Route change and state
electron list of languages used
electron latest release notes
v2.0.0-beta.5 electron v2.0.0-beta.5

Note: This is a beta release. Please file new issues for any bugs you find in it.

This release is published to npm under the beta tag and can be installed via npm install electron@beta, or npm i electron@2.0.0-beta.5.

## Bug Fixes/Changes

  • :wrench: Fix security warning. #12313

  • Fix AttributeError: 'dict' object has no attribute 'required'. #12307

  • net: change mime type deduction in Change URLRequestAsarJob (#12319). #12333

  • Backport (2-0-x) - Better GTK+ Menu color support. #12331

  • Backport (2-0-x) - Check menu.popup options are an object. #12330

  • Backport (2-0-x) - Update CI to use Node.js 8. #12353

  • Backport (2-0-x) - Remove the race condition between new process creation and context release. #12361

  • Backport (2-0-x) - Update draggable regions when changing BrowserView. #12370

v1.8.4 electron v1.8.4


  • Documentation updates. #12279
  • Document and test BrowserView.{destroy,isDestroyed}. #12298

Bug Fixes

  • Fixed popup menu position. #12197
  • [SECURITY] Set appropriate defaults for webview options. #12272
  • Fixed window open not showing. #12261
  • Fixed flaky remote setInterval spec. #12266
  • Fixed require on network share path. #12286
  • Fixed flaky navigator.serviceWorker spec. #12289


  • Fixed a crash on certain Linux distributions. #12151


  • Fixed checkbox state callback bug. #12154


  • Fixed passing of exception to the system crash handler. #12258
v2.0.0-beta.4 electron v2.0.0-beta.4

Note: This is a beta release. Please file new issues for any bugs you find in it.

This release is published to npm under the beta tag and can be installed via npm install electron@beta, or npm i electron@2.0.0-beta.4.


  • Documentation updates. #12222 #12280
  • Enable easy rebuild of native modules for unreleased electron. #12260
  • Added missing report.length > 1 assertion to spec. #12262
  • Document and test BrowserView.{destroy,isDestroyed}. #12299

Bug Fixes

  • Fixed menubar toggle alt key detection on focus. #12235
  • Fixed incorrect warnings in webviews. #12236
  • Fixed parent's visibility trumping inherited 'show' option. #12244
  • Fixed LocalStorage not persisting. #12239
  • Fixed flaky navigator.serviceWorker spec. #12247
  • Fixed crash opening devtools. #12245
  • Fixed preload script executing twice. #12218
  • Fixed to ensure that getLastCrashReport() is actually the last crash report. #12255
  • Fixed flaky remote setInterval spec. #12265
  • [SECURITY] Set appropriate defaults for webview options. #12292
  • Fixed require on network share path. #12287


  • Skip client-certificate test for Linux. #12213
  • Fixed issues with notifications. #12229


  • Fixed private API usage issue in mas build (#12264)


  • Fixed passing of exception to the system crash handler. #12259
Other projects in C++