Electron v42.0.0

Latest Stable
npm
npm install --save-dev electron@42.0.0
yarn
yarn add --dev electron@42.0.0
Google ChromeChromium
148.0.7778.96
Node.jsNode.js
24.15.0
V8V8
14.8.178.14

Release Notes

Stack Upgrades

Breaking Changes

Behavior Changed: macOS notifications now use UNNotification API

Electron has migrated from the deprecated NSUserNotification API to the UNNotification API on macOS. The new API requires that an application be code-signed in order for notifications to be displayed. If an application is not code-signed, notifications will emit a failed event on the Notification object. #47817

Behavior Changed: electron no longer downloads itself via postinstall script

Previously, the electron npm package would download the Electron binary from the repository's GitHub Releases in the package's postinstall script. With recent supply chain security attacks against the npm ecosystem with postinstall scripts as a common attack vector, Electron will now download itself dynamically the first time that its main bin script is run (e.g. via npx electron). See RFC #22 for more context. #49328

Behavior Changed: Offscreen rendering default device scale factor

Previously, OSR used the primary display's device scale factor for rendering. Starting from Electron 42, the default changes to a constant value of 1.0 for more consistent output sizes. Use webPreferences.offscreen.deviceScaleFactor to specify a custom value. #49683

Removed: quotas object from Session.clearStorageData(options)

When calling Session.clearStorageData(options), the options.quotas object is no longer supported because it has been removed from upstream Chromium.

Removed: ELECTRON_SKIP_BINARY_DOWNLOAD environment variable

This environment variable is no longer supported due to the new lazy download behavior. #50459

Features

Additions

  • Added app.configureWebAuthn({ touchID: { keychainAccessGroup } }) to enable the WebAuthn Touch ID platform authenticator on macOS. Also introduces a select-webauthn-account session event for discoverable-credential selection. #51411 (Also in 41)

  • Added Notification.getHistory() for macOS. #51123

  • Added Notification.handleActivation(callback) API on Windows to handle notification clicks, replies, and action buttons - including when the app is launched from a notification (cold start). #49919

  • Added ELECTRON_INSTALL_PLATFORM and ELECTRON_INSTALL_ARCH variables to install binaries from other platforms and architectures. #49981

  • Added allowExtensions privilege to protocol.registerSchemesAsPrivileged() to enable Chrome extensions on custom protocols. #50530 (Also in 40, 41)

  • Added app.isActive() to check if the app is the active/foreground application (macOS only). #49622

  • Added globalShortcut.setSuspended() and globalShortcut.isSuspended() methods to temporarily suspend and resume global shortcut handling. #50777

  • Added id and groupId options to the Notification constructor on macOS. id allows custom identifiers for notifications, and groupId visually groups notifications together in Notification Center. #50304

  • Added webContents.getOrCreateDevToolsTargetId(). #49733 (Also in 41)

  • Added a disclaim option to the UtilityProcess API to allow for TCC disclaiming on macOS. #49128 (Also in 39, 40, 41)

  • Added a reason property to the Notification 'closed' event on Windows to allow developers to know the reason the Notification was dismissed. #49913 (Also in 40, 41)

  • Added an usePrinterDefaultPageSize option to webContents.print() to allow using the printer's default page size. #49523 (Also in 41)

  • Added animation functionality to view.setBounds and added view.setBackgroundBlur. #48812

  • Added id, groupId, and groupTitle support for Windows notifications. #50895

  • Added nativeTheme.shouldDifferentiateWithoutColor on macOS. #50409 (Also in 41)

  • Added support for MSIX auto-updating. #49230 (Also in 39, 40, 41)

  • Added support for --experimental-transform-types. #49711 (Also in 39, 40, 41)

  • Added support for long-animation-frame script attribution (via --enable-features=AlwaysLogLOAFURL). #49706 (Also in 39, 40, 41)

  • Added support for heap profiling in contentTracing. #51162 (Also in 41)

  • Added support for importing shared textures using the nv16 pixel format. #51187

  • Added support for importing shared textures using the p010le 10-bit YUV pixel format. #49272

  • Added support for several more safeStorage backends via new asynchronous functionality in safeStorage. #49054

  • Added support for the urgency option in Notifications on Windows. #50383 (Also in 41)

  • Added the ability to capture JS stack trace on renderer OOM. #50911

  • Added the ability to disable auto-focusing of WebContents on navigation using webPreferences.focusOnNavigation. #49425 (Also in 40, 41)

  • Electron now downloads its binary into node_modules dynamically on first launch instead of running a postinstall script. Added the install-electron script to manually trigger the download as well. #49328

  • Enabled wasm trap handlers behind WasmTrapHandlers fuse. #48983 (Also in 41)

  • Extended actions support for Windows notifications to include buttons, select dropdowns, and replies. #48132 (Also in 40, 41)

  • On Wayland (Linux), frameless windows now have GTK drop shadows and extended resize boundaries. To create fully frameless windows with no decorations, set hasShadow: false in the window constructor. #49295 (Also in 41)

  • Replaced deprecated NSUserNotification with User Notifications. #47817

Fixes

  • Added additional ASAR support to additional fs copy methods. #50285 (Also in 39, 40, 41)

  • Added crash keys to diagnose power monitor shutdown crash on arm64 windows. #51205

  • Added missing metadata fields to contentTracing traces. #51007 (Also in 41)

  • Added validation to protocol client methods to reject protocol names that do not conform to the RFC 3986 URI scheme grammar. #50141 (Also in 38, 39, 40, 41)

  • Addressed upstream Chromium shift to enable CoreAudio Tap API for audio capture used in electron's desktopCapturer (macOS). #49717 (Also in 39, 40, 41)

  • Allow dynamically updating menu item labels, sublabels, and icons. #49678 (Also in 40, 41)

  • BrowserWindow now enforces min/max size constraints on window creation, even if they conflict with the requested width and height. #50754 (Also in 41)

  • Changed the kResizeThreshold to trigger the resize on corners. #51001 (Also in 41)

  • Fixed AllowUniversalAccessFromFileURLs not being properly constrained to file: origins in agent cluster key assignment. #51404

  • Fixed corsEnabled: false protocol handlers incorrectly working across protocols. #51269 (Also in 39, 40, 41)

  • Fixed printToPDF queue not resetting after a rejection. #51222 (Also in 40, 41)

  • Fixed webContents.print() not honoring dpi horizontal/vertical options. #51354 (Also in 41)

  • Fixed Electron child process titles on Linux so they show their types (render, gpu, etc.) and complete command-line arguments and flags in ps aux. #50533

  • Fixed Fetch-intercepted requests using incorrect header client, which could cause request failures. #51372 (Also in 41)

  • Fixed fs.stat on files inside asar archives returning undefined for blksize and blocks instead of numeric values. #50877 (Also in 40, 41)

  • Fixed globalShortcut not working on Wayland with GlobalShortcutsPortal feature enabled. #49842 (Also in 40, 41)

  • Fixed a bug that cause offscreen rendering doesn't have valid screen info and unable to get valid result of related media queries. Added webPreference.offscreen.deviceScaleFactor to allow user specify a value. #48730 (Also in 40, 41)

  • Fixed a bug where Windows notification icons could fail to save because their temporary filenames contained invalid characters. #50482 (Also in 40, 41)

  • Fixed a crash in AutofillPopup teardown. #51317 (Also in 40, 41)

  • Fixed a crash in clipboard.readImage() when the clipboard contains malformed image data. #50494 (Also in 39, 40, 41)

  • Fixed a crash that could occur when using the File System Access API. #49578 (Also in 39, 40, 41)

  • Fixed a crash when calling contentTracing APIs before app is ready. #51353 (Also in 41)

  • Fixed a crash when calling contentTracing.getTraceBufferUsage() while a trace session is active. #50592 (Also in 39, 40, 41)

  • Fixed a crash when calling webRequest.onBeforeSendHeaders with invalid header names or values. #51366 (Also in 40, 41)

  • Fixed a crash when calling an offscreen shared texture's release() after the texture object was garbage collected. #50502 (Also in 39, 40, 41)

  • Fixed a crash when rendering PDFs when Site Isolation is disabled. #50846 (Also in 41)

  • Fixed a crash caused by missing MicrotasksScope for worker exit emit in ContextWillDestroy. #51350 (Also in 40, 41)

  • Fixed a crash when the <permission> element was used, by including permission element string resources in locale paks. #51374 (Also in 41)

  • Fixed a macOS crash when creating a new tab from the tab overview. #49917 (Also in 40, 41)

  • Fixed a memory leak where Menu items were not cleaned up after Menu.setApplicationMenu was called repeatedly. #50832 (Also in 40, 41)

  • Fixed a potential crash when using webContents.print(). #50853

  • Fixed absent 'Electron Isolated Context' in the execution context dropdown in Dev Tools. #51079 (Also in 41)

  • Fixed an accessibility issue where the AXMenuOpened event was not fired on menu creation. #50504 (Also in 40, 41)

  • Fixed an application crash on MacOS where the menu observer was not being properly removed before garbage collection. #49648 (Also in 40, 41)

  • Fixed an error with Windows release builds after MSIX merger. #49613

  • Fixed an intermittent Invoke in DisallowJavascriptExecutionScope crash on application quit when a WebContents (or other JS-emitting native object) is garbage-collected during shutdown. #50695 (Also in 40, 41)

  • Fixed an issue in chrome://accessibility. #49547 (Also in 39, 40, 41)

  • Fixed an issue on macOS where Universal Links were not delivered to app.on('continue-activity') on cold launch when NSUserActivity.userInfo was nil. #49986 (Also in 39, 40, 41)

  • Fixed an issue on macOS where show/hide events and WebContents visibility state could be reported incorrectly when multiple WebContentsViews were attached to a window. #50712 (Also in 40, 41)

  • Fixed an issue on macOS where calling autoUpdater.quitAndInstall() could fail if checkForUpdates() was called again after an update was already downloaded. #50210 (Also in 39, 40, 41)

  • Fixed an issue that caused the RGBAF16 shared texture format to have a keyed mutex on Windows. #49798 (Also in 41)

  • Fixed an issue where Chrome Devtools menus may not appear in certain embedded windows. #49794 (Also in 39, 40, 41)

  • Fixed an issue where DevTools would re-attach to the window when opened after previously being detached. #50815 (Also in 39, 40, 41)

  • Fixed an issue where VideoFrame objects returned through contextBridge had an incorrect prototype. #49997 (Also in 39, 40, 41)

  • Fixed an issue where additionalData passed to app.requestSingleInstanceLock on Windows could be truncated or fail to deserialize in the primary instance's second-instance event. #50119 (Also in 38, 39, 40, 41)

  • Fixed an issue where net.fetch() requests in the main process and utility processes would permanently fail with net::ERR_FAILED after the Network Service process crashed and restarted. #49887

  • Fixed an issue where nodeIntegrationInWorker didn't always work in AudioWorklet. #51005 (Also in 40, 41)

  • Fixed an issue where nodeIntegrationInWorker overrides in setWindowOpenHandler were not honored for child windows sharing a renderer process with their opener. #50122 (Also in 38, 39, 40, 41)

  • Fixed an issue where screen.getCursorScreenPoint() crashed on Wayland when it was called before a BrowserWindow had been created. #50092 (Also in 39, 40, 41)

  • Fixed an issue where setSimpleFullScreen on macOS would exit when web content called requestFullscreen(). #50987 (Also in 40, 41)

  • Fixed an issue where shell.writeShortcutLink was throwing TypeError: Insufficient number of arguments when called with just [(path, options)]. #49476 (Also in 39, 40, 41)

  • Fixed an issue where alt+space triggered the system context menu even if an accelerator was registered for the hotkey combination. #49619 (Also in 39, 40, 41)

  • Fixed an issue where an Electron auto-update job would occasionally fail if a macOS system update is pending. #51111

  • Fixed an issue where an Electron macOS update would not be applied if another app was previously blocking the macOS system update loop. #51212 (Also in 40, 41)

  • Fixed an issue where an app shortcut may lose its icon after auto-updating on Windows. #50517 (Also in 40, 41)

  • Fixed an issue where calling setBounds on a WebContentsView could trigger redundant page-favicon-updated events even when the favicon had not changed. #49464 (Also in 39, 40, 41)

  • Fixed an issue where closing devtools immediately after focus caused a crash. #51036 (Also in 41)

  • Fixed an issue where concurrent getFileHandle requests on the same path could stall indefinitely. #50671 (Also in 40, 41)

  • Fixed an issue where cookie changed events weren't properly emitted in all cases. #49103 (Also in 41)

  • Fixed an issue where custom options in webContents.print() did not prefill the print dialog on macOS. #50643

  • Fixed an issue where frameless windows had resize issues in Mac App Store builds. #49780 (Also in 39, 40, 41)

  • Fixed an issue where invalid characters in custom protocol or webRequest response header values were not rejected. #50123 (Also in 38, 39, 40, 41)

  • Fixed an issue where making a window fullscreen on Windows, minimizing it and then restoring it broke previous fullscreen state. #49872 (Also in 40, 41)

  • Fixed an issue where malformed custom toastXml could cause a Notification crash. #49947 (Also in 40, 41)

  • Fixed an issue where margins did not look as expected when printing in silent mode. #50653 (Also in 41)

  • Fixed an issue where menu item accelerators stopped working after the item's enabled property was toggled on macOS. #49553 (Also in 39, 40, 41)

  • Fixed an issue where menu item enabled state wasn't updated during key equivalent dispatch when the menu was closed on macOS. #49875 (Also in 39, 40, 41)

  • Fixed an issue where native modules would either crash or not compile for MacOS 12. #49697 (Also in 40, 41)

  • Fixed an issue where permission and device-chooser handlers received the top-level page origin instead of the requesting subframe's origin. #50052 (Also in 38, 39, 40, 41)

  • Fixed an issue where role-based menu items were incorrectly returning null for their accelerator property. #49558 (Also in 39, 40, 41)

  • Fixed an issue where saving edited PDF files would fail with a cross-origin SecurityError. #51072 (Also in 41)

  • Fixed an issue where setting zoomFactor in setWindowOpenHandler's overrideBrowserWindowOptions had no effect on windows opened via window.open(). #49886 (Also in 39, 40, 41)

  • Fixed an issue where some DevTools functionality didn't work as expected. #50274 (Also in 40, 41)

  • Fixed an issue where some shell functionality may not work on Linux if the target window is already open. #49499 (Also in 41)

  • Fixed an issue where some packages weren't correctly filtered on macOS in dialogs. #49444 (Also in 38, 39, 40, 41)

  • Fixed an issue where the Squirrel.Mac installer could resolve the target bundle path to different locations at different stages of an install. #50765

  • Fixed an issue where the webContents.print() callback may not fire correctly in some cases. #50603 (Also in 41)

  • Fixed an issue where traffic light buttons would flash at position (0,0) when restoring a window with a custom trafficLightPosition from minimization on macOS. #50183 (Also in 39, 40, 41)

  • Fixed an issue where webContents.print() would ignore pageSize / mediaSize when silent was true. #50855 (Also in 41)

  • Fixed an issue whereby a duplicate "Toggle Full Screen" menu item appeared in the View menu on macOS. #49074 (Also in 38, 39, 40, 41)

  • Fixed aspect ratio min/max size clamping to correctly account for extraSize on macOS. #50836 (Also in 40, 41)

  • Fixed borders and smearing in transparent frameless/client frame windows on Linux. #51430 (Also in 41)

  • Fixed bug that could occasionally cause browserWindow's always-on-top-changed event to fire with incorrect values. #51133 (Also in 40, 41)

  • Fixed bug where opening a message box immediately upon closing a child window may cause the parent window to freeze on Windows. #50078 (Also in 39, 40, 41)

  • Fixed build failure when printing is disabled. #50056 (Also in 41)

  • Fixed certain DevTools extension panels not showing without a page reload. #50640

  • Fixed crash in platform_util::Beep() on Linux. #49442 (Also in 39, 40, 41)

  • Fixed crash when app.setPath('sessionData') was called with a non-existent directory. #50908 (Also in 41)

  • Fixed crash when handling JavaScript dialogs from windows opened with invalid or empty URLs. #50398 (Also in 39, 40, 41)

  • Fixed CSS selector syntax in default app styles to properly apply animations to hero icons. #49950 (Also in 41)

  • Fixed dependency issue that caused Squirrel.Mac updates to fail. #49980

  • Fixed dock menu items not respecting enabled and checked properties on macOS. #49574 (Also in 38, 39, 40, 41)

  • Fixed draggable regions not updating position when DevTools is docked to the left or right in a frameless window. #49822 (Also in 39, 40, 41)

  • Fixed draggable regions responding to clicks in hidden WebContentsView. #51245 (Also in 40, 41)

  • Fixed duplicate mouse hooks stacking on Windows when UnhookWindowsHookEx fails in SetForwardMouseMessages. #51418 (Also in 41)

  • Fixed improper focus tracking in BaseWindow on MacOS. #50339 (Also in 39, 40, 41)

  • Fixed logic bug that rendered certain window types un-resizable on MAS builds. #50356 (Also in 40, 41)

  • Fixed macOS text replacement not working on contenteditable elements. #51344 (Also in 40, 41)

  • Fixed memory leak when setting icons on Linux/GTK. #49863 (Also in 38, 39, 40, 41)

  • Fixed menu bar hiding after a call to win.setFullScreen(false) when not in fullscreen on Linux. #45930 (Also in 39, 40, 41)

  • Fixed menus to correctly emit menu-will-close event when closed after any submenu has been open. #49783 (Also in 40, 41)

  • Fixed native notification clicks not focusing the application window on Wayland. #50669

  • Fixed printing on Linux failing with "Invalid printer settings". #50487 (Also in 41)

  • Fixed rendering glitches on macOS. #49608 (Also in 40, 41)

  • Fixed resize hit targets for frameless windows on Windows. Resize targets now start at the side and bottom edges of the window and extend outward when frame: false, matching the behavior for windows with frames. #50864 (Also in 41)

  • Fixed several issues with consistent window sizing and resizing on Linux when CSD is in use (e.g. on GNOME/Wayland) and added support for creating content-sized windows. #49209 (Also in 41)

  • Fixed shutdown crash on windows when hidden titlebar is enabled. #50042 (Also in 39, 40, 41)

  • Fixed shutdown crash on windows when power monitor notifications were subscribed. #50893

  • Fixed squirrel.mac stacked update behavior to old staged updates. #49365 (Also in 39, 40, 41)

  • Fixed stable bounds on Windows when toggling setResizable for frameless windows. #51296 (Also in 41)

  • Fixed startup crash when V8 sandbox is disabled. #49210 (Also in 40, 41)

  • Fixed test scaffolding bug when running tests locally on Linux. #51149 (Also in 40, 41)

  • Fixed the appearance of maximized windows on GNOME in Wayland, especially when non-default GTK themes like Breeze are set. #50644 (Also in 41)

  • Fixed the crash keys being lost and the crash reporter hanging on macOS when many dynamic crash keys were registered. #50839 (Also in 40, 41)

  • Fixed transparency being lost across setResizable toggles on Windows. #51218 (Also in 41)

  • Fixed user resizing of transparent windows on win32 platform. #50299 (Also in 39, 40, 41)

  • Fixed utilityProcess exit event reporting incorrect exit codes on Windows when the exit code has the high bit. #50385 (Also in 40, 41)

  • Fixed webRequest handlers not being called for intercepted protocols and special net.fetch URLs. #45915

  • Fixed window freeze when failing to enter/exit fullscreen on macOS. #50342 (Also in 39, 40, 41)

  • Fixed window insets not being removed on fullscreen windows on Windows. #51331 (Also in 41)

  • Fixed window sizing on Linux when min/max size constraints are set or resizable is false. Windows no longer shrink below the requested max size or grow taller when resizability is disabled. #49903 (Also in 41)

  • Fixed Windows notification toast action and reply events not dispatching from WinRT activation path. #51330 (Also in 41)

  • Global shortcuts can now be registered more reliably on Wayland using the globalShortcut API. #49988 (Also in 41)

  • Improved the appearance of shadows and borders on frameless windows on Wayland. #50007 (Also in 41)

  • Moved Electron-specific help menu links to the default app only; unpackaged apps will no longer see these items in their default menu. #50861 (Also in 40, 41)

  • Removed "representedObject is not a WeakPtrToElectronMenuModelAsNSObject" logging when interacting with macOS menus. #50614 (Also in 41)

Other Changes

  • Added support for using a proxy during yarn install. #50351 (Also in 39, 40, 41)

  • Backported fix for 483569511. #49788

  • Bumped Chromium to 148.0.7778.40. #51126

  • Bumped Chromium to 148.0.7778.56. #51299

  • Enabled profile-guided optimization for V8 builtins in release builds, improving JavaScript builtin performance (Array, String, RegExp, etc.). #50573 (Also in 40, 41)

  • Fixed gn gen failing to resolve electron_version when building from a git worktree checkout. #51166 (Also in 39, 40, 41)

  • Fixed crash in platform_util::Beep() on Linux. #49680 (Also in 40, 41)

  • Refactored gin_helper::Promise to be managed by cppgc. #51405

  • Refactored our MSIX updater code to use an upstream Chromium pattern and eliminates the need for special exception handling build flags. #49645 (Also in 39, 40, 41)

  • Replaced ESLint with oxlint and added oxfmt for JS/TS formatting. #51435

  • Restricted npm tarball contents to an explicit allowlist. #51308

  • Security: backported fixes for CVE-2026-6358, CVE-2026-6359, CVE-2026-6360, CVE-2026-6310, CVE-2026-6312, CVE-2026-6313, CVE-2026-6314, CVE-2026-6316, CVE-2026-6361, CVE-2026-6362. #51136

Documentation

Notices

End of Support for 39.x.y

Electron 39.x.y has reached end-of-support as per the project's support policy. Developers and applications are encouraged to upgrade to a newer version of Electron.