npm electron 45.0.0-alpha.1
electron v45.0.0-alpha.1

4 hours ago

Note: This is an alpha release. Please file new issues for any bugs you find in it.

This release is published to npm under the alpha tag and can be installed via npm install electron@alpha, or npm install electron@45.0.0-alpha.1.

Release Notes for v45.0.0-alpha.1

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)

Don't miss a new electron release

NewReleases is sending notifications on new releases.