Discord弃用Electron转Rust:内存省七成,启动秒开
作者 | 褚杏娟策划 | Tina近日,Discord 联合创始人兼 CTO Stanislav Vishnevskiy 在 X 上宣布,Discord 正将客户端迁移至 Rust,桌面端将移除 Electron,移动端也将放弃 React Native。他展示的 Windows 任务管理器截图显示,新客户端以“Dis
Discord 联合创始人兼 CTO Stanislav Vishnevskiy 近日在 X 上公布,客户端正在向 Rust 迁移——桌面端不再用 Electron,移动端也要告别 React Native。他贴出的 Windows 任务管理器截图里,新客户端以「Discord Phoenix」之名运行,内存占用约 290.2MB;作为对比,现在的 Windows 客户端只要多加几个服务器,内存就轻易冲到 1GB 往上。Vishnevskiy 后来补充说,截图里那个客户端同时挂着两个账户。
Vishnevskiy 说:「新版 Discord 客户端内存占用更低,这还只是其中一点。点击操作流畅无比,我再也回不去了。看看启动速度就知道了。」他还放出了新版客户端的实际效果。
聊到移动端,Vishnevskiy 表示:「我觉得它现在可能是我手机上响应速度最快的应用了。」移动端的效果他也一并展示。
后来有人问起网页客户端会怎么变,Vishnevskiy 给出的答复是:「我们会有一个 HTML 渲染器,但逻辑系统将采用 WASM 而非 JS。」
正式上线时间,Discord 目前还没给出,只说希望尽快让用户参与测试。
有网友在 Vishnevskiy 帖子下留言:「恭喜你们终于发现 Vibe Coding 了。」他没有正面接话。不过 Discord 工程副总裁 Mark Smith 早在 3 月份就公开讲过公司的内部 AI 开发平台 Vibeyard。按他的说法,Discord 员工以往交付一款内部应用要几天甚至几周,现在借 Claude、CLAUDE.md、GitHub Actions 和 Cloudflare 基础设施,部署大约两分钟就能搞定。
所以这次重构,多数人把它归为 AI Coding,只是官方并没有明确这么讲。
Discord 的内存毛病不是一天两天了。
2025 年 10 月,Discord 对 Windows 客户端做了一轮专项排查。到当年 12 月,团队修掉的问题至少有 9 项,涉及内存泄漏、死锁、缓冲区溢出等,同时补上了遥测和内存分析工具。
可问题没能根除。Discord 披露的情况是:正常使用时内存一般不到 1GB,但部分用户会碰上超过 4GB 的异常占用。有些问题还牵扯到操作系统、驱动程序和硬件,得拉上外部合作伙伴一起查。
修了一轮之后,Discord 把内存占用的 P95 压低了约 5%。但对那些长时间挂着、频繁切换频道和服务器的人来说,这点降幅显然不够。
自动重启的实验就是这么来的。
2025 年底,Discord 工程团队在 Reddit 上说明了这项特殊的性能实验:Windows 客户端内存占用一旦超过 4GB,程序可以在用户离开电脑后自己重启,把持续上涨的内存压力卸掉一部分。为了不打扰用户,触发条件卡得很严——客户端至少运行一小时、用户处于离开状态、没有语音通话在进行,并且每天只重启一次。团队想用这个办法缓解部分用户的内存压力,顺便多收集一些异常数据。
Discord 当时说得很清楚,这只是临时措施,不是长久之计。
这个决定当时在社区里引起过讨论。有人认可 Discord 主动处理问题的态度;也有人觉得,一款聊天软件要靠自动重启来管住内存,本身就说明客户端的性能问题已经相当严重。
之后 Discord 还是沿着原来的技术路线继续优化。今年 9 月 8 日,Discord 公布了一轮性能改进:桌面端升到 Electron 42,改掉部分调用方式后,CPU 占用中位数下降约 17%,可内存占用中位数反倒涨了约 4%。
移动端也做了类似的事。React Native 版本升级之后,Android 和 iOS 应用的平均 CPU 占用下降约 5%,平均启动时间缩短约 5%。
这些数字说明,Discord 并非没试过优化 Electron,也不是碰上一次性能问题就突然决定重写客户端。团队其实一直在投入大量工作,只是在原有架构下,各项性能指标之间仍然要做取舍。
对 Discord 这类产品来说,这个问题格外敏感。用户打游戏、直播或共享屏幕时,它常常还在后台挂着。聊天客户端多吃的 CPU 和内存,可能直接挤掉游戏和其他应用的空间。
于是 Discord 拿出了更彻底的办法:不用 Electron,整个客户端用 Rust 重写。
Rust 并不是 Discord 临时挑中的一门新语言。
Vishnevskiy 透露,Discord 对 Rust 的采用从 2018 年就已开始,如今公司不少基础设施、语音技术以及部分现有客户端代码都由 Rust 编写,把整个客户端迁到 Rust 上,一直是团队想达成的目标。
这种信任并非凭空而来。2020 年 Discord 曾发布一篇工程文章,说明为何要把一个核心后端服务从 Go 换成 Rust。该服务叫 Read States,作用是记录用户读过哪些频道和消息。Discord 要应对数十亿条已读状态,服务每秒都涉及大量缓存更新与数据库写入,是典型的高频访问场景。
原来的 Go 版本平时跑得挺快,可差不多每两分钟就会冒出一次明显的延迟尖峰。工程团队查下来,发现毛病出在垃圾回收器(GC)扫描大型 LRU 缓存上。
调垃圾回收参数、缩小缓存规模,Discord 都试过。问题是缓存一缩,更多数据就得回数据库里读,尾延迟反而更难看。团队最后拍板:用 Rust 重写这个服务。
Rust 靠所有权机制在编译阶段就把内存访问管起来,不需要传统垃圾回收器。迁移完成后,缓存里的对象不用了就能及时释放,原先周期性的垃圾回收延迟也消失了。Discord 还借着 Rust 版本重新调整了缓存结构和容量,服务整体性能随之提高。
代价当然也有。Discord 当时就提到,早期 Rust 异步编程生态还不够成熟,开发团队得额外解决不少技术问题。系统规模一大,换语言要操心的就远不止运行效率。
这段经历给此次桌面客户端重构铺了底:多年 Rust 开发经验已经攒下,Rust 在高频、低延迟业务里的价值也验证过了。
这次真正让外界盯上的技术选择,是 GPUI。
Vishnevskiy 公布重构计划后,有开发者猜 Discord 会用 Tauri。Tauri 同样以 Rust 为核心,但界面通常交给操作系统提供的 WebView 渲染,开发者还能继续用 HTML、CSS 和 JavaScript。这么一来,Electron 自带完整 Chromium 运行环境的部分开销可以省掉,Web 开发的便利也保住了。
可 Vishnevskiy 说得很明确:Discord 没用 Tauri,选的是 GPUI。
GPUI 最早由 Zed 编辑器团队开发,是一个基于 Rust、靠 GPU 加速渲染的界面框架。它不像把 Web 界面塞进桌面应用那样,而是让开发者直接用 Rust 写界面和交互逻辑。
Discord 并不想让新版本看着像另一个产品。按 Vishnevskiy 的说法,新客户端的外观和功能基本不变,但应用本身走原生实现,只在 YouTube、Activities 等特定功能里用系统 WebView。
GPUI 也不是拿来就能直接满足 Discord 需求的。一位参与重构的 Discord 开发人员透露,团队在 Zed 的 GPUI 基础上做了大量修改,现在用的版本实际上已经接近一个私有分支。Discord 希望日后与 Zed 合作,把部分改动贡献回上游项目。
移动端也要换技术路线。
Vishnevskiy 说道:“从一开始,Discord 的 iOS 端就是用 React Native 开发的;安卓端几年前也迁移到了 React Native,目的是抹平两端差异,安卓版之前在功能上一直落后于 iOS 版本。”
现在 Discord 打算逐步移除 React Native,但不会把桌面界面直接搬到手机上。照 Vishnevskiy 的说法,iOS 和 Android 仍各自保留原生界面,核心应用代码则通过 Rust 与桌面端共享。
不过,Rust 加 GPUI 并不是没有成本的选择。
先说 Rust。它的内存安全机制能帮开发者躲开大量内存错误,但业务逻辑引起的内存泄漏、资源缓存过大、GPU 显存占用这些问题,它没法自动消掉。客户端到底吃多少资源,还是看整体架构和代码怎么写。
再说 GPUI。它的生态成熟度跟 Electron、成熟的浏览器技术栈还有差距。输入法、文本选择、窗口管理、辅助功能、操作系统集成,这些平台适配工作 Discord 都得自己维护一大摊。用了大幅修改过的 GPUI 分支,也意味着团队以后要持续承担框架维护和版本同步的成本。
无障碍支持尤其要留意。Electron 背后的 Chromium 攒了多年的无障碍基础设施,能和 Windows UI Automation、macOS 辅助功能等系统机制打交道。GPUI 虽然已有通过 AccessKit 等方式实现无障碍支持的方案,但有接口不等于实际应用马上就能拿到完整的屏幕阅读器和键盘导航体验。
对 Discord 这种普通用户量大、又要服务不同设备和使用习惯的产品来说,这些能力谈不上可以拖到最后再补。
另外,GPUI 用 GPU 加速渲染,也不等于所有界面操作天然更快。实际性能还受渲染调度、字体处理、GPU 驱动、平台兼容性等因素影响。
说到底,Discord 这次重构难就难在:能不能用新的技术栈把整个产品稳定地复现出来。
对 Discord 的这一决定,不少开发者投了赞成票。有用户直接喊话,盼着别的公司也赶紧跟上,通信软件 Slack 被点名。另有开发者觉得,只要这轮改动能让工程师重新盯住内存和 CPU 占用,就算没白折腾。
这些声音指向的是桌面应用吃资源的老毛病。借 Electron,开发者能用现成的 Web 技术同时做 Windows、macOS 和 Linux 版本,不必为每个平台各养一套代码。代价是应用得自带 Chromium 运行环境,用户这边就常碰上好几个应用各占一大块内存的局面。
有人这样讲:“Discord 本来就是一款面向游戏和直播场景的应用,客户端理应尽量减少 CPU 占用,避免影响正在运行的游戏。”
到了 AI 时代,把内存省下来这件事的分量又重了几分。
Zack Shutt 的评价是:“在内存短缺的时候,终于有一家软件公司开始把内存还给用户了。”
用户一旦在电脑上跑起本地模型,其他应用占多少资源就变得格外扎眼。久已有之的一种抱怨是:Electron 为了兼顾跨平台开发,作出了太多妥协;等 AI 能帮 Web 开发者干原生开发的活,它就不适合 AI 时代了。
投资人 Guillermo Flor 认为,本地工具的技术栈正在往 Rust UI 靠拢,这类界面可以和本地模型运行时配合起来。他说,真正的机会是让用户随时感知到 AI 智能体的存在,又不至于把笔记本压垮。应用得启动快,给模型运行留够系统资源,同时保证智能体在后台干活时,前台界面照样流畅、响应及时。
也有开发者算了一笔账:过去做原生应用,人工成本压不下来,企业于是选 React、Electron 和 JavaScript,拿多出来的内存开销换更低的开发成本。而现在 LLM 和 Agent 正在把写代码、做性能分析、迁移的代价往下拉,原生应用值得重新考虑。这位开发者还批评,Claude 和 GPT 这类 AI 工具自己的桌面端也是基于 Web 的封装,相当浪费。
已经有一些本地 AI 工作台的开发方转向 Tauri 和 Rust,图的是安装包更小、启动更快。不过也有人提醒,界面再轻,后台 Agent 运行时要是仍占着数百 MB 内存,整体开销未必好看。
但把账全算到 Electron 头上的人,并不是全部。
在部分开发者看来,Electron 最大的价值从来不是性能拉满,而是让一个团队用比较低的成本同时维护多个平台的应用。对功能迭代快、平台覆盖要求高的公司来说,这个优势仍然很难舍弃。
还有用户认为,Discord 该做的不是重写客户端,而是给产品本身瘦身。按他的观察,Discord 如今塞进了大量商业化入口、推荐功能、弹窗和界面元素。底层换成 Rust 也没用——功能照旧越堆越多,资源消耗和使用体验未必能持续好转。
性能之外,另一个争议点是客户端修改。
Discord 的第三方修改圈子一直很活跃。用户借 Vencord 之类的工具改样式、藏掉不想要的界面元素,或者加上官方没做的功能。Electron 用 Web 技术搭界面,这类改动实现起来相对容易,照着现成的 JavaScript 和 CSS 结构就能定制。
客户端一旦搬到 Rust 和 GPUI 上,这些改法可能就行不通了。对依赖第三方插件和自定义主题的用户来说,性能上的提升未必补得回功能和自由度上的损失。有人担心,迁到 Rust 实际上可能让 Discord 更容易卡住第三方客户端的修改,甚至怀疑这也是公司推动重构的用意之一。
不过,参与此次重构的一位 Discord 开发人员随后回应,团队的工作重点是提高性能,让客户端拥有更好的使用体验。
参考链接:
https://www.theverge.com/news/1027379/discord-ditching-electron-web-app
https://x.com/svishnevskiy/status/2118081920194203799
https://www.reddit.com/r/discordapp/comments/1pej7l7/restart_on_excessive_memory_usage_experiment/
https://discord.com/blog/discord-patch-notes-september-8-2026
https://discord.com/blog/why-discord-is-switching-from-go-to-rust
https://news.ycombinator.com/item?id=50378625
https://github.com/zed-industries/zed/tree/main/crates/gpui
声明:本文为 InfoQ 原创,不代表平台观点,也不构成投资建议,未经许可禁止转载。