Electron 43 发布
Electron 43 已发布!本次版本升级至 Chromium 150.0.7871.46、V8 15.0 和 Node v24.17.0。
Electron 团队很高兴宣布 Electron 43 正式发布!你可以通过 npm install electron@latest 使用 npm 安装,或从我们的 发布页面 下载。继续阅读以了解本次版本的详细信息。
如有任何反馈,欢迎通过 Bluesky 或 Mastodon 联系我们,或加入我们的社区 Discord!Bug 和问题可在 Electron 的 Issue 追踪器 中提交。
重要变更
应用启动性能优化
Electron 43 带来多项应用启动性能改进:主进程现基于嵌入式的 Node.js 启动快照运行,框架包和预加载脚本以编译后的 V8 字节码形式缓存,沙盒渲染器的启动数据在导航前预先推送而非通过阻塞 IPC 获取。此外,预加载脚本的堆栈追踪现在能正确显示文件路径和行号。 #51792
Linux 下无边框窗口默认圆角
在 Linux 上,无边框窗口现默认启用圆角,与 macOS 和 Windows 的行为保持一致。所有平台均可通过在窗口配置中设置 roundedCorners: false 来禁用圆角效果。 #52111
文件下载默认打开至下载文件夹
文件下载现默认在用户的「下载」文件夹中打开;若该文件夹不存在,则回退至用户主目录。 #49868
macOS 通知管理新 API
Electron 43 在 macOS 上新增了 Notification.remove()、Notification.removeAll() 和 Notification.removeGroup() 三个静态方法,让开发者能更精细地控制已发出的通知。配合已有的 Notification.getHistory() API,现在可以完整管理通知中心中通知的生命周期。#51690
技术栈变更
-
Chromium
150.0.7871.46 -
Node
v24.17.0 -
V8
15.0
Electron 43 将 Chromium 从 148.0.7778.96 升级到 150.0.7871.46,Node.js 从 v24.15.0 升级到 v24.17.0,V8 从 14.8 升级到 15.0。
新功能与改进
- 为
WebContents新增了 Clone 方法。#49959 - 渲染进程发生 OOM 崩溃时,崩溃报告中现在会包含 JS 堆栈信息。#50043
- 为
app.getApplicationInfoForProtocol()新增了 Linux 支持。#51297 - 为 macOS 新增了
Notification.remove()、Notification.removeAll()和Notification.removeGroup()静态方法。#51690 - 为 macOS 新增了
Notification.getHistory(),允许开发者恢复通知中心中仍然存在的所有已发出通知。#50325 - 在
MenuItem的构造参数和属性中新增了accessibilityLabel,用于定义对屏幕阅读器友好的标签。#50240 - 为
protocol.registerSchemesAsPrivileged()新增allowExtensions权限,以在自定义协议中支持 Chrome 扩展。#49951 - 新增
app.configureWebAuthn()以在 macOS 上为 WebAuthn 启用 Touch ID 平台认证,并新增select-webauthn-accountsession 事件用于在多个可发现凭据之间进行选择。#51255 - 新增
globalShortcut.setSuspended()和globalShortcut.isSuspended()方法,支持临时挂起和恢复全局快捷键处理。#50425 - macOS 的
Notification构造函数新增id和groupId选项。id允许使用自定义标识符,groupId可在通知中心中将通知按组视觉聚合。#50097 - Windows 通知新增
id、groupId和groupTitle支持。#50328 - macOS 新增
nativeTheme.shouldDifferentiateWithoutColor。#49912 - 新增
nv12OSR 像素格式支持,面向专业用途。#49799 - 新增
view.setBackgroundBlur()。#51076 - 新增
webContents.copyVideoFrameAt(x, y)和webContents.saveVideoFrameAs(x, y)方法。#48149 - net 模块的请求新增对 utility process 中 session 的支持。#51279
- 通过
contentTracing.enableHeapProfiling()新增堆内存分析支持。#50826 - 新增基于 nv16 像素格式的共享纹理导入支持。#50728
- Windows 通知新增支持
urgency选项。#50225 - yarn install 新增代理支持。#50322
- 允许 Electron 透传 Node.js 的
--experimental-inspector-network-resource标志。#49689 - macOS 构建启用 ThinLTO。#51819
- Release 构建为 V8 内置函数启用基于配置文件的优化(PGO),提升 Array、String、RegExp 等 JavaScript 内置函数的性能。#50416
- 改善应用启动性能:主进程改为从内嵌 Node.js 启动快照启动,框架包和 preload 脚本以编译后的 V8 字节码缓存,沙箱渲染进程启动数据改为在导航前预推送,而非通过阻塞 IPC 获取。#51792
- Linux 和 Windows release 构建为主 Electron 二进制启用 ThinLTO 链接时优化,提升性能。#51820
- Linux 上
app.getApplicationNameForProtocol()性能提升。#51251 - Linux 上
app.isDefaultProtocolClient()与app.setAsDefaultProtocolClient()性能提升。#51316 webRequest头转换及若干其他 gin converter 热路径性能提升。#51608- 原生事件派发、IPC 分发和选项字典解析性能提升。#51615
破坏性变更
行为变更:文件下载现在默认在「下载」文件夹中打开
文件下载完成后,默认会在用户的 Downloads 文件夹中打开(如果该文件夹不存在,则使用 Home 目录)。#49868
行为变更:nativeImage 的像素值被规范化为 SRGB
如果传给 nativeImage 的图片带有色彩配置文件,其像素值现在会被规范化为 SRGB。这样可以保证两幅在应用色彩空间后视觉上完全相同的图片,转换成 nativeImage 时能得到相近的像素值。#51565
行为变更:Linux 上的无边框窗口默认带圆角
在 Linux 上,无边框窗口现在默认显示圆角,与 macOS 和 Windows 的行为保持一致。如需在所有平台上禁用圆角,可以在窗口上设置 roundedCorners: false。#52111
行为变更:WCO 在 Linux 上遵循原生标题栏布局
带 Window Controls Overlay(WCO)的无边框窗口在 Linux 上现在会采用原生标题栏布局和用户设置。例如,在 RTL 系统上控制按钮会显示在窗口框架左侧,而在 GNOME 上默认只显示关闭按钮。由于用户的桌面环境和配置不同,按钮可能出现在框架的左侧、右侧或两侧都有。为兼容所有情况,建议使用 CSS 变量 env(titlebar-area-x, 0px) 和 env(titlebar-area-width, 100%),把应用的标题栏内容限制在安全区域内。#52018
行为变更:chrome.scripting 的 CSS 注入匹配更多回退 frame
使用 chrome.scripting.insertCSS() 或 chrome.scripting.removeCSS() 的扩展程序现在会在 Electron 无法直接匹配页面 URL(如 about:blank 或 data: 的 frame)时,遵循 Chrome 的行为。若扩展程序有权访问创建该 frame 的页面,CSS 现在也可以插入或移除这些 fallback frame。依赖 Electron 跳过这些 frame 的应用或扩展应缩小注入目标、frame ID 或匹配模式。#51376
已移除:Linux 上 dialog API 中的 showHiddenFiles
dialog API 在 Linux 上已移除 showHiddenFiles 支持。#51880
40.x.y 版本停止支持
根据项目的 支持政策,Electron 40.x.y 已停止支持。建议开发者和应用升级到更新的 Electron 版本。查看 https://releases.electronjs.org/schedule 了解 Electron 受支持版本的时间线。
32 位平台支持结束
Electron 43.x.y 将是最后一批提供 32 位预构建二进制文件的 Electron 版本系列,涵盖 Windows x86(win32-ia32)和 Linux ARM(linux-armv7l)。v43 系列将于 2027 年 1 月结束生命周期,届时这些 32 位平台将不再受支持。
接下来
短期内,团队将继续致力于紧跟 Electron 核心组件——包括 Chromium、Node 和 V8——的开发进度。
你可以在这里找到 Electron 的公开时间线。
有关未来变更的更多信息,请参见计划中的破坏性变更页面。