Skip to content

chore(webrtc)!: move upstream WebRTC code into third_party; rename to stream_dart_webrtc and stream_webrtc_interface - #1607

Open
renefloor wants to merge 6 commits into
v2from
renefloor/flu-1187-move-the-upstream-webrtc-code-into
Open

renefloor wants to merge 6 commits into
v2from
renefloor/flu-1187-move-the-upstream-webrtc-code-into

Conversation

@renefloor

Copy link
Copy Markdown
Contributor

Resolves FLU-1187.

Three commits, best reviewed one at a time:

  1. Rename. webrtc_interface becomes stream_webrtc_interface and dart_webrtc becomes stream_dart_webrtc, both at 1.0.0. Folders, pubspecs, barrels, imports, the workspace list, the melos sync list and ignores, release_tag.yml, docs and changelogs follow.
  2. Move. Each package's lib/src moves with git mv into lib/src/third_party/<upstream>/. Only import paths change; the barrels export the same names.
  3. Licences. Each package's root LICENSE is the Stream source code licence (same text as stream_video_flutter), with a section that points at the third-party licences:
    • lib/src/third_party/<upstream>/ has LICENSE and ATTRIBUTION.md.
    • The native folders, example/, test/ and stream_dart_webrtc/web/ stay in place, each with a THIRD_PARTY.md that lists the upstream files and the MIT LICENSE next to it.
    • Upstream files in the package root are listed in a root THIRD_PARTY.md, with the MIT text in LICENSE-MIT.

Before release

stream_dart_webrtc and stream_webrtc_interface are new on pub.dev. Their first version has to be published by hand, and stream_webrtc_flutter and stream_video can't be released until then. lint:pub, release:pub and release_tag.yml still skip both.

The webrtc title scope needs #1606.

Checked locally

  • dart analyze --fatal-infos: clean on all webrtc packages and the example. stream_video has the same issues as v2.
  • Tests: stream_webrtc_flutter, plus the stream_video webrtc, session and ringing tests, and the Chrome audio test.
  • pub publish --dry-run: no warnings on the two new packages. stream_webrtc_flutter keeps its existing warning about gitignored example files.
  • Builds: the webrtc example on macOS and web; dogfooding on web. The other platforms are covered by the webrtc workflow.

🤖 Generated with Claude Code

@coderabbitai

coderabbitai Bot commented Nov 6, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: defaults
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: c15edea5-1c9c-4fca-929c-db8c06a5c388

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • Trigger review
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@github-actions github-actions Bot added the v2 label Nov 6, 2026
@renefloor
renefloor marked this pull request as ready for review November 6, 2026 15:46
@renefloor
renefloor requested a review from a team as a code owner November 6, 2026 15:46
@renefloor renefloor added the ready Pull request ready to be reviewed label Nov 6, 2026
@codecov

codecov Bot commented Nov 6, 2026 •

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 66.10%. Comparing base (85619fb) to head (ea699f8).

Additional details and impacted files
@@            Coverage Diff             @@
##               v2    #1607      +/-   ##
==========================================
+ Coverage   66.07%   66.10%   +0.02%     
==========================================
  Files         467      467              
  Lines       27364    27364              
==========================================
+ Hits        18081    18089       +8     
+ Misses       9283     9275       -8     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@renefloor
renefloor force-pushed the renefloor/flu-1187-move-the-upstream-webrtc-code-into branch from 7501f74 to 371ceb8 Compare November 10, 2026 12:14
renefloor and others added 6 commits November 11, 2026 11:15
webrtc_interface becomes stream_webrtc_interface and dart_webrtc becomes
stream_dart_webrtc, both starting at 1.0.0. The upstream packages on
pub.dev keep their names. stream_video and stream_webrtc_flutter depend on
the new names.

Refs FLU-1187

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Each package's lib/src moves into lib/src/third_party/<upstream>/ with
git mv; only the import paths change. The package barrels export the same
names, so the public API is unchanged.

Refs FLU-1187

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
…am code MIT

Each package's root LICENSE becomes the Stream source code licence, with a
section that points at the third-party licences. The upstream MIT text sits
next to the code it covers:

- lib/src/third_party/<upstream>/ gets LICENSE and ATTRIBUTION.md.
- The native folders, the example, the tests and dart_webrtc's web/ stay
  where they are, each with a THIRD_PARTY.md listing the upstream files
  and the MIT LICENSE next to it.
- Upstream files in the package root are listed in THIRD_PARTY.md, with
  LICENSE-MIT.

Refs FLU-1187

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
stream_dart_webrtc and stream_webrtc_interface are not on pub.dev yet, so
pana could not resolve stream_video and the packages that depend on it.

Refs FLU-1187

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
- Root THIRD_PARTY.md files point at LICENSE-MIT, not the Stream LICENSE.
- The flutter-webrtc baseline is stream_webrtc_flutter 4.0.0, the version
  that was copied in.
- Root THIRD_PARTY.md lists every upstream file the other lists don't
  cover, including the barrels, third_party/CMakeLists.txt and the docs.
- android/THIRD_PARTY.md notes the Apache-2.0 changes listed in NOTICE.
- stream_webrtc_flutter's changelog marks the dependency switch as
  breaking, and the release skill refuses a stream-video release until
  the new packages are on pub.dev.

Refs FLU-1187

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The measured apps got path overrides only for packages/, so they could not
resolve stream_dart_webrtc and stream_webrtc_interface, which are not on
pub.dev yet.

Refs FLU-1187

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@renefloor
renefloor force-pushed the renefloor/flu-1187-move-the-upstream-webrtc-code-into branch from 371ceb8 to ea699f8 Compare November 11, 2026 10:15
@github-actions

github-actions Bot commented Nov 11, 2026 •

Copy link
Copy Markdown

SDK Size

title v2 branch diff status
android_stream_video 15.14 MB 15.14 MB 0 KB 🟢
android_stream_video_flutter 17.48 MB 17.48 MB 0 KB 🟢
pub_stream_video 1.0 MB 1.0 MB 0 KB 🟢
pub_stream_video_filters 0.04 MB 0.04 MB 0 KB 🟢
pub_stream_video_flutter 1.0 MB 1.0 MB 0 KB 🟢
pub_stream_video_noise_cancellation 0.05 MB 0.05 MB 0 KB 🟢
pub_stream_video_push_notification 0.38 MB 0.38 MB 0 KB 🟢
pub_stream_video_screen_sharing 0.01 MB 0.01 MB 0 KB 🟢

Measured on ea699f8.

@github-actions

Copy link
Copy Markdown

Size Breakdown

What each SDK adds to an empty release app, per Dart package and native library. Dart sizes are uncompressed symbol sizes. Open the sdk-size-analysis artifacts of this run in the DevTools App Size tool to drill down further.

This run does not measure ios.

Measured on ea699f8.

android · stream_video: 15.1 MB (+1.1 KB)
Component Size Δ vs v2
native:libjingle_peerconnection_so.so 11.96 MB 0
package:stream_video 1.11 MB -0.0 KB
classes.dex 261.9 KB 0
dart:@unknown 260.0 KB -0.0 KB
dart:_http 154.1 KB 0
package:protobuf 146.0 KB +0.0 KB
dart:mixin_deduplication 143.8 KB 0
native:libdartjni.so 121.7 KB 0
dart:io 99.3 KB 0
dart:async 75.6 KB 0
package:stream_core 69.5 KB 0
package:stream_webrtc_flutter 55.8 KB +0.5 KB
package:rxdart 54.3 KB 0
package:dio 53.2 KB 0
dart:core 52.2 KB 0
other (72) 538.3 KB +0.7 KB
android · stream_video_flutter: 17.41 MB (+0.8 KB)
Component Size Δ vs v2
native:libjingle_peerconnection_so.so 11.96 MB 0
package:stream_video 1.16 MB -0.0 KB
package:flutter 698.8 KB -0.3 KB
classes.dex 454.8 KB 0
dart:@unknown 434.8 KB -0.0 KB
dart:mixin_deduplication 362.7 KB 0
package:stream_video_flutter 205.7 KB 0
dart:_http 154.1 KB +0.0 KB
package:protobuf 145.2 KB 0
dart:io 136.5 KB 0
package:stream_core_flutter 124.2 KB 0
native:libdartjni.so 121.7 KB 0
assets 118.5 KB 0
package:hive_ce 99.2 KB 0
dart:@shared 84.2 KB -0.0 KB
other (100) 1.22 MB +1.1 KB

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

ready Pull request ready to be reviewed v2

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant