1 篇文章 标记为 "announcement"
查看所有标签迈向将 Hermes 设为默认引擎
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
自2019 年我们发布 Hermes 以来,它在社区中的采用率日益提高。Expo团队维护着流行的 React Native 应用元框架,最近在用户最期待的功能投票中胜出后,宣布了实验性支持Hermes。流行移动数据库Realm团队也于近期发布了 alpha 支持。本文将重点介绍过去两年间我们推动 Hermes 成为 最佳 React Native JavaScript 引擎的重大进展。展望未来,我们相信通过这些改进及后续优化,能让 Hermes 成为所有平台上 React Native 的默认 JavaScript 引擎。
React Native 0.66 正式发布
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
今天我们正式发布 React Native v0.66 版本,提供对 Android 12 和 iOS 15 的支持,同时包含多项修复和常规更新。
重点详解
React Native 的多平台愿景
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
React Native 在提升移动开发标准方面取得了巨大成功,无论是在 Facebook 内部还是整个行业。随着我们以新方式与计算机交互以及新设备的不断涌现,我们希望 React Native 能够服务于所有人。尽管 React Native 最初是为构建移动应用而创建的,但我们相信聚焦多平台开发、针对每个平台的优势和约束进行构建能产生共生效应。当我们将这项技术扩展到桌面和虚拟现实领域时,已经看到了巨大收益,我们非常期待分享这对 React Native 未来的意义。
React Native 2021 下半年动态
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
过去一年间世界巨变,React Native 也不例外。我们迎来了团队新成员(期待早日线下见面!),项目日趋成熟,新机遇不断涌现。我们将在本文及后续文章中与大家分享这些进展!
在 Facebook,团队采用半年工作周期制。每个周期我们都会评估策略、制定计划并在内部同步。今天,我们想向社区公开分享下半年的规划。
2021 下半年对 React Native 将是激动人心的半年。我们将聚焦三大方向:培育社区、向开源生态逐步推广新架构,以及推进技术发展。
React Native 0.65 正式发布
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
今天我们发布 React Native 0.65 版本,带来了新版本的 Hermes、可访问性改进、包升级等多项更新。
Hermes 0.8 有哪些新特性?
专为 React Native 优化的开源 JavaScript 引擎 Hermes 已升级至 0.8.1 版本。本次更新的主要亮点包括:
-
全新的并发垃圾回收器 "Hades",在 64 位设备上将暂停时间缩短高达 30 倍。在 Facebook 内部测试中,某些 CPU 密集型工作负载性能提升了 20%-50%。点击此处了解 Hades 详情。
-
ECMAScript 国际化 API (ECMA-402,即
Intl) 现已内置到 Android 版 Hermes 并默认启用,每个 API 仅增加 57-62K 空间开销(相比 JSC 的 6MiB)。从此 Hermes 用户不再需要地区设置 polyfill。特别感谢 @mganandraj 和微软团队推动实现此功能! -
内存优化包括 SMI(小整数)和指针压缩技术,使 JS 堆内存缩减 30%。
-
对
Function.prototype.toString的改进修复了因不当功能检测导致的性能下降,同时支持源代码注入场景。
完整更新日志请参阅 Hermes 发布记录。
若尚未启用 Hermes,请按此步骤操作以获取新特性和性能提升!
可访问性修复与新增功能
去年 Facebook 作出 GAAD 承诺以改进 React Native 可访问性。0.65 版本兑现了该承诺并带来多项改进:
-
支持为 iOS 指定高对比度亮/暗色值,详见动态颜色文档。
-
Android 新增
getRecommendedTimeoutMillisAPI,可获取用户在无障碍设置中配置的超时值,适用于需要额外操作时间的场景。 -
多项基础修复确保 TalkBack/VoiceOver 正确播报组件状态(如
disabled禁用状态和unselected未选中状态)。
欢迎参与解决未完成的可访问性问题!
重要依赖更新与注意事项
-
需在
package.json中添加react-native-codegen版本0.0.7作为devDependency。 -
JCenter 已停止维护进入只读模式,我们已将其从 maven 仓库移除,依赖项更新至 MavenCentral 和 Jitpack。
-
已将 OkHttp 从 v3 升级至 v4.9.1。变更详情请参阅升级至 OkHttp 4。
-
升级至 Flipper 0.93 以支持 Xcode 12.5。请查阅Flipper 更新日志。
-
支持 Android Gradle Plugin 7
-
Apple Silicon 设备需要链接器变通方案。详情请参阅@mikehardy 的说明。
致谢!
此版本包含来自 61 位贡献者的 1100 多次提交。感谢所有为此版本做出贡献的开发者!您可在此处查看完整更新日志。
GAAD 承诺一周年回顾
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
自 Facebook 作出GAAD 承诺提升 React Native 的无障碍功能已满一年,项目进展远超预期。我们欣喜地宣布该项目将在 2021 年持续推进,并在此同步当前成果。去年完成对 React Native 无障碍功能缺口的全面分析后,我们立即启动了填补工作。
初始阶段共梳理出 90 个待解决的无障碍功能缺口,从 2021 年 3 月项目在 GitHub 启动至今:
-
11 个 issue 由社区成员关闭
-
19 个 issue 经 React Native 团队评估后关闭
-
9 个 pull request 已完成合并
-
1 个 pull request 被合并至 React Native 文档
我们由衷感谢 React Native 社区过去一年为提升框架无障碍功能做出的重大贡献。每位参与者的努力都在推动 React Native 无障碍体验的进步中发挥了重要作用。
GAAD 承诺 - 三月可访问性问题更新报告
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
自我们向 GitHub 社区提交经过全面审查的差距分析和问题清单以改进 React Native 的可访问性以来,已过去四周。在 React Native 社区的帮助下,我们在提升可访问性方面已取得显著进展。社区成员积极协助贡献者、审查测试用例,并推动解决历史遗留的可访问性问题。自 3 月 8 日至今,社区已通过 4 个拉取请求关闭了 6 个问题,另有 7 个拉取请求正在审核流程中。
在持续推进此项工作的同时,Facebook 的 React Native 团队和可访问性团队正在评估此前提交的历史缺陷报告,以确定它们是否已被现有差距分析覆盖,或是否需要纳入新的待解决问题。目前我们已发现 1 个新问题并纳入项目,4 个问题直接映射到现有问题,另有 2 个问题预计将通过解决根本性问题的现有方案关闭。
衷心感谢所有参与的社区成员!你们切实推动了 React Native 的无障碍化进程,让每个人都能更便捷地使用这项技术!
发布 React Native 0.64:支持 iOS 平台的 Hermes 引擎
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
今天我们正式发布 React Native 0.64 版本,此版本新增了对 iOS 平台 Hermes 引擎的支持。
iOS 平台的 Hermes 可选启用
Hermes 是一款专为 React Native 优化的开源 JavaScript 引擎。它通过降低内存占用、减小下载体积并缩短应用可用时间(即"交互就绪时间"/TTI)来提升性能。
本次发布后,您现在也可以在 iOS 开发中使用 Hermes。只需在 Podfile 中将 hermes_enabled 设为 true 并运行 pod install 即可启用。
use_react_native!(
:path => config[:reactNativePath],
# to enable hermes on iOS, change `false` to `true` and then install pods
:hermes_enabled => true
)
请注意:iOS 平台的 Hermes 支持仍处于早期阶段。我们将保持其作为可选功能,同时进行更深入的基准测试。欢迎您在自己的应用中尝试,并反馈使用效果!
默认启用内联引用 (Inline Requires)
内联引用是 Metro 的一项配置选项,通过延迟执行 JavaScript 模块直到实际使用时(而非启动时)来提升应用启动速度。
该功能作为可选配置项已存在多年,并在文档的性能章节中推荐使用。现在我们将默认启用此选项,帮助开发者无需额外配置即可获得更快的 React Native 应用启动体验。
内联引用是 Babel 的一项转换功能,将模块导入语句转换为内联形式。例如,它会把模块导入调用从文件顶部移动到实际使用位置。
转换前:
import {MyFunction} from 'my-module';
const MyComponent = props => {
const result = MyFunction();
return <Text>{result}</Text>;
};
转换后:
const MyComponent = props => {
const result = require('my-module').MyFunction();
return <Text>{result}</Text>;
};
更多关于内联引用的信息请参阅性能文档。
使用 Chrome 查看 Hermes 性能轨迹
过去一年 Facebook 赞助了 Major League Hacking 奖学金计划,支持对 React Native 的贡献。Jessie Nguyen 和 Saphal Patro 新增了在 Chrome DevTools 性能面板中可视化 Hermes 应用执行情况的功能。
详情请查看新版文档页面。
支持 Proxy 的 Hermes 引擎
我们已为 Hermes 添加 Proxy 支持,使其兼容 react-native-firebase 和 mobx 等热门社区项目。如果您正在使用这些包,现在可以将项目迁移至 Hermes。
我们计划在后续版本中将 Hermes 设为 Android 平台的默认 JavaScript 引擎,目前正在解决用户使用中的遗留问题。如果您的应用在采用 Hermes 时遇到阻碍,请在 Hermes GitHub 仓库提交 issue。
React 17 支持
React 17 没有面向开发者的新功能或重大破坏性变更。对 React Native 应用的主要影响是新的 JSX 转换,使文件无需导入 React 即可使用 JSX。
更多 React 17 信息详见 React 官方博客。
主要依赖版本变更
-
停止支持 Android API 16-20 级别。由于 Facebook 应用已停止支持用户量过低的 Android 版本,且该应用是 React Native 的主要测试平台,React Native 将同步停止支持这些版本。
-
需要 Xcode 12 和 CocoaPods 1.10
-
最低 Node 支持版本从 10 升级至 12
-
Flipper 升级至 0.75.1
致谢
衷心感谢数百位贡献者共同成就 0.64 版本!您可以在 0.64 版本变更日志 中查看本次发布的所有更新内容。
GAAD 承诺——提升 React Native 的无障碍功能
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
你好,React Native 社区:
2020 年 5 月,Facebook 是第一家作出 GAAD 承诺 的公司,此举意味着他们将无障碍功能确立为 React Native 开源项目的核心部分。自五月起,Facebook 团队持续系统地审查并记录了 React Native 中的无障碍功能缺陷。截至目前,差距分析已发现 90 个问题,所有问题均已转化为 GitHub 议题。
总体而言,我们发现 React Native API 对无障碍功能提供了强有力的支持。然而,许多核心组件尚未充分利用平台的无障碍 API,并且某些平台特定功能的支持仍存在缺失。
贡献者的热情和多样性始终是 React Native 发展的关键动力,这些无障碍功能的缺陷正是现有贡献者和新贡献者的大好机会。如果您一直有意为 React Native 贡献力量,我们诚邀您加入我们,共同提升 React Native 的无障碍体验。
为表彰贡献者的付出:当无障碍议题通过拉取请求解决后,贡献者将获得社区经理在 Twitter 上的公开致谢;代码库接受的拉取请求作者,将出现在 React Native 博客的每月议题更新中。
请加入我们,共同让 React Native 对每个人更加无障碍。
参与方式:
-
希望挑战进阶任务的贡献者可访问改进 React Native 可访问性项目页面,查看需要 React Native 专业知识的 GitHub 问题
-
有兴趣更新 React Native 文档以反映正在解决的无障碍功能缺陷的技术作者,请访问 React Native 文档库。
-
将此倡议分享给可能提供帮助的任何人!
-
在 Twitter 或 Facebook 关注 React Native GAAD 承诺开源无障碍社区经理,获取最新进展。





