Electron v45.0.0-alpha.1

Latest Pre Release
npm
npm install --save-dev electron@45.0.0-alpha.1
yarn
yarn add --dev electron@45.0.0-alpha.1
Google ChromeChromium
154.0.8025.0
Node.jsNode.js
24.19.0
V8V8
15.4.60

Release Notes

Features

  • Added app.configureWebAuthn() API to enable iCloud Keychain passkey support on macOS. When enabled, navigator.credentials.create() and .get() present Apple's native passkey UI via ASAuthorizationController. #51563

  • Added available to process.getSystemMemoryInfo() on Linux, exposing proc/meminfo MemAvailable. #52299 (Also in 42, 43, 44)

  • Added disableWakeLocks option to WebPreferences. #52342

  • Added getIsolatedWorlds method and isolated-world-created event for webFrame to enable discovery of isolated worlds. #50633

  • Added select-client-certificate event support for net.request and net.fetch; requests to servers requesting a client certificate no longer fail with ERR_SSL_CLIENT_AUTH_CERT_NEEDED, and applications can now select a certificate to present. #52162 (Also in 44)

  • Added webFrameMain.printToPDF() to allow printing individual frames to PDF from the main process. #52439 (Also in 42, 43, 44)

  • Added a Save/Restore Window State API for cross-platform use. #51510 (Also in 44)

  • Added a badge property to MenuItem on macOS 14+ for showing a count or custom text badge next to a menu item's label. #50805 (Also in 44)

  • Added support for the Prompt API via the new localAIHandler module in UtilityProcess. #50659

  • Added webContents.caretBrowsingEnabled for toggling caret browsing in a WebContents. #52696 (Also in 44)

  • Clipboard module is now aligned with the W3C Clipboard API. #51707 (Also in 44)

  • Fixed an issue where getDisplayMedia({ audio: { restrictOwnAudio: true } }) was ignored in setDisplayMediaRequestHandler, causing loopback audio to include local app playback. #52455 (Also in 43, 44)

  • Frameless windows on Linux now use system-themed titlebar icons for Window Controls Overlay (WCO). #52461 (Also in 44)

  • Restored app.setBadgeCount and win.setProgressBar for Linux. These APIs now support any dock or taskbar which implements the LauncherEntry D-Bus API, and they no longer require libunity. #52739 (Also in 44)

  • The macOS autoUpdater now streams update downloads to disk, resumes an interrupted download on the next check instead of starting over, and applies a binary delta when the update feed offers one for the running version. #52820

  • fs.open, fs.createReadStream, fs.copyFile, fs.cp and friends now read files inside ASAR archives directly from the archive instead of extracting a temporary copy; fs.opendir and fs.readlink work on archives; opening a packed file for writing fails with EACCES. #52833

Fixes

  • A window.open() child whose sandbox state differs from its opener's renderer process is now created in its own process with no opener relationship instead of silently sharing the opener's process; set sandbox: false in setWindowOpenHandler to keep sharing an unsandboxed opener's process. #52472

  • Fixed DevTools device metrics overrides persisting indefinitely when a remote debugging client disconnected without clearing them. #52254 (Also in 42, 43, 44)

  • Fixed DevTools popup and context menus not appearing when DevTools is hosted in a custom window via webContents.setDevToolsWebContents(). #52205 (Also in 42, 43, 44)

  • Fixed WebAuthn platform passkey requests on macOS hanging until the request timeout when an operation failed, and a potential crash when selecting between Touch ID and platform passkeys. #52682

  • Fixed Window Controls Overlay caption buttons not rendering on Linux. #52577 (Also in 44)

  • Fixed BrowserWindow.unmaximize() and restore() having no effect on Wayland when the window was maximized immediately after creation. #53063 (Also in 42, 44)

  • Fixed BrowserWindow size corruption on Windows when created with explicit x/y on a secondary monitor whose DPI differs from the primary. #51603 (Also in 42, 43, 44)

  • Fixed Dirent.parentPath being undefined for fs.readdir, fs.readdirSync, fs.glob, and fs.globSync with withFileTypes: true inside asar archives. #51845 (Also in 42, 43, 44)

  • Fixed Uncaught illegal access errors and renderer crashes when closing a same-process child window or removing an iframe with nodeIntegrationInSubFrames enabled, and when native modules use napi async work or thread-safe functions from such windows and frames. #52964 (Also in 42, 43, 44)

  • Fixed app.disableHardwareAcceleration() not fully disabling GPU hardware usage on Windows starting from Electron 38. #51817 (Also in 41, 42, 43, 44)

  • Fixed dialog.showOpenDialog/dialog.showSaveDialog opening at an unusable location on Linux when defaultPath is a bare filename without a directory. #52243 (Also in 42, 43, 44)

  • Fixed globalShortcut not working on GNOME Wayland by enabling Chromium's GlobalShortcutsPortalPreferredTrigger feature by default on Linux. #52221 (Also in 43)

  • Fixed matchMedia('(display-mode: ...)') returning browser for window-controls-overlay, frameless, and fullscreen BrowserWindows. #51396

  • Fixed registerFileProtocol and registerHttpProtocol returning readable responses to cross-origin no-cors fetches; they now return opaque responses like protocol.handle. #52822 (Also in 41, 42, 43, 44)

  • Fixed select-hid-device presenting HID devices that could not be granted, which caused navigator.hid.requestDevice() to resolve with no device. #52467 (Also in 44)

  • Fixed webContents.executeJavaScriptInIsolatedWorld resolving with undefined when worldId was not an integer. #53205 (Also in 43, 44)

  • Fixed webContents.print() honoring printBackground, duplexMode, and printer default duplex settings. #52279 (Also in 42, 43, 44)

  • Fixed a UAF with protocol.registerStreamProtocol when an error is emitted during a read. #52474 (Also in 41, 42, 43, 44)

  • Fixed a WebContentsView staying blank after its window is shown when setBackgroundThrottling(false) was called while the window was hidden. #52844 (Also in 42, 43, 44)

  • Fixed a browser process crash that could occur during Windows logoff, shutdown, or restart. #52604 (Also in 42, 43, 44)

  • Fixed a browser-process crash (ValidateIntegrityOrDie) and spurious preload ENOENT errors when an app's app.asar is replaced on disk (e.g. by an updater or MDM software) while the app is running. #52283 (Also in 42, 43, 44)

  • Fixed a crash in systemPreferences.promptTouchID(reason) when an invalid reason value is passed. #52764 (Also in 42, 43, 44)

  • Fixed a crash on Linux when the D-Bus session bus disconnected while the app was running, such as at logout or when dbus is restarted. #53022 (Also in 42, 43, 44)

  • Fixed a crash on Windows when V8 posted a delayed worker task during shutdown. #52956 (Also in 42, 43, 44)

  • Fixed a crash on macOS when a WebAuthn Touch ID prompt was requested while no locale resources were loaded. #53185 (Also in 43, 44)

  • Fixed a crash on macOS when a notification's icon could not be attached; the notification is now shown without the icon. #53131 (Also in 42, 43, 44)

  • Fixed a crash report when the X server or Wayland compositor exits while an app is running. #52603 (Also in 42, 43, 44)

  • Fixed a crash that could occur when closing DevTools while the host WebContents was being destroyed. #52166 (Also in 41, 42, 43, 44)

  • Fixed a crash when accessing frame details during cross-origin navigation. #53102 (Also in 44)

  • Fixed a crash when quickly switching menus while the app is under heavy load. #52598 (Also in 42, 43, 44)

  • Fixed a crash when resolving a path inside a malformed ASAR archive that contains cyclic link entries. #52825 (Also in 42, 43, 44)

  • Fixed a crash when showing Linux message boxes while another Linux UI implementation was active. #52238 (Also in 42, 43, 44)

  • Fixed a crash with app.setLoginItemSettings if a non-UTF8 service name is used. #52773 (Also in 42, 43, 44)

  • Fixed a graphical glitch on Linux where thin borders appeared past the drop shadows on frameless windows when multiple windows were created. #52584 (Also in 42, 43, 44)

  • Fixed a memory leak when creating BrowserWindows. #52092 (Also in 42, 43, 44)

  • Fixed a possible crash (SIGABRT) during process exit when the process had loaded tls/https shortly before exiting, affecting app.exit() before ready and short-lived ELECTRON_RUN_AS_NODE / child_process.fork() scripts. #52856 (Also in 42, 43, 44)

  • Fixed a possible main process crash at quit when a session was created from JavaScript that runs during shutdown. #52836 (Also in 42, 43, 44)

  • Fixed a potential crash in contentTracing.stopRecording() when the trace file could not be written to the requested path. #52793 (Also in 42, 43, 44)

  • Fixed a potential crash when notifying user activation before the primary main frame was live. #52215 (Also in 42, 43, 44)

  • Fixed a potential crash when using menu.popup with a frame from an offscreen rendered window. #53242

  • Fixed a rare crash in the main process when DevTools were opened and a garbage collection ran before the DevTools frontend finished loading. #52847 (Also in 42, 43, 44)

  • Fixed a regression preventing from transparent frameless windows from being resized on Linux. #52740 (Also in 43, 44)

  • Fixed a regression where a window created with a custom title can show an empty title after using back/forward navigation. #53180 (Also in 42, 43, 44)

  • Fixed a renderer crash when a page calls SpeechRecognition.available() or SpeechRecognition.install() with processLocally. #52955 (Also in 42, 43, 44)

  • Fixed a renderer crash when an array with a throwing property getter is passed across contextBridge, and several main/utility-process crashes when option objects passed to Electron APIs contain throwing accessors or Proxy traps. #53069

  • Fixed a window being marked hidden and background-throttled on macOS when covered by a transparent or click-through window. #52365 (Also in 42, 43, 44)

  • Fixed an npm install failure with no recovery path when the OS blocked the native zip extractor from loading (for example, Windows Smart App Control). #52748 (Also in 43, 44)

  • Fixed an issue on Windows where the app process could fail to exit after app.quit() while a shell.openExternal() or shell.openPath() call was still waiting on a system "Open with" dialog. #52888 (Also in 41, 43, 44)

  • Fixed an issue where a JavaScript out-of-memory crash could be reported from inside the crash-key handler instead of at the out-of-memory site. #52591 (Also in 42, 43, 44)

  • Fixed an issue where loading ICO files from ASAR archives on Windows left temporary icon files behind. #52424 (Also in 42, 43, 44)

  • Fixed an issue where pages loaded in a detached WebContentsView wouldn't see the correct window size. #53031 (Also in 42, 43, 44)

  • Fixed an issue where some values passed into requestSingleInstanceLock could result in a crash. #52025 (Also in 42, 43, 44)

  • Fixed crash in sharedTexture module when GPU context becomes unavailable. #49518 (Also in 42, 43, 44)

  • Fixed crash triggered by replacing an open application menu. #52248 (Also in 41, 42, 43, 44)

  • Fixed custom V8 snapshots (electron-mksnapshot, and the loadBrowserProcessSpecificV8Snapshot fuse) having no effect in the main process on macOS arm64, Linux x64 and Windows x64. #52872 (Also in 42, 43, 44)

  • Fixed downloading files that live inside an asar archive, including saving a packed PDF from the built-in PDF viewer. #52808 (Also in 42, 43, 44)

  • Fixed region-qualified --lang values such as de-DE loading no locale resources on macOS, which left localized strings empty and could crash WebAuthn Touch ID prompts. #53184 (Also in 42, 43, 44)

  • Fixed spellcheck not initializing on Linux when the dictionary was already cached from a previous run. #52712 (Also in 44)

  • Fixed the GPU process being terminated in AppX/MSIX packaged apps on Windows when WebGPU fell back to SwiftShader. #53174 (Also in 43, 44)

  • Fixed the built-in PDF viewer not rendering documents in in-memory sessions (partitions without the persist: prefix). #52810 (Also in 42, 43, 44)

  • Fixed the primary instance being killed or receiving truncated arguments when a second instance passed a very long command line or large additionalData to app.requestSingleInstanceLock(). #52628 (Also in 42, 43, 44)

  • Fixed unnecessary autofill popup creation for fields without datalist suggestions, which could cause input latency on macOS. #52262 (Also in 41, 42, 43, 44)

  • Fixed utility process crashes at exit on Windows 11 24H2 and later. #53038 (Also in 42, 43, 44)

  • Fixed windows native message boxes being dismissed by other applications using invalid button ID. #52812 (Also in 43, 44)

  • Fixed windows opened by a sandboxed top-level frame not inheriting the opener's sandbox restrictions. #52841 (Also in 41, 42, 43, 44)

  • Fixed webContents.print() returning "Invalid printer settings" when print options are provided. #52367 (Also in 43, 44)

  • Fixeed document title updates when using back/forward navigation using the same document without utilizing browserWindow.setTitle(). #52089 (Also in 42, 43, 44)

  • Screen, window and tab capture requests are now reported to setPermissionRequestHandler as display-capture instead of media; a handler that allows only media must also allow display-capture to keep screen sharing working. #52824

  • <webview> and window.open now inherit nodeIntegrationInWorker from the embedder, consistent with the other Node and sandbox preferences. #52823 (Also in 41, 42, 43, 44)

Other Changes

  • Fixed a 1-in-200 chance per renderer process on Windows of scripts on the first page load being compiled without their V8 code cache. #52791 (Also in 42, 43, 44)

  • Fixed a stall of tens of milliseconds while creating the first BrowserWindow on Linux.

    • Improved the performance of file lookups inside ASAR archives and of large files served from them to the renderer.

    • Improved the performance of calls through contextBridge-exposed APIs.

    • Improved the performance of Buffer.allocUnsafe() and of large file reads in the main and utility processes.

    • Reduced the main-thread cost of sending large values through ipcRenderer, ipcMain handlers and webContents.send. #52923 (Also in 42, 43, 44)

  • Improved application startup time on Linux by skipping GDK's OpenGL probe and loading FontConfig off the main thread during toolkit initialization. #53070 (Also in 43, 44)

  • Improved startup time of utilityProcess.fork(), child_process.fork() / ELECTRON_RUN_AS_NODE child processes and Node.js-enabled renderers. #52873 (Also in 42, 43, 44)

  • Improved the error message when an asar integrity check fails to name the entry that failed. #52600 (Also in 42, 43, 44)

  • Linux arm64, Windows arm64 and macOS x64 builds now start the main process from the embedded Node.js startup snapshot like the other platforms, improving startup time. #52874 (Also in 42, 43, 44)

  • Page resources, fetch() calls and file:// loads in renderers no longer wait for the main process to be idle when no webRequest listeners or protocol interceptors are registered. #53115 (Also in 42, 43, 44)

  • Reduced idle main-process CPU wakeups caused by Node.js timers and immediates. #52862 (Also in 43, 44)

  • Reduced the macOS distribution size by shipping only the locale strings that Electron can actually use. #52290

  • Renderer network requests no longer waited on the main process when the session's webRequest listeners only observe requests (onCompleted, onErrorOccurred, onSendHeaders, onBeforeRedirect, onResponseStarted) or are filtered to other resource types. #53204 (Also in 44)

  • The first sandboxed BrowserWindow now starts in a renderer process launched ahead of time when the default session already exists, shortening the time from window creation to the page's first script; apps that open many windows can keep a spare renderer warm at all times with --enable-features=SpareRendererForSitePerProcess. #53116 (Also in 44)

  • The non-functional dummy libEGL.so and libGLESv2.so files are no longer included in the Linux distribution, now that ANGLE is statically linked. #52226 (Also in 44)

  • Updated Chromium to 154.0.8025.0. #53206

  • Updated Node.js to v24.19.0. #52638

Documentation

Unknown

  • None (reverts an unreleased change). #52323

  • Removed 32-bit builds (Windows ia32 and Linux armv7l). Electron is now published only for 64-bit (x64 and arm64) platforms. #51816 (Also in 44)

  • Removed openAsHidden option from app.setLoginItemSettings().

    • Removed openAsHidden, wasOpenedAsHidden and restoreState fields from return value of app.getLoginItemSettings().

    • Fixed potential deadlock inside app.getLoginItemSettings() on macOS. #52351 (Also in 44)