Release Notes for v28.0.0
Stack Upgrades
- Chromium
120.0.6099.56
- Node
18.18.2
- V8
12.0
Breaking Changes
- The
BrowserWindow.getTrafficLightPosition()
andBrowserWindow.setTrafficLightPosition()
methods have been removed. #39479 - The
app.runningUnderRosettaTranslation()
method has been removed. #39956 - The
ipcRenderer.sendTo()
method has been removed. #39087 - The
scroll-touch-{begin,end,edge}
events have been removed. #39814 - Setting
backgroundThrottling
to false will disable frames throttling in theBrowserWindow
for allWebContents
displayed by it. #38924
Features
Additions
- Enabled ESM support. #37535
- For more details, see the ESM documentation.
- The
UtilityProcess
API now supports ESM entrypoints. #40047 - Added several properties to the
display
object includingdetected
,maximumCursorSize
, andnativeOrigin
. #40554 - Added support for
ELECTRON_OZONE_PLATFORM_HINT
environment variable on Linux. #39792
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: https://github.com/electron/forge/releases/tag/v7.0.0
- Added API to help apps know when to avoid semitransparent backgrounds. #39631 (Also in 26, 27)
- Added
getWebRTCUDPPortRange
andsetWebRTCUDPPortRange
APIs to specify UDP port range for WebRTC. #39046 - Added
keyboardLock
toses.setPermissionRequestHandler(handler)
. #40460 (Also in 26, 27) - Added
mouse-enter
andmouse-leave
Tray events for Windows. #40072 - Added a
generateTaggedPDF
option towebContents.printToPDF()
to allow generating tagged (accessible) PDFs. #39563 - Added a
tabbingIdentifier
property toBrowserWindow
. #39980 (Also in 26, 27) - Added middle click mouse event to tray icon. #39926
- Added several properties to the
display
object includingdetected
,maximumCursorSize
, andnativeOrigin
. #40554 - Added support for
ELECTRON_OZONE_PLATFORM_HINT
environment variable on Linux. #39792 - Added support for
chrome.scripting
extension APIs. #39395 (Also in 25, 26, 27) - Added support for several more extensions manifest keys including
host_permissions
,author
, andshort_name
. #39599 (Also in 26, 27) - Added the ability to send HTTP headers with
webContents.downloadURL()
. #39455 (Also in 25, 26, 27) - Changed
systemPreferences.getColor(name)
to return an RGBA hex value (#RRGGBBAA
) instead of a plain RGB (#RRGGBB
) value. #38960 - Honor XDG dark theme preferences on Linux. #38977 (Also in 25, 26, 27)
- Improved compatibility with CommonJS modules in sandboxed preload scripts by passing dummy
module.exports
. #39484
Improvements
- Improved
fork()
andexecve()
performance forchild_process
API on Linux. #39253 - Fixed resizing performance issue on macOS. #40586 (Also in 26, 27)
- Fixed opaque window performance regression on DWM. #39895 (Also in 27)
- Re-enabled partition alloc on macOS. #40230
Removed/Deprecated
- The
app.runningUnderRosettaTranslation
property has been deprecated. #39897 (Also in 25, 26, 27) - The
gpu-process-crashed
event onapp
has been deprecated. #40195 - The
renderer-process-crashed
event onapp
andcrashed
event onWebContents
and<webview>
have been deprecated. #40089
Fixes
- Fixed an issue that prevented
MessagePorts
from being garbage collected when not referenced. #40201 - Fixed app incorrectly activating panel windows on macOS Sonoma. #40465
- Fixed file paths passed to
shell.showItemInFolder
not being escaped in Linux. #40562 - Fixed loading nested ESM dependencies in
node_modules
. Support thethrowIfNoEntry
option infs.statSync
/fs.lstatSync
in asar files. #40224 - Fixed same-party cookie functionality for first party sets. #40526
- Use
activateIgnoringOtherApps
for focusing non-panels on macOS. #40621
Also in earlier versions...
- Fixed Windows Mica / Acrylic background material effects on frameless windows. #39708 (Also in 27)
- Fixed
BrowserView.setBounds()
calls not painting view in new bounds in some cases. #39994 (Also in 25, 26, 27) - Fixed
app.runningUnderARM64Translation()
always returning true on ARM64. #39920 (Also in 25, 26, 27) - Fixed
will-navigate
not being emitted when pressing links inchrome:
pages. #40525 (Also in 27) - Fixed a
webContents.capturePage()
issue that caused an empty image to be returned for fully-occluded windows on Linux and Windows. #40185 (Also in 25, 26, 27) - Fixed a potential issue with
async_hook
corruption in some error contexts. #40594 (Also in 26, 27) - Fixed an error changing file format in
dialog.showOpenDialog
on macOS. #40346 (Also in 27) - Fixed an error where listening to certain
chrome.tabs
events would throw incorrectly. #39729 (Also in 25, 26, 27) - Fixed an issue where BrowserWindows could crash on macOS with
frame: false
androundedCorners: false
when going fullscreen. #39747 (Also in 25, 26, 27) - Fixed an issue where WebViews could sometimes crash on unload. #40445 (Also in 26, 27)
- Fixed an issue where Windows Toast notifications weren't properly dismissed from the Action Center on
notification.close()
if they'd previously been dismissed. #40243 (Also in 26, 27) - Fixed an issue where
BrowserViews
that had their bounds set prior to being added to aBrowserWindow
could have unexpected incorrect offsets. #39605 (Also in 25, 26, 27) - Fixed an issue where
chrome://gpu
failed to load. #39556 (Also in 25, 26, 27) - Fixed an issue where
navigator.keyboard.lock()
did not work per latest expected behavior. #40389 (Also in 26, 27) - Fixed an issue where
webContents.print
could fail whenoptions
is a frozen object. #39985 (Also in 25, 26, 27) - Fixed an issue where accelerators representing DOM keys were not correctly converted in
webContents.sendInputEvent()
. #39776 (Also in 25, 26, 27) - Fixed an issue where calling
loadURL
during somewebContents
url loading events could crash. #40143 (Also in 24, 25, 26, 27) - Fixed an issue where calling
show()
on a childBrowserWindow
would show all other children attached to the same parent on macOS. #40062 (Also in 24, 25, 26, 27) - Fixed an issue where certain properties of
chrome.tabs
Tab objects were not properly considered privileged. #39595 (Also in 25, 26, 27) - Fixed an issue where child windows opened when the parent window is already fullscreen did not respect the child windows' fullscreenability and resizability settings. #39620 (Also in 24, 25, 26, 27)
- Fixed an issue where closing and opening a minimized DevTools window would not work as expected. #40091 (Also in 25, 26, 27)
- Fixed an issue where pressing the escape key did not exit PDF presentation mode. #39616 (Also in 25, 26, 27)
- Fixed an issue where the Node.js
assert
module did not work in the renderer process. #39540 (Also in 24, 25, 26, 27) - Fixed an issue where using
webcrypto.subtle.importKey()
could error and fail ifSharedArrayBuffers
are not defined. #40070 (Also in 27) - Fixed an issue where vibrant windows incorrectly have square corners when they're modals on macOS. #39979 (Also in 25, 26, 27)
- Fixed an issue with applying vibrancy on non-transparent windows on macOS. #40109 (Also in 27)
- Fixed an issue with webContents interaction with fullscreen and WCO on macOS. #40219 (Also in 25, 26, 27)
- Fixed an unexpectedly thrown error in some unsupported chrome extensions. #40514 (Also in 26, 27)
- Fixed crash on shutdown in TLS sockets with Node.js HTTP/2 connections. #39928 (Also in 25, 26, 27)
- Fixed decorations for tiled windows on Wayland. #39523 (Also in 22, 24, 25, 26, 27)
- Fixed deprecated
gpu-process-crashed
/renderer-process-crashed
events being emitted twice and with incorrect arguments. #40090 (Also in 22, 24, 25, 26, 27) - Fixed devtools to allow restoring saved dock state on Windows. #39734 (Also in 25, 26, 27)
- Fixed how screen readers are detected on Windows to reduce false positives. #39988 (Also in 27)
- Fixed issue where titlebar would be transparent for transparent windows that are fullscreen. #39759 (Also in 25, 26, 27)
- Fixed launch failure with
child_process.spawn()
on windows affected by launching store applications. #40101 (Also in 25, 26, 27) - Fixed missing type for
Electron.TitleBarOverlay
. #39799 (Also in 26, 27) - Fixed problem with bounds of maximized window when toggling
BrowserWindow.setResizable()
. #40582 (Also in 26, 27) - Fixed problem with promise resolved to early when browser initiated in-page navigation. #39597 (Also in 25, 26, 27)
- Fixed redundant permission dialogs while screen sharing on Wayland. #40192 (Also in 26, 27)
- Fixed regeneration of thumbnail toolbar buttons after restarting Explorer on Windows. #39551 (Also in 24, 25, 26)
- Fixed rendering on Linux due to broken shader cache compilation with driver updates. #40450 (Also in 27)
- Fixed window size constraints not working on macOS. #39975 (Also in 27)
- Functions called over the
contextBridge
are now called with the expected receiver (this
). #40263 (Also in 27) - Support Region Capture API with tab MediaStream. #39074 (Also in 25, 26, 27)
- Fixed build failure when PDF viewer is disabled. #39990 (Also in 25, 26, 27)
- Fixed build failure when
enable_electron_extensions=false
. #40032 (Also in 25, 26, 27)
Notices
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.