做桌面开发的,没人不认识 Electron。
VS Code、Notion、Slack、Figma……这些你天天用的工具,底层全是它。但说实话,Electron 的口碑一直挺分裂的——功能强是真的强,安全隐患、内核滞后、安装脚本风险这些槽点也是真的扎心。
就在 5 月 7 日,Electron 团队正式发布了 42 版本。
一、内核三连跳:Chromium 148 + Node 24.15 + V8 14.8
Electron 42 直接把三大核心组件拉到最新版:
| 组件 | 旧版 | 42 版 |
|---|---|---|
| Chromium | 146 | 148.0.7778.96 |
| Node.js | 24.14 | 24.15.0 |
| V8 | 14.6 | 14.8 |
Chromium 148 意味着啥?数十个安全漏洞被修复,最新的 Web 标准直接可用,CSS 和 JS 的新特性不用 polyfill 也能跑。Node 24.15 带了更多安全补丁和内存管理优化,V8 14.8 让 JS 执行更快、垃圾回收更狠。
官方原话是:"This release includes upgrades to Chromium 148.0.7778.96, V8 14.8, and Node v24.15.0."
二、最狠的改动:postinstall 脚本,没了
如果说内核升级是"常规操作",那下面这个改动就是史诗级的。
以前的安全隐患
以前你 npm install electron,安装过程中会自动执行 postinstall 脚本,从 GitHub Releases 下载 Electron 的二进制文件。
听起来挺方便对吧?但问题是——postinstall 脚本是 npm 供应链攻击的重灾区。 脚本一旦被篡改,你的开发环境直接沦陷,恶意代码悄无声息就进来了。
Electron 官方博客的原话:
"With recent supply chain security attacks against the npm ecosystem with
postinstallscripts as a common attack vector..."
(近年来针对 npm 生态系统的供应链安全攻击中,postinstall 脚本是常见的攻击载体……)
42 版的解法
Electron 42 直接取消 postinstall 自动下载。安装 npm 包时,不再执行任何下载脚本。二进制文件改成首次运行时动态下载——比如你执行 npx electron 的时候,它才会去下载。
更狠的是,官方还新增了一个 install-electron 脚本,你可以手动触发下载:
npm install electron --save-dev --ignore-scripts
npx install-electron
看到 --ignore-scripts 了吗?这意味着你完全可以屏蔽所有脚本执行,Electron 照样能正常工作。
这波改动,直接把供应链攻击的核心入口给焊死了。 对企业级项目、金融、政务这类敏感场景来说,这不是"优化",是"救命"。
三、macOS 通知大换血:不签名就不给用
Electron 42 在 macOS 上干了一件"得罪人"的事——通知 API 强制要求代码签名。
以前用的是老旧的 NSUserNotification,现在换成了苹果官方推荐的 UNNotification API。新 API 要求应用必须代码签名,没签名的应用,通知直接触发 failed 事件,根本不显示。
官方 Breaking Changes 里写得明明白白:
"The new API requires that an application be code-signed in order for notifications to be displayed. If an application is not code-signed, notifications will emit a
failedevent on theNotificationobject."
开发者们看到这条估计要骂娘——"我本地调试还得先签名?" 但换个角度想,这恰恰是苹果在逼大家把安全流程做规范。通知权限越来越敏感,不签名就能弹通知,确实太松了。
好消息是,42 版还补了一堆通知相关的实用功能:
Notification.getHistory():直接读取通知中心的历史记录id和groupId:自定义通知标识,支持分组展示- Windows 端新增
handleActivation回调:冷启动也能响应通知点击
四、新功能
除了安全和内核,42 版还塞了不少让人眼前一亮的实用功能:
1. WebAuthn Touch ID(macOS)
新增 app.configureWebAuthn(),支持用 Touch ID 做 WebAuthn 认证。
以后你的 Electron 应用可以直接调指纹登录,不用自己折腾原生模块了。
2. 视图动画 + 背景模糊
view.setBounds()支持平滑动画过渡view.setBackgroundBlur()一键实现系统级毛玻璃效果
以前要实现这些效果,要么写一堆 CSS hack,要么调原生 API。现在一行代码搞定。
3. 全局快捷键可暂停
新增 globalShortcut.setSuspended() 和 isSuspended(),可以临时暂停和恢复快捷键监听。
比如你打开一个输入框,临时屏蔽全局快捷键,避免跟用户输入冲突——这个场景太常见了。
4. 应用状态检测(macOS)
新增 app.isActive(),快速判断应用是不是前台活跃状态。
多窗口场景下,这个 API 能帮你省不少事。
五、升级前必看:这些 Breaking Changes 会坑到你
别急着 npm install,先把这几个坑看清楚:
1. macOS 通知必须签名
前面说了,没签名的应用通知直接失败。本地开发测试时,记得先配置代码签名。
2. 离屏渲染默认缩放变了
以前离屏渲染(OSR)默认用主显示器的 device scale factor,现在改成固定值 1.0。
如果你的应用依赖 OSR 截图,升级后输出尺寸可能会变。可以通过 webPreferences.offscreen.deviceScaleFactor 手动指定。
3. 几个被移除/弃用的 API
Session.clearStorageData的quotas参数:已移除(Chromium 上游不再支持)ELECTRON_SKIP_BINARY_DOWNLOAD环境变量:已移除(因为下载逻辑改了)nativeImage.createFromNamedImage数组传参:已弃用,要改成对象格式
4. Electron 39 正式停止支持
官方公告:Electron 39.x.y 已达到生命周期终点,不再提供安全更新。
还在用 39 的,赶紧升。
六、怎么升级?三步搞定
# 1. 安装最新版
npm install electron@latest --save-dev
# 2. 如果你特别在意安全,用 --ignore-scripts
npm install electron@latest --save-dev --ignore-scripts
npx install-electron
# 3. 启动验证
npx electron .
官方博客地址:electronjs.org/blog/electr…
GitHub Release Notes:github.com/electron/el…
写在最后
Electron 42 这次更新,没有炫目的新功能,没有花里胡哨的噱头。
但它做了三件开发者最想要的事:内核跟上最新版、postinstall 安全隐患根治、通知和权限流程规范化。
尤其是 postinstall 的改动,表面上看只是"下载时机变了",实际上是在整个 npm 生态的供应链安全上,往前迈了一大步。
做桌面开发的,安全感比什么都重要。 这次 42 版,值得升。
你用 Electron 做过什么项目?升级过程中踩过哪些坑?评论区聊聊~
各位互联网搭子,要是这篇文章成功引起了你的注意,别犹豫,关注、点赞、评论、分享走一波,让我们把这份默契延续下去,一起在前端的海洋里乘风破浪!