跳到主要内容

52 篇带“announcement”标签的帖子

查看所有标签

Hermes 迈向默认引擎

·14 分钟阅读
Xuan Huang
黄轩
Meta 软件工程师

自从我们在2019年宣布Hermes以来,它在社区中的采用率不断提高。Expo团队,作为React Native应用程序流行的元框架的维护者,最近宣布了对Hermes的实验性支持,此前它一直是Expo最受请求的功能之一Realm团队,一个流行的移动数据库,最近也发布了对Hermes的alpha支持。在这篇文章中,我们想强调过去两年中我们为推动Hermes成为React Native最佳JavaScript引擎所取得的一些最令人兴奋的进展。展望未来,我们相信有了这些改进以及更多的改进,我们可以使Hermes成为所有平台上React Native的默认JavaScript引擎。

React Native 的多平台愿景

·阅读时长 9 分钟
Christine Abernathy
Christine Abernathy
Meta 开发者倡导者
Eli White
Eli White
Meta 软件工程师
Luna Wei
魏璐娜
Meta 软件工程师
Timothy Yung
Timothy Yung
Meta 软件工程师

React Native在提高移动开发标准方面非常成功,无论是在Facebook还是在行业其他地方。随着我们以新的方式与计算机交互,以及新设备的出现,我们希望React Native能为每个人服务。尽管React Native最初是为了构建移动应用程序而创建的,但我们相信专注于多个平台并根据每个平台的优势和限制进行构建具有共生效应。当我们将这项技术扩展到桌面和虚拟现实时,我们看到了巨大的好处,我们很高兴能分享这对React Native的未来意味着什么。

2021 年下半年 React Native

·6 分钟阅读
Luna Wei
魏璐娜
Meta 软件工程师

在过去的一年里,我们的世界发生了很大的变化,React Native也不例外。我们迎来了团队的新成员(我们很高兴最终能与他们面对面交流!),我们的项目日趋成熟,新的机会也随之出现。我们很高兴在这篇和未来的文章中与大家分享这一切!

在 Facebook,我们的团队以半年为周期工作。每个半年度,我们都会审查我们的战略,制定计划,并在内部共享。今天,我们想与你们,我们的社区,分享我们的下半年计划。

2021 年下半年对于 React Native 来说是一个激动人心的半年。我们的重点领域包括培养社区、开始向开源推广新架构以及推动技术向前发展。

发布 React Native 0.65

·3 分钟阅读
Luna Wei
魏璐娜
Meta 软件工程师

今天我们发布了 React Native 0.65 版本,其中包含新版 Hermes、辅助功能改进、包升级等。

Hermes 0.8 有什么新功能?

Hermes,Facebook 开源的、为 React Native 优化的 JavaScript VM,已升级到 0.8.1 版本。此版本的一些突出功能包括:

你可以在这里找到完整的 Hermes 变更日志

按照这里的步骤,如果你的应用还没有启用 Hermes,请启用它以利用这些新功能和提升!

辅助功能修复和添加

去年Facebook 签署了 GAAD 承诺,以改善 React Native 的可访问性。0.65 版本分享了这一承诺和其他可访问性方面的成果!一些显著的更改包括:

  • 允许为 iOS 指定高对比度明暗值。更多详细信息请参阅文档
  • 在 Android 上增加了 getRecommendedTimeoutMillis API。这公开了用户在 Android 无障碍选项中设置的首选默认超时值,适用于可能需要额外时间查看或触达控件等的用户。
  • 常规修复,以确保 TalkBack/VoiceOver 正确播报组件上的 UI 状态,例如 disabledunselected

你可以在这里关注或贡献我们的未解决的辅助功能问题

值得注意的依赖版本更新和注意事项

  • 现在需要将 react-native-codegen 版本 0.0.7 作为 package.json 中的 devDependency
  • JCenter 已停止服务并变为只读。我们已将 JCenter 作为 Maven 仓库移除,并更新了依赖项以使用 MavenCentral 和 Jitpack。
  • 将 OkHttp 从 v3 升级到 v4.9.1。有关更改的更多详细信息,请参阅升级到 OkHttp 4
  • 升级到 Flipper 0.93 以支持 Xcode 12.5。请参阅此处 Flipper 的更新日志
  • 支持 Android Gradle 插件 7
  • Apple Silicon 需要链接器变通方法。请参阅@mikehardy 的说明

感谢!

此版本包含来自 61 位贡献者的超过 1100 次提交。感谢所有为本次发布做出贡献和支持的人!您可以在此处找到完整的更改日志

GAAD 承诺 - 一年后

·阅读时长5分钟
Alexandra Marlette
亚历山德拉·马莱特
React Native 的 GAAD 承诺开源无障碍社区经理

自Facebook签署GAAD承诺使React Native无障碍化以来,已经一年了,该项目超出了我们的预期。我们很高兴地宣布该项目将在2021年继续进行,并希望向所有人更新我们迄今为止的进展。在去年对React Native中的无障碍性差距进行彻底分析后,我们开始着手填补这些空白。

我们从 90 个悬而未决的差距分析问题开始,从 2021 年 3 月项目在 GitHub 上启动到现在

  • 社区关闭了 11 个问题。

  • React Native 团队评估并关闭了 19 个问题。

  • 合并了 9 个拉取请求。

  • 一个拉取请求合并到 React Native 文档中。

我们希望表彰并感谢 React Native 社区在过去一年中为使 React Native 更具无障碍性所做的重大进展。每位贡献者的努力都对改进 React Native 的无障碍性做出了贡献。

GAAD 承诺 - 3 月辅助功能问题更新

·阅读时间:4 分钟
Alexandra Marlette
亚历山德拉·马莱特
React Native 的 GAAD 承诺开源无障碍社区经理

自我们向 GitHub 社区发布了一份经过彻底审查的差距分析和问题列表以改善 React Native 的可访问性以来,已经过去四周了。在 React Native 社区的帮助下,我们已经在改善可访问性方面取得了巨大进展。社区成员一直在帮助贡献者,审查测试,并引起对先前可访问性问题的关注。自 3 月 8 日以来,社区已经关闭了六个问题,其中有四个拉取请求,另有七个拉取请求正在排队等待审查。

在持续进行这项工作的同时,Facebook 的 React Native 和无障碍团队正在评估在此倡议之前提交的无障碍错误和问题,以确定它们是否已被我们当前的差距分析涵盖,或者是否有其他需要纳入项目的问题。目前已发现并纳入项目一个新问题,另有四个问题直接映射到现有问题,另有两个问题预计将通过解决其根本原因的现有问题而关闭。

感谢所有参与的社区成员。你们真正推动了 React Native 更具可访问性的进程!

发布 React Native 0.64,支持 iOS 上的 Hermes

·阅读时间:4 分钟
Mike Grabowski
Mike Grabowski
CTO 兼 Callstack 联合创始人

今天我们发布 React Native 0.64,它附带了对 iOS 上 Hermes 的支持。

iOS 上的 Hermes 可选启用

Hermes 是一个开源 JavaScript 引擎,专为运行 React Native 优化。它通过减少内存使用、缩小下载大小和缩短应用程序变得可用或“交互时间 (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>;
};

有关内联要求的更多信息,请参见性能文档

使用 Chrome 查看 Hermes 跟踪

在过去的一年里,Facebook 赞助了 Major League Hacking 奖学金,支持对 React Native 的贡献。Jessie NguyenSaphal Patro 添加了使用 Chrome DevTools 的性能选项卡来可视化应用程序在使用 Hermes 时执行情况的功能。

欲了解更多信息,请查看新文档页面

支持 Proxy 的 Hermes

我们已在 Hermes 中添加了 Proxy 支持,从而实现了与 react-native-firebase 和 mobx 等流行社区项目的兼容性。如果您一直在使用这些包,现在可以迁移到 Hermes 项目。

我们计划在即将发布的版本中将 Hermes 设置为 Android 的默认 JavaScript 引擎,因此我们正在努力解决人们在使用 Hermes 时遇到的剩余问题。如果您的应用程序因任何剩余问题而无法采用 Hermes,请在Hermes GitHub 仓库上提交一个问题。

React 17

React 17 没有包含新的面向开发者的功能或重大突破性更改。对于 React Native 应用程序,主要更改是新的 JSX 转换,使文件不再需要导入 React 即可使用 JSX。

有关 React 17 的更多信息可在React 博客上找到。

主要依赖版本更改

  • 放弃了 Android API 级别 16-20。Facebook 应用会持续放弃对使用率足够低的 Android 版本的支持。由于 Facebook 应用不再支持这些版本并且是 React Native 的主要测试界面,因此 React Native 也放弃了支持。
  • 需要 Xcode 12 和 CocoaPods 1.10
  • Node 最低支持版本从 10 提升到 Node 12
  • Flipper 版本提升至 0.75.1

致谢

感谢数百位贡献者,他们的努力使 0.64 版本成为可能!0.64 版本更新日志包含了此版本中的所有更改。

GAAD 承诺 - 改进 React Native 辅助功能

·阅读时长2分钟
Alexandra Marlette
亚历山德拉·马莱特
React Native 的 GAAD 承诺开源无障碍社区经理

你好,React Native 社区,

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 文档更新

·阅读时间:4 分钟
Rachel Nabors
Facebook 文档工程师

去年,我们进行了用户访谈并发布了一项调查,以了解人们如何以及何时使用 React Native 文档。根据从24次访谈和3000多个调查回复中获得的数据和指导,我们得以改进 React Native 的文档,我们很高兴今天能分享这些进展

非常感谢所有参与访谈、调查和文档工作的各位!您的协作使得这一切成为可能。