Electron Releases

Filter by channel Filter by major release

Release Notes for v20.0.0

Stack Upgrades

Breaking Changes

  • Removed the skip-taskbar feature on Linux. #35156
  • Renderers are now sandboxed by default unless nodeIntegration: true or sandbox: false is specified. #35125
  • Added safeguards when building native modules with nan. Use node-gyp >=8.4.0 and electron-rebuild >=3.2.9 for when rebuilding native modules. #35160

Features

Additions

  • Added a warning for building native modules with node-gyp and electron-rebuild, asking users to upgrade to >=8.4.0 for node-gyp and >=3.2.8 for electron-rebuild if using Electron 20 or higher. #35160
  • Added app.isHidden() to check if the app is hidden (e.g. with Command-H) on macOS. #32155
  • Added browserData to app.setPath/getPath. #33554
  • Added immersive dark mode on Windows. #34549
  • Added support for HIDDevice.forget(). #34210
  • Added support for panel-like behavior. Window can float over full-screened apps. #34665
  • Enabled systemPreferences.subscribe{Local|Workspace}Notification to take a null value for the event parameter. #33641 (Also in 18, 19)
  • Fixed an issue where the PDF Viewer would fail if a user attempted to reload. #33560 (Also in 18, 19)

Fixes

  • Fixed 20.0.0-beta.8 X11 crash regression. #35092
  • Fixed _dyld_missing_symbol_abort crash on macOS when using c++ native modules. #34944
  • Fixed serial-port-added and serial-port-removed events not firing. #35047
  • Fixed a potential printing hang. #34968
  • 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. #35141
  • Fixed an issue with fullscreen transitions when HTML fullscreen is requested. #34468
  • Fixed child about:blank windows from inheriting their parents' preload scripts when sandbox: false and nodeIntegrationInSubFrames: true. #34585
  • Fixed initialization race when registering partition allocator on macOS. #33832
  • Fixed native module compilation issues on arm. #35137
  • Fixed spontaneous crashing in native modules that depended on nan. #34851
  • Updated Windows Control Overlay buttons to look and feel more native on Windows 11. #34888

Also in earlier versions....

  • Added support for --ozone-platform-hint flag on Linux. #35014 (Also in 19)
  • Apply senderFrame details to ipcMain port event. #33756 (Also in 16, 17, 18, 19)
  • Ensures that requestMediaKeySystemAccess eventually resolves / rejects. #34891 (Also in 19)
  • Fixed webContents.getUserAgent() incorrectly returning an empty string unless previously set. #35131 (Also in 18, 19)
  • Fixed a Windows Control Overlay issue where a window taken directly from minimized to maximized state could have incorrect hover state. #35074 (Also in 19)
  • Fixed a crash in safeStorage on Linux. #33913 (Also in 15, 16, 17, 18, 19)
  • Fixed a crash on Windows when opening apps in multiple, separate user sessions. #34139 (Also in 18, 19)
  • Fixed a crash when calling BrowserWindow.setEnabled(). #34972 (Also in 18, 19)
  • Fixed a crash when calling loadExtension on an extension directory that's missing a manifest file. #34168 (Also in 16, 17, 19)
  • Fixed a crash when loading a same-origin URL after a render process crash. #34432 (Also in 18, 19)
  • Fixed a performance problem in crashReporter.start() on macOS. #34639 (Also in 17, 18, 19)
  • Fixed a potential crash when calling webContents.print(). #34271 (Also in 19)
  • Fixed a potential crash when changing window settings after initializing WCO with an invalid titleBarStyle. #34875 (Also in 17, 18, 19)
  • Fixed alwaysOnTop BrowserWindow option for X11 Linux. #34913 (Also in 18, 19)
  • Fixed an OSR crash happening when input select items were rendered. #34069 (Also in 17, 18, 19)
  • Fixed an error where setWindowOpenHandler() would crash if the callback threw an error. #34547 (Also in 17, 18, 19)
  • 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. #35084 (Also in 19)
  • Fixed an issue where BrowserWindows on macOS were incorrectly marked as resizable. #34433 (Also in 18, 19)
  • Fixed an issue where DataList bounds had part of the item text cut off vertically. #34786 (Also in 19)
  • Fixed an issue where Windows Control Overlay buttons did not respect maximizable/minimizable/closable states of a BrowserWindow. #34721 (Also in 17, 18, 19)
  • Fixed an issue where #ARGB ->#RGBA and #AARRGGBB ->#RRGGBBAA were converted improperly when setting background color. #33707 (Also in 19)
  • Fixed an issue where BrowserWindow#isFocused() was returning false when blur() was called on macOS. #33734 (Also in 17, 18, 19)
  • Fixed an issue where Escape keyboard events would not be properly propagated to the parent window after entering fullscreen and then exiting it again on Windows. #33757 (Also in 18, 19)
  • Fixed an issue where bounds changes were incorrectly delayed in the case where a window was moved or resized and event.preventDefault was called in either will-resize or will-move on Windows. #34204 (Also in 16, 17, 19)
  • Fixed an issue where calling BrowserWindow.setRepresentedFilename on macOS with titlebarStyle: 'hiddenInset' or titlebarStyle: 'hidden' inadvertently moves the traffic light location. #34849 (Also in 18, 19)
  • Fixed an issue where calling SetLoginItemSettings() could potentially cause network volumes to be incorrectly mounted. #34068 (Also in 17, 18, 19)
  • Fixed an issue where calling setTitlebarOverlay with an initially invalid titleBarStyle on Windows would result in a crash. #34140 (Also in 19)
  • Fixed an issue where calling w.setWindowButtonVisibility(true) immediately after exiting fullscreen fails to show window buttons. #34675 (Also in 18, 19)
  • Fixed an issue where draggable regions were not recalculated when BrowserView bounds changed on Windows. #34612 (Also in 18, 19)
  • Fixed an issue where media keys would be sent to Electron on Windows no matter which window was in focus. #34647 (Also in 19)
  • Fixed an issue where mixed-case extension filters in file dialogs were ignored on Linux. #33918 (Also in 18, 19)
  • Fixed an issue where normal bounds would not be appropriately updated if the user minimized with the minimize button. #34486 (Also in 18, 19)
  • 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. #34516 (Also in 18, 19)
  • Fixed an issue where pressing escape would not un-fullscreen on Windows or Linux in some circumstances. #34317 (Also in 18, 19)
  • Fixed an issue where printing with an invalid deviceName on Linux caused silent failures. #34901 (Also in 19)
  • Fixed an issue where running second instances of the same application would cause a deadlock on Windows. #34297 (Also in 18, 19)
  • Fixed an issue where some BrowserWindows opened from new links wouldn't properly load URLs. #34159 (Also in 19)
  • Fixed an issue where the minimize button with WCO enabled would incorrectly be highlighted in some cases. #34840 (Also in 17, 18, 19)
  • Fixed an issue where the window bounds would incorrectly change if BrowserWindow.unmaximize was called on a window whose user bounds were maximized. #33480 (Also in 16, 17, 18, 19)
  • Fixed an issue where tray items wouldn't highlight in some scenarios on macOS. #34173 (Also in 16, 17, 18, 19)
  • Fixed an issue where zombie windows can be created if window.close() is called during a fullscreen transition. #34393 (Also in 17, 18, 19)
  • Fixed an issue with the app.requestSingleInstanceLock() API where it would sometimes hang. #33777 (Also in 18, 19)
  • Fixed behavior of BrowserWindow.maximize on macOS for not shown windows. #32949 (Also in 15, 16, 17, 18, 19)
  • Fixed building node modules with Visual Studio 2017. #34109 (Also in 18, 19)
  • Fixed building node modules with Visual Studio 2017. #34217 (Also in 19)
  • Fixed crash on startup due to missing gtk symbol on older distros. #34141 (Also in 18, 19)
  • Fixed crash when calling navigator.serial.getPorts(). #34280 (Also in 17, 18, 19)
  • Fixed crash when img without alt is shown with accessibility features enabled. #33840 (Also in 19)
  • Fixed crash when opening gtk file dialogs due to mismatched versions. #33650 (Also in 18, 19)
  • Fixed empty app_id when running under wayland. #34879 (Also in 18, 19)
  • Fixed incorrect return value of app.requestSingleInstanceLock() when setting non-existent user data folder. #33559 (Also in 16, 17, 18, 19)
  • Fixed issues with frameless window animations and styling. #33599 (Also in 15, 16, 17, 18, 19)
  • Fixed linux arm64 builds to not require glibc 2.29+. #34503 (Also in 19)
  • Fixed missing Sec-CH-UA headers and empty navigator.userAgentData. #34524 (Also in 17, 18, 19)
  • Fixed potential crash in WebFrameMain when performing a cross-origin navigation. #34417 (Also in 18, 19)
  • Fixed potential crash while generating accessibility trees for certain images. #33614 (Also in 18, 19)
  • Fixed potential crash with WebFrameMain when navigating between cross-origin websites. #33919 (Also in 18, 19)
  • Fixed service worker registration with custom protocols. #34290 (Also in 18, 19)
  • Fixed symbol generation on 32-bit Windows release builds. #35091 (Also in 18, 19)
  • Fixed the initialization of First Party Sets. #33971 (Also in 19)
  • Fixed the initialization of first party sets in the browser process. #33998 (Also in 19)
  • [Mac] Fixed Partition Alloc related crash in pre-BigSur (macos <= 10.15). #33704 (Also in 18, 19)
  • shell.openExternal() now reports more detailed errors on Windows. #33620 (Also in 15, 16, 17, 18, 19)

Other Changes

  • Added a TRACE call named crash_reporter::Start under the electron category for crash_reporter::Start(). #34268 (Also in 17, 18, 19)
  • Added deprecation warning for the new-window event. #34593
  • Added minimum GITHUB_TOKEN permissions. #34298
  • Fixed an issue where BrowserViews didn't always visually update after call to setBounds. #34643 (Also in 18, 19)
  • Fixed child_process.spawn ENOENT error with cwd option. #33815 (Also in 16, 17, 18, 19)
  • Minimum required node version to install the electron npm package is now >10. #34166
  • On Linux, changed the libgdk-pixbuf dependency to be dynamically linked rather than statically linked. #34635 (Also in 18, 19)
  • Re-enabled symbol generation on 32-bit Windows. #34162 (Also in 19)
  • Temporarily disabled symbol generation on 32-bit Windows due to issues with symbol generation on that platform. #33653 (Also in 19)
  • WebContents for <webview> are now only created after the 'will-attach-webview' event is emitted and preventDefault is not called. #35016

Documentation

  • Documentation changes: