React Native - 2021 年下半年回顾
虽然我们仍然对 React Native 0.67 发布 感到兴奋,但我们想花点时间来庆祝社区在过去半年的成就,并分享 React Native 未来的展望。
具体来说,2021 年下半年对我们和社区来说都是一个激动人心的半年,我们有机会加大对开源生态系统的投入。我们重塑了一些流程,并从零开始创建了新的流程,帮助你、我们和社区享受更好的 React Native 体验。
仓库健康状况
在 2021 年下半年,我们着力解决了多年来积累的 开源负债。特别地,我们的大部分关注点集中在**拉取请求(PR)**上。我们建立了一个内部流程,确保所有新拉取请求都能及时处理。
虽然这不是完整列表,但我们想强调一些贡献者提交的有影响力的 PR:
- 辅助功能
- #31630 由 @anaskhraza 提交的
Added Support for Entrance/exit from collection by Flatlist
- #31630 由 @anaskhraza 提交的
- 崩溃修复
- #29452 由 @fabriziobertoglio1987 提交的
Fix - TextInput Drawable to avoid Null Pointer Exception RuntimeError
- #29452 由 @fabriziobertoglio1987 提交的
- 显示
- #31777 由 @intergalacticspacehighway 提交的
fix: TouchableNativeFeedback ripple starts on previous touch location - #31789 由 @tomekzaw 提交的
Fix support for blobs larger than 64 KB on Android - #31007 由 @fabriziobertoglio1987 提交的
Fix selectionColor doesn't style Android TextInput selection handles - #32398 由 @oblador 提交的
Fix Android border positioning regression - #29099 由 @fabriziobertoglio1987 提交的
[Android] Allows to set individual (left,top,right,bottom) dotted/dashed - #29117 由 @fabriziobertoglio1987 提交的
[Android] Fix font weight numeric values
- #31777 由 @intergalacticspacehighway 提交的
- 交互
- #28995 由 @fabriziobertoglio1987 提交的
[Android] Fix TextInput Cursor jumping to the right when placeholder null - #28952 由 @fabriziobertoglio1987 提交的
[Android] Fix non selectable Text in FlatList - #29046 由 @fabriziobertoglio1987 提交的
[Android] onKeyPress event not fired with numeric keys - #31500 由 @intergalacticspacehighway 提交的
fix#29319 - ios dismiss modal - #32179 由 @xiankuncheng 提交的
Fix: multiline textinput start "jerking" when trying to move cursor. - #29039 由 @hsource 提交的
Fix to make taps on views outside parent bounds work on Android
- #28995 由 @fabriziobertoglio1987 提交的
- 性能
- #31764 由 @Adlai-Holler 提交的
Optimize font handling on iOS - #32536 由 @Somena1 提交的
Don't reconstruct app component on split-screen
- #31764 由 @Adlai-Holler 提交的
- 测试
- #31401 由 @NickGerleman 提交的
Add unit tests for VirtualizedList render quirks
- #31401 由 @NickGerleman 提交的
这些 PR 中有些解决了影响 Meta 和整个开源社区的问题,考虑到相关 issue 上的反应数量,就能看出它们的重要性。
还有许多我们想要特别提及的 PR,也再次感谢所有花时间帮助我们修复漏洞和改进 React Native 的人们。
社区参与
年初我们设定了一个目标,想要更多地与社区沟通并建立流程确保这种状态持续下去。以下是 2021 年下半年我们的一些社区活动:
- 我们有机会参与了 React Native EU,由 Joshua Gross 带来了主题演讲——把 Fabric 渲染器带到 “Facebook” 应用
- 我们在 Reddit 举办了一场 “Ask Us Anything”(问我们任何事)活动,收到了超过 100 个问题!AUA 是我们了解社区参与度的绝佳机会,也便于大家提出各种问题。如果还没看过,请务必查看回答,有些答复非常有见地
- 发布了我们的多平台愿景、关于Android 12 和 iOS 15 注意事项的指南,以及 Hermes 成为 React Native 默认 JS 引擎的进展及愿景!
- 我们的 Kevin Gozali 参与了 React Native Radio 播客的一期节目,讨论了新架构。
- 在 ReactConf 2021,ReactConf 的 Rick Hanlon 分享了 React 和 React Native 的统一多平台愿景。此外, Eric Rozell 和 Steven Moyes 分享了 React Native Desktop 在支持 Meta 和微软应用方面取得的惊人进展,展示了多平台愿景的实践。
除了发布更多更新,2021 年下半年我们也比以往更加依赖社区。我们依靠贡献者的关键反馈,因为他们先行试用新架构的早期草案。同时,社区的专业知识在调试关键发布问题和改进方面也给予了巨大支持。
社区为 React Native 带来了宝贵的知识,我们需要继续培养这份力量。
新架构的推广与发布
2022 年将是开源领域新架构的关键之年。
我们一直在努力提供必要的基础设施,以推动新架构在应用和库中的推广。我们邀请了一些合作伙伴和核心贡献者/库维护者参与,完善新架构的支持,收集早期反馈。
目前我们正在准备在官网发布一份新指南:快速上手新架构。这将成为一系列资料的入口,这些资料将于 2022 年发布,帮助你迁移或启动基于新架构的项目。
另外,我们想强调对新架构资料提供反馈的重要性。我们仍在完善细节,你的意见将帮助大家更顺畅地采用新架构。
发布过程在新架构推广中扮演关键角色。我们上半年的目标是确保无阻塞发布问题停滞。为此,我们通过明确及改善流程和责任分配来提高问责制。发布协调现在在一个专门的讨论仓库中进行,并有更清晰的问题报告流程。
2022 年上半年,我们将继续迭代发布职责以支持新架构推广。如果你有兴趣帮助测试发布候选版本或参与改进工作,欢迎加入讨论!
向移动端及更远的未来
正如你可以从ReactConf 的演讲列表中看到的,React Native 不仅仅是 Android 和 iOS。
2021 年早些时候,我们分享了多平台愿景,并在 Desktop 和 VR 端成功推动了 React Native。
我们期待将平台特有的模式逐步融合到 React Native 体验中。
最后,我们再次感谢社区在 2021 年下半年给予的巨大支持。看到贡献者们齐心协力,在 GitHub 上修复 bug、分享经验,帮助我们为数百万用户交付 React Native,总是令人感到惊喜。
敬请关注,期待更加精彩的 2022 年🎉!
