那个快被遗忘的 React Native,悄摸着搞了两件事

2021年8月22日 336点热度 0人点赞 0条评论


React Native 团队上周官方博客中发表了两篇文章,不得不多这在近几年是非常罕见的。看看过去的记录,一年能发布几篇也就不错了。而 React Native 团队在下半年也会有大动作:发布新的框架。一起来看看 React Native 团队想搞什么事。


发布 React Native 0.65

Facebook 官方发布了 React Native 0.65 版本,主要包括新版 Hermes、可访问性改进和软件包升级等。接下来一起看看这些新特性。

Hermes 0.8

Facebook 专门为 React Native 优化了一版 Javascript VM Hermes,目前版本号是 0.8.1。这一版本有一些显著的更新:

  • 新的名为 Hades 的并发垃圾收集器,可以 64 位设备上将暂停时间缩短多达 30 倍。在 Facebook 内部,这可以将一些 CPU 密集型工作负载提高 20%-50%;

  • ECMAScript 国际化 API(ECMA-402 或 Intl)现在内置在 Android 上的 Hermes 中并默认启用,每个 API 大小的开销只有 57-62K(与 JSC 的 6MiB 相比)。通过此更改,Hermes 用户不再需要 locale polyfills;

  • OS 版 Hermes 现在支持 Apple M1 Mac 和 Mac Catalyst;

  • 内存改进,包括 SMI(小整数)和将 JS 堆缩小 30% 的指针压缩;

  • 对 Function.prototype.toString 的更改修复了由于功能检测不当而导致的性能下降,并支持源代码注入用例;

辅助功能

去年,Facebook 向 GAAD 承诺,以提高 React Native 的可访问性。0.65 兑现了此承诺,并新增了其他可访问性操作!这些变化包括:

  • 允许为 iOS 指定高对比度明暗值;
  • 在 Android 上添加了 getRecommendedTimeoutMillis API。这公开了用户在 Android 的辅助功能选项中设置的首选默认超时值,适用于可能需要额外时间来查看或访问控件等的用户;
  • 修复了一些问题,以确保 TalkBack/VoiceOver 正确识别 UI 状态,例如组件上的禁用和未选中状态。

其它改进

  • 现在需要 react-native-codegen 版本 0.0.7 作为 package.json 中的 devDependency;
  • JCenter 现已弃用且为只读。删除了 JCenter 作为 Maven 存储库并更新了依赖项以使用 MavenCentral 和 Jitpack;
  • 将 OkHttp 从 v3 升级到 v4.9.1;
  • 升级到 Flipper 0.93 以支持 Xcode 12.5;
  • Android Gradle 插件 7 支持;
  • Apple Silicon 需要链接器解决方法


发布 2021 年下半年计划

在 Facebook,React Native 团队以半年为周期工作,每半年都会审查战略、制定计划并在内部分享,而这次 React Native 团队将下半年的计划分享给社区。

React Native 团队下半年关注的重点领域包括培育社区、开始将新架构推广到开源,以及推动技术向前发展。

社区

React Native 团队已将以下领域确定为发展与社区的合作伙伴关系的最佳方式。

社区参与

为了让每个人都朝着同一个方向前进,React Native 团队希望不断向社区传达愿景和状态,致力于更一致的内容时间表。除了分享更新,还会利用这个机会展示社区的成就。

新架构的推出和发布

在 H1,React Native 团队完成了向 Facebook 应用程序中的所有 React Native 移动产品迁移到新的 React Native 架构。目前已经迁移了 1000 多个界面!

在下半年,React Native 团队开始将这种新架构引入社区。他们整理了一本手册,展示了如何迁移库和应用程序。并且与维护流行的 React Native 库的早期合作伙伴共享了草稿。

另外 React Native 团队还专注于改进 React Native 的发布流程。需要频繁的可靠版本来逐步发布新的 React Native 架构。React Native 团队的目标是更早地捕获释放阻塞器并减少周转时间。这将实现更可预测的发布时间表,同时减轻贡献者和开发人员的负担。

代码仓库健康

当开发人员评估一项技术时,一个重要的信号是其代码仓库的健康状况。这种印象由Pull Request 数量、星级、上次提交的时间等信号通知。React Native 代码仓库历来缺乏确保及时审查问题和拉取请求的流程。这一半的工作有两个方面:需要解决大量积压的贡献,我们需要建立可持续的做法来处理收到的贡献。这项工作也能让社区开始使用新架构时通过问题和 PR 获得更多的社区参与。

推动技术演进

新的架构能力

如前所述,新架构最近完成了向 Facebook 移动应用程序的推广!React Native 团队已经在构建将改变 React Native 性能曲线的新功能。这包括在 React Native 中支持并发渲染。并发渲染使 React 能够暂停和恢复工作,并快速响应触摸手势等高优先级事件。我们也非常兴奋的是使用并发渲染来利用空闲的 CPU 周期来渲染离屏产品功能,而不会减慢屏幕上的用户交互。

Mobile 和 Mobile 之外

React Native 团队在 Facebook 使用 React 为移动体验提供动力方面取得了压倒性的成功,也看到了来自合作伙伴的出色移动产品。现在,他们希望将这一成功带到更多平台!

Messenger 桌面

去年夏天,Facebook 通过与 Microsoft 合作加速在 Windows 和 macOS 上进行 React Native 开发,将我们的重点扩展到移动之外。React Native 团队与 Facebook 的 Messenger 团队合作,实现了只能在桌面上实现的用户体验,并与他们之前的 Electron 实现相比,提供了巨大的性能优势。React Native 团队的愿景是将高质量、令人愉悦的原生桌面用户体验与 React Native 的出色开发人员体验相结合。

Messenger 团队为 Messenger 桌面应用程序制定了雄心勃勃的计划,包括寻找新方法来进一步释放桌面平台和大屏幕的独特功能。

在虚拟现实中反应原生

Oculus 长期以来一直使用 React Native 来支持核心体验,例如 Store,人们可以在其中购买 VR 中的应用程序和游戏。在下半年,React Native 和 Oculus 将合作为 VR 带来令人兴奋的新体验。React Native 团队还将优化和改进从 VR 带到移动设备,从移动设备到 VR。这将包括扩展 React Native 以支持 VR 的独特需求——从控制器等新输入类型到新的内存使用优化。这是探索和影响如何使用 React Native 为 VR 构建沉浸式体验的激动人心的旅程的开始。


总结

希望React Native 团队的 H2 计划能给我们带来更多的惊喜!React Native 团队还将参加 2021 年 9 月 1 日的 React Native EU,届时 Joshua Gross (@joshuaisgross) 将分享我们如何为世界上最大的 React Native 应用程序更换架构。




37990那个快被遗忘的 React Native,悄摸着搞了两件事

这个人很懒,什么都没留下

文章评论