Electron 28.0.0
Electron 28.0.0 has been released! It includes upgrades to Chromium 120.0.6099.56
, V8 12.0
, and Node.js 18.18.2
.
The Electron team is excited to announce the release of Electron 28.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.
If you have any feedback, please share it with us on Twitter or Mastodon, or join our community Discord! Bugs and feature requests can be reported in Electron's issue tracker.
Notable Changes
Highlights
- Implemented support for ECMAScript modules or ESM (What are ECMAScript modules? learn more here. This includes support for ESM in Electron proper, as well as areas such as the
UtilityProcess
API entrypoints. See our ESM documentation for more details. - In addition to enabling ESM support in Electron itself, Electron Forge also supports using ESM to package, build and develop Electron applications. You can find this support in Forge v7.0.0 or higher.
Stack Changes
- Chromium
120.0.6099.56
- New in Chrome 119 and in DevTools 119
- New in Chrome 120 and in DevTools 120
- Node
18.18.2
- V8
12.0
New Features
- Enabled ESM support. #37535
- For more details, see the ESM documentation.
- Added ESM entrypoints to the
UtilityProcess
API. #40047 - Added several properties to the
display
object includingdetected
,maximumCursorSize
, andnativeOrigin
. #40554 - Added support for
ELECTRON_OZONE_PLATFORM_HINT
environment variable on Linux. #39792
Breaking Changes
Behavior Changed: WebContents.backgroundThrottling
set to false affects all WebContents
in the host BrowserWindow
WebContents.backgroundThrottling
set to false will disable frames throttling
in the BrowserWindow
for all WebContents
displayed by it.
Removed: BrowserWindow.setTrafficLightPosition(position)
BrowserWindow.setTrafficLightPosition(position)
has been removed, the
BrowserWindow.setWindowButtonPosition(position)
API should be used instead
which accepts null
instead of { x: 0, y: 0 }
to reset the position to
system default.
// Removed in Electron 28
win.setTrafficLightPosition({ x: 10, y: 10 });
win.setTrafficLightPosition({ x: 0, y: 0 });
// Replace with
win.setWindowButtonPosition({ x: 10, y: 10 });
win.setWindowButtonPosition(null);
Removed: BrowserWindow.getTrafficLightPosition()
BrowserWindow.getTrafficLightPosition()
has been removed, the
BrowserWindow.getWindowButtonPosition()
API should be used instead
which returns null
instead of { x: 0, y: 0 }
when there is no custom
position.
// Removed in Electron 28
const pos = win.getTrafficLightPosition();
if (pos.x === 0 && pos.y === 0) {
// No custom position.
}
// Replace with
const ret = win.getWindowButtonPosition();
if (ret === null) {
// No custom position.
}
Removed: ipcRenderer.sendTo()
The ipcRenderer.sendTo()
API has been removed. It should be replaced by setting up a MessageChannel
between the renderers.
The senderId
and senderIsMainFrame
properties of IpcRendererEvent
have been removed as well.
Removed: app.runningUnderRosettaTranslation
The app.runningUnderRosettaTranslation
property has been removed.
Use app.runningUnderARM64Translation
instead.
// Removed
console.log(app.runningUnderRosettaTranslation);
// Replace with
console.log(app.runningUnderARM64Translation);
End of Support for 25.x.y
Electron 25.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.
E28 (Dec'23) | E29 (Feb'24) | E30 (Apr'24) |
---|---|---|
28.x.y | 29.x.y | 30.x.y |
27.x.y | 28.x.y | 29.x.y |
26.x.y | 27.x.y | 28.x.y |
What's Next
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.
You can find Electron's public timeline here.
More information about future changes can be found on the Planned Breaking Changes page.