Release Notes for v20.0.0
Stack Upgrades
- Chromium 104.0.5112.65.
- Node v16.15.0
- V8 v10.4
Breaking Changes
- Removed the skip-taskbar feature on Linux. #35156
- Renderers are now sandboxed by default unless
nodeIntegration: true
orsandbox: 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
toapp.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 anull
value for theevent
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
andserial-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 whensandbox: false
andnodeIntegrationInSubFrames: 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 returningfalse
whenblur()
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 eitherwill-resize
orwill-move
on Windows. #34204 (Also in 16, 17, 19) - Fixed an issue where calling
BrowserWindow.setRepresentedFilename
on macOS withtitlebarStyle: 'hiddenInset'
ortitlebarStyle: '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 invalidtitleBarStyle
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 thefilters
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
BrowserWindow
s 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 theelectron
category forcrash_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 andpreventDefault
is not called. #35016
Documentation
- Documentation changes: