Change8

v45.0.0-alpha.2

Breaking Changes
📦 electronView on GitHub →
1 breaking16 features🐛 10 fixes🔧 36 symbols

Summary

This alpha release introduces several new APIs for passkey support, web frame printing, window state management, and improved clipboard functionality. It also includes numerous bug fixes for various platforms and modules.

⚠️ Breaking Changes

  • Opening a packed file for writing within an ASAR archive now fails with an EACCES error. This is a change in behavior to prevent accidental modification of packed files.

Migration Steps

  1. If you previously relied on sharing the opener's process for `window.open()` children with differing sandbox states, you will now need to explicitly set `sandbox: false` in `setWindowOpenHandler` to maintain that behavior.

✨ New Features

  • Added `app.configureWebAuthn()` API for iCloud Keychain passkey support on macOS, integrating with `ASAuthorizationController` for native passkey UI.
  • 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 a server requests one.
  • 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 docks/taskbars 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 delta updates.
  • fs module functions (`fs.open`, `fs.createReadStream`, `fs.copyFile`, `fs.cp`, etc.) now read files inside ASAR archives directly from the archive instead of extracting temporary copies. `fs.opendir` and `fs.readlink` now work on archives.

🐛 Bug 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.
  • 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 operation 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 whose DPI differs from the primary.
  • 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, and when native modules use napi async work or thread-safe functions from such windows and frames.
  • Fixed `app.disableHardwareAcceleration()` not fully disabling GPU hardware usage on Windows starting from Electron 38.

Affected Symbols