Electron Releases

Filter by channel Filter by major release

Release Notes for v21.0.0

Stack Upgrades

Breaking Changes

  • Enabled the V8 memory cage for external buffers. See https://www.electronjs.org/blog/v8-memory-cage for more details. #34724
  • Refactored webContents.printToPDF to align with the Chrome Devtools implementation. #33654

Features

  • Added LoadBrowserProcessSpecificV8Snapshot as a new fuse that will let the main/browser process load its v8 snapshot from a file at browser_v8_context_snapshot.bin. Any other process will use the same path as is used today. #35695 (Also in 20)
  • Added app.getSystemLocale() method. #35794
  • Added webFrameMain.origin. #35534 (Also in 19, 20)
  • Added deprecation warning for the new-window event. #34528 (Also in 20)
  • Added immersive dark mode on Windows. #33624 (Also in 20)
  • Added new WebContents.ipc and WebFrameMain.ipc APIs. #35231
  • Added support for Web Bluetooth pin pairing on Linux and Windows. #35818
  • Added support for panel-like behavior. Window can float over full-screened apps. #34388 (Also in 20)
  • Added support for push notifications from APNs for macOS apps. #33574

Fixes

  • Enable missing HKDF support in Node.js crypto. #34767
  • Fixed a crash that occured when loading non-standard schemes from iframes. #35517
  • Fixed a crash when switching origins with emulation settings set. #35488
  • Fixed an issue where screen.getCursorScreenPoint() crashed on Wayland when it was called before a BrowserWindow had been created. #35575
  • Fixed an issue where serialPort.open() failed with NetworkError: Failed to open serial port.. #35339
  • Fixed an issue where invalid pageSize values would cause a silent hang and eventual crash. #34893
  • Fixed an issue where some spellcheck functionality would incorrectly throw errors on macOS. #35679
  • Fixed the 'length' property in UploadFile objects being ignored. #34657

Also in earlier versions...

  • Added a background to the WCO container to avoid rendering glitches. #35612 (Also in 19, 20)
  • Added support for --ozone-platform-hint flag on Linux. #34937 (Also in 19, 20)
  • Adds a warning for building native modules with node-gyp and electron-rebuild, encouraging users to upgrade to >=8.4.0 for node-gyp and >=3.2.8 for electron-rebuild if using Electron 20 or higher.. #35159 (Also in 20)
  • Do not exit when logging initialization fails. #35138 (Also in 20)
  • Enable WCO maximize button when window enters tablet mode and is not already maximized. #35664 (Also in 19, 20)
  • Ensures that requestMediaKeySystemAccess eventually resolves / rejects. #34886 (Also in 19, 20)
  • Fixed 20.0.0-beta.8 X11 crash regression. #35075 (Also in 20)
  • Fixed WCO not responding to touch events on windows. #35117 (Also in 18, 19, 20)
  • Fixed _dyld_missing_symbol_abort crash on macOS when using c++ native modules. #34932 (Also in 20)
  • Fixed serial-port-added and serial-port-removed events not firing. #34958 (Also in 20)
  • Fixed uv_os_gethostname failing on Windows 7. #35704 (Also in 19, 20)
  • Fixed webContents.getUserAgent() incorrectly returning an empty string unless previously set. #35069 (Also in 18, 19, 20)
  • Fixed a Windows Control Overlay issue where a window taken directly from minimized to maximized state could have incorrect hover state. #35070 (Also in 19, 20)
  • Fixed a bug where calling atob in the renderer process could fail under some circumstances. #35443 (Also in 19, 20)
  • Fixed a crash when calling BrowserWindow.setEnabled(). #34904 (Also in 18, 19, 20)
  • Fixed a crash when loading a same-origin URL after a render process crash. #34428 (Also in 18, 19, 20)
  • Fixed a performance problem in crashReporter.start() on macOS. #34609 (Also in 17, 18, 19, 20)
  • Fixed a potential crash on WebWorker destruction. #35492 (Also in 19, 20)
  • Fixed a potential crash when changing window settings after initializing WCO with an invalid titleBarStyle. #34833 (Also in 17, 18, 19, 20)
  • Fixed a potential printing hang. #34892 (Also in 20)
  • Fixed alwaysOnTop BrowserWindow option for X11 Linux. #34766 (Also in 18, 19, 20)
  • Fixed an edge case in app.isInApplicationsFolder() which would return false incorrectly in some cases. #35730 (Also in 19, 20)
  • Fixed an error where setWindowOpenHandler() would crash if the callback threw an error. #34523 (Also in 17, 18, 19, 20)
  • Fixed an issue in which calling setBounds() after e.preventDefault in a 'will-move' or 'will-resize' event wouldn't change the window's shape until the mouse button was released. #34843 (Also in 19, 20)
  • Fixed an issue where BrowserViews didn't always visually update after call to setBounds. #34581 (Also in 18, 19, 20)
  • Fixed an issue where BrowserWindows on macOS were incorrectly marked as resizable. #34379 (Also in 18, 19, 20)
  • Fixed an issue where DataList bounds had part of the item text cut off vertically. #34759 (Also in 19, 20)
  • Fixed an issue where DevTools could not be docked with Windows Control Overlay enabled. #35765 (Also in 19, 20)
  • Fixed an issue where WCO could occlude DevTools opened in any non-detached mode. #35688 (Also in 18, 19, 20)
  • Fixed an issue where Windows Control Overlay buttons did not respect maximizable/minimizable/closable states of a BrowserWindow. #34677 (Also in 17, 18, 19, 20)
  • Fixed an issue where app.relaunch loses args when execPath is specified. #35254 (Also in 19, 20)
  • Fixed an issue where calling BrowserWindow.setRepresentedFilename on macOS with titlebarStyle: 'hiddenInset' or titlebarStyle: 'hidden' inadvertently moves the traffic light location. #34834 (Also in 18, 19, 20)
  • Fixed an issue where calling w.setWindowButtonVisibility(true) immediately after exiting fullscreen fails to show window buttons. #34530 (Also in 18, 19, 20)
  • Fixed an issue where draggable regions were not recalculated when BrowserView bounds changed on Windows. #34582 (Also in 18, 19, 20)
  • Fixed an issue where frameless resizable windows showed Window 7 style frames while opening. #35353 (Also in 18, 19, 20)
  • Fixed an issue where frameless windows with roundedCorners: false couldn't enter fullscreen without crashing. #35454 (Also in 19, 20)
  • Fixed an issue where invalid print job settings would correctly call back Invalid print settings as the failure reason, but would then not terminate the print job, leading to an eventual crash on exit. #34894 (Also in 20)
  • Fixed an issue where media keys would be sent to Electron on Windows no matter which window was in focus. #34594 (Also in 19, 20)
  • Fixed an issue where normal bounds would not be appropriately updated if the user minimized with the minimize button. #34473 (Also in 18, 19, 20)
  • Fixed an issue where part of the BrowserView could be cut off when calling setBounds on some windows. #35502 (Also in 19, 20)
  • Fixed an issue where passing { name: 'All Files', extensions: ['*'] } in the filters param of open or save dialogs on Linux would disallow choosing files without an extension. #34496 (Also in 18, 19, 20)
  • Fixed an issue where printing with an invalid deviceName on Linux caused silent failures. #34872 (Also in 19, 20)
  • Fixed an issue where the minimize button with WCO enabled would incorrectly be highlighted in some cases. #34771 (Also in 17, 18, 19, 20)
  • Fixed an issue where zombie windows can be created if window.close() is called during a fullscreen transition. #34378 (Also in 17, 18, 19, 20)
  • Fixed an issue with fullscreen transitions when HTML fullscreen is requested. #32905 (Also in 20)
  • Fixed child about:blank windows from inheriting their parents' preload scripts when sandbox: false and nodeIntegrationInSubFrames: true. #34531 (Also in 20)
  • Fixed context menu not showing all items on macOS when dock is not hidden. #35194 (Also in 18, 19, 20)
  • Fixed crash in renderer when resuming system from sleep. #35336 (Also in 18, 19, 20)
  • Fixed empty app_id when running under wayland. #34855 (Also in 18, 19, 20)
  • Fixed enable promise support with webFrameMain.executeJavaScript. #35359 (Also in 20)
  • Fixed issue with history.back() in sandboxed iframes affecting parent browsing context. #35623 (Also in 19, 20)
  • Fixed linux arm64 builds to not require glibc 2.29+. #34491 (Also in 19, 20)
  • Fixed missing Sec-CH-UA headers and empty navigator.userAgentData. #34481 (Also in 17, 18, 19, 20)
  • Fixed native module compilation issues on arm. #34914 (Also in 20)
  • Fixed potential crash in WebFrameMain when performing a cross-origin navigation. #34411 (Also in 18, 19, 20)
  • Fixed session.getBlobData never resolves with blob sizes > 65536. #35602 (Also in 19, 20)
  • Fixed spontaneous crashing in native modules that depended on nan. #34844 (Also in 20)
  • Fixed support for Wayland client-side decorations. #34955 (Also in 19, 20)
  • Fixed symbol generation on 32-bit Windows release builds. #35078 (Also in 18, 19, 20)
  • Fixed undefined details.requestingUrl from session.setPermissionCheckHandler. #35409 (Also in 20)
  • Picture-In-Picture mode no longer becomes a red rectangle on hover. #35401 (Also in 19, 20)
  • Removed the skip-taskbar feature on Linux. #35123 (Also in 20)
  • Updated Windows Control Overlay buttons to look and feel more native on Windows 11. #34790 (Also in 20)

Other Changes

  • Backported fix for v8:13055. #34931
  • Changed release uploads to now upload libcxx objects for MacOS x64 and arm64. #34586
  • On Linux, changed the libgdk-pixbuf dependency to be dynamically linked rather than statically linked. #34077 (Also in 18, 19, 20)
  • Security: backported fix for CVE-2022-3075. #35543
  • The undocumented page-title-set webview event has been removed. #34533
  • WebContents for <webview> are now only created after the 'will-attach-webview' event is emitted and preventDefault is not called. #32941 (Also in 20)

Documentation

End of Support for 18.x.y

Electron 18.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.