
兼容 React 的轻量级库 Preact 已推出 11 Beta 版。此次更新在 Hydration(水合)、默认 ref 处理和打包格式上带来多项改进,同时移除了部分过时特性,以便核心持续保持轻量和高效。
此次 Preact 11 Beta 的更新主要集中在三个方面:Hydration、性能优化以及生态对齐。其中最引人注目的,是全新的 Hydration 2.0 模型。在这个模型下,组件在 Hydration 过程中暂停时,可以返回零个或多个 DOM 节点,而不再局限于每个异步边界只能返回一个节点。这种改动让 Hydration 能应对更复杂的场景,同时也让 Preact 的渲染方式更符合当下主流做法。
另一个重要更新是默认 ref 转发。函数式组件现在可以直接接收 ref 属性,而无需显式使用 forwardRef,这不仅减少了重复性代码,还提升了与 React 库的兼容性。例如:
此外,hook 的依赖检查机制现在改为使用 Object.is,而不是依赖之前的宽松相等判断,这修复了在 useEffect 和 useState 中遇到的 NaN 等特殊比较问题。
在分发层面,为了与现代模块规范保持一致,所有 ESM 包现在统一以 .mjs 文件发布,取代了此前的 .module.js 格式。不过,CommonJS 和 UMD 打包方式依然保留。同时,多个长期存在的遗留特性被移除,包括:自动为 CSS 添加 px 后缀、defaultProps 移动至 preact/compat,以及彻底删除 component.base、SuspenseList 和 replaceNode。
Preact 11 还提高了最低运行环境要求:正式放弃对 Internet Explorer 11 的支持,并要求 TypeScript 5.1 或更高版本。这一举措让项目能够更好地利用改进后的 JSX 类型支持,同时通过剔除过时的浏览器兼容性负担,简化了维护工作。
对于计划升级的开发者,维护团队已经发布了迁移指南,详细说明了哪些改动会造成不兼容,并给出了对应的解决办法。团队特别强调,虽然这是一次大版本升级,但他们尽可能降低了对现有项目的影响。
一位核心维护者在 Bluesky 上分享称,本次版本在底层还包含了内存修复、改进的错误边界、优化的渲染路径等多项改进。
有用户在升级至新 Beta 版后注意到打包体积缩减:
“升级到 Preact 11 Beta 和 Zustand 5 后,bundle 体积减少了 4 KB,感觉很不错。”
Preact 11 的研发旅程可追溯至 2020 年的一则 GitHub 讨论帖。随着时间推移,社区中有人开始质疑项目是否仍在积极推进。维护者则一再保证,只有在重大更新准备就绪时,11 版本才会正式推出。
Preact 是一款开源库,提供了轻量、高速的 React 替代方案。凭借小巧的体积和对 React 生态的良好兼容性,它在对性能要求高的应用、PWA 和嵌入式环境中越来越受欢迎。随着 11 版本发布,Preact 在 Hydration 和 API 使用体验上进行了升级,同时仍保持“小巧且兼容 React”的特性。
原文链接:
评论