Electron v46.0.0-alpha.1
Latest Pre ReleaseRelease Notes
Breaking Changes
Changed heap profiling in
contentTracingrecordings to now use a perfetto heap-profiling data source. #53349 (Also in 45)child.kill()onutilityProcessnow sendsSIGTERMon POSIX likechild_process.kill()and no longer force-kills a child that handles the signal. #53992Removed the deprecated synchronous
safeStorage.isEncryptionAvailable(),safeStorage.encryptString()andsafeStorage.decryptString(); useisAsyncEncryptionAvailable(),encryptStringAsync()anddecryptStringAsync()instead. #53662Removed the
events,timersandurlmodules and theBuffer,setImmediateandclearImmediateglobals from sandboxed preload scripts; use a polyfill. #53891webContents.capturePage(), the offscreenpaintevent andwebContents.beginFrameSubscription()now return images with the page's device scale factor, soimage.getSize()is in DIPs rather than pixels on HiDPI displays. Also fixednativeImage.toJPEG()returning an empty buffer for images without a 1x representation. #53813
Features
Added a
globalShortcutregistration-resolvedevent on Linux that reports whether the Wayland GlobalShortcuts portal actually bound a registered accelerator. #52224Added a Windows Error Reporting helper (
electron_wer.dll, renamed to<app>_wer.dllalongside the executable) socrashReportercaptures__fastfailand other crashes that bypass the in-process handler on Windows. #53802 (Also in 45)Added app shims on macOS to show windows under another app's Dock icon. #54932 (Also in 44, 45)
Added
app.canDeElevate()andapp.relaunch({ deElevate })on Windows. #54383Added experimental Widevine CDM support with bundled CDM lookup. #50046
Added filtering options to
session.registerPreloadScript-matches,excludeMatches,includeGlobs,excludeGlobs,matchOriginAsFallback. #54903 (Also in 44, 45)Added
initiatorOriginto webRequest and protocol handler requests,DownloadItem.getInitiatorOrigin(), and a trailingframeargument to thewill-downloadandpreconnectsession events. #53685 (Also in 43, 44, 45)Added launch-failure reporting with
systemErrorCodeto theappchild-process-goneevent. #53946 (Also in 44, 45)Added support for
Notificationaction buttons on Linux. #54516 (Also in 44, 45)Added the
ELECTRON_DEBUG_DRAGGABLE_REGIONSenvironment variable, which visualizes and logs draggable regions in unpackaged apps to help debug custom title bars. #53598 (Also in 43, 44, 45)Added the experimental
protocol.registerSource()to serve a custom scheme from directories on disk without a JavaScript handler. #53220 (Also in 44, 45)Added Wayland restore-token support to
desktopCapturer.getSources(). #54550
Fixes
<webview>withoutallowpopupsalso blocks links opened into a new window by modifier-click, and such windows navigate as the clicking document rather than as a browser-initiated load. #53683 (Also in 42, 43, 44, 45)Added validation to
protocol.registerSchemesAsPrivileged()to reject protocol names that do not conform to RFC 3986 URI scheme grammar. #52519 (Also in 44, 45)Backported fix from upstream Chromium for File System Access WSL path checks. #54676
Changed the default trash implementation on KDE Plasma 6 to
kioclient. #54092 (Also in 44, 45)DevTools zoom in/out now uses the same zoom steps as Chromium. #54349 (Also in 44, 45)
File System Access permission requests and the
file-system-access-restrictedevent are scoped to the requesting document, grants are reset when the origin's last page closes, and write access works in in-memory sessions. #53666 (Also in 42, 43, 44, 45)Fixed
--xdg-portal-required-versionhaving no effect and a spurious portal warning being logged for file dialogs on Linux. #54227 (Also in 43, 44, 45)Fixed
<select>dropdowns not rendering in offscreen windows on macOS. #53638 (Also in 45)Fixed a bug where content-protected windows could temporarily appear in screen captures during picture-in-picture state changes. #51267 (Also in 45)
Fixed a child
WebContentsViewlosing focus when its window is reactivated. #54378 (Also in 43, 44, 45)Fixed a crash in
ses.clearData()after aDownloadItemwas garbage collected. #54961Fixed a crash on Linux when
process.envwas written while another thread was reading the environment, and a memory leak when a worker thread exits. #53491 (Also in 42, 43, 44, 45)Fixed a crash on
navigator.usb.requestDevice()in in-memory sessions. #54608 (Also in 44, 45)Fixed a crash when a WebAuthn request used a security key that required its PIN. #54355 (Also in 43, 44, 45)
Fixed a crash when a webContents navigated to the Chrome Web Store and the page invoked the unsupported
chrome.webstorePrivateAPI. #53752 (Also in 44, 45)Fixed a crash when calling
node:wasifunctions in optimized code. #53262 (Also in 42, 43, 44, 45)Fixed a crash when calling
setIgnoreMenuShortcuts()on DevTools. #54014 (Also in 43, 44, 45)Fixed a crash when calling
utilityProcess.postMessage()after the utility process had exited. #53293 (Also in 43, 44, 45)Fixed a crash when creating a framed window on Wayland in environments where GTK could not initialize. #54365 (Also in 43, 44, 45)
Fixed a crash when sending a DevTools protocol command with a non-string value for an optional string parameter via
webContents.debugger. #54418 (Also in 43, 44, 45)Fixed a File System Access blocklist bypass on macOS. #54679
Fixed a grey border around frameless windows on Linux WMs without compositing. #54376 (Also in 43, 44, 45)
Fixed a Linux crash creating a window with a menu bar when GTK failed to load. #54777 (Also in 43, 44, 45)
Fixed a main process crash when
onSendHeadersobserved Blob uploads. #55085 (Also in 44, 45)Fixed a main-process crash when an app called
loadURL()again right after a load failed because the renderer process exited before the page committed. #53924 (Also in 43, 44, 45)Fixed a memory leak on Windows when
app.getPreferredSystemLanguages()was called. #53853 (Also in 43, 44, 45)Fixed a pending read on a
net.requestchunked upload stream inside a protocol handler never settling when the request failed or was aborted. #53341 (Also in 43, 44, 45)Fixed a possible crash during process exit when
vm.Scriptorvmcontexts created in the main process had been garbage collected shortly before quitting. #53560 (Also in 43, 44, 45)Fixed a possible crash on Windows on ARM when
powerMonitoris torn down. #54352 (Also in 44, 45)Fixed a possible crash on Windows when a file dialog was shown for a window that was being closed at the same time. #53574 (Also in 42, 43, 44, 45)
Fixed a possible hang when pressing Esc while a
<webview>is fullscreen. #53637 (Also in 45)Fixed a potential crash during application shutdown. #54520 (Also in 45)
Fixed a potential crash when cleaning up download items. #54513 (Also in 45)
Fixed a potential crash when closing detached DevTools. #54524 (Also in 45)
Fixed a potential UAF in
app.getPreferredSystemLanguages()on Windows. #53854 (Also in 43, 44, 45)Fixed a potential UAF when a
select-usb-devicehandler destroys the requestingwebContents. #53940 (Also in 43, 44, 45)Fixed a renderer crash calling
image.toPNG()from a sandboxed preload script. #54488 (Also in 43, 44, 45)Fixed a renderer crash that could occur when printing from an iframe. #53751 (Also in 43, 44, 45)
Fixed a renderer crash when a
nodeIntegrationInSubFramespreload removed its own iframe from a promise,process.nextTick()or other Node.js callback. #53838Fixed a renderer crash when a
ResizeObserverloop-limit error handler modified layout. #54281 (Also in 42, 43, 44, 45)Fixed a renderer crash when an iframe was removed right after loading with
nodeIntegrationInSubFramesenabled andsandboxdisabled, e.g. on pages that embed Meta Pixel. #53833 (Also in 42, 43, 44, 45)Fixed a renderer crash when the main process sent IPC to, or a page navigated, a same-process
window.open()child whosecontextIsolationdiffered from its opener's. #53535 (Also in 42, 43, 44, 45)Fixed a spurious
node_initerror being logged when creating aShadowRealmwith Node.js integration enabled. #53546 (Also in 44, 45)Fixed a stale
nativeTheme.shouldUseDarkColorsafter resettingthemeSource. #54595 (Also in 45)Fixed a window's draggable regions applying under child
WebContentsViews. #54936Fixed
accent-color-changedon Windows reporting a colour that differed fromsystemPreferences.getAccentColor(). #54353 (Also in 44, 45)Fixed alignment of the text label and popup menu in the macOS save dialog. #53950 (Also in 44, 45)
Fixed an "Invalid
guestInstanceId" error when removing a loaded<webview>from the DOM. #54089 (Also in 42, 43, 44, 45)Fixed an intermittent crash (access violation) on Windows when an ASAR integrity violation is detected, so the process now exits with code 1 as intended. #53433 (Also in 43, 44, 45)
Fixed an intermittent crash at startup on Linux caused by a race between Pango and the main thread initializing fontconfig. #53314 (Also in 43, 44, 45)
Fixed an issue where an exception thrown by a property getter on an object passed through
contextBridgewas swallowed instead of being thrown back to the caller. #53289 (Also in 43, 44, 45)Fixed an issue where
crashReporter.setUploadToServer()had no effect aftercrashReporter.start()was called. #54506 (Also in 44, 45)Fixed an issue where notifications would sometimes not appear from certain long domains on Windows. #54225 (Also in 45)
Fixed an issue where the browser-side check that blocks drag and drop between cross-site frames of the same page was disabled. #53669 (Also in 43, 44, 45)
Fixed an uncatchable TypeError in
net.fetchwhen receiving response headers with non-ASCII characters, and preserved multiple Set-Cookie headers. #53550 (Also in 44, 45)Fixed
app.getGPUInfo('complete')stalling the GPU process for several seconds on some Windows systems. #53640 (Also in 44, 45)Fixed
app.getLoginItemSettings()not finding login items on Windows when the executable path contains spaces. #54364 (Also in 44, 45)Fixed
app.getRecentDocuments()omitting documents with non-ASCII paths on Windows. #54351 (Also in 44, 45)Fixed application crash after a large number of IPC messages from renderers. #53398 (Also in 42, 43, 44, 45)
Fixed asar archives in non-ASCII folders failing to load on Linux. #54655 (Also in 44, 45)
Fixed
BrowserWindow.setOpacity(NaN)on macOS returningNaNfromgetOpacity()instead of treating it as fully opaque. #53413Fixed
chrome.tabs.query()returning taburlandtitleto extensions without thetabspermission or host access, aligning withtabs.get. #52597 (Also in 42, 43, 44, 45)Fixed
clipboard.read(),readText()andhas()resolving seconds late on Linux while the app was idle. #54296 (Also in 42, 43, 44, 45)Fixed crashes in
setDisplayMediaRequestHandlerwhen the granted frame had been destroyed or another tab was granted by id. #53665 (Also in 42, 43, 44, 45)Fixed crashes in sharedTexture, service-worker ipcRenderer and utilityProcess.fork() caused by object lifetime bugs. #53259 (Also in 43, 44, 45)
Fixed crashes in the main process when a
webRequest.onBeforeRequestlistener redirected a CORS preflight request, and when callingnet.fetch()with awebRequest-permission extension loaded. #53294 (Also in 43, 44, 45)Fixed crashes when a webContents or parent window is destroyed while other APIs still reference it. #53257 (Also in 43, 44, 45)
Fixed crashes when certain app event handlers call back into Electron synchronously. #53258 (Also in 43, 44, 45)
Fixed Ctrl+Y not yanking text killed with Ctrl+K in text fields on macOS. #53635 (Also in 44, 45)
Fixed default protocol client APIs falsely returning
trueon Windows. #53937 (Also in 43, 44, 45)Fixed
desktopCapturer.getSources()leaving non-resizable windows resizable on macOS. #54360 (Also in 43, 44, 45)Fixed
fs.constants.O_DIRECTORY,O_NOFOLLOWandO_DIRECTholding x86 values on Linux arm64 and armv7l, which made opening a directory fail withEINVAL, and maderequire('trace_events')behave the same on cross-compiled builds as on native ones. #53316 (Also in 42, 43, 44, 45)Fixed
fs.rmSyncfailing to remove read-only files on Windows. #54180 (Also in 42, 43, 44, 45)Fixed
GDK_BACKENDleaking into processes spawned by Electron apps on Linux. #54379 (Also in 43, 44, 45)Fixed GPU shaders compiled by Skia not being cached between launches. #54113 (Also in 44, 45)
Fixed handling of malformed asar archives whose size fields do not match the file length. #55171 (Also in 43, 44, 45)
Fixed helper executables on macOS starting a second app instance when launched without a process type, for example through
child_process.fork()with therunAsNodefuse disabled;fork()now throws in that configuration. #53831 (Also in 44, 45)Fixed hidden windows continuing to render at full frame rate after
setBackgroundThrottling(false)followed bysetBackgroundThrottling(true). #54311 (Also in 44, 45)Fixed inconsistent handling of asar archive paths between the main process and child processes. #55173 (Also in 43, 44, 45)
Fixed interrupted macOS updates leaving a broken app behind. #54842 (Also in 44, 45)
Fixed link-opened windows not using the opener's session and
webPreferences. #55030 (Also in 42, 43, 44, 45)Fixed main process crashes when navigating to
http://accessibility/orhttp://devtools/, when using theLanguageModelAPI from a Worker with a local AI handler registered, when an extension background page usednavigator.mediaDevices, and when callingSerialPort.forget()for a disconnected device. #53305 (Also in 43, 44, 45)Fixed MV3 extension events not arriving to background service workers. #55146 (Also in 43, 44, 45)
Fixed native addons deriving from
node::ObjectWrapaborting during garbage collection on Node.js 24.19.0 and later. #53390 (Also in 42, 43, 44, 45)Fixed
net.fetchandsession.fetchfailing permanently withnet::ERR_FAILEDafter the Network Service process restarts. #54902 (Also in 42, 43, 44, 45)Fixed
net.fetch()/net.request()spending seconds of main-process time buffering large streamed request bodies. #53858 (Also in 44, 45)Fixed non-network Web Worker requests (such as
file://and custom schemes) bypassingprotocol.handle()andwebRequesthandlers. #55119Fixed
pointerLockpermission requests from in-process iframes reporting the parent frame instead of the requesting frame. #54432 (Also in 42, 43, 44, 45)Fixed
process.nextTickand promise callbacks queued inprotocol/webRequesthandlers running at the wrong time. #54292 (Also in 45)Fixed
protocol.registerSourceschemes not applying the same fetch rules asprotocol.handleschemes. #55172 (Also in 44, 45)Fixed
ready-to-shownever firing for some hidden windows on Windows and Linux. #54090 (Also in 43, 44, 45)Fixed renderer crashes during garbage collection inside ShadowRealms. #54840 (Also in 44, 45)
Fixed
session.setPermissionCheckHandlerreceiving the top-level origin and a nullwebContentsforhidandusbchecks made from a subframe. #53656 (Also in 42, 43, 44, 45)Fixed
setCertificateVerifyPrococcasionally not being applied to a request issued concurrently with the first request to a host. #55028 (Also in 42, 43, 44, 45)Fixed
setContentProtection(true)having no effect in Windows remote sessions. #54492 (Also in 44, 45)Fixed
setIgnoreMouseEvents()taking effect late on X11. #54487 (Also in 43, 44, 45)Fixed
setIgnoreMouseEvents(true)being undone by the next resize on X11. #54375 (Also in 43, 44, 45)Added
setIgnoreMouseEventssupport on Wayland.
Fixed several non-functional DevTools integrations: the Security panel's "View certificate" button, Ctrl+wheel zooming inside DevTools, and DevTools keyboard shortcuts (e.g. F8) while the inspected page has focus. #51806 (Also in 43, 44, 45)
Fixed several object lifetime issues in
Debugger,Menu,Tray,Notification,globalShortcut,utilityProcess,ServiceWorkerMain,WebFrameMain,webFrame,sharedTexture,systemPreferences,netLog,MessagePortMain,net.requestandshell.openPath(). #53738 (Also in 44, 45)Fixed
shell.showItemInFolder()on Linux for paths containing#,?or%when the file manager is reached over D-Bus. #54350 (Also in 44, 45)Fixed the default action label on Linux notifications not being localized. #54366 (Also in 43, 44, 45)
Fixed the GPU process crash-looping on Windows when the sandbox cannot read the install folder; the folder is now reported instead. #54382 (Also in 43, 44, 45)
Fixed the PDF viewer failing to save an edited PDF with
NotAllowedError: Third party iframes are not allowed to show a file picker. #53313 (Also in 43, 44, 45)Fixed the tray context menu not working for snap-confined apps because AppArmor blocked the
/org/chromium/DbusMenupath. #54027 (Also in 44, 45)Fixed the zoom level resetting on
file:and other host-less pages after alocation.hashchange. #54381 (Also in 43, 44, 45)Fixed
Trayicons not appearing when running inside Flatpak or Snap sandboxes on Linux. #53641 (Also in 44, 45)Fixed typing not working after closing an
alert()orconfirm()on Windows. #54380 (Also in 43, 44, 45)Fixed
utilityProcessdropping messages posted withprocess.parentPort.postMessage()right before the process exits. #54924 (Also in 42, 43, 45)Fixed
utilityProcessdroppingstdout/stderroutput that the child wrote immediately before exiting. #54262 (Also in 42, 43, 44, 45)Fixed V8 code caching for https scripts loaded by
file://and custom-scheme pages. #53676 (Also in 44, 45)Fixed visual zoom limits resetting on navigation and not applying to webviews. #54373 (Also in 43, 44, 45)
Fixed WebAssembly modules loaded from the code cache crashing or throwing
RuntimeError: unreachableafter updating between certain patch releases. #54234 (Also in 42, 43, 44, 45)Fixed
webContentsemittingunresponsiveright after the system wakes from sleep on Windows, and emittingresponsivewhen a hung window was hidden rather than when it recovered. #53529 (Also in 44, 45)Fixed
webContents.capturePage()on offscreen windows returning an image resampled to the display's scale factor instead of rendered at the window'soffscreen.deviceScaleFactor. #53810 (Also in 43, 44, 45)Fixed
webContents.executeJavaScript()withuserGestureset not granting browser-side user activation, which could make activation-gated APIs fail. #54923 (Also in 45)Fixed
webContents.on(),removeListener()andremoveAllListeners()throwing "Object has been destroyed" forconsole-messagelisteners after the WebContents was destroyed. #53493 (Also in 42, 43, 44, 45)Fixed
webview.findInPage()hanging when the host page also has an iframe. #54508 (Also in 43, 44, 45)Fixed
win.isFullScreen()being stale in fullscreen events on Windows. #54990 (Also in 44, 45)Fixed
win.setEnabled(false)and modal child windows not blocking input on Wayland. #54427 (Also in 43, 44, 45)Fixed Window Controls Overlay CSS environment variables and
navigator.windowControlsOverlaynot being populated forWebContentsViews in aBaseWindow. #53639 (Also in 44, 45)Fixed window state not being persisted when a window entered or left fullscreen, or was maximized or unmaximized, without also being moved or resized. #53566 (Also in 44, 45)
Fixed Windows tray icons that lost their tooltip when explorer restarted. #54624
Fixed zoom in/out getting stuck after zooming past the 25%-500% range. #54374 (Also in 43, 44, 45)
Fixed
setVisualZoomLevelLimits()shrinking pages when the minimum is under 1.
getUserMediawithchromeMediaSource: 'desktop'no longer accepts WebContents source ids; usechromeMediaSource: 'tab'withwebContents.getMediaSourceId()orsetDisplayMediaRequestHandlerto capture a WebContents. #53687 (Also in 42, 43, 44, 45)Internal
<webview>,window.close()andexecuteJavaScriptreply IPCs are validated against the sending frame. #53684 (Also in 42, 43, 44, 45)nodeIntegrationInWorkernow applies only to workers created by frames that themselves have Node integration; enablenodeIntegrationInSubFramesto keep Node in workers created by subframes. #53686 (Also in 42, 43, 44, 45)openExternalpermission requests started by a frame that has since gone away are attributed to that frame's origin rather than to the navigating page. #53682 (Also in 42, 43, 44, 45)pointerLockandkeyboardLockpermission requests now report the requesting frame, andexecCommand('paste')requires user activation in the frame that calls it. #53664 (Also in 42, 43, 44, 45)Window geometry APIs now reject non-finite and out-of-range values. #54216
Performance Improvements
Fixed
BaseWindow.setBounds()throwing when given a partial bounds object. #54333Improved the performance of
app.getName(),app.name,app.getVersion()andapp.getAppPath().
Fixed the app becoming unresponsive when a page has a very large number of
app-regiondraggable elements. #53595 (Also in 43, 44, 45)Improved cold-launch time on macOS by prefetching Electron's framework files. #54515 (Also in 45)
Improved the performance of APIs that return rectangles, sizes, points and display objects. #54207 (Also in 44, 45)
Improved the performance of building and showing menus. #53876
Improved the performance of
fsoperations andrequire()on files inside asar archives. #53852 (Also in 44, 45)Improved the performance of
session.getUserAgent(). #54206 (Also in 44, 45)Improved throughput of responses that
protocol.handlehandlers return straight fromnet.fetch. #52953 (Also in 44, 45)Made sandboxed renderers without a preload script start faster. #53972
Reduced sandboxed renderer startup work for preload scripts that do not use
Buffer. #53855 (Also in 45)Reduced the cost of calling native methods and properties on
BrowserWindow,BaseWindow,WebContents,WebFrameMain,SessionandViewfrom JavaScript. #54331 (Also in 45)
Other Changes
Deprecated the synchronous
safeStorage.isEncryptionAvailable(),safeStorage.encryptString()andsafeStorage.decryptString()in favor ofisAsyncEncryptionAvailable(),encryptStringAsync()anddecryptStringAsync(). #53670 (Also in 45)Electron's internal JavaScript bundles are no longer listed in
require('module').builtinModulesor loadable throughprocess.getBuiltinModule(). #53547 (Also in 45)Made sandboxed preload scripts start faster; Electron no longer evaluates a JavaScript bundle of its own in sandboxed renderers unless
webviewTagis enabled. #53974Refactored mouse forwarding on Windows to fix
setIgnoreMouseEvents(true, { forward: true })related issues. #52633 (Also in 44, 45)Removed the no-op
enableWebSQLweb preference from the documentation and TypeScript definitions. #54229Updated Chromium to 158.0.8114.0. #55143
Updated Node.js to v24.22.1. #55164