Skip to content

ios,android: move to prefixed webrtc - #455

Open
davidliu wants to merge 3 commits into
mainfrom
dl/prefixed_webrtc
Open

ios,android: move to prefixed webrtc#455
davidliu wants to merge 3 commits into
mainfrom
dl/prefixed_webrtc

Conversation

@davidliu

@davidliu davidliu commented Sep 9, 2026

Copy link
Copy Markdown
Contributor

Summary

Migrates the native code to the LiveKit-prefixed libwebrtc builds: io.github.webrtc-sdk:android-prefixed
on Android and the LiveKitWebRTC pod on iOS, both at 144.7559.15.

The change is a symbol rename, with no behavior change and no change to the JS/TS API.

  • Androidorg.webrtc.* imports become livekit.org.webrtc.*. WebRtcAudioTrackHelper moves to
    livekit.org.webrtc.audio so it keeps its package-private access to JavaAudioDeviceModule.audioOutput.
  • iOS — libwebrtc Objective-C types gain the LK prefix (RTCAudioSessionLKRTCAudioSession,
    RTCAudioRendererLKRTCAudioRenderer, RTCAudioBufferLKRTCAudioBuffer, etc.) and imports move
    from <WebRTC/...> to <LiveKitWebRTC/...>. Header filenames are unchanged.

Changeset is major: ios/Headers/ exposes LKRTCAudioRenderer, LKRTCAudioBuffer, and
LKRTCDefaultAudioProcessingModule to native integrators, so this breaks the native public API even
though the JS API is untouched.

Consumer impact

None on the dependency-resolution side. LiveKitWebRTC 144.7559.15 is published on the CocoaPods
trunk and android-prefixed is on Maven Central, so apps need no Podfile or Gradle repository changes.

Native integrations must migrate to the prefixed symbols (see the changeset): org.webrtc.* becomes
livekit.org.webrtc.* on Android including any -keep class org.webrtc.** ProGuard rules, and
libwebrtc Objective-C types gain the LK prefix on iOS. Pure-JS apps need no changes.

Before merging

@changeset-bot

changeset-bot Bot commented Sep 9, 2026

Copy link
Copy Markdown

🦋 Changeset detected

Latest commit: 9fd387c

The changes in this PR will be included in the next version bump.

This PR includes changesets to release 1 package
Name Type
@livekit/react-native Major

Not sure what this means? Click here to learn what changesets are.

Click here if you're a maintainer who wants to add another changeset to this PR

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Devin Review found 1 potential issue.

Devin Review

Comment thread android/build.gradle
implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
api 'com.github.davidliu:audioswitch:89582c47c9a04c62f90aa5e57251af4800a62c9a'
api 'io.github.webrtc-sdk:android:144.7559.04'
api 'io.github.webrtc-sdk:android-prefixed:144.7559.15'

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

🟡 Declared peer installs incompatible WebRTC bridge

The declared peer dependency still accepts an unprefixed bridge after android-prefixed becomes mandatory. Clean Android and iOS consumer builds fail.

Prompt for agents
The prefixed native sources require a prefixed release of @livekit/react-native-webrtc, but package.json still declares ^144.1.2 as both the peer and development dependency. example/package.json and ci/package.json also retain that version, and yarn.lock resolves it to 144.1.2. That release depends on the unprefixed Android artifact and WebRTC-SDK pod, so it cannot provide the prefixed types used by this PR. Update all manifests and the lockfile to the first released prefixed bridge version, keeping the root peer and development ranges synchronized. Regenerate the example Podfile.lock from that dependency rather than editing its resolved pod entries independently.
Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

hiroshihorie
hiroshihorie previously approved these changes Sep 9, 2026
@hiroshihorie
hiroshihorie dismissed their stale review September 9, 2026 10:39

Dismissing approval for now, will re-review.

LiveKitWebRTC 144.7559.15 is published on the CocoaPods trunk, so
consumers need no extra source lines in their Podfile. Drop the source
instructions from the changeset and revert the README, example, and CI
Podfiles to their state on main.

@hiroshihorie hiroshihorie left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM

LiveKitWebRTC now resolves from the CocoaPods trunk, so the lockfile no
longer references the podspecs source and its checksum matches the
reverted Podfile.
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.

2 participants