写点什么

Meta 的 React Compiler 1.0 将自动记忆化引入到生产环境

作者:Daniel Curtis

  • 2025-12-18
    北京
  • 本文字数:1544 字

    阅读完需:约 5 分钟

大小:813.31K时长:04:37
Meta的React Compiler 1.0将自动记忆化引入到生产环境

React是一个被广泛采用的用于构建用户界面的 JavaScript 库,随着 React Compiler 1.0 的稳定发布,React 达到了一个里程碑,这个版本建立在近十年的工程工作和编译器学习的基础之上,改变了开发人员优化 React 应用程序的方式。

 

React Compiler 1.0 是一个构建时工具,通过自动记忆化来优化 React 应用程序,同时支持 React 和 React Native,而无需重写代码。该编译器已经在Meta的主要应用程序中经过了实战测试,现在完全准备好投入生产。该工具分析组件数据流和可变性,以消除不必要的渲染,覆盖手动 useMemouseCallback 实现无法处理的条件路径。

 

编译器通过 eslint-plugin-react-hooks 中的推荐预设集成了诊断功能,同时为ExpoViteNext.js提供了第一方模板。Expo SDK 54 默认启用了编译器,而 Vite 和 Next.js 为新应用程序提供了启用编译器的启动器。Next.js 16 将 React Compiler 支持列为稳定的,团队建议在启用编译器时使用 15.3.1 或更高版本的 Next.js。

 

在生产环境中,性能得到了显著的。Meta 报告称,初始加载速度提高了高达 12%,在 Meta Quest Store 中的交互速度提高了 2.5 倍以上,尽管结果因应用程序而异。来自Sanity StudioWakelet的真实案例研究展示了采用编译器后可衡量的性能提升,开发者报告组件渲染效率有了明显的改善。

 

额外的真实度量指标提供了编译器影响的详细见解。Sanity Studio 在他们的2024年 11 月变更日志中记录了使用 React Compiler 预编译他们的包后的重大收益:

 

到目前为止,已经编译了 1411 个组件中的 1231 个,从而使渲染时间和延迟减少了 20%到 30%。。当我们重构剩下的 180 个组件以支持自动记忆时,我们预计会有更大的改进。

 

Wakelet 在他们的案例研究中分享了将编译器推向 100%用户后的综合生产指标:

 

总体而言,我们的 LCP 提高了 10%(从 2.6 秒提高到 2.4 秒),我们的 INP 提高了约 15%(从 275 毫秒降到 240 毫秒)。通过更细粒度的测试,我们发现在纯 React 元素(如 Radix 下拉菜单)中获得的收益最大,其中 INP 加速接近 30%。

 

独立开发者 Nadia Makarevich 在一个大约有 15,000 行代码的真实应用程序上进行了测试,结果参差不齐。初始加载性能的影响很小,启用编译器之前和之后的 Lighthouse 分数几乎保持一致。然而,交互性能的提升因用例而异。在一个测量主题切换交互的测试中,总阻塞时间从 280 毫秒降至零。在另一个涉及复选框筛选交互的测试中,阻塞时间从 130 毫秒减少到 90 毫秒,尽管编译器未能消除由于来自外部库的非记忆对象引用而导致的所有重新渲染。

 

编译器的开发历史可以追溯到 React 团队在 2017 年对编译器的首次探索,即Prepack。尽管该项目最终被终止,但所学到的知识为 Hooks 的设计提供了信息,Hooks 是为未来编译器而创建的。在 2021 年,当前编译器方法的第一次迭代被演示,导致可在 React Conf 2024 上发布的实验版本和随后发布的全年 beta 版本。

 

与流行库的兼容性问题仍然存在。GitHub讨论显示,react-hook-form用户报告某些函数,包括 useWatch 和 getValues,在编译器下可能会遇到问题。

 

React 团队通过一个可选的react-compiler-runtime包,正式支持 React 17 及更高版本的应用程序上的编译器,使团队可以逐步采用,而不是升级到 React 19。鼓励当前使用早期版本的开发者使用react-compiler-healthcheck工具检查兼容性,并查看与 1.0 版本一起发布的逐步采用指南迁移文档建议从 React 18.3 开始,该版本包括对 React 19 兼容性所需的弃用 API 的警告。

 

React Compiler 为现有的 React 生态系统带来了优化,而无需更改框架,它将这种能力添加到 React 的以运行时为中心的体系结构中。编译器代表了 React 性能优化哲学的转变,从手动开发者干预转向自动化构建时分析,尽管团队建议在效果依赖项需要精确控制的地方保留 useMemouseCallback 作为应急出口。

 

原文链接:

https://www.infoq.com/news/2025/12/react-compiler-meta/

2025-12-18 15:301

评论

发布
暂无评论

2024华为云开源开发者论坛项目抢鲜看|Kmesh: 监控指标和访问日志功能详解

华为云原生团队

云计算 开源 容器 云原生

印象笔记发布全新知识管理平台 AI让你的第二个大脑持续升级

E科讯

金狗出没时间揭秘:为什么凌晨成了 Meme 币的神盘时段?

区块链软件开发推广运营

交易所开发 dapp开发 链游开发 公链开发 代币开发

Tableau Desktop 2019 for Mac(最好用的数据分析工具)v2019.1.0中文激活版

小玖_苹果Mac软件

LUMEVAX会议一体机:开启智能会议新征程

cts喜友科技

电视

字节跳动开源云原生数据仓库 ByConity 有奖众测,邀你体验完整的数仓能力

InfoQ写作社区官方

有奖活动 开发 热门活动

中小企业适合上管理系统吗?

积木链小链

企业管理 ERP 中小企业

海外直播加速方法,直播不再卡顿!

Ogcloud

海外直播专线 tiktok直播 tiktok直播专线 tiktok直播网络 tiktok直播加速

Avid Sibelius Ultimate 2023 for Mac(西贝柳斯音乐记谱软件)v2023.8激活版

小玖_苹果Mac软件

【开发者福音】沉浸式编程新功能——内联对话来袭!

CodeBuddy

开发者 代码 程序员】 腾讯云AI代码助手

Maplesoft Maple 2024 for mac(专业的数学计算软件)v2024.0激活版

小玖_苹果Mac软件

解锁电商新境界:揭秘亚马逊商品详情API接口的奥秘

代码忍者

API 接口 pinduoduo API

从人工智能到低代码:科技如何塑造未来的企业软件

天津汇柏科技有限公司

低代码 AI人工智能

如何建设开放可控的企业大数据平台?

袋鼠云数栈

TikTok直播攻略--从商品选择到网络线路

Ogcloud

TikTok tiktok运营 tiktok直播 tiktok直播专线 tiktok运营干货

ShareMouse for mac(跨平台鼠标和键盘共享软件)v6.0.59激活版

小玖_苹果Mac软件

Steinberg Cubase Pro 14 for Mac(多功能音乐制作)v14.0.5激活版

小玖_苹果Mac软件

从容应对开服高峰!火山引擎助力库洛游戏全球发行再创新高

火山引擎边缘云

告别手动填单,天润融通大模型让效率提升不止一倍!

天润融通

如何使用Python开发天猫获得淘宝买家秀API接口?

科普小能手

淘宝 天猫 API 接口 淘宝API接口 天猫API

GreptimeDB Edge 2.0 车端多模态数据库线上发布会

Greptime 格睿科技

数据库 车联网 汽车

区块链游戏的新观察:自治世界能否成为未来链游的突破口?

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

解锁淘宝天猫数据宝藏:深度探索商品描述、详情图与评论的API调用新视角

代码忍者

API 接口 pinduoduo API

RAG架构的数据准备流程

澳鹏Appen

LLM rag 检索增强生成

喝杯好茶,交个朋友丨天润融通签约霸王茶姬

天润融通

FlowJo 10 for Mac(流式细胞分析软件)v10.4激活版

小玖_苹果Mac软件

Meta的React Compiler 1.0将自动记忆化引入到生产环境_架构/框架_InfoQ精选文章