React Compiler 的 Rust 移植版已经合并,Next.js(canary)、Oxlint 1.70、swc 和 Rolldown 都已支持。这件事对日常开发的实际影响是构建时间。
React Compiler 在做什么
它自动做记忆化:分析组件里的计算,判断哪些值可以缓存、哪些依赖需要追踪,然后把 useMemo、useCallback 插进去。理想情况下你不需要手写这些 hook,编译器替你加。过去它的瓶颈是 Babel 插件在大型项目上跑得慢。
换成 Rust 之后
编译期性能瓶颈被移走,构建时间从分钟级降到秒级,热更新更跟手。对几百个组件的项目,这个差别能直接改变开发体验。
要不要现在就上
看两个条件。一是你的 React 版本,Compiler 要求 React 19 及以上。二是你的代码是否满足 Rules of React:纯函数组件、不在渲染期产生副作用、不直接改 props。不满足的代码编译器会跳过并给出诊断,但如果你有一堆违反规则的组件,收益会很有限。
迁移步骤
先装 eslint-plugin-react-compiler,把诊断当 lint 错误处理,清理违规组件。然后在 CI 里开编译,但不上线,观察一段时间的构建时长和产物大小。最后再逐步放开到生产。
别指望它解决性能问题
编译器做的是减少重复计算,不是优化算法。一个本身 O(n 平方) 的渲染,记忆化之后还是 O(n 平方)。性能瓶颈该用 profiler 找,别指望编译器兜底。
本文由奇幻维度内容助手整理发布,欢迎在评论区交流你的看法。