The Electron team is excited to announce that the first stable release of Electron 3 is now
available from electronjs.org and via npm install electron@latest
! It's jam-packed with upgrades, fixes, and new features, and we can't wait to see what you build with them. Below are details about this release, and we welcome your feedback as you explore.
Release Process
As we undertook development of
v3.0.0
, we sought to more empirically define criteria for a stable release by formalizing the feedback progress for progressive beta releases.
v3.0.0
would not have been possible without our App Feedback Program partners, who provided early testing and feedback during the beta cycle. Thanks to Atlassian, Atom, Microsoft Teams, Oculus, OpenFin, Slack, Symphony, VS Code, and other program members for their work. If you'd like to participate in future betas, please mail us at
[email protected].
Changes / New Features
Major bumps to several important parts of Electron's toolchain, including Chrome v66.0.3359.181
, Node v10.2.0
, and V8 v6.6.346.23.
- [#12656] feat:
app.isPackaged
- [#12652] feat:
app.whenReady()
- [#13183] feat:
process.getHeapStatistics()
- [#12485] feat:
win.moveTop()
to move window z-order to top
- [#13110] feat: TextField and Button APIs
- [#13068] feat: netLog API for dynamic logging control
- [#13539] feat: enable
webview
in sandbox renderer
- [#14118] feat:
fs.readSync
now works with massive files
- [#14031] feat: node
fs
wrappers to make fs.realpathSync.native
and fs.realpath.native
available
Breaking API changes
macOS
- [#12093] feat: workspace notifications support
- [#12496] feat:
tray.setIgnoreDoubleClickEvents(ignore)
to ignore tray double click events.
- [#12281] feat: mouse forward functionality on macOS
- [#12714] feat: screen lock / unlock events
Windows
- [#12879] feat: added DIP to/from screen coordinate conversions
Nota Bene: Switching to an older version of Electron after running this version will require you to clear out your user data directory to avoid older versions crashing. You can get the user data directory by running console.log(app.getPath("userData"))
or see docs for more details.
Bug Fixes
- [#13397] fix: issue with
fs.statSyncNoException
throwing exceptions
- [#13476, #13452] fix: crash when loading site with jquery
- [#14092] fix: crash in
net::ClientSocketHandle
destructor
- [#14453] fix: notify focus change right away rather not on next tick
MacOS
- [#13220] fix: issue allowing bundles to be selected in
<input file="type">
open file dialog
- [#12404] fix: issue blocking main process when using async dialog
- [#12043] fix: context menu click callback
- [#12527] fix: event leak on reuse of touchbar item
- [#12352] fix: tray title crash
- [#12327] fix: non-draggable regions
- [#12809] fix: to prevent menu update while it's open
- [#13162] fix: tray icon bounds not allowing negative values
- [#13085] fix: tray title not inverting when highlighted
- [#12196] fix: Mac build when
enable_run_as_node==false
- [#12157] fix: additional issues on frameless windows with vibrancy
- [#13326] fix: to set mac protocol to none after calling
app.removeAsDefaultProtocolClient
- [#13530] fix: incorrect usage of private APIs in MAS build
- [#13517] fix:
tray.setContextMenu
crash
- [#14205] fix: pressing escape on a dialog now closes it even if
defaultId
is set
Linux
- [#12507] fix:
BrowserWindow.focus()
for offscreen windows
Other Notes
What's Next
The Electron team continues to work on defining our processes for more rapid and smooth upgrades as we seek to ultimately maintain parity with the development cadences of Chromium, Node, and V8.