发布 React Native 0.66
今天我们发布 React Native v0.66,支持 Android 12 和 iOS 15,同时修复了一些问题并进行了常规更新。
今天我们发布 React Native v0.66,支持 Android 12 和 iOS 15,同时修复了一些问题并进行了常规更新。
大家好!
随着今年晚些时候新的移动操作系统版本发布,我们建议您提前准备好您的 React Native 应用,以避免在这些版本普遍可用时出现问题。
我们最近分享了React Native 的多平台愿景,阐述了将 React 扩展到其他平台如何为所有人改进框架。在过去几年中,我们通过与 Microsoft 合作开发 React Native for Windows 和 macOS,以及与 Oculus 合作开发 React Native in VR,在这一愿景上取得了显著进展。
作为今年早些时候开始的计划的一部分,我们正在加大对这些平台的关注,并扩大团队以帮助我们实现愿景。为了支持我们的新队友以及未来更多的队友,我们正在招聘两名工程经理:一名负责支持 React Native for Desktop,一名负责支持 React Native for VR。
React Native 在提高移动开发水平方面取得了巨大成功,无论是在 Facebook 还是在行业其他地方。随着我们与计算机交互方式的改变以及新设备的出现,我们希望 React Native 能够惠及所有人。尽管 React Native 最初是为了构建移动应用程序而创建的,但我们相信,关注多个平台并充分发挥每个平台的优势和克服其限制具有共生效应。当我们将这项技术扩展到桌面和虚拟现实时,我们看到了巨大的好处,我们很高兴能分享这对 React Native 的未来意味着什么。
在过去的一年里,我们的世界发生了如此多的变化,React Native 也不例外。我们迎来了新成员加入我们的团队(我们很高兴最终能与他们面对面交流!),我们的项目也日趋成熟,新的机会也随之出现。我们很高兴在这篇文章以及接下来的其他文章中与大家分享这一切!
在 Facebook,我们的团队以半年为周期工作。每个半年度,我们都会审查我们的战略,制定计划,并在内部共享。今天,我们想与你们,我们的社区,分享我们的下半年计划。
2021 年下半年对于 React Native 来说是一个激动人心的半年。我们的重点领域包括培养社区、开始向开源推广新架构以及推动技术向前发展。
今天我们发布了 React Native 0.65 版本,其中包含新版 Hermes、辅助功能改进、包升级等。
Hermes,Facebook 开源的、为 React Native 优化的 JavaScript VM,已升级到 0.8.1 版本。此版本的一些突出功能包括:
Intl
) 现在已内置于 Android 上的 Hermes 中并默认启用,每个 API 的大小开销仅为 57-62K(相比于 JSC 的 6MiB)。通过此更改,Hermes 用户不再需要区域设置填充。非常感谢 @mganandraj 和 Microsoft 的其他合作伙伴推动了实现,使其成为可能!Function.prototype.toString
的更改,修复了由于功能检测不当导致的性能下降,并支持源代码注入用例。你可以在这里找到完整的 Hermes 变更日志。
按照这里的步骤,如果你的应用还没有启用 Hermes,请启用它以利用这些新功能和提升!
去年 Facebook 签署了 GAAD 承诺,以改善 React Native 的可访问性。0.65 版本分享了这项承诺的成果以及其他可访问性方面的胜利!一些值得注意的更改包括:
getRecommendedTimeoutMillis
API。这会公开用户在 Android 辅助功能选项中设置的首选默认超时值,适用于可能需要额外时间来查看或操作控件等的用户。disabled
和 unselected
。你可以在这里关注或贡献我们的未解决的辅助功能问题!
react-native-codegen
版本 0.0.7
作为 package.json
中的 devDependency
。此版本包含来自 61 位贡献者的超过 1100 次提交。感谢所有为本次发布做出贡献和提供支持的人!你可以在此处找到完整的变更日志。
自 Facebook 签署 GAAD 承诺以使 React Native 具有可访问性以来,已有一年时间,该项目超出了我们的预期。我们很高兴地宣布,该项目将在 2021 年继续进行,并希望向所有人更新我们迄今为止的进展。在去年对 React Native 中的可访问性差距进行了彻底分析之后,我们开始着手填补这些差距。
我们从 90 个悬而未决的差距分析问题开始,从 2021 年 3 月项目在 GitHub 上启动到现在
社区关闭了 11 个问题。
React Native 团队评估并关闭了 19 个问题。
合并了 9 个拉取请求。
一个拉取请求合并到 React Native 文档中。
我们希望表彰并感谢 React Native 社区在过去一年中为使 React Native 更具无障碍性所做的重大进展。每位贡献者的努力都对改进 React Native 的无障碍性做出了贡献。
自我们向 GitHub 社区发布了经过彻底审查的差距分析和改进 React Native 辅助功能的问题列表以来,已经过去了四个星期。在 React Native 社区的帮助下,我们已经在改进辅助功能方面取得了巨大进展。社区成员一直在帮助贡献者、审查测试并关注以前的辅助功能问题。自 3 月 8 日以来,社区已关闭了六个问题,并提交了四个拉取请求,另有七个拉取请求正在审查中。
在持续进行这项工作的同时,Facebook 的 React Native 和辅助功能团队正在评估在此倡议之前提交的辅助功能 bug 和问题,以确定它们是否已被我们当前的差距分析涵盖,或者是否有需要纳入项目的其他问题。目前已发现一个新问题并已纳入项目,另外四个问题直接映射到现有问题,还有两个问题预计将通过解决导致其根本原因的现有问题来关闭。
感谢所有参与的社区成员。你们真正推动了 React Native 更具可访问性的进程!
今天我们发布 React Native 0.64,它附带了对 iOS 上 Hermes 的支持。
Hermes 是一个为运行 React Native 优化的开源 JavaScript 引擎。它通过减少内存使用、缩小下载大小和缩短应用程序变得可用或“交互时间”(TTI)所需的时间来提高性能。
随着本次发布,我们很高兴地宣布,你现在也可以在 iOS 上使用 Hermes 进行构建。要在 iOS 上启用 Hermes,请在你的 Podfile
中将 hermes_enabled
设置为 true
,然后运行 pod install
。
use_react_native!(
:path => config[:reactNativePath],
# to enable hermes on iOS, change `false` to `true` and then install pods
:hermes_enabled => true
)
请记住,iOS 上的 Hermes 支持仍处于早期阶段。我们在进行进一步基准测试时将其保留为可选启用。我们鼓励您在自己的应用程序上试用它,并告诉我们它的效果如何!
内联要求是 Metro 的一个配置选项,它通过延迟 JavaScript 模块的执行直到它们被使用(而不是在启动时)来改善启动时间。
此功能已经存在并作为可选配置选项推荐了几年,列在我们文档的性能部分。我们现在为新应用程序默认启用此选项,以帮助人们无需额外配置即可拥有快速的 React Native 应用程序。
内联要求是一种 Babel 转换,它将模块导入转换为内联。例如,内联要求将模块导入调用从文件顶部转换到它被使用的地方。
之前
import {MyFunction} from 'my-module';
const MyComponent = props => {
const result = MyFunction();
return <Text>{result}</Text>;
};
之后
const MyComponent = props => {
const result = require('my-module').MyFunction();
return <Text>{result}</Text>;
};
有关内联要求的更多信息,请参见性能文档。
在过去的一年里,Facebook 资助了 Major League Hacking 奖学金,支持对 React Native 的贡献。 Jessie Nguyen 和 Saphal Patro 添加了使用 Chrome DevTools 上的 Performance 选项卡来可视化使用 Hermes 时应用程序执行情况的功能。
欲了解更多信息,请查看新文档页面。
我们已在 Hermes 中添加了 Proxy 支持,从而实现了与 react-native-firebase 和 mobx 等流行社区项目的兼容性。如果您一直在使用这些包,现在可以迁移到 Hermes 项目。
我们计划在即将发布的版本中将 Hermes 设置为 Android 的默认 JavaScript 引擎,因此我们正在努力解决人们在使用 Hermes 时遇到的剩余问题。如果您在使用 Hermes 时仍然遇到问题,请在 Hermes GitHub repo 上提出问题。
React 17 不包含面向开发人员的新功能或重大破坏性更改。对于 React Native 应用程序,主要更改是新的 JSX 转换,使文件不再需要导入 React 即可使用 JSX。
有关 React 17 的更多信息可在React 博客上找到。
感谢数百位贡献者,他们的帮助使得 0.64 版本得以实现!0.64 变更日志包含了此版本中的所有更改。
2020 年 5 月,Facebook 是第一家签署 GAAD 承诺的公司,承诺将辅助功能作为 React Native 开源项目的核心部分。自 5 月以来,Facebook 一直在认真审查和记录 React Native 中的辅助功能差距。到目前为止,差距分析已发现 90 个问题,所有这些问题都已转换为 GitHub 问题。
总的来说,我们发现 React Native API 为辅助功能提供了强大的支持。然而,我们也发现许多核心组件尚未充分利用平台辅助功能 API,并且缺少对某些特定平台功能的支持。
贡献者的热情和多样性一直在 React Native 的发展中发挥着关键作用,而这些辅助功能方面的差距为现有和新的贡献者提供了绝佳的机会。如果你对为 React Native 做出贡献感兴趣,我们鼓励你加入我们,共同使 React Native 更具辅助功能。
为表彰贡献者的努力,当一个辅助功能问题被关闭并附加到拉取请求时,贡献者将会在我们的社区经理的 Twitter 上获得表扬。其拉取请求被接受并纳入代码库的贡献者,将在 React Native 博客的月度问题更新中被重点提及。
请加入我们,共同使 React Native 对所有人更具辅助功能。
对需要更多努力的问题感兴趣的贡献者,请访问“改进 React Native 辅助功能”项目页面,查看需要他们 React Native 知识的 GitHub 问题。
对更新 React Native 文档以反映已解决的辅助功能差距感兴趣的技术撰稿人,请访问React Native 文档。
与任何可能提供帮助的人分享这项倡议!
关注 React Native 的 GAAD 承诺开源辅助功能社区经理在 Twitter 或 Facebook 上,以获取最新进展。