v44.0.0
Breaking Changes📦 electronView on GitHub →
⚠ 8 breaking✨ 12 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
- Update macOS to version 13 (Ventura) or later if you need to run Electron v44.0.0 and higher.
- If your application relies on 32-bit builds (Windows ia32 or Linux armv7l), migrate to 64-bit builds (x64 or arm64).
- 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.
- If your application needs to handle client certificate requests, implement the select-client-certificate event for net.request and net.fetch.
- 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
net.requestnet.fetchapp.setLoginItemSettingsapp.getLoginItemSettingsNotificationprocess.getSystemMemoryInfonet.WebSocketwebContents.setZoomModewebContents.getZoomModewebContents.zoomModewebFrameMain.printToPDFMenuItemwin.setOpacitywebContents.caretBrowsingEnablednativeImagewebContents.debuggerwebContents.setDevToolsWebContentsBrowserWindow.unmaximizeBrowserWindow.restorefs.readdirfs.readdirSyncfs.globfs.globSyncDirent.parentPathProtocolResponse.url