Discord弃用Electron转Rust:内存省70%秒开,Windows应用该跟吗?
近日,Discord 联合创始人兼 CTO Stanislav Vishnevskiy 在 X 上宣布,Discord 正将客户端迁移至 Rust,桌面端将移除 Electron,移动端也将放弃 React Native。他展示的 Windows 任务管理器截图显示,新客户端以“Discord Phoenix”的名称运
Discord 联合创始人兼 CTO Stanislav Vishnevskiy 近日在 X 上宣布,客户端正迁往 Rust:桌面端不再用 Electron,移动端也放下 React Native。他晒出的 Windows 任务管理器截图里,新客户端名为“Discord Phoenix”,内存占用约 290.2MB。作为对照,现有的 Windows 客户端在加入多个服务器后,内存很容易冲到 1GB 甚至更高。Vishnevskiy 后来补充说,截图中的客户端同时跑着两个账户。

Vishnevskiy 演示了新版客户端的实际表现,并说:“新版 Discord 客户端内存占用更低,这还只是其中一点。点击操作流畅无比,我再也回不去了。看看启动速度就知道了。”
移动端的效果他也秀了一把:“我觉得它现在可能是我手机上响应速度最快的应用了。”
有人接着问网页客户端会怎么变,Vishnevskiy 的回答是:“我们会有一个 HTML 渲染器,但逻辑系统将采用 WASM 而非 JS。”
正式上线时间还没定。Discord 只说希望尽快开放给用户测试。
评论区有人留言:“恭喜你们终于发现 Vibe Coding 了。”Vishnevskiy 没有正面接话。不过 Discord 工程副总裁 Mark Smith 早在 3 月份就公开介绍过公司内部的 AI 开发平台 Vibeyard。按他的说法,Discord 员工以前交付一款内部应用要几天甚至几周,现在借助 Claude、CLAUDE.md、GitHub Actions 和 Cloudflare 基础设施,大约两分钟就能完成部署。
所以多数人把这次重构归因于 AI Coding,官方并没有明确这么讲。
内存飙到 4GB,Discord 甚至试过自动重启
Discord 的内存问题由来已久。2025 年 10 月,公司针对 Windows 客户端启动专项排查;到当年 12 月,团队已修复至少 9 项与内存泄漏、死锁、缓冲区溢出等有关的问题,还补上了遥测和内存分析工具。
问题没有就此根除。Discord 披露,客户端正常使用时内存通常低于 1GB,可部分用户会碰上超过 4GB 的异常占用。有些情况还牵扯到操作系统、驱动程序和硬件,团队得跟外部合作伙伴一起定位。
修了一轮之后,Discord 把内存占用的 P95 压低了约 5%。但对长期运行、频繁切换频道和服务器的用户来说,这点降幅远远不够。
自动重启的实验就是这么来的。
2025 年底,Discord 工程团队在 Reddit 上解释了这项特殊的性能实验:Windows 客户端内存占用超过 4GB 时,程序可以在用户离开电脑后自行重启,好缓解持续上涨的内存压力。触发条件卡得很严——客户端至少运行一小时、用户处于离开状态、没有语音通话,且每天只重启一次。团队想借此给部分用户减负,同时多收集一些异常数据。
Discord 当时说得很清楚,这只是临时措施,不是解决内存问题的长久办法。
这个决定在社区里引起过讨论。有用户认可 Discord 主动处理问题的态度,也有人觉得,一款聊天软件要靠自动重启来控制内存,本身就说明客户端性能问题已经相当严重。
之后,Discord 还是沿着原有技术路线继续优化。今年 9 月 8 日,公司公布了一轮性能改进:桌面端升级至 Electron 42,调整部分调用方式后,CPU 占用中位数下降约 17%,内存占用中位数反倒增加约 4%。
移动端做了类似优化。React Native 版本升级后,Android 和 iOS 应用的平均 CPU 占用下降约 5%,平均启动时间缩短约 5%。
这些数据说明,Discord 并非没试过优化 Electron,也不是因为一次性能问题就突然决定重写客户端。团队其实持续投入了大量工作,只是在原有架构下,不同性能指标之间仍要取舍。
对 Discord 这类产品来说,问题格外敏感。用户打游戏、直播或共享屏幕时,它经常要在后台挂着。聊天客户端多吃的 CPU 和内存,可能直接挤占游戏和其他应用的运行空间。
于是 Discord 拿出了一套更彻底的方案:放弃 Electron,用 Rust 重写整个客户端。
已经为这次 Rust 重构准备了多年
Rust 不是 Discord 临时挑中的新语言。Vishnevskiy 表示,公司早在 2018 年就开始采用 Rust。目前 Discord 的大量基础设施、语音技术和部分现有客户端代码已用 Rust 开发,把整个客户端迁移过去,一直是团队想实现的目标。
Discord 和 Rust 的渊源可以追到 2020 年。那一年团队专门发过一篇工程文章,讲为什么把一项核心后端服务从 Go 改成 Rust。这项服务叫 Read States,管的是用户读过哪些频道、哪些消息。它要扛住数十亿条已读状态,每秒都有大量缓存更新和数据库写入,是典型的高频访问场景。
当时的 Go 版本平时跑得挺快,可差不多每两分钟就会冒出一个明显的延迟峰值。工程团队查下来,发现毛病出在垃圾回收器(GC)扫描大型 LRU 缓存上。
参数调过,缓存也缩过,但缓存一小,更多数据就得回数据库读,尾延迟照样受影响。折腾一圈之后,团队拍板:用 Rust 重写。
Rust 靠所有权机制在编译阶段就把内存访问管起来,不依赖传统垃圾回收器。迁移完成后,缓存里的对象不用了就能及时释放,原先周期性出现的垃圾回收延迟也消失了。Discord 还借着 Rust 版本重新调整了缓存结构和容量,服务整体性能跟着往上走。
代价当然也有。Discord 当时就提到,Rust 异步编程生态那时还不够成熟,开发团队得额外啃技术难题。系统规模一大,换语言要算的账远不止运行效率这一项。
这段经历给这次桌面客户端重构铺了底。多年 Rust 开发经验攒下来了,Rust 在高频、低延迟业务里的价值也验证过了。
不选 Tauri,押注 GPUI:Discord 连界面都要推倒重来
这次真正让人盯上的技术选择,是 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 合作,把部分改动贡献回上游项目。
移动端也会换技术路线。
“从一开始,Discord 的 iOS 端就是用 React Native 开发的;安卓端几年前也迁移到了 React Native,目的是抹平两端差异,安卓版之前在功能上一直落后于 iOS 版本。”Vishnevskiy 说道。
现在 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 驱动、平台兼容性这些因素。
所以这次重构真正的难点,是能不能用新的一套技术栈把整个产品稳定复现出来。
“Electron 已经不再适合 AI 时代”
对于Discord的这一决定,不少开发者表达了欢迎。有用户直接表示,希望别的公司也能尽快跟上,通信软件Slack尤其被点名。也有开发者认为,只要这次改动能让工程师重新把内存和CPU占用当回事,就算是一件好事。
这些声音的背后,是开发者对桌面应用吃资源这件事积怨已久。Electron的好处很明确:开发者可以用成熟的Web技术,快速做出Windows、macOS和Linux应用,不必为每个平台单独维护一套代码。代价则是应用要自带Chromium运行环境,用户也就越来越常遇到好几个应用各自占掉一大块内存的情况。
有开发者说:“Discord本来就是一款面向游戏和直播场景的应用,客户端理应尽量减少CPU占用,避免影响正在运行的游戏。”
不过放到AI时代来看,省内存这件事的分量更重了。
Zack Shutt的评价是:“在内存短缺的时候,终于有一家软件公司开始把内存还给用户了。”
一旦用户开始在电脑上跑本地模型,其他应用的资源占用就变得格外扎眼。抱怨声其实早就有了:“Electron为了兼顾跨平台开发,作出了太多妥协。在AI能够帮助Web开发者完成原生开发任务之后,Electron已经不再适合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开发人员后来回应说,团队的工作重点是提高性能,让客户端拥有更好的使用体验。