Electron: v20.0.0 Release

Release date:
August 1, 2022
Previous version:
v20.0.0-nightly.20220524 (released May 24, 2022)
Magnitude:
1,740 Diff Delta
Contributors:
8 total committers
Data confidence:
Commits:

86 Features Released with v20.0.0

Top Contributors in v20.0.0

trop[bot]
jkleinsc
electron-roller[bot]
sudowoodo-release-bot[bot]
VerteDinde
devinfoley
MarshallOfSound
codebytere

Directory Browser for v20.0.0

We haven't yet finished calculating and confirming the files and directories changed in this release. Please check back soon.

Release Notes Published

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 <span style="font-size:small;">(Also in 18, 19)</span>
  • Fixed an issue where the PDF Viewer would fail if a user attempted to reload. #33560 <span style="font-size:small;">(Also in 18, 19)</span>

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

    Other Changes

  • Added a TRACE call named crash_reporter::Start under the electron category for crash_reporter::Start(). #34268 <span style="font-size:small;">(Also in 17, 18, 19)</span>

  • 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 <span style="font-size:small;">(Also in 18, 19)</span>

  • Fixed child_process.spawn ENOENT error with cwd option. #33815 <span style="font-size:small;">(Also in 16, 17, 18, 19)</span>

  • 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 <span style="font-size:small;">(Also in 18, 19)</span>

  • Re-enabled symbol generation on 32-bit Windows. #34162 <span style="font-size:small;">(Also in 19)</span>

  • Temporarily disabled symbol generation on 32-bit Windows due to issues with symbol generation on that platform. #33653 <span style="font-size:small;">(Also in 19)</span>

  • WebContents for <webview> are now only created after the 'will-attach-webview' event is emitted and preventDefault is not called. #35016

Documentation

  • Documentation changes: