跳到主要内容

Electron 36.0.0

·阅读时长 4 分钟

Electron 36.0.0 已发布!它包括对 Chromium 136、V8 13.6 和 Node 22.14.0 的升级。


Electron 团队激动地宣布 Electron 36.0.0 发布!您可以通过 npm 使用 npm install electron@latest 进行安装,或从我们的发布版本网站下载。继续阅读以了解此版本的详细信息。

如果您有任何反馈,请通过BlueskyMastodon与我们分享,或加入我们的社区Discord!可以在 Electron 的issue tracker中报告错误和功能请求。

值得关注的变化

写作工具支持

在 Electron 36 中,您可以在上下文菜单中启用 macOS 系统级功能,如写作工具(拼写和语法)、自动填充以及服务菜单项。为此,将 WebFrameMain 实例作为 menu.popup()frame 参数传入。

import { BrowserWindow, Menu, WebFrameMain } from 'electron';

const currentWindow = BrowserWindow.getFocusedWindow();
const focusedFrame = currentWindow.webContents.focusedFrame;
const menu = Menu.buildFromTemplate([{ label: 'Copy', role: 'copy' }]);

menu.popup({
window: currentWindow,
frame: focusedFrame,
});

技术栈变更

Electron 36 将 Chromium 从 134.0.6998.23 升级到 136.0.7103.48,将 V8 从 13.5 升级到 13.6

新特性和改进

  • 添加了 BrowserWindow.isSnapped(),用于指示指定窗口是否通过 Windows 的 Snap 功能进行了排列。#46226
  • 添加了 WebContents.focusedFrame,用于获取获得焦点的帧。
  • 修复了 WebContents.opener,以指定可能的 null 类型。#45667
  • 添加了 ffmpeg.dll 到延迟加载配置。#46173 (也包含在34, 35 中)
  • 添加了 nativeTheme.shouldUseDarkColorsForSystemIntegratedUI,用于区分系统主题和应用主题。#46598 (也包含在35 中)
  • webRequest 过滤器中添加了 excludeUrls,并废弃了 urls 属性中使用空数组。#44692 (也包含在35 中)
  • 通过 menu.popup 中的新 frame 选项,在上下文菜单中添加了对 macOS 级自动填充、写作工具和服务菜单项的支持。#46350
  • 在 Linux 上添加了对 system-context-menu 的支持。#46399
  • 改进了 Windows 上的 ASAR 完整性检查。#46537
  • 在 macOS 上不请求缩略图时,改进了 desktopCapturer.getSources 的性能。#46251 (也包含在34, 35 中)
  • 在使用共享纹理 OSR 时移除了 240 FPS 限制。#45669 (也包含在35 中)

重大变更

已废弃:NativeImage.getBitmap()

NativeImage.getBitmap() 函数现已废弃,并记录为 NativeImage.toBitmap() 的别名。这两个函数都返回新分配的位图副本,功能上是等效的。

已废弃:session 上的扩展方法和事件

session.loadExtensionsession.removeExtensionsession.getExtensionsession.getAllExtensions 以及事件 extension-loadedextension-unloadedextension-ready 都已移至可通过 session.extensions 实例属性访问的新 Extensions 对象

已移除:session.clearStorageData(options) 中的 quota 类型 syncable

调用 session.clearStorageData(options) 时,不再支持 options.quota 类型 syncable,因为它已从上游 Chromium 中移除

已废弃:session.clearStorageData(options) 中的 quota 属性

调用 Session.clearStorageData(options) 时,options.quota 属性已废弃。由于 syncable 类型已被移除,只剩下 'temporary' 一种类型,因此指定它是不必要的。

行为变更:在 GNOME 上运行时,GTK 4 为默认设置

在上游变更后,在 GNOME 上运行时,GTK 4 现已成为默认设置。

在极少数情况下,这可能会导致某些应用或配置出错并显示以下消息

Gtk-ERROR **: 11:30:38.382: GTK 2/3 symbols detected. Using GTK 2/3 and GTK 4 in the same process is not supported

受影响的用户可以通过指定 gtk-version 命令行标志来解决此问题

$ electron --gtk-version=3   # or --gtk-version=2

也可以使用app.commandLine.appendSwitch 函数实现同样的操作。

行为变更:app.commandLine

app.commandLine 会将大写开关和参数转换为小写。

app.commandLine 仅用于处理 Chromium 开关(不区分大小写),通过 app.commandLine 传递的开关不会传递给任何子进程。

如果您使用 app.commandLine 解析应用特定的命令行参数,则应改用 process.argv

停止支持 33.x.y

根据项目的支持策略,Electron 33.x.y 已达到停止支持期限。建议开发者和应用升级到更新版本的 Electron。

E36 (2025年4月)E37 (2025年6月)E38 (2025年8月)
36.x.y37.x.y38.x.y
35.x.y36.x.y37.x.y
34.x.y35.x.y36.x.y

下一步计划

短期内,您可以期待团队将继续专注于跟进构成 Electron 的主要组件的开发,包括 Chromium、Node 和 V8。

您可以在此处找到 Electron 的公开时间线

关于未来变更的更多信息可在“计划中的重大变更”页面找到。