React Native 0.81 - Android 16 支持、更快的 iOS 构建及其他改进
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
今天我们很高兴发布 React Native 0.81!
此版本支持 Android 16(API 等级 36),包含多项稳定性改进和错误修复,并实验性地支持通过预编译实现更快的 iOS 构建。
重点更新
重点详解
Android 16 支持
使用 React Native 0.81 构建的 Android 应用现在将默认以 Android 16(API 等级 36)为目标平台。
正如 Google 先前所宣布的,Android 16 要求应用必须采用 edge-to-edge 显示方式,且不允许选择退出。
为支持此特性,我们正在弃用 <SafeAreaView> 组件(如先前公告所述),转而采用替代方案。详见下文将提供更好的 edge-to-edge 支持。
此外,我们还新增了一个 gradle 属性 edgeToEdgeEnabled,让你可以选择是否要在所有低于 16 的受支持 Android 版本上启用 edge-to-edge 显示。
面向 Android 16 的应用现已默认启用预测性返回手势。BackHandler API 在多数使用场景下应能如常工作。但如果您的应用依赖自定义原生代码处理返回操作(例如重写 onBackPressed() 方法),可能需要手动迁移代码或暂时选择退出。升级后请务必全面测试应用的返回导航功能。
Google 现在要求应用在大屏幕设备上支持自适应布局,无论设备方向或尺寸限制如何。虽然目前可以选择退出,但建议在 Android 17 发布前测试并更新应用,确保其在大屏幕上的响应式 UI 表现。
自 2025 年 11 月 1 日起,所有提交至 Google Play 的应用必须满足原生二进制文件 16KB 页面大小的要求。此要求适用于针对 Android 15+ 设备的新应用和更新。React Native 已符合 16KB 页面大小要求。请确保您的所有原生代码和第三方库同样符合要求。
有关 Android 16 变更和迁移步骤的更多详情,请参阅讨论与提案库中的这篇文章。
SafeAreaView 弃用
The built-in <SafeAreaView> component was originally designed to provide limited, iOS-only support for keeping content in the “safe areas” of the screen (away from camera notches, rounded corners, etc). It is not compatible with edge-to-edge rendering on Android, and does not permit customization beyond padding. As a result, many apps have opted for more portable and flexible solutions, such as react-native-safe-area-context.
在 React Native 0.81 中,旧的 <SafeAreaView> 组件已被弃用,如果您的应用使用了该组件,您将在 React Native DevTools 中看到警告。
该组件将在未来的 React Native 版本中被移除。我们建议您迁移至 react-native-safe-area-context 或类似库,确保应用在所有平台都能呈现最佳视觉效果。
社区维护的 JavaScriptCore 支持
正如去年所宣布的,JavaScriptCore (JSC) 引擎的支持已迁移至社区维护的独立包,不再随 React Native 本体发布。在 React Native 0.81 中,我们将移除内置的 JavaScriptCore 版本。所有需要使用 JavaScriptCore 的应用现在必须改用社区包才能升级至 0.81 版本。请参阅安装说明了解具体操作。
此项变更不影响使用 Hermes 引擎的应用。
实验性预编译 iOS 构建
React Native 0.81 引入了预编译 iOS 构建功能,在 React Native 作为主要依赖的项目中,编译时间最高可缩短 10 倍。这是 Expo 与 Meta 合作的成果,并扩展了我们在 React Native 0.80 中发布的功能。
该功能仍处于实验阶段,但我们期待在未来的版本中为所有应用启用。若想在您的应用中尝试预编译构建,可在运行 pod install 时指定以下环境变量:
RCT_USE_RN_DEP=1 RCT_USE_PREBUILT_RNCORE=1 bundle exec pod install
请在此 GitHub 讨论区提供反馈。
目前已知存在两项限制,我们正在积极解决:
-
预编译构建中无法调试并单步进入 React Native 内部代码。但在使用预编译版 React Native 时,仍可调试您自己的原生代码。
-
预构建在 Xcode 26 Beta 中不受支持,因为该 IDE 在构建所有目标时默认启用了 Swift 显式模块。若要在 Xcode 26 中使用预编译构建,请在您的 Xcode 项目中将
SWIFT_ENABLE_EXPLICIT_MODULES标志设为NO。我们将在即将发布的补丁版本中解决此问题。
您可以在 Expo 的完整博客文章《预编译版 React Native for iOS:0.81 版本将带来更快构建》中了解更多详情。
重大变更
Node.js 最低版本升至 20
React Native 现在要求 Node.js 版本不低于 20.19.4(撰写本文时的最新维护版 LTS)。升级至 React Native 0.81 时,您可能需要更新开发环境或 CI 环境中的 Node.js 版本。
Xcode 最低版本升至 16.1
构建 iOS 项目现在需要 Xcode 16.1 或更高版本。升级至 React Native 0.81 时,您可能需要更新开发环境或 CI 环境中的 Xcode 版本。
Metro:社区 CLI 项目增强高级配置支持
Metro now respects the resolveRequest and getModulesRunBeforeMainModule options if specified in the metro.config.js file of a React Native Community CLI project. Previously, setting them would have no effect. If you have custom values for these options in your metro.config.js file, you may need to delete them in order to restore the previous behavior.
改进未捕获 JavaScript 错误的报告机制
React Native DevTools 现在会显示未捕获 JavaScript 错误的原始信息和堆栈追踪,同时包含错误的 cause(如果存在)以及组件抛出错误时的 Owner Stack。这使得错误调试和修复更加便捷。

如果您将 JavaScript 错误记录到后端或第三方错误报告服务,升级到 React Native 0.81 后可能会影响日志内容(例如:原先通过 console.error 报告的错误现在可能以抛出异常形式出现),可能需要相应调整后端处理逻辑。
RN_SERIALIZABLE_STATE 与 C++ 编译标志
在此版本中,我们引入了新宏 RN_SERIALIZABLE_STATE,用于支持新架构组件的可序列化状态。
如果您是库开发者且使用 自定义 CMakeLists.txt 文件,需在 CMakeLists.txt 中声明此宏,否则 C++ 代码可能编译失败。
为此我们新增了 CMake 函数 target_compile_reactnative_options,它将自动配置此宏及所有必需的 C++ 编译标志。您可在 CMakeLists 文件中按如下方式调用:
target_compile_reactnative_options(myLibraryName PRIVATE)
可参考 react-native-screens 的配置示例。
此变更仅影响较复杂的高级库。若您的库使用 codegen 且无自定义 CMake 文件,则不受影响。
其他破坏性变更
以下列出可能对产品代码产生轻微影响的其他破坏性变更,值得注意:
Android 平台变更
-
我们将多个类设为内部类。这些类不属于公共 API,不应直接访问。已通知受影响库或提交补丁:
com.facebook.react.fabric.mounting.MountingManagercom.facebook.react.views.text.TextLayoutManager
-
将 native prop
textAlignVertical从TextAttribute.h移至ParagraphAttribute.htextAlignVertical属性仅影响最顶层的文本视图(段落视图)。为准确反映此平台限制,现将其移至段落属性- 不影响
<Text>组件的 JS API - 仅当您实现与 C++ Text API 交互的 Fabric 组件时会受影响
- 若受影响,可将代码中的
TextAttributes.h替换为ParagraphAttribute.h
完整变更清单请参阅 0.81 版本 CHANGELOG。
致谢
React Native 0.81 包含来自 110 位贡献者的 1110 余次提交。感谢所有辛勤付出!
特别鸣谢在本版本中做出重大贡献的社区成员:
-
Christian Falch 在预编译 iOS 构建方面的卓越贡献。
-
Mathieu Acthernoene 为 Android 全面屏支持做出关键贡献
-
Enrique López-Mañas 协助测试 Android 16 集成及 SafeAreaView 弃用方案
升级到 0.81
对于现有项目,除了升级文档外,请使用 React Native Upgrade Helper 查看 React Native 各版本间的代码变更。
要创建新项目:
npx @react-native-community/cli@latest init MyProject --version latest
若使用 Expo,React Native 0.81 将在即将发布的 Expo SDK 54 中作为默认版本获得支持。
0.81 现已成为 React Native 的最新稳定版本,0.78.x 版本将不再获得支持。更多信息请参阅 React Native 支持策略。



