electron/electronv44.3.0

Electron 44.3.0: security, stability, and platform fixes

Electron 44.3.0 adds draggable-region diagnostics and fixes permission, crash, GPU, tray, DevTools, IPC, and media-capture issues. Review behavior changes around capture, subframes, and worker integration before rollout.

Published
Coverage
Runtime
Desk
OpenStack Daily Editorial
A migration review with annotated release notes and architecture diagrams
A release report is a starting point. Project-specific tests remain the final compatibility check.

Release overview

electron/electron published electron v44.3.0 on 2026-09-08. This page was generated deterministically from the public GitHub release and does not use an LLM.

View the official GitHub release

The report preserves upstream wording wherever possible. The breaking-change badge is based on explicit keywords, not semantic interpretation.

Official release notes

Release Notes for v44.3.0

Features

  • Added the ELECTRON_DEBUG_DRAGGABLE_REGIONS environment variable, which visualizes and logs draggable regions in unpackaged apps to help debug custom title bars. #53627 (Also in 43, 45)

Fixes

  • File System Access permission requests and the file-system-access-restricted event are scoped to the requesting document, grants are reset when the origin's last page closes, and write access works in in-memory sessions. #53691 (Also in 42, 43, 45)
  • Fixed Ctrl+Y not yanking text killed with Ctrl+K in text fields on macOS. #53714 (Also in 45)
  • Fixed Tray icons not appearing when running inside Flatpak or Snap sandboxes on Linux. #53653 (Also in 45)
  • Fixed app.getGPUInfo('complete') stalling the GPU process for several seconds on some Windows systems. #53644 (Also in 45)
  • Fixed session.setPermissionCheckHandler receiving the top-level origin and a null webContents for hid and usb checks made from a subframe. #53688 (Also in 42, 43, 45)
  • Fixed webContents.on(), removeListener() and removeAllListeners() throwing "Object has been destroyed" for console-message listeners after the WebContents was destroyed. #53494 (Also in 42, 43, 45)
  • Fixed a crash on Linux when process.env was written while another thread was reading the environment, and a memory leak when a worker thread exits. #53509 (Also in 42, 43, 45)
  • Fixed a possible crash on Windows when a file dialog was shown for a window that was being closed at the same time. #53583 (Also in 42, 43, 45)
  • Fixed a renderer crash when the main process sent IPC to, or a page navigated, a same-process window.open() child whose contextIsolation differed from its opener's. #53539 (Also in 42, 43, 45)
  • Fixed a spurious node_init error being logged when creating a ShadowRealm with Node.js integration enabled. #53579 (Also in 45)
  • Fixed crashes in setDisplayMediaRequestHandler when the granted frame had been destroyed or another tab was granted by id. #53672 (Also in 42, 43, 45)
  • Fixed several non-functional DevTools integrations: the Security panel's "View certificate" button, Ctrl+wheel zooming inside DevTools, and DevTools keyboard shortcuts (e.g. F8) while the inspected page has focus. #53630 (Also in 43, 45)
  • Fixed window state not being persisted when a window entered or left fullscreen, or was maximized or unmaximized, without also being moved or resized. #53576 (Also in 45)
  • Internal <webview>, window.close() and executeJavaScript reply IPCs are validated against the sending frame. #53723 (Also in 42, 43, 45)
  • <webview> without allowpopups also blocks links opened into a new window by modifier-click, and such windows navigate as the clicking document rather than as a browser-initiated load. #53721 (Also in 42, 43, 45)
  • getUserMedia with chromeMediaSource: 'desktop' no longer accepts WebContents source ids; use chromeMediaSource: 'tab' with webContents.getMediaSourceId() or setDisplayMediaRequestHandler to capture a WebContents. #53709 (Also in 42, 43, 45)
  • nodeIntegrationInWorker now applies only to workers created by frames that themselves have Node integration; enable nodeIntegrationInSubFrames to keep Node in workers created by subframes. #53711 (Also in 42, 43, 45)
  • openExternal permission requests started by a frame that has since gone away are attributed to that frame's origin rather than to the navigating page. #53699 (Also in 42, 43, 45)
  • pointerLock and keyboardLock permission requests now report the requesting frame, and execCommand('paste') requires user activation in the frame that calls it. #53693 (Also in 42, 43, 45)

Other Changes

  • Fixed the app becoming unresponsive when a page has a very large number of app-region draggable elements. #53597 (Also in 43, 45)
  • Updated Chromium to 152.0.7977.78. #53523

Breaking changes and migration

The upstream notes do not contain an explicit breaking-change signal. This automated check is conservative, so verify deprecations and changed defaults in the official notes before upgrading.

Before the upgrade

1. Pin the currently deployed version.
2. Run the existing test and build suites.
3. Record warnings, bundle output, and runtime behavior.

After the upgrade

1. Install the exact release tag in a dedicated branch.
2. Run the same tests and production build.
3. Compare warnings, output, and critical user flows.

Verification checklist

  • Read the complete upstream release notes and linked migration documents.
  • Search the codebase for deprecated APIs and configuration keys named upstream.
  • Upgrade in an isolated branch with a lockfile diff that can be reviewed.
  • Run unit, integration, end-to-end, and production-build checks that apply to the project.
  • Keep a rollback commit or previously deployed artifact available.

Frequently asked questions

Is this report generated by artificial intelligence?

No. The sync script fetches structured release data from GitHub and writes a fixed Markdown template. It does not call an LLM or send release content to an AI provider.

How is the breaking-change badge determined?

The script looks for explicit phrases such as "breaking change," "backward incompatible," "migration required," and "removed." This is a useful signal, but it cannot replace a developer reading the upstream notes.

Does the site modify the official release notes?

It only demotes heading levels so the upstream notes fit inside the article hierarchy. The original release link is always included for verification.

Can this report decide whether an upgrade is safe?

No. It provides discovery, provenance, and a consistent checklist. Compatibility decisions still require project-specific tests and engineering review.