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

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_REGIONSenvironment 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-restrictedevent 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
Trayicons 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.setPermissionCheckHandlerreceiving the top-level origin and a nullwebContentsforhidandusbchecks made from a subframe. #53688 (Also in 42, 43, 45) - Fixed
webContents.on(),removeListener()andremoveAllListeners()throwing "Object has been destroyed" forconsole-messagelisteners after the WebContents was destroyed. #53494 (Also in 42, 43, 45) - Fixed a crash on Linux when
process.envwas 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 whosecontextIsolationdiffered from its opener's. #53539 (Also in 42, 43, 45) - Fixed a spurious
node_initerror being logged when creating aShadowRealmwith Node.js integration enabled. #53579 (Also in 45) - Fixed crashes in
setDisplayMediaRequestHandlerwhen 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()andexecuteJavaScriptreply IPCs are validated against the sending frame. #53723 (Also in 42, 43, 45) <webview>withoutallowpopupsalso 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)getUserMediawithchromeMediaSource: 'desktop'no longer accepts WebContents source ids; usechromeMediaSource: 'tab'withwebContents.getMediaSourceId()orsetDisplayMediaRequestHandlerto capture a WebContents. #53709 (Also in 42, 43, 45)nodeIntegrationInWorkernow applies only to workers created by frames that themselves have Node integration; enablenodeIntegrationInSubFramesto keep Node in workers created by subframes. #53711 (Also in 42, 43, 45)openExternalpermission 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)pointerLockandkeyboardLockpermission requests now report the requesting frame, andexecCommand('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-regiondraggable 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.