RNOH 三方库 2026 年 10 月发布:72 款库集体「修内功」,鸿蒙 RN 生态进入质量时代
RNOH 三方库 2026 年 10 月发布:72 款库集体「修内功」,鸿蒙 RN 生态进入质量时代
原文公告:CPF-RN 组织讨论 #19 · React Native OpenHarmony(RNOH)三方库版本发布公告
发布方:OpenHarmony React Native 三方库 SIG 团队
发布时间:2026 年 10 月
发布规模:72 款三方库,已全部发布至 npm
覆盖框架线:React Native 0.72 / 0.77 / 0.82 / 0.84
一句话总结:这个月不堆新功能,只做五件事——清 Issue、压崩溃、补测试、对齐行为、修文档。
一、「不发新功能」的消息,为什么反而是好消息
判断一个跨平台框架的三方库生态成熟到什么程度,看三件事:
第一段:有没有 —— 我的项目要用 WebView,鸿蒙上有没有?
第二段:全不全 —— 图片、音视频、地图、推送、加密……每个坑都有库填吗?
第三段:稳不稳 —— 库有了,但它在边界条件下会不会崩?行为跟安卓 iOS 一致吗?文档可信吗?
RNOH 生态已经走完了前两段。截至本月,CPF-RN 组织下 rntpc_* 系列加上合作仓库,覆盖了 UI 组件、图像处理、音视频、文件存储、网络通信、定位地图、设备能力、安全加密、推送、社交分享、动画等几乎所有常见场景——本文第三节完整列出了本次发布的 72 款。
于是第三段成为真正的门槛。生态的成熟标志不是库的数量,而是「敢不敢在正式项目里用」。而「敢不敢」取决于三件事:遇到问题有人修(Issue 清理)、跑起来不崩(稳定性)、换平台不改代码(行为一致性)。
这正是本月版本的核心——一次针对 72 款库的质量专项提升。
二、五个质量方向,逐个拆开看技术含量
公告给出的五个方向,看起来像套话,但每一条落到 RNOH 这个技术栈上都有具体含义。这条链路是 JS/TS 业务代码 → RNOH 桥接层(C++/ArkTS)→ 鸿蒙 ArkUI 原生能力,三层之间任何一层的语义偏差,最终都会以「iOS 上好好的,鸿蒙上不对」的形式暴露给业务方。
| 方向 | 公告表述 | 在 RNOH 栈里的实际含义 | 修复后你能感知到什么 |
|---|---|---|---|
| Issue 清理 | 逐一排查修复开发者与合作伙伴反馈的问题,清理积压缺陷 | 把社区/企业反馈从「待复现」推进到「已定位 → 已修 → 已验证」 | 之前踩到但被标记为 known issue 的坑,可能已经不需要 workaround 了 |
| 稳定性增强 | 排查边界条件与异常路径下的崩溃、内存泄漏 | 空值/空数组入参、重复调用、时序竞争、页面销毁后回调、大对象未释放——这些是原生实现最容易漏的分支 | 长时运行、反复进出页面、异常参数场景下的崩溃和 PSS 增长减少 |
| 测试用例覆盖 | 扩大自动化测试覆盖,补充功能与异常场景 | 三方库的鸿蒙实现要能像上游库一样被回归测试托住 | 后续版本升级时,回到旧问题的概率下降 |
| 鸿蒙实现一致性 | 校验并统一鸿蒙实现与原版库的行为表现 | 这是三方库移植最深的一层:API 语义、回调时机、错误处理、返回值结构都要对齐,否则业务侧条件分支会走错 | 同一份 RN 代码在安卓/iOS/鸿蒙上分支逻辑一致,不用写 Platform.OS 特判 |
| 文档优化 | 完善使用文档,补充缺失描述、修正错误、更新版本约束 | 鸿蒙实现的差异化限制(不支持某参数、需额外权限、仅某 API 版本可用)必须显式写出来 | 接入时少猜、少试错,版本约束一眼可见 |
其中第 4 条值得单独说一句。
「鸿蒙实现一致性」是三方库移植里最容易被低估、也最贵的部分。 举个例子:某个图片裁剪库的 crop() 在安卓上失败时抛异常,鸿蒙实现却返回 null;业务代码写的是 try/catch,于是在鸿蒙上不但没崩,还在下一步拿到一个 null 继续往下跑,最终崩溃点出现在离现场几百行的位置。再比如回调时机——安卓在 onResume 之后回调、鸿蒙在 onPageShow 之前回调,业务侧的时序假设就会错位,表现为「偶现」的 UI 状态不一致。
这类问题不会因为「功能能跑」而被发现,只会因为逐接口比对被消除。本月把「一致性」列为专项方向,意味着适配工作从「实现功能」推进到了「实现语义」。
三、72 款库全景清单
安装方式统一:
npm install @react-native-ohos/<library-name>
说明:表中「框架版本」列为该库本次发布覆盖的 RNOH 框架版本线。源码地址大多位于
CPF-RN组织,个别库(如react-native-camera)源码仍在 GitHub 的react-native-oh-library组织下,已在表中标注实际地址。
UI 与视觉组件(19 款)
相机与媒体采集(4 款)
| 序号 | 包名 | 源码地址 | 框架版本 | 功能简介 |
|---|---|---|---|---|
| 1 | @react-native-ohos/react-native-camera | react-native-oh-library/react-native-camera | 0.72 / 0.77 | 相机基础能力 |
| 2 | @react-native-ohos/react-native-camera-kit | CPF-RN/rntpc_react-native-camera-kit | 0.84 | 相机增强套件 |
| 3 | @react-native-ohos/react-native-vision-camera | CPF-RN/rntpc_react-native-vision-camera | 0.72 / 0.77 / 0.82 / 0.84 | 高级相机框架 |
| 4 | @react-native-ohos/camera-roll | CPF-RN/rntpc_react-native-cameraroll | 0.72 / 0.77 | 相册访问 |
音频与录制(3 款)
| 序号 | 包名 | 源码地址 | 框架版本 | 功能简介 |
|---|---|---|---|---|
| 1 | @react-native-ohos/react-native-sound | CPF-RN/rntpc_react-native-sound | 0.82 / 0.84 | 音频播放 |
| 2 | @react-native-ohos/react-native-audio | CPF-RN/rntpc_react-native-audio | 0.72 / 0.77 / 0.82 | 音频能力 |
| 3 | @react-native-ohos/react-native-audio-recorder-player | CPF-RN/rntpc_react-native-audio-recorder-player | 0.72 / 0.77 / 0.82 / 0.84 | 录音与播放 |
文件与存储(8 款)
| 序号 | 包名 | 源码地址 | 框架版本 | 功能简介 |
|---|---|---|---|---|
| 1 | @react-native-ohos/react-native-sqlite-storage | CPF-RN/rntpc_react-native-sqlite-storage | 0.72 / 0.77 / 0.82 / 0.84 | SQLite 数据库 |
| 2 | @react-native-ohos/react-native-mmkv | CPF-RN/rntpc_react-native-mmkv | 0.84 | 高性能键值存储 |
| 3 | @react-native-ohos/react-native-mmkv-storage | CPF-RN/rntpc_react-native-mmkv-storage | 0.72 / 0.77 / 0.82 / 0.84 | MMKV 存储封装 |
| 4 | @react-native-ohos/async-storage | CPF-RN/rntpc_async-storage | 0.72 / 0.77 / 0.82 / 0.84 | 异步存储 |
| 5 | @react-native-ohos/react-native-fs | CPF-RN/rntpc_react-native-fs | 0.72 / 0.77 / 0.82 / 0.84 | 文件系统操作 |
| 6 | @react-native-ohos/react-native-blob-util | CPF-RN/rntpc_react-native-blob-util | 0.72 / 0.77 / 0.82 / 0.84 | Blob 数据处理 |
| 7 | @react-native-ohos/react-native-document-picker | CPF-RN/rntpc_react-native-document-picker | 0.82 | 文档选择器 |
| 8 | @react-native-ohos/react-native-zip-archive | CPF-RN/rntpc_react-native-zip-archive | 0.72 / 0.77 / 0.82 | ZIP 压缩/解压 |
网络与通信(3 款)
| 序号 | 包名 | 源码地址 | 框架版本 | 功能简介 |
|---|---|---|---|---|
| 1 | @react-native-ohos/netinfo | CPF-RN/rntpc_react-native-netinfo | 0.72 / 0.77 / 0.82 / 0.84 | 网络状态监听 |
| 2 | @react-native-ohos/cookies | CPF-RN/rntpc_cookies | 0.72 / 0.77 | Cookie 管理 |
| 3 | @react-native-ohos/react-native-webrtc | CPF-RN/rntpc_react-native-webrtc | 0.72 / 0.77 / 0.82 | WebRTC 实时通信 |
定位与地图(3 款)
| 序号 | 包名 | 源码地址 | 框架版本 | 功能简介 |
|---|---|---|---|---|
| 1 | @react-native-ohos/geolocation | CPF-RN/rntpc_react-native-geolocation | 0.72 / 0.77 / 0.82 / 0.84 | 地理定位 |
| 2 | @react-native-ohos/react-native-maps | CPF-RN/rntpc_react-native-maps | 0.84 | 地图组件 |
| 3 | @react-native-ohos/react-native-amap3d | CPF-RN/rntpc_react-native-amap3d | 0.72 / 0.77 / 0.82 / 0.84 | 高德 3D 地图 |
设备与系统能力(7 款)
| 序号 | 包名 | 源码地址 | 框架版本 | 功能简介 |
|---|---|---|---|---|
| 1 | @react-native-ohos/react-native-device-info | CPF-RN/rntpc_react-native-device-info | 0.72 / 0.77 / 0.82 / 0.84 | 设备信息 |
| 2 | @react-native-ohos/react-native-system-setting | CPF-RN/rntpc_react-native-system-setting | 0.72 / 0.77 / 0.82 / 0.84 | 系统设置 |
| 3 | @react-native-ohos/react-native-haptic-feedback | CPF-RN/rntpc_react-native-haptic-feedback | 0.72 | 触觉反馈/振动 |
| 4 | @react-native-ohos/react-native-permissions | CPF-RN/rntpc_react-native-permissions | 0.72 / 0.77 / 0.82 / 0.84 | 权限管理 |
| 5 | @react-native-ohos/react-native-sensors | CPF-RN/rntpc_react-native-sensors | 0.84 | 传感器访问 |
| 6 | @react-native-ohos/react-native-restart | CPF-RN/rntpc_react-native-restart | 0.84 | 应用重启 |
| 7 | @react-native-ohos/react-native-orientation-locker | CPF-RN/rntpc_react-native-orientation-locker | 0.72 / 0.77 / 0.82 / 0.84 | 屏幕方向锁定 |
UI 控件(6 款)
| 序号 | 包名 | 源码地址 | 框架版本 | 功能简介 |
|---|---|---|---|---|
| 1 | @react-native-ohos/picker | CPF-RN/rntpc_picker | 0.72 / 0.84 | 选择器组件 |
| 2 | @react-native-ohos/datetimepicker | CPF-RN/rntpc_datetimepicker | 0.84 | 日期时间选择器 |
| 3 | @react-native-ohos/checkbox | CPF-RN/rntpc_react-native-checkbox | 0.82 / 0.84 | 复选框 |
| 4 | @react-native-ohos/slider | CPF-RN/rntpc_react-native-slider | 0.84 | 滑动条 |
| 5 | @react-native-ohos/react-native-slider | CPF-RN/jeanregisser-react-native-slider | 0.77 / 0.82 / 0.84 | 滑块组件 |
| 6 | @react-native-ohos/progress-view | CPF-RN/rntpc_progress-view | 0.72 / 0.82 / 0.84 | 进度视图 |
安全与加密(1 款)
| 序号 | 包名 | 源码地址 | 框架版本 | 功能简介 |
|---|---|---|---|---|
| 1 | @react-native-ohos/react-native-rsa-native | CPF-RN/react-native-rsa-native | 0.72 | RSA 加密/解密 |
推送与后台任务(2 款)
| 序号 | 包名 | 源码地址 | 框架版本 | 功能简介 |
|---|---|---|---|---|
| 1 | @react-native-ohos/push-notification-ios | CPF-RN/rntpc_ios | 0.82 / 0.84 | 推送通知 |
| 2 | @react-native-ohos/react-native-background-timer | CPF-RN/rntpc_react-native-background-timer | 0.82 / 0.84 | 后台定时器 |
社交与分享(2 款)
| 序号 | 包名 | 源码地址 | 框架版本 | 功能简介 |
|---|---|---|---|---|
| 1 | @react-native-ohos/react-native-share | CPF-RN/rntpc_react-native-share | 0.72 / 0.82 | 内容分享 |
| 2 | @react-native-ohos/react-native-wechat-lib | CPF-RN/rntpc_react-native-wechat-lib | 0.72 / 0.77 / 0.82 / 0.84 | 微信 SDK 集成 |
动画与特效(1 款)
| 序号 | 包名 | 源码地址 | 框架版本 | 功能简介 |
|---|---|---|---|---|
| 1 | @react-native-ohos/lottie-react-native | CPF-RN/rntpc_lottie-react-native | 0.72 / 0.77 / 0.82 | Lottie 动画 |
其他实用工具(13 款)
四、从 72 行清单里读出的三个结论
把上面的表格按「框架版本」列做一次统计,能看出不少东西:
结论 1:0.82 是覆盖面最广的一条线,0.84 已基本追平
| 框架版本线 | 覆盖库数量 | 占 72 款比例 |
|---|---|---|
| 0.72 | 51 | 71% |
| 0.77 | 51 | 71% |
| 0.82 | 56 | 78% |
| 0.84 | 51 | 71% |
统计口径:某库的「框架版本」列包含该版本线即计入,一库可计入多条线。
怎么解读:0.82 覆盖面第一(56 款)说明它是当前的「生态重心」——绝大多数库都优先在这条线上做了验证。而 0.84 作为最新线已经达到 51 款、与 0.72/0.77 持平并逼近 0.82,说明社区并没有把新版本当成「先适配几个重要库再说」,而是在同步推进。
对你的实际意义:如果你的项目还在 0.72/0.77,升级前先确认你要用的那几个库在 0.82/0.84 上是否已覆盖——差 5~6 款听起来不多,但踩中的那个往往就是你项目里最离不开的那个。
结论 2:约 40% 的库做到了四线全绿
有 29 款库同时支持 0.72 / 0.77 / 0.82 / 0.84 全部四条版本线,占 40%。
这批库是生态里的「压舱石」——它们基本覆盖了任何 RN 应用都绕不开的基础能力:存储(async-storage、sqlite-storage、mmkv-storage)、文件(fs、blob-util)、设备(device-info、permissions、orientation-locker、system-setting)、网络(netinfo)、定位与地图(geolocation、amap3d)、图像与视觉(image-crop-picker、image-resizer、blur、image-sequence-2)、媒体(video、audio-recorder-player、vision-camera)、UI(pager-view、keyboard-controller、view-shot、text-size)、工具(splash-screen、pdf、localize、nfc-manager、jpush)、社交(wechat-lib)。
这 29 款可以理解为「跨版本安全区」:无论你的项目锚在哪条 RN 线上,它们都能用,升级 RNOH 框架时也不必为此改代码。
结论 3:11 款库只支持单一版本线,都是「有原因」的
| 仅支持的版本线 | 库 |
|---|---|
| 0.72 | react-native-haptic-feedback、react-native-rsa-native |
| 0.77 | flash-list |
| 0.82 | react-native-document-picker |
| 0.84 | react-native-camera-kit、react-native-mmkv、react-native-maps、react-native-sensors、react-native-restart、datetimepicker、slider |
单版本线不等于「质量差」,通常是三类原因:新库刚落地(先在最活跃的线上验证,如 mmkv、maps、camera-kit)、上游库自身版本耦合(如 flash-list 对 RN 版本敏感)、依赖较新的鸿蒙 API(低版本 SDK 上无法实现)。
选型提醒:这 11 款在接入前务必确认你的 RNOH 框架版本正好落在它支持的那条线上,否则会遇到「装上了但编译不过 / 运行时不回调」这类最难排查的问题。
五、场景选型速查:什么需求找什么库
72 款库摊开看容易晕,按「我要做什么」反查更实用:
| 我要做的功能 | 首选库 | 可搭配 |
|---|---|---|
| 长列表 / 无限滚动 | flash-list(0.77) | react-native-smartrefreshlayout、draggable-flatlist |
| 页面导航与手势返回 | react-native-screens | react-native-safe-area-context、pager-view |
| 内嵌 H5 / 富文本 | react-native-webview | react-native-cookies(登录态) |
| 文档阅读(PDF/合同/发票) | react-native-pdf | react-native-document-picker、blob-util |
| 表单与输入体验 | react-native-keyboard-controller | datetimepicker、picker、checkbox、slider |
| 头像上传 / 图片流水线 | react-native-image-crop-picker | image-resizer、image-marker、photo-manipulator、syan-image-picker |
| 扫码 / 拍照识别 | react-native-vision-camera | react-native-camera-kit、camera-roll |
| 短视频与音频播录 | react-native-video / audio-recorder-player | react-native-sound、react-native-audio |
| 实时音视频通话 | react-native-webrtc | permissions、orientation-locker |
| 本地缓存与离线数据 | react-native-mmkv(0.84) / async-storage | sqlite-storage、fs、zip-archive |
| 地图与 LBS | react-native-maps(0.84) / amap3d | geolocation |
| 微信登录 / 分享 / 支付前置 | react-native-wechat-lib | react-native-share、clipboard |
| 消息推送 | jpush-react-native | push-notification-ios、background-timer |
| 卡片 / 门禁 / 一碰传 | react-native-nfc-manager | device-info、permissions |
| 视觉特效与动效 | react-native-blur、lottie-react-native | linear-gradient、masked-view、image-sequence-2 |
| 数据安全 | react-native-rsa-native | mmkv(加密存储)、react-native-config(密钥分环境) |
| 截图 / 分享海报 | react-native-view-shot | image-marker、share |
六、升级实操:五步走,别跳步
第 1 步:先确认你的框架版本线(最容易跳过、后果最严重)
三方库的鸿蒙实现依赖 RNOH 桥接层的 C-API 与 TurboModule 接口,版本线错配是「能 install、不能跑」的头号原因。先查你工程里的 RNOH 版本:
# 查看当前 RNOH / react-native 版本
npm ls react-native @react-native-oh/react-native-harmony
把结果映射到版本线(0.72 / 0.77 / 0.82 / 0.84),再回到第三节表格里确认目标库是否覆盖这条线。不要跨版本线强行安装。
第 2 步:更新依赖
# 升级单个库
npm install @react-native-ohos/<library-name>
# 批量升级全部 @react-native-ohos 依赖
npx npm-check-updates -u -f "@react-native-ohos/*" && npm install
也可以直接改 package.json 里的版本号,然后:
npm install
建议:一次只升一类库(先存储、再 UI、最后媒体相机)。摄影机、音视频类库的原生依赖较重,混在一批里升,出问题时无法二分定位。
第 3 步:读 CHANGELOG,找 Breaking Changes
公告明确提示:各仓库具体的优化内容与变更明细,请参阅对应仓库的 Release Note 和 CHANGELOG。
质量专项虽然以「不破坏接口」为目标,但为了对齐上游行为,个别库可能会修正过去「实现错了但大家已经绕过去了」的地方——这类修正对老项目来说是隐性 Breaking Change。先读再升。
第 4 步:含原生组件的库需要重新生成桥接代码
RNOH 采用 Codegen 机制,TurboModule / Fabric 组件的桥接代码是由接口定义生成的。升级了带原生实现的库之后,光 npm install 不够——需要重新执行 Codegen 让桥接层与新的接口定义对齐,否则会出现方法找不到、参数类型不匹配等运行期错误。
纯 JS 的库(dayjs、axios、redux 这一层)不受影响,装了就能用。
第 5 步:在 DevEco Studio 中重新编译并在真机验证
公告要求:升级后请在 DevEco Studio 中重新编译工程,并运行自动化测试与手动验证。
建议按这张清单走一遍:
| 检查项 | 为什么要查 |
|---|---|
| 增量编译产物是否被清理 | 旧的 .har / 中间产物残留会掩盖真实问题,让人误判「升级无效」 |
| 原生依赖(第三方 SDK)是否同步更新 | 如微信、极光、高德类库,JS 包与原生 SDK 版本需配套 |
| Codegen 是否执行成功 | 失败时往往只是一条 warning,但运行期才炸 |
| 真机跑核心链路 | 模拟器与真机在相机、NFC、传感器、定位等能力上差异很大 |
| 重复进入/退出页面 20 次以上 | 本月的「稳定性增强」集中在边界路径,反复进出是验证回调与释放是否正确的有效方式 |
| 异常入参验证 | 空数组、空字符串、超大图片、断网后重试——这类场景正是本月专项覆盖重点 |
七、兼容性矩阵
| 项 | 要求 |
|---|---|
| DevEco Studio | 建议 6.0.2 Release 及以上 |
| HarmonyOS SDK | API 12 及以上;部分库要求 API 14 及以上(以各库文档为准) |
| React Native | 支持 0.72 / 0.77 / 0.82 / 0.84 等主流版本框架 |
| 包管理 | npm;包名前缀统一为 @react-native-ohos/ |
八、反馈与共建:生态的下一个 72 款靠谁
遇到问题的正确路径
| 目的 | 去哪里 |
|---|---|
| 查这个库怎么用 | CPF-RN/usage-docs(三方库使用文档中心,含鸿蒙化库对照表与 JS 库清单) |
| 查这个库改了什么 | 对应仓库的 Release Note / CHANGELOG |
| 报 Bug / 提需求 | 在对应仓库提交 Issue(不要提到组织层,否则定位成本翻倍) |
| 了解框架本身 | CPF-RN/ohos_react_native |
| 让 AI 帮你写 RNOH 代码 | CPF-RN/skills(npx @react-native-oh/kit add) |
四类可以直接上手贡献的事
公告最后给出的四个共建方向,按门槛从低到高排列:
- 🚀 适配新的 React Native 三方库 —— 在 Issue 中认领待适配任务。这是对生态增量最大的一件事:每多一款库,就少一批开发者被迫自己写原生代码。
- 📚 完善使用文档 —— 门槛最低,价值却最直接。尤其「这个参数在鸿蒙上不支持」这类一句话说明,能省掉后来者半天的试错。
- 🔧 提交 Bug 修复与功能增强 —— 在对应仓库提交 PR。三方库的鸿蒙实现通常是原库的一份 patch 化移植,改动面可控。
- 💬 分享使用经验 —— 撰写技术博客或在社区答疑。本月质量专项里的很多修复,源头就是某位开发者一句「我这边复现了,这样能绕过」。
九、一页速查
| 资源 | 链接 |
|---|---|
| 本次发布公告(原文) | https://atomgit.com/org/CPF-RN/discussions/19 |
| CPF-RN 组织主页 | https://atomgit.com/CPF-RN |
| 三方库使用文档中心 | https://atomgit.com/CPF-RN/usage-docs |
| RNOH 框架本体 | https://atomgit.com/CPF-RN/ohos_react_native |
| RNOH AI Agent 技能库 | https://atomgit.com/CPF-RN/skills |
| 鸿蒙特色能力封装 | https://atomgit.com/CPF-RN/rn_ohfeatures |
| npm 包命名空间 | @react-native-ohos/ |
升级三条硬规矩:
- 框架版本线必须对齐——0.72/0.77/0.82/0.84 别跨界。
- CHANGELOG 必读——质量专项里的「行为对齐」对老项目等于隐性 Breaking Change。
- 真机跑核心链路——相机、NFC、传感器、定位在模拟器上验不出真问题。
更多推荐


所有评论(0)