Electron Releases - v28.0.0

npm install electron@v28.0.0
yarn add electron@v28.0.0

Release Notes

Stack Upgrades

Breaking Changes

  • The BrowserWindow.getTrafficLightPosition() and BrowserWindow.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 the BrowserWindow for all WebContents displayed by it. #38924

Features

Additions

  • Enabled ESM support. #37535
  • The UtilityProcess API now supports ESM entrypoints. #40047
  • Added several properties to the display object including detected, maximumCursorSize, and nativeOrigin. #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 and setWebRTCUDPPortRange APIs to specify UDP port range for WebRTC. #39046
  • Added keyboardLock to ses.setPermissionRequestHandler(handler). #40460 (Also in 26, 27)
  • Added mouse-enter and mouse-leave Tray events for Windows. #40072
  • Added a generateTaggedPDF option to webContents.printToPDF() to allow generating tagged (accessible) PDFs. #39563
  • Added a tabbingIdentifier property to BrowserWindow. #39980 (Also in 26, 27)
  • Added middle click mouse event to tray icon. #39926
  • Added several properties to the display object including detected, maximumCursorSize, and nativeOrigin. #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, and short_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() and execve() performance for child_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 on app has been deprecated. #40195
  • The renderer-process-crashed event on app and crashed event on WebContents 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 the throwIfNoEntry option in fs.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 in chrome: 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 and roundedCorners: 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 a BrowserWindow 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 when options 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 some webContents url loading events could crash. #40143 (Also in 24, 25, 26, 27)
  • Fixed an issue where calling show() on a child BrowserWindow 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 if SharedArrayBuffers 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.