Electron 20.0.0 has been released! It includes upgrades to Chromium
10.4, and Node.js
16.15.0. Read below for more details!
The Electron team is excited to announce the release of Electron 20.0.0! You can install it with npm via
npm install electron@latest or download it from our releases website. Continue reading for details about this release and please share any feedback you have!
- Added immersive dark mode on Windows. #34549
- Added support for panel-like behavior. Window can float over full-screened apps. #34665
- Updated Windows Control Overlay buttons to look and feel more native on Windows 11. #34888
- Renderers are now sandboxed by default unless
sandbox: falseis specified. #35125
- Added safeguards when building native modules with nan. #35160
Breaking & API Changes
Below are breaking changes introduced in Electron 20. More information about these and future changes can be found on the Planned Breaking Changes page.
V8 Memory Cage Enabled
Electron 20 enables V8 sandboxed pointers, following Chrome's decision to do the same in Chrome 103. This has some implications for native modules. This feature has performance and security benefits, but also places some new restrictions on native modules, e.g. use of ArrayBuffers that point to external ("off-heap") memory. Please see this blog post for more information.
Default Changed: renderers without
nodeIntegration: true are sandboxed by default
Previously, renderers that specified a preload script defaulted to being unsandboxed. This meant that by default, preload scripts had access to Node.js. In Electron 20, this default has changed. Beginning in Electron 20, renderers will be sandboxed by default, unless
nodeIntegration: true or
sandbox: false is specified.
If your preload scripts do not depend on Node, no action is needed. If your preload scripts do depend on Node, either refactor them to remove Node usage from the renderer, or explicitly specify
sandbox: false for the relevant renderers.
Fixed: spontaneous crashing in nan native modules
In Electron 20, we changed two items related to native modules:
- V8 headers now use
c++17by default. This flag was added to electron-rebuild.
- We fixed an issue where a missing include would cause spontaneous crashing in native modules that depended on nan.
For the most stability, we recommend using node-gyp >=8.4.0 and electron-rebuild >=3.2.9 when rebuilding native modules, particularly modules that depend on nan. See electron #35160 and node-gyp #2497 for more information.
.skipTaskbar on Linux
skipTaskbar sends a
_NET_WM_STATE_SKIP_TASKBAR message to the X11 window manager. There is not a direct equivalent for Wayland, and the known workarounds have unacceptable tradeoffs (e.g. Window.is_skip_taskbar in GNOME requires unsafe mode), so Electron is unable to support this feature on Linux.
End of Support for 17.x.y
Electron 17.x.y has reached end-of-support as per the project's support policy. Developers and applications are encouraged to upgrade to a newer version of Electron.
|E18 (Mar'22)||E19 (May'22)||E20 (Aug'22)||E21 (Sep'22)||E22 (Dec'22)|
In the short term, you can expect the team to continue to focus on keeping up with the development of the major components that make up Electron, including Chromium, Node, and V8. Although we are careful not to make promises about release dates, our plan is to release new major versions of Electron with new versions of those components approximately every 2 months.
You can find Electron's public timeline here.
More information about future changes can be found on the Planned Breaking Changes page.