React Native 开源更新(2019年3月)
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
2018年第四季度,在决定加大对 React Native 开源社区的投入后,我们公布了 React Native 开源路线图。
在首个里程碑阶段,我们专注于识别和改进社区中最显著的问题。目标包括减少积压的拉取请求、缩小项目范围、识别主要用户问题以及建立社区管理准则。
过去两个月取得的进展超出预期。以下是详细进展:
拉取请求
构建健康社区的关键在于快速响应代码贡献。过去几年我们降低了对社区贡献的评审优先级,导致积压了280个拉取请求(截至2018年12月)。首个里程碑阶段,我们将未处理请求减少至约65个。同时每日新增请求从3.5个增至7个,这意味着最近三个月我们处理了约 600个拉取请求。
我们合并了 近三分之二 的请求,剩余三分之一直接关闭。关闭原因包括内容过时、质量不佳或不必要扩大项目范围。已合并的请求主要修复了错误、提升跨平台兼容性或引入新功能。值得注意的贡献包括类型安全改进以及正在进行的 AndroidX 支持工作。
Facebook 内部直接运行 React Native 的 master 分支,因此所有变更在进入正式版本前都经过测试。在所有合并的拉取请求中,仅六个引发了问题:其中四个仅影响内部开发,两个在候选发布阶段就被发现。
社区最显著的贡献之一是 新版“RedBox”错误界面。这充分体现了社区如何让开发者体验更加友好。
Lean Core
React Native 当前涉及范围过广,包含许多 Facebook 内部较少使用的未维护抽象层。我们正努力缩小范围,使 React Native 更轻量,同时让社区更好地维护 Facebook 较少使用的抽象层。
首个里程碑期间,我们邀请社区协助 Lean Core 项目。响应非常热烈,进展速度甚至让我们应接不暇。查看不到一个月完成的工作成果!
最令人振奋的是,维护者们积极修复了长期存在的问题、补充测试用例并支持了期待已久的功能。这些模块获得的社区支持远超 React Native 内部时期,充分证明这是社区发展的重要一步。典型案例如 WebView,分离后收到大量拉取请求;以及 CLI 工具现由社区成员维护,获得了急需的改进和修复。
主要用户问题
去年12月,我们向社区征询了对 React Native 的不满之处。我们汇总了反馈,并对每个问题都做出了回应。幸运的是,社区面临的许多问题在 Facebook 内部也同样存在。在下一个里程碑中,我们计划解决其中一些主要问题。
其中投票最高的问题之一就是升级到新版本 React Native 的开发者体验。遗憾的是,由于我们直接从 master 分支运行 React Native,因此自身并未遇到此问题。值得庆幸的是,社区成员已经主动站出来解决这个问题:
-
Callstack 的 Michał Pierzchała 在底层使用了 rn-diff-purge 来改进 react-native upgrade 命令。我们还更新了官方网站,移除了过时的升级指南。
-
我们计划默认推荐在 iOS 项目中使用 CocoaPods,这将减少升级 React Native 时项目文件的变动。如此一来,开发者安装和链接第三方模块将更加容易,这在精简核心项目的背景下尤为重要,因为我们预计项目默认会链接更多模块。
0.59 版本发布
如果没有 React Native 社区的帮助,特别是 Mike Grabowski 和 Lorenzo Sciandra,我们无法完成版本发布。我们希望改进发布管理流程,并计划从今以后更深入地参与:
-
我们将与社区成员合作,为每个主要版本撰写博客文章
-
当开发者升级到新版本时,我们将在 CLI 中直接显示破坏性变更
-
我们将缩短版本发布所需的时间。我们正在探索增加自动化测试的方法,并制定改进的手动测试计划
这些计划中的许多内容将被纳入即将发布的 React Native 0.59 版本中。0.59 版本将包含 React Hooks、适用于 Android 的新版 64 位 JavaScriptCore,以及众多性能和功能改进。该版本目前作为候选版本发布,预计将在未来两周内稳定。
后续计划
在接下来的两个月里,我们将继续管理拉取请求以确保进度,同时开始减少未解决的 GitHub issue 数量。我们将通过精简核心项目继续缩小 React Native 的涉及范围。我们计划解决5个顶级社区问题。在敲定社区指南后,我们将把注意力转向官方网站和文档。
我们非常激动能在三月份于 Facebook 伦敦办公室接待来自社区的十多位贡献者,共同推动这些工作。我们很高兴您正在使用 React Native,并希望您能看到并感受到我们在2019年所做的改进。几个月后我们将带来下一次更新,而在此期间,我们_将继续合并您的拉取请求!_ ⚛️✌️