@fishjam-cloud/react-native-webrtc

中文文档
0.31.1发布于 2026/10/09MITTypeScriptESM + CJS构建来源已验证近 30 天下载 1.2万

WebRTC for React Native

原始使用文档
文档目录12 节
  1. Feature Overview
  2. WebRTC Revision
  3. Maintaining the iOS WebRTC build (FishjamWebRTC)
  4. When to cut a new release
  5. Versioning
  6. How to cut a release
  7. After a new FishjamWebRTC release
  8. Getting Started
  9. Guides
  10. Example Projects
  11. Community
  12. Related Projects

Ad Ad Ad

React Native WebRTC

React-Native-WebRTC

npm version npm downloads Discourse topics

A WebRTC module for React Native.

Feature Overview

AndroidiOStvOSmacOS*Windows*Web*Expo*
Audio/Video:heavy_check_mark::heavy_check_mark::heavy_check_mark:--:heavy_check_mark::heavy_check_mark:
Data Channels:heavy_check_mark::heavy_check_mark:---:heavy_check_mark::heavy_check_mark:
Screen Capture:heavy_check_mark::heavy_check_mark:---:heavy_check_mark::heavy_check_mark:
Plan B-------
Unified Plan*:heavy_check_mark::heavy_check_mark:---:heavy_check_mark::heavy_check_mark:
Simulcast*:heavy_check_mark::heavy_check_mark:---:heavy_check_mark::heavy_check_mark:

macOS - We don't currently actively support macOS at this time.
Support might return in the future.

Windows - We don't currently support the react-native-windows platform at this time.
Anyone interested in getting the ball rolling? We're open to contributions.

Web - The react-native-webrtc-web-shim project provides a shim for react-native-web support.
Which will allow you to use (almost) the exact same code in your react-native-web project as you would with react-native directly.

Expo - As this module includes native code it is not available in the Expo Go app by default.
However you can get things working via the expo-dev-client library and out-of-tree config-plugins/react-native-webrtc package.

Unified Plan - As of version 106.0.0 Unified Plan is the only supported mode.
Those still in need of Plan B will need to use an older release.

Simulcast - As of version 111.0.0 Simulcast is now possible with ease.
Software encode/decode factories have been enabled by default.

WebRTC Revision

  • Currently used revision: M124 (Fishjam fork)
  • iOS dependency: FishjamWebRTC — Fishjam's custom WebRTC build with the defer mic permission patch (replaces JitsiWebRTC).
  • Supported architectures
    • Android: armeabi-v7a, arm64-v8a, x86, x86_64
    • iOS: arm64, x86_64
    • tvOS: arm64
    • macOS: arm64, x86_64

Maintaining the iOS WebRTC build (FishjamWebRTC)

The iOS side ships against FishjamWebRTC — a CocoaPods pod published from fishjam-cloud/webrtc that wraps a prebuilt WebRTC.xcframework. Source patches live on the fishjam-m124 branch; the podspec and release tooling live on master.

When to cut a new release

Cut a new FishjamWebRTC version when any of the following happens:

  • A new patch lands on fishjam-m124 that we need on the client (e.g. another audio_device_ios.mm change, a fix to the network interfaces path, a privacy-manifest update).
  • We rebase fishjam-m124 onto a newer jitsi/webrtc tag (e.g. moving from v124.0.2 to v124.0.3).
  • A security advisory in upstream WebRTC requires picking up a fix.

You do not need to cut a new FishjamWebRTC for changes that only touch this RN wrapper (ios/**.{h,m,swift}, JS sources). Those ship as a normal @fishjam-cloud/react-native-webrtc npm bump.

Versioning

<upstream-version>.<fishjam-patch-N>, e.g. 124.0.2.1.

  • First three parts = the jitsi upstream version the build is patched on top of.
  • Fourth part = Fishjam patch counter against that base, starts at 1, increments per release.
  • On upstream rebase (e.g. jitsi ships 124.0.3), reset counter: next release is 124.0.3.1.
  • Pin with ~> 124.0.2.0 to accept any Fishjam patch on top of jitsi 124.0.2, or pin exact.

How to cut a release

Full runbook (build, tag, GH release, trunk publish, smoke test) lives in fishjam-cloud/webrtc's RELEASING.md on the master branch. TL;DR:

  1. On a macOS build host with depot_tools + a fetch webrtc_ios checkout, switch the gclient src/ to fishjam-m124, run gclient sync, then tools_webrtc/ios/build_ios_libs.py --build_config release --arch device:arm64 simulator:arm64 simulator:x64.
  2. Validate the patch is in the built binary: strings WebRTC.xcframework/*/WebRTC.framework/WebRTC | grep -c "<unique-string-from-patch>" — every slice must have a non-zero count. (Release builds strip C++ symbols, so use strings, not nm.)
  3. Zip the xcframework as FishjamWebRTC.xcframework.zip, tag vX.Y.Z.N on fishjam-m124, push, and gh release create with the zip attached.
  4. On master: bump s.version in ios/FishjamWebRTC.podspec to match, commit, push.
  5. pod trunk push ios/FishjamWebRTC.podspec --allow-warnings (one-time pod trunk register per identity).

After a new FishjamWebRTC release

Inside this repo:

  1. Bump the dependency in FishjamReactNativeWebrtc.podspec: s.dependency 'FishjamWebRTC', '~> X.Y.Z.0' (or pin exact if needed).
  2. Bump version in package.json — minor bump if the underlying WebRTC change is user-observable, patch otherwise.
  3. Test with cd ios && pod install in a consuming app and exercise the affected behavior end-to-end.

Getting Started

Use one of the following preferred package install methods to immediately get going.
Don't forget to follow platform guides below to cover any extra required steps.

npm: npm install react-native-webrtc --save
yarn: yarn add react-native-webrtc
pnpm: pnpm install react-native-webrtc

Guides

Example Projects

We have some very basic example projects included in the examples directory.
Don't worry, there are plans to include a much more broader example with backend included.

Community

Come join our Discourse Community if you want to discuss any React Native and WebRTC related topics.
Everyone is welcome and every little helps.

Looking for extra functionality coverage?
The react-native-webrtc organization provides a number of packages which are more than useful when developing Real Time Communication applications.

版本与发布记录

@fishjam-cloud/react-native-webrtc 共发布 28 个版本,首次发布于 2026/02/03;过去 12 个月发布了 28 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
0.31.1latest2026/10/091 个月前
0.31.02026/09/301 个月前
0.30.62026/09/211 个月前
0.30.52026/09/142 个月前
0.30.42026/09/112 个月前
0.30.32026/09/092 个月前

其他发布通道:rc → 0.30.0-rc.0。

关于 @fishjam-cloud/react-native-webrtc 的常见问题

@fishjam-cloud/react-native-webrtc 是什么?

WebRTC for React Native

如何安装 @fishjam-cloud/react-native-webrtc?

在项目目录运行 npm install @fishjam-cloud/react-native-webrtc,或使用 pnpm add / yarn add / bun add。它还需要宿主项目提供 peer 依赖:react-native(*)。npm 7 及以上与 pnpm 8 及以上默认会自动安装必需的 peer 依赖,Yarn 需要手动安装。

@fishjam-cloud/react-native-webrtc 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@fishjam-cloud/react-native-webrtc 支持 ESM 还是 CommonJS?

同时提供 ES Module 与 CommonJS 入口,import 和 require() 都可以使用,打包工具会自动选择合适的版本。

@fishjam-cloud/react-native-webrtc 可以商用吗?

@fishjam-cloud/react-native-webrtc 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@fishjam-cloud/react-native-webrtc 的下载量有多少?

根据 npm 官方下载统计,@fishjam-cloud/react-native-webrtc 在 2026/10/15 – 2026/11/13 这 30 天内被下载 11,636 次,日均约 388 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@fishjam-cloud/react-native-webrtc 还在维护吗?

最新版本 0.31.1 发布于 2026/10/09(1 个月前);至今共发布 28 个版本,其中过去 12 个月发布了 28 个;首次发布于 2026/02/03。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。