Electron 37.0.0
Electron 37.0.0 已发布!其中包括对 Chromium 138、V8 13.8 和 Node 22.16.0 的升级。
Electron 团队很高兴地宣布 Electron 37.0.0 的发布!您可以使用 npm 通过 npm install electron@latest 安装它,或从我们的 发布网站 下载它。继续阅读以了解此版本的详细信息。
如果您有任何反馈,请在 Bluesky 或 Mastodon 上与我们分享,或加入我们的社区 Discord!错误和功能请求可以在 Electron 的 问题跟踪器 中报告。
谷歌夏季实习生计划开始
我们的两位 谷歌夏季实习生计划 贡献者已经开始了编码阶段!
- @nilayarya 正在 Electron 核心中构建一个新的 保存/恢复窗口状态 API。新的 API 将提供一种内置的、标准化的方式来处理窗口状态持久性。请参阅 Nilay 正在进行的 RFC:electron/rfcs#16。
- @hitarth-gg 正在努力使用 Chrome Manifest V3 API 现代化长期休眠的 Devtron 扩展。该项目将为开发人员提供工具,以调试 IPC 通信、跟踪事件侦听器以及可视化 Electron 应用程序中的模块依赖关系。
对于我们的 GSoC 参与者来说,这是激动人心的几周,敬请期待更多更新!
值得注意的变化
平滑圆角:原生 CSS Squircles
Electron 37 引入了自定义的 -electron-corner-smoothing CSS 属性,它允许应用程序创建更平滑的圆角以匹配 Apple 的 macOS 设计语言。此功能最初在 Electron 36 中推出,但我们认为它值得更亮的聚光灯。
| 代码 | 结果 |
|---|---|
|
与仅从矩形中雕刻四分之一圆角的标准 border-radius 属性不同,-electron-corner-smoothing 会将曲线平滑地过渡到具有连续周长的 squircle 形状。
您可以使用 0% 到 100% 的值调整平滑度,或者使用 system-ui 值以匹配操作系统的样式(macOS 上为 60%,否则为 0%)。此设计增强功能可应用于边框、轮廓和阴影,为您的应用程序增添一丝精致。
请参阅 @clavin 的 RFC 0012,了解有关 Electron squircle 实现的更多信息。该文档更详细地介绍了动机和技术实现。
最初的设计灵感来自 Figma 的圆角平滑实现。请参阅他们的“绝望地寻找 squircles”了解更多信息。
堆栈变化
- Chromium
138.0.7204.35 - Node
22.16.0 - V8
13.8
Electron 37 将 Chromium 从 136.0.7103.48 升级到 138.0.7204.35,并将 V8 从 13.6 升级到 13.8。
新功能和改进
- 新增了
window.open的innerWidth和innerHeight选项。 #47039 (同时包含在 35, 36 中) - 为
webContents添加了before-mouse-event,以允许拦截和阻止鼠标事件。 #47364 (同时包含在 36 中) - 为
ServiceWorkerMain添加了scriptURL属性。 #45863 - 为 macOS >= 14.4 的菜单添加了
sublabel功能。 #47042 (同时包含在 35, 36 中) - 添加了对
HIDDevice.collections的支持。 #47483 (同时包含在 36 中) - 添加了对
--no-experimental-global-navigator标志的支持。 #47418 (同时包含在 35, 36 中) - 添加了对 Linux X11 上
screen.dipToScreenPoint(point)和screen.screenToDipPoint(point)的支持。 #46895 (同时包含在 35, 36 中) - 添加了对 macOS 上菜单项角色
palette和header的支持。 #47245 - 添加了对 node 选项
--experimental-network-inspection的支持。 #47031 (同时包含在 35, 36 中) - 公开了
win.isContentProtected(),以允许开发者检查窗口保护状态。 #47310 (同时包含在 36 中)
破坏性变更
Utility Process 未处理的拒绝行为变更
现在,当发生未处理的拒绝时,Utility Process 将会发出一条错误消息警告,而不是使进程崩溃。
要恢复以前的行为,您可以使用
process.on('unhandledRejection', () => {
process.exit(1);
});
行为变更:process.exit() 同步地杀死 utility 进程
在实用工具进程中调用 process.exit() 现在将同步终止该进程。这使得 process.exit() 的行为与 Node.js 的行为保持一致。
请参考 Node.js 文档 和 PR #45690 以了解其潜在影响,例如在调用 console.log() 之前调用 process.exit() 时。
行为变更:WebUSB 和 WebSerial 阻止列表支持
WebUSB 和 Web Serial 现在支持 WebUSB 阻止列表 和 Web Serial 阻止列表,这些列表由 Chromium 使用并概述在其各自的规范中。
要禁用这些功能,用户可以传递 disable-usb-blocklist 和 disable-serial-blocklist 作为命令行标志。
移除:ProtocolResponse 中 session 属性的 null 值
这个已弃用的功能已被移除。
以前,将 ProtocolResponse.session 属性设置为 null 会创建一个随机的独立会话。这已不再受支持。
由于开销成本,不建议在此处使用单用途会话;但是,需要保留此行为的旧代码可以通过使用 session.fromPartition(some_random_string) 创建一个随机会话,然后在 ProtocolResponse.session 中使用它来模拟此行为。
行为变更:Linux 上的 BrowserWindow.IsVisibleOnAllWorkspaces()
如果窗口当前不可见,BrowserWindow.IsVisibleOnAllWorkspaces() 现在在 Linux 上将返回 false。
34.x.y 版本停止支持
Electron 34.x.y 已达到支持终止日期,符合项目的 支持策略。鼓励开发者和应用程序升级到较新版本的 Electron。
| E37 (25年6月) | E38 (25年8月) | E39 (25年10月) |
|---|---|---|
| 37.x.y | 38.x.y | 39.x.y |
| 36.x.y | 37.x.y | 38.x.y |
| 35.x.y | 36.x.y | 37.x.y |
接下来是什么
短期内,您可以预期团队将继续专注于跟进构成 Electron 的主要组件(包括 Chromium、Node 和 V8)的开发。
您可以在 此处 找到 Electron 的公共时间线。
有关未来变更的更多信息,请参见 计划中的破坏性变更 页面。

