Change8

v45.0.0-alpha.1

Breaking Changes
📦 electronView on GitHub →
2 breaking16 features🐛 9 fixes🔧 38 symbols

Summary

This alpha release introduces new APIs for WebAuthn, memory info, wake locks, isolated worlds, client certificates, PDF printing, window state saving, menu badges, and prompt handling. It also includes significant bug fixes and improvements to file system operations within ASAR archives and macOS auto-updates.

⚠️ Breaking Changes

  • Opening a packed file for writing with `fs.open`, `fs.createReadStream`, `fs.copyFile`, `fs.cp` and friends now fails with `EACCES` due to direct reading from ASAR archives without extraction.
  • 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. To keep sharing an unsandboxed opener's process, set `sandbox: false` in `setWindowOpenHandler`.

Migration Steps

  1. If you were relying on child `window.open()` windows sharing the opener's process when their sandbox states differed, set `sandbox: false` in `setWindowOpenHandler` to maintain that behavior.

✨ New Features

  • Added `app.configureWebAuthn()` API for iCloud Keychain passkey support on macOS, enabling `navigator.credentials.create()` and `.get()` to use Apple's native passkey UI via `ASAuthorizationController`.
  • Added `available` to `process.getSystemMemoryInfo()` on Linux, exposing `proc/meminfo` MemAvailable.
  • Added `disableWakeLocks` option to WebPreferences.
  • Added `getIsolatedWorlds` method and `isolated-world-created` event for `webFrame` to enable discovery of isolated worlds.
  • Added `select-client-certificate` event support for `net.request` and `net.fetch`, allowing applications to select a certificate when servers request one, preventing `ERR_SSL_CLIENT_AUTH_CERT_NEEDED` errors.
  • Added `webFrameMain.printToPDF()` to allow printing individual frames to PDF from the main process.
  • Added a Save/Restore Window State API for cross-platform use.
  • Added a `badge` property to `MenuItem` on macOS 14+ for showing a count or custom text badge next to a menu item's label.
  • Added support for the Prompt API via the new `localAIHandler` module in UtilityProcess.
  • Added `webContents.caretBrowsingEnabled` for toggling caret browsing in a WebContents.
  • Clipboard module is now aligned with the W3C Clipboard API.
  • Fixed an issue where `getDisplayMedia({ audio: { restrictOwnAudio: true } })` was ignored in `setDisplayMediaRequestHandler`, causing loopback audio to include local app playback.
  • Frameless windows on Linux now use system-themed titlebar icons for Window Controls Overlay (WCO).
  • Restored `app.setBadgeCount` and `win.setProgressBar` for Linux, now supporting any dock or taskbar implementing the LauncherEntry D-Bus API and no longer requiring `libunity`.
  • The macOS `autoUpdater` now streams update downloads to disk, resumes interrupted downloads, and applies binary deltas when available.
  • fs APIs (`fs.open`, `fs.createReadStream`, `fs.copyFile`, `fs.cp`, `fs.opendir`, `fs.readlink`) now work directly on files inside ASAR archives without extraction, except for writing which fails with `EACCES`.

🐛 Bug Fixes

  • Fixed DevTools device metrics overrides persisting indefinitely when a remote debugging client disconnected without clearing them.
  • Fixed DevTools popup and context menus not appearing when DevTools is hosted in a custom window via `webContents.setDevToolsWebContents()`.
  • Fixed WebAuthn platform passkey requests on macOS hanging until timeout on failure, and a potential crash when selecting between Touch ID and platform passkeys.
  • Fixed Window Controls Overlay caption buttons not rendering on Linux.
  • Fixed `BrowserWindow.unmaximize()` and `restore()` having no effect on Wayland when the window was maximized immediately after creation.
  • Fixed `BrowserWindow` size corruption on Windows when created with explicit `x`/`y` on a secondary monitor with different DPI.
  • Fixed `Dirent.parentPath` being `undefined` for `fs.readdir`, `fs.readdirSync`, `fs.glob`, and `fs.globSync` with `withFileTypes: true` inside asar archives.
  • Fixed `Uncaught illegal access` errors and renderer crashes when closing a same-process child window or removing an iframe with `nodeIntegrationInSubFrames` enabled, especially when native modules use napi async work or thread-safe functions.
  • Fixed `app.disableHardwareAcceleration()` not fully disabling GPU hardware usage on Windows starting from Electron 38.

Affected Symbols