跳至主内容

React Native 开源进展更新:2019年6月

· 1 分钟阅读
Christoph Nakazawa
Christoph Nakazawa
Former Engineer @ Facebook
非官方测试版翻译

本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →

代码与社区健康

过去六个月中,超过 550 位贡献者为 React Native 提交了总计 2800 次代码提交。社区中的 400 位贡献者创建了超过 1,150 个 Pull Request,其中 820 个 Pull Request 已被合并。

尽管我们通过 Lean Core 计划将官网、CLI 和多个模块从 React Native 中拆分出来,过去六个月日均 Pull Request 数量仍从三个增至约六个。目前平均未处理 Pull Request 数量已降至 25 个以下,我们通常会在数小时或数天内回复审查建议。

重要的社区贡献

我们特别想强调以下值得关注的近期贡献:

Lean Core

Lean Core 的主要目标是将模块从 React Native 中拆分到独立仓库,以便获得更好的维护。短短六个月内,WebViewNetInfoAsyncStorage官网CLI 等仓库共接收了超过 800 个 Pull Request。除了更完善的维护外,这些项目还能比 React Native 本身更频繁地独立发布。

我们还借此机会从 React Native 核心移除了过时的 polyfill 和遗留组件。过去为了在旧版 JavaScriptCore (JSC) 中支持 MapSet 等语言特性,polyfill 是必需的。随着 React Native 搭载新版 JSC,这些 polyfill 已被移除。

这项工作仍在进行中,原生和 JavaScript 端仍有大量内容需要拆分或移除,但已有初步迹象表明我们成功扭转了表面积和应用体积的增长趋势:以 JavaScript 包为例,约一年前的 0.54 版本中 React Native JavaScript 包大小为 530kb,六个月内增长到 0.57 版本的 607kb(增加 77kb)。如今在主分支上我们看到包大小减少 28kb 至 579kb,差值超过 100kb!

随着 Lean Core 首阶段工作告一段落,我们将更审慎地考虑新增 React Native API,持续探索减小体积、提升速度的方案,并寻找赋能社区接管各类组件的方法。

用户反馈

六个月前,我们曾向社区发起提问"您对React Native有哪些不满之处?",这让我们充分了解了开发者面临的痛点。数月前我们已作出初步回应,现在就来总结针对核心问题的改进进展:

  • 版本升级: 社区共同推动了多项升级体验优化:自动链接、通过rn-diff-purge改进升级命令、即将上线的升级助手网站。我们还将通过发布每个主版本的博客文章,明确传达重大变更和重要新特性。这些改进将使0.60版本之后的升级过程显著简化。

  • 支持/不确定性: 许多开发者曾因Pull Request处理延迟和Facebook对React Native投入的不确定性感到困扰。如上文数据所示,我们现在已准备好处理更多Pull Request,并热切期待您的提案与贡献!

  • 性能: React Native 0.59搭载了速度大幅提升的新版JavaScriptCore(JSC)。我们同时优化了内联引用(inline-requires)的默认启用机制,未来数月还将带来更多性能优化。

  • 文档: 我们已启动全面重构React Native文档的计划,非常欢迎您参与贡献!

  • Xcode警告: 我们已消除所有现有警告,并将严格避免引入新警告。

  • 热重载: React团队正在构建新版热重载系统,即将集成至React Native。

但仍有部分问题尚未完全解决:

  • 调试体验: 虽然修复了许多日常高频出现的缺陷,但调试体验改进仍未达预期。我们深知当前调试体验欠佳,后续将优先优化此环节。

  • Metro符号链接: 目前尚未实现简洁解决方案,但React Native用户已分享多种变通方案供您参考。

鉴于近半年的重大变革,我们再次向您提出相同问题:如果您正在使用最新版React Native并希望反馈建议,请参与新版“您对React Native有哪些不满之处?”讨论。

持续集成

Facebook采用先合并Pull Request至内部仓库,再同步到GitHub的工作流。其基础设施与常规CI服务存在差异,导致部分开源测试未在内部运行,同步到GitHub的提交常引发测试中断且修复耗时。

React Native团队成员Héctor Ramos历时两月优化了Facebook与GitHub的双端CI系统。现在绝大多数开源测试会在变更提交至Facebook仓库前执行,确保同步到GitHub时CI状态稳定。

下一步计划

请务必关注我们关于 React Native 未来的精彩演讲!未来几个月内,Facebook 的 React Native 核心团队成员将在 Chain ReactReact Native EU 大会上分享最新动态。同时请密切关注即将发布的下个版本 0.60 —— 这将是个激动人心的里程碑