实测 Vite 工程中 React Compiler 对构建时间的影响

2025年11月13日Elecmonkey

测试场景

一个基于 Vite 的 React 中型后台管理项目,此前已经迁移到 Rolldown-Vite,没有明显的兼容性问题。

  • Node.js 24.4.1
  • MacBook Air M2

测试结果

Rolldown-Vite + Oxc

测试次数第1次第2次第3次第4次第5次平均值
无 React Compiler1.41s954ms943ms847ms863ms1.00s
有 React Compiler3.06s2.71s2.71s2.57s2.62s2.74s

构建时间增加 174%

Vite (Rollup)

测试次数第1次第2次第3次第4次第5次平均值
无 React Compiler7.34s7.02s6.87s6.51s6.63s6.87s
有 React Compiler8.66s8.12s10.87s11.31s9.23s9.64s

构建时间增加 40%

Rolldown-Vite + Swc

另外做一个 swc 负责 JSX 转译的基准:

测试次数第1次第2次第3次第4次第5次平均值
无 React Compiler786ms824ms1.05s882ms760ms860ms

简单分析

一个“纯” React 项目渲染管线可以被 oxc/rolldown 系工具链完全接管,内部有着统一的 AST 格式。当前 React Compiler 仅以 Babel 插件的形式提供,依赖 Babel AST。所以任何在非 Babel 支撑的构建流程之中加入 React Compiler 的方案,都是增加了一个完全独立的构建流程。.tsx 源代码先被 oxc parse 成自己的 AST,然后一通处理,然后变成代码,然后再被 Babel parse 一次,然后 babel-plugin-react-compiler 转换成自己的 IR,然后一通处理再转化回去。

不过 Babel AST 确实是社区既成标准,而从 AST 转换到 React Compiler IR 的逻辑很难想象 React 团队会愿意再写一遍/维护多份。未来看起来有些迷茫。

不过的不过,目前 React Compiler 并不带来数量级的构建时间影响,应该说是可控的。React Compiler 的价值显而易见,稳定之后应该会成为 React 项目的标配。不过目前虽然发布了正式版本,Issue 区泛滥成灾的 Bug 反馈也许提示我们可以继续观望观望。