Change8

v44.0.0

Breaking Changes
📦 electronView on GitHub →
8 breaking12 features🐛 10 fixes🔧 25 symbols

Summary

This release upgrades Chromium to v152 and Node.js to v24, introducing several breaking changes including dropped OS support and API modifications. New features include enhanced WebSocket support, per-WebContents zoom control, and a cross-platform window state API.

⚠️ Breaking Changes

  • Removed support for the Unity desktop environment on Linux.
  • Requests to servers requesting a client certificate no longer fail with ERR_SSL_CLIENT_AUTH_CERT_NEEDED due to added select-client-certificate event support for net.request and net.fetch. Applications can now select a certificate to present.
  • macOS 12 (Monterey) is no longer supported. macOS 13 (Ventura) or later is required to run Electron v44.0.0 and higher.
  • ANGLE is now statically linked into the Electron binary on all platforms, and libEGL.(so|dylib|dll) and libGLESv2.(so|dylib|dll) are no longer shipped in the distribution.
  • net.request now rejects requests where Sec-Fetch-Dest is document, frame, iframe, or fencedframe unless Sec-Fetch-Mode is also set to navigate.
  • Removed 32-bit builds (Windows ia32 and Linux armv7l). Electron is now published only for 64-bit (x64 and arm64) platforms.
  • The clipboard module is no longer exposed to renderer processes, aligning with the W3C Clipboard API.
  • Removed the openAsHidden option from app.setLoginItemSettings() and the openAsHidden, wasOpenedAsHidden, and restoreState fields from the return value of app.getLoginItemSettings() as they only worked on macOS 12 and below.

Migration Steps

  1. Update macOS to version 13 (Ventura) or later if you need to run Electron v44.0.0 and higher.
  2. If your application relies on 32-bit builds (Windows ia32 or Linux armv7l), migrate to 64-bit builds (x64 or arm64).
  3. If your application previously used the openAsHidden option in app.setLoginItemSettings() or related fields in app.getLoginItemSettings(), remove them as they are no longer supported.
  4. If your application needs to handle client certificate requests, implement the select-client-certificate event for net.request and net.fetch.
  5. Ensure that requests made with net.request adhere to the Sec-Fetch-Mode when Sec-Fetch-Dest is document, frame, iframe, or fencedframe.

✨ New Features

  • Added Notification.remove(), removeAll(), and removeGroup() static methods for macOS.
  • Added 'available' to process.getSystemMemoryInfo() on Linux, exposing proc/meminfo MemAvailable.
  • Added net.WebSocket, a WHATWG-compatible WebSocket client for the main process that routes through Chromium's network stack.
  • Added webContents.setZoomMode(), webContents.getZoomMode(), and webContents.zoomMode for per-WebContents zoom control.
  • 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 win.setOpacity(opacity) on Linux.
  • Added webContents.caretBrowsingEnabled for toggling caret browsing in a WebContents.
  • Frameless windows on Linux now use system-themed titlebar icons for Window Controls Overlay (WCO).
  • Frameless windows on Linux now have rounded corners by default, which can be disabled on all platforms by setting roundedCorners: false on the window.
  • Restored app.setBadgeCount and win.setProgressBar for Linux, now supporting any dock or taskbar which implements the LauncherEntry D-Bus API and no longer requiring libunity.

🐛 Bug Fixes

  • NativeImage passed an image with a color profile will now have its pixel values normalized to SRGB, ensuring visually identical images after color space application receive similar pixel values when converted to a nativeImage.
  • Fixed DevTools Network panel missing most requests after navigating when webContents.debugger is attached.
  • 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 Window Controls Overlay caption buttons not rendering on Linux.
  • Fixed Windows edge case in NativeWindowViews::MoveBehindTaskBarIfNeeded().
  • 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 ProtocolResponse.url requests being made through the default session instead of the session the...

Affected Symbols