跳到主要内容

2019 年 3 月 React Native 开源更新

·6 分钟阅读
Christoph Nakazawa
Christoph Nakazawa
前 Facebook 工程师

在决定加大对 React Native 开源社区的投入后,我们于 2018 年第四季度公布了 React Native 开源路线图

对于我们的第一个里程碑,我们专注于识别和改进社区最显著的方面。我们的目标是减少未处理的拉取请求,缩小项目范围,识别主要用户问题,并建立社区管理准则。

在过去的两个月里,我们取得了比预期更多的进展。请继续阅读以了解更多详情

拉取请求

为了建立一个健康的社区,我们必须快速响应代码贡献。在过去几年中,我们对社区贡献的审查优先级较低,累积了 280 个拉取请求(2018 年 12 月)。在第一个里程碑中,我们将开放的拉取请求数量减少到约 65 个。同时,每天打开的拉取请求平均数量从 3.5 个增加到 7 个,这意味着我们在过去三个月中处理了大约 600 个拉取请求

我们合并了 将近三分之二 的拉取请求,并关闭了三分之一。如果它们过时、质量低下或不必要地增加了项目的表面积,则在未合并的情况下关闭。大多数合并的拉取请求修复了错误、改进了跨平台兼容性或引入了新功能。值得注意的贡献包括改进类型安全和正在进行的 AndroidX 支持工作。

在 Facebook,我们从主分支运行 React Native,因此我们在将所有更改发布到 React Native Release 之前先进行测试。在所有合并的拉取请求中,只有六个导致了问题:四个只影响了内部开发,两个在发布候选阶段被发现。

一个更明显的社区贡献是更新后的“RedBox”屏幕。这是一个很好的例子,说明社区如何使开发者体验更加友好。

精益核心

React Native 目前的表面积非常广,有许多我们在 Facebook 不怎么使用的未维护的抽象。我们正在努力减少表面积,以使 React Native 更小,并允许社区更好地维护在 Facebook 多数未使用的抽象。

在第一个里程碑中,我们请求社区帮助精益核心项目。反响热烈,我们几乎无法跟上所有进展。在一个月内完成的所有工作都在这里!

最令我们兴奋的是,维护者们已经投入其中,修复了长期存在的问题,添加了测试,并支持了长期以来一直要求的功能。这些模块获得了比以往在 React Native 内部更多的支持,这表明这是社区迈出的重要一步。此类项目的例子包括 WebView,它在提取后收到了许多拉取请求,以及 CLI,它现在由社区成员维护,并获得了急需的改进和修复。

主要用户问题

去年 12 月,我们询问社区他们对 React Native 有何不满。我们汇总了回复,并回复了每一个问题。幸运的是,我们社区面临的许多问题也是 Facebook 面临的问题。在下一个里程碑中,我们计划解决一些主要问题。

投票最多的问题之一是将 React Native 升级到新版本的开发体验。不幸的是,这不是我们自己会遇到的问题,因为我们从 master 分支运行 React Native。幸运的是,社区成员已经着手解决这个问题

0.59 版本发布

如果没有 React Native 社区的帮助,特别是 Mike GrabowskiLorenzo Sciandra,我们将无法发布版本。我们希望改进发布管理流程,并计划从现在开始更多地参与其中

  • 我们将与社区成员合作,为每个主要版本撰写一篇博文。
  • 当人们升级到新版本时,我们将在 CLI 中直接显示重大更改。
  • 我们将缩短发布所需的时间。我们正在探索增加自动化测试的方法,并创建改进的手动测试计划。

其中许多计划将纳入即将发布的 React Native 0.59 版本。0.59 将随 React Hooks、适用于 Android 的新 64 位 JavaScriptCore 以及许多性能和功能改进一起发布。它目前已作为发布候选版本发布,预计将在未来两周内稳定。

下一步

在接下来的两个月里,我们将继续管理拉取请求,以保持进度,同时开始减少未解决的 GitHub 问题数量。我们将通过精益核心项目继续缩小 React Native 的范围。我们计划解决 5 个主要的社区问题。在最终确定社区准则后,我们将把注意力转向我们的网站和文档。

我们非常高兴能于 3 月在伦敦 Facebook 接待十多位社区贡献者,以帮助推动这些工作。我们很高兴您正在使用 React Native,并希望您能看到并感受到我们将在 2019 年努力实现的改进。我们将在几个月后再次提供更新,并且在此期间将合并您的拉取请求! ⚛️✌️