The Electron team recently announced the release of version 3 of Electron. This release includes numerous enhancements and improvements, including support for reading massive files, better APIs for managing applications, and logging and performance measurement capabilities.
Like many modern software projects, Electron strives to have more regular releases with smaller breaking changes between releases. With just four months between the 2.0.0 and 3.0.0 release, and beta releases of version 4 already underway, Electron aims to provide a rapidly stabilizing and improving platform for building desktop apps with Node.js, Chrome, and other modern web development APIs.
Electron 3 updates its major dependencies to Chrome version 66.0.3359.181, Node.js version 10.2.0, and V8 JavaScript engine version 6.6.346.23.
One of the challenges with Electron was distinguishing between development and production applications. The new app.isPackaged
property returns a boolean if the application gets packaged for a production release.
Another challenge in early Electron releases was determining if an application was ready. app.isReady()
checks if Electron is ready and app.on('ready')
is the way to be notified when the app is ready. Creating source code that could get called at any time would require first checking app.isReady()
, and if false, subscribing to the app.on('ready')
event. The new app.whenReady()
function encapsulates that sequence by returning a promise that gets fulfilled when Electron gets initialized.
To provide more performance profiling details, the new process.getHeapStatistics() API returns the same heap measurements provided by the V8 JavaScript engine. Also, the new netLog API provides dynamic logging control. net.startLogging(filename)
and net.stopLogging([callback])
control when network logging begins and finishes.
File system access has also improved with the Electron 3 release. fs.readSync
now supports loading of massive files. Improvements to file system paths include Node.js file system wrappers to make fs.realpathSync.native
and fs.realpath.native
available to Electron applications. The new TextField and Button APIs are part of a larger initiative to add standard user interface controls.
Electron 3 also improves user experience APIs. win.moveTop()
makes it possible to move the window z-order to the top without changing the focus of the user input to prevent interrupting users unexpectedly.
Complete lists of breaking changes and bug fixes in Electron 3 are available in the Electron 3 release announcement.
Numerous improvements are already underway for Electron 4 and progress may be viewed with the Electron releases summary. With this and future releases, Electron continues to improve on its powerful platform for building desktop applications with web technologies.
Electron also has an App Feedback Program to allow developers to provide early testing and feedback during the beta release cycle. For the 3.0 release, the Electron team thanks Atlassian, Atom, Microsoft Teams, Oculus, OpenFin, Slack, Symphony, VS Code, and other program members for their assistance.
Electron is available via the MIT open source license. Contributions are welcome via the Electron GitHub organization and should follow Electron's contribution guidelines and code of conduct.