近日,Discord 联合创始人兼 CTO Stanislav Vishnevskiy 在 X 上宣布,Discord 正将客户端迁移至 Rust,桌面端将移除 Electron,移动端也将放弃 React Native。他展示的 Windows 任务管理器截图显示,新客户端以“Discord Phoenix”的名称运行,内存占用约 290.2MB。相比之下,现有 Windows 客户端在加入多个服务器后,内存占用很容易达到 1GB 甚至更高。Vishnevskiy 随后补充称,截图中的客户端同时运行着两个账户。

“新版 Discord 客户端内存占用更低,这还只是其中一点。点击操作流畅无比,我再也回不去了。看看启动速度就知道了。”Vishnevskiy 展示了新版客户端的效果:
“我觉得它现在可能是我手机上响应速度最快的应用了。”Vishnevskiy 还展示了移动端效果:
之后,有网友询问网页客户端的变化,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 月,Discord 针对 Windows 客户端启动专项排查。到当年 12 月,团队已经修复至少 9 项与内存泄漏、死锁、缓冲区溢出等有关的问题,还增加了遥测和内存分析工具。
但问题并没有彻底解决。Discord 披露,客户端正常使用时内存通常低于 1GB,部分用户却会遭遇超过 4GB 的异常占用。一些问题甚至涉及操作系统、驱动程序和硬件,团队需要与外部合作伙伴共同定位。
经过一轮修复,Discord 将内存占用的 P95 降低了约 5%,但对于长期运行、频繁切换频道和服务器的用户来说,这还远远不够。
于是,自动重启实验出现了。
2025 年底,Discord 工程团队在 Reddit 解释了这项特殊的性能实验。当 Windows 客户端内存占用超过 4GB 时,程序可以在用户离开电脑后自行重启,以缓解持续增长的内存压力。为了避免干扰用户,Discord 设置了严格的触发条件:客户端必须运行至少一小时、用户处于离开状态、没有进行语音通话,每天也只能重启一次。团队希望借此缓解部分用户的内存压力,同时收集更多异常数据。
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 重构准备了多年
Rust 并不是 Discord 临时选中的一门新语言。
Vishnevskiy 表示,公司早在 2018 年就开始采用 Rust。目前 Discord 的大量基础设施、语音技术和部分现有客户端代码已经使用 Rust 开发,将整个客户端迁移过去一直是团队希望实现的目标。
早在 2020 年,Discord 还专门发表过一篇工程文章,解释为什么将一项核心后端服务从 Go 迁移至 Rust。这项服务名为 Read States,负责记录用户读过哪些频道和消息。Discord 需要处理数十亿条已读状态,服务每秒涉及大量缓存更新和数据库写入,属于典型的高频访问场景。
当时的 Go 版本大多数时候运行很快,但几乎每隔两分钟就会出现一次明显的延迟峰值。工程团队排查后发现,问题与垃圾回收器(GC)扫描大型 LRU 缓存有关。
Discord 尝试过调整垃圾回收参数、缩小缓存规模等办法,但缩小缓存又会导致更多数据需要从数据库读取,反而影响尾延迟。团队最终决定用 Rust 重写这项服务。
Rust 通过所有权机制在编译阶段管理内存访问,不依赖传统垃圾回收器。迁移后,缓存中的对象可以在不再使用时及时释放,原有的周期性垃圾回收延迟问题也得到解决。Discord 还利用 Rust 版本进一步调整了缓存结构和容量,提高了服务整体性能。
不过,这次迁移并不是毫无代价。Discord 当时也提到,早期 Rust 异步编程生态还不够成熟,开发团队需要解决额外的技术问题。对于规模较大的系统,语言迁移需要考虑的远不只是运行效率。
这段经历为此次桌面客户端重构提供了背景。Discord 已经积累了多年 Rust 开发经验,也验证过 Rust 在高频、低延迟业务中的价值。
不选 Tauri,押注 GPUI:Discord 连界面都要推倒重来
Discord 这次真正引人关注的技术选择,是 GPUI。
在 Vishnevskiy 公布重构计划后,有开发者猜测 Discord 会采用 Tauri。Tauri 同样以 Rust 为核心,但它通常使用操作系统提供的 WebView 渲染界面,开发者仍然可以沿用 HTML、CSS 和 JavaScript 技术栈。这种方案能够减少 Electron 携带完整 Chromium 运行环境带来的部分开销,同时保留 Web 开发的便利性。
但 Vishnevskiy 明确表示,Discord 没有采用 Tauri,而是选择了 GPUI。
GPUI 最初由 Zed 编辑器团队开发,是一个基于 Rust、利用 GPU 加速渲染的界面框架。与将 Web 界面装进桌面应用不同,GPUI 允许开发者直接用 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 驱动、平台兼容性等因素影响。
因此,Discord 此次重构的难点在于能否用新的技术栈稳定复现整个产品。
“Electron 已经不再适合 AI 时代”
不少开发者对 Discord 的决定表示欢迎。一位用户直言,希望其他公司也能尽快跟进,尤其是 Slack 这样的通信软件。还有开发者表示,如果这次变化能让工程师重新重视内存和 CPU 占用,至少是一件好事。
这类观点背后,是开发者对桌面应用资源消耗长期积累的不满。Electron 让开发者能够使用成熟的 Web 技术快速开发 Windows、macOS 和 Linux 应用,避免为不同平台维护完全独立的代码。但与此同时,应用需要携带 Chromium 运行环境,用户也越来越容易遇到多个应用分别占用大量内存的情况。
“Discord 本来就是一款面向游戏和直播场景的应用,客户端理应尽量减少 CPU 占用,避免影响正在运行的游戏。”
但在 AI 时代,减少内存占用的意义更大。
“在内存短缺的时候,终于有一家软件公司开始把内存还给用户了。”Zack Shutt 评价道。
当用户开始在电脑上运行本地模型,其他应用的资源占用会变得更加敏感。“Electron 为了兼顾跨平台开发,作出了太多妥协。在 AI 能够帮助 Web 开发者完成原生开发任务之后,Electron 已经不再适合 AI 时代。”这样的吐槽已经很久了。
“本地工具的技术栈正逐渐向 Rust UI 收敛,这类界面能够与本地模型运行时协同工作。真正的机会在于,让用户随时感受到 AI 智能体的存在,却不会因此让笔记本电脑不堪重负。应用需要启动迅速,为模型运行留出足够的系统资源,并确保智能体在后台执行任务时,前台界面依然流畅、响应及时。”投资人 Guillermo Flor 表示。
还有开发者指出,以前开发原生应用的人工成本很高,企业选择 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 开发人员随后回应,团队的工作重点是提高性能,让客户端拥有更好的使用体验。

