为 iOS 15 和 Android 12 准备您的应用
大家好!
随着新的移动操作系统版本将在今年晚些时候发布,我们建议您提前准备好您的 React Native 应用,以避免在版本普遍可用时出现回归问题。
大家好!
随着新的移动操作系统版本将在今年晚些时候发布,我们建议您提前准备好您的 React Native 应用,以避免在版本普遍可用时出现回归问题。
我们最近分享了React Native 的多平台愿景,阐述了将 React 扩展到其他平台如何改善所有人的框架体验。在过去几年中,我们与 Microsoft 合作开发 Windows 和 macOS 上的 React Native,与 Oculus 合作开发 VR 中的 React Native,在这方面取得了显著进展。
作为我们今年早些时候开始的计划的一部分,我们正在加大对这些平台的关注,并扩大我们的团队以帮助我们实现愿景。为了支持我们的新同事以及未来更多的成员,我们正在招聘两名工程经理:一名负责支持桌面版 React Native,另一名负责支持 VR 版 React Native。
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 虚拟机,已升级到 0.8.1 版本。此版本的一些突出功能包括
Intl
) 现已内置于 Android 上的 Hermes 中,并默认启用,每个 API 的大小开销仅为 57-62K(相比之下 JSC 为 6MiB)。通过此更改,Hermes 用户不再需要区域设置 polyfill。非常感谢 @mganandraj 和 Microsoft 的其他合作伙伴推动了此项实现!Function.prototype.toString
的更改修复了由于不当的功能检测导致的性能下降,并支持源代码注入用例。您可以在此处找到完整的 Hermes 更新日志。
如果您尚未启用 Hermes,请按照此处步骤选择您的应用使用 Hermes,以利用这些新功能和优势!
去年 Facebook 兑现了 GAAD 承诺,以改善 React Native 的无障碍功能。0.65 版本分享了这一承诺的成果以及其他无障碍功能方面的进展!一些显著的变化包括
getRecommendedTimeoutMillis
API。这公开了用户在 Android 无障碍选项中设置的首选默认超时值,适用于可能需要额外时间来查看或操作控件等的用户。disabled
(禁用)和 unselected
(未选择)。package.json
中现在需要将 react-native-codegen
版本 0.0.7
作为 devDependency
。此版本包含来自 61 位贡献者的超过 1100 次提交。感谢所有为此次发布做出贡献和支持的人!您可以在此处找到完整的更新日志。
自 Facebook 兑现GAAD 承诺使 React Native 更具可访问性以来,已有一年时间,该项目超出了我们的预期。我们很高兴地宣布,该项目将在 2021 年持续进行,并希望向大家更新我们迄今为止的进展。去年对 React Native 中的无障碍功能缺陷进行了彻底分析后,我们开始了弥补这些缺陷的工作。
我们从 90 个未解决的差距分析问题开始,从 2021 年 3 月项目在 GitHub 上启动至今
社区已关闭 11 个问题。
React Native 团队评估并关闭了 19 个问题。
9 个拉取请求已合并。
1 个拉取请求已合并到 React Native 文档中。
我们衷心感谢 React Native 社区在过去一年中为提升 React Native 无障碍功能所取得的显著进展。每位贡献者的努力都为改进 React Native 无障碍功能做出了贡献。
自从我们向 GitHub 社区发布了一份经过彻底审查的差距分析报告和一份旨在改善 React Native 无障碍功能的问题清单以来,已经过去了四周。在 React Native 社区的帮助下,我们在改善无障碍功能方面已经取得了巨大进展。社区成员一直在帮助贡献者,审查测试,并提请注意先前的无障碍功能问题。自 3 月 8 日以来,社区已关闭了六个问题,附带了四个拉取请求,另有七个拉取请求正在审查中。
在持续这项工作的同时,Facebook 的 React Native 和无障碍功能团队正在评估在此倡议之前提交的无障碍功能错误和问题,以确定它们是否已包含在我们当前的差距分析中,或者是否存在需要纳入项目的其他问题。目前已发现一个新问题并已纳入项目,另有四个问题直接映射到现有问题,还有两个问题预计将通过解决导致其根本原因的现有问题来关闭。
感谢所有参与的社区成员。你们的努力真正推动了 React Native 在无障碍功能方面的发展,使其更易于所有人使用!
今天我们发布了 React Native 0.64,其中包含了对 iOS 上 Hermes 的支持。
Hermes 是一款为运行 React Native 而优化的开源 JavaScript 引擎。它通过降低内存占用、减少下载大小以及缩短应用程序可用或“可交互时间”(TTI) 来提高性能。
随着本次发布,我们很高兴地宣布,您现在也可以使用 Hermes 在 iOS 上进行构建。要在 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 支持仍处于早期阶段。我们将其保留为可选功能,因为我们正在进行进一步的基准测试。我们鼓励您在自己的应用程序中试用它,并告诉我们它的运行情况!
内联 require 是一种 Metro 配置选项,它通过延迟 JavaScript 模块的执行直到它们被使用,而不是在启动时执行,从而缩短了启动时间。
此功能作为一项可选配置选项已存在并推荐使用多年,列在我们的文档的性能部分。我们现在为新应用程序默认启用此选项,以帮助人们无需额外配置即可拥有快速的 React Native 应用程序。
内联 require 是一种 Babel 转换,它将模块导入转换为内联。例如,内联 require 将此模块导入调用从文件顶部转换为使用它的位置。
之前
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>;
};
有关内联 require 的更多信息可在性能文档中找到。
在过去一年中,Facebook 赞助了Major League Hacking 奖学金,支持对 React Native 的贡献。Jessie Nguyen 和 Saphal Patro 增加了使用 Chrome DevTools 上的性能选项卡来可视化使用 Hermes 时应用程序执行的能力。
有关更多信息,请查看新的文档页面。
我们已为 Hermes 添加了代理支持,从而实现了与 react-native-firebase 和 mobx 等流行社区项目的兼容性。如果您一直在使用这些包,现在可以将项目迁移到 Hermes。
我们计划在即将发布的版本中将 Hermes 作为 Android 的默认 JavaScript 引擎,因此我们正在努力解决人们在使用 Hermes 时遇到的剩余问题。如果还有阻碍您的应用采用 Hermes 的问题,请在 Hermes GitHub 仓库上提交问题。
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 文档。
将此倡议分享给任何可能提供帮助的人!
在 Twitter 或 Facebook 上关注 React Native GAAD 承诺开源无障碍社区经理,以获取最新进展。
去年,我们进行了用户访谈并发布了一项调查,以了解人们如何以及何时使用 React Native 文档。凭借从 24 次访谈和 3000 多个调查回复中收集到的数据和指导,我们得以改进 React Native 的文档,今天我们很高兴分享这一进展
Pressable
和 React Native 组件介绍文档非常感谢所有参与访谈、调查和文档工作的各位!您的协作使这一切成为可能。