Skip to content

FCE-3086: Use fishjam-react-native-webrtc as submodule in mobile-sdk#541

Merged
MiloszFilimowski merged 4 commits into
mainfrom
mfilimowski/webrtc-as-submodule-workspace
May 25, 2026
Merged

FCE-3086: Use fishjam-react-native-webrtc as submodule in mobile-sdk#541
MiloszFilimowski merged 4 commits into
mainfrom
mfilimowski/webrtc-as-submodule-workspace

Conversation

@MiloszFilimowski
Copy link
Copy Markdown
Collaborator

Description

  • Add fishjam-react-native-webrtc as a git submodule + yarn workspace at packages/react-native-webrtc/.
  • mobile-client consumes it via workspace:* for both dependencies and peerDependencies; yarn rewrites them at publish time so they can't drift.
  • Drop the examples/mobile-client/common/plugins/ workaround — autolinking handles the symlinked workspace.
  • Add check:webrtc-published: release blocks unless the submodule HEAD is at a git tag that's published on npm.
  • CI workflows checkout submodules recursively; README + .prettierignore updated.

Motivation and Context

Removes the manual file: toggle flow for co-developing the SDK and the webrtc fork — clone with --recurse-submodules and yarn is enough.

Documentation impact

  • Documentation update required
  • Documentation updated in another PR
  • No documentation update required

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)
  • Breaking change (fix or feature that would cause existing functionality to
    not work as expected)

@linear
Copy link
Copy Markdown

linear Bot commented May 22, 2026

FCE-3086

Copy link
Copy Markdown
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR updates the monorepo to consume the fishjam-react-native-webrtc fork as a git submodule + Yarn workspace (packages/react-native-webrtc) and removes the previous Expo plugin workaround used for local development. It also adds a release-time guard to ensure the submodule points to a tagged, npm-published WebRTC version, and updates CI/README accordingly.

Changes:

  • Add packages/react-native-webrtc as a git submodule and Yarn workspace; switch @fishjam-cloud/react-native-client to consume it via workspace:* and build it as part of its build/prepare flow.
  • Remove examples/mobile-client/common/plugins/ local-webrtc-paths plugin usage and implementation; rely on autolinking + workspace symlink.
  • Add check:webrtc-published release gate and update GitHub Actions workflows to checkout submodules recursively.

Reviewed changes

Copilot reviewed 22 out of 23 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
yarn.lock Updates lockfile to reflect the new @fishjam-cloud/react-native-webrtc workspace and removed plugin workspace deps.
release-automation/check-webrtc-published.mjs Adds a release automation script to verify the WebRTC submodule is pinned to a tagged commit and its package version is published on npm.
README.md Updates contributor workflow to instruct cloning/init of git submodules.
packages/mobile-client/src/overrides/RTCPeerConnection.ts Tightens typing of the stored RTC configuration using constructor parameter inference.
packages/mobile-client/README.md Rewrites local WebRTC fork development instructions to use the submodule + workspace approach.
packages/mobile-client/package.json Switches WebRTC dependency/peerDependency to workspace:*, adds build step to run the WebRTC workspace prepare, and adds check:webrtc-published.
package.json Adds the WebRTC workspace and removes the example plugins workspace; adds a resolution for @types/react.
examples/mobile-client/fishjam-chat/app.json Removes usage of the local WebRTC paths plugin from Expo config.
examples/mobile-client/common/plugins/tsconfig.json Removes the shared plugins TypeScript config (plugin package removal).
examples/mobile-client/common/plugins/src/withLocalWebrtcPaths.ts Removes the Expo config plugin entry point for local WebRTC path overrides.
examples/mobile-client/common/plugins/src/withLocalWebrtcIos.ts Removes iOS Podfile modification logic for local WebRTC path overrides.
examples/mobile-client/common/plugins/src/withLocalWebrtcAndroid.ts Removes Android settings.gradle modification logic for local WebRTC path overrides.
examples/mobile-client/common/plugins/src/utils.ts Removes helper utilities used to detect file: WebRTC dependencies and generate config markers.
examples/mobile-client/common/plugins/package.json Removes the shared plugins workspace package definition.
.prettierignore Ignores formatting for the new submodule directory packages/react-native-webrtc.
.gitmodules Adds the packages/react-native-webrtc submodule configuration.
.github/workflows/tests.yaml Ensures CI checks out submodules recursively.
.github/workflows/release.yaml Ensures CI checks out submodules recursively and adds the check:webrtc-published gate before publishing mobile-client.
.github/workflows/node.yaml Ensures CI checks out submodules recursively.
.github/workflows/mobile_eas_build.yaml Ensures CI checks out submodules recursively for EAS builds.
.github/workflows/livestreaming-example.yaml Ensures CI checks out submodules recursively for the example workflow.
.github/workflows/fishjam-chat.yaml Ensures CI checks out submodules recursively for the chat example workflow.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread release-automation/check-webrtc-published.mjs Outdated
Comment thread release-automation/check-webrtc-published.mjs
@MiloszFilimowski MiloszFilimowski merged commit 2d124d8 into main May 25, 2026
2 checks passed
@MiloszFilimowski MiloszFilimowski deleted the mfilimowski/webrtc-as-submodule-workspace branch May 25, 2026 09:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants