Skip to content

Version Packages - #456

Merged
davidliu merged 1 commit into
mainfrom
changeset-release/main
Sep 11, 2026
Merged

Version Packages#456
davidliu merged 1 commit into
mainfrom
changeset-release/main

Conversation

@github-actions

Copy link
Copy Markdown
Contributor

This PR was opened by the Changesets release GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated.

Releases

@livekit/react-native@3.0.0

Major Changes

  • Move to the LiveKit prefixed WebRTC builds: io.github.webrtc-sdk:android-prefixed on Android and the LiveKitWebRTC pod on iOS. This prevents collisions against any other WebRTC implementations. - #455 (@davidliu)

    Apps that only use the JavaScript API need no changes.

    Native integrations must migrate to the prefixed symbols:

    • Android: org.webrtc.* becomes livekit.org.webrtc.*.
      Custom -keep class org.webrtc.** ProGuard rules must be updated to livekit.org.webrtc.**.
    • iOS: types gain an LK prefix (RTCAudioRenderer becomes LKRTCAudioRenderer, RTCAudioBuffer becomes LKRTCAudioBuffer, and so on).

Minor Changes

  • iOS: align the default playAndRecord presets with the LiveKit Swift SDK. - #455 (@davidliu)

    The duplex (recording) presets now request mixWithOthers, allowBluetooth,
    allowBluetoothA2DP and allowAirPlay, matching playAndRecordOptions in the
    Swift SDK. Previously only allowBluetooth and mixWithOthers were requested,
    so A2DP output devices and AirPlay routes were unavailable during a call on this
    platform but available on others.

    When preferSpeakerOutput is set, defaultToSpeaker is now requested as well.
    The videoChat mode implies a speaker route, but iOS may rewrite the mode when
    Voice Processing I/O is instantiated - the Swift SDK observed it switching to
    voiceChat, which routes to the receiver. Requesting the option explicitly
    keeps the speaker route across that rewrite.

    This affects the defaults used by setupIOSAudioManagement and the deprecated
    getDefaultAppleAudioConfigurationForMode. A custom IOSAudioSessionPolicy or
    AppleAudioConfiguration is unaffected - those supply their own options.

  • iOS: pick the audio session mode based on Apple Voice Processing I/O state. - #455 (@davidliu)

    iOS applies a reduced, call-tuned speaker gain while capture is active under the
    voiceChat/videoChat session modes. Apple Voice Processing I/O compensates
    with its own loudness stage, so with VPIO off remote audio played back
    noticeably quieter.

    LiveKitWebRTC 144.7559.15 reports the resolved VPIO state to the audio device
    module's willEnableEngine hook. The default recording configuration now uses
    that: with VPIO running it keeps voiceChat/videoChat as before, and with VPIO
    off (for example after AudioDeviceModule.setVoiceProcessingEnabled(false)) it
    switches to the default mode, which keeps media gain. That mode routes to the
    receiver, so preferSpeakerOutput is expressed through the defaultToSpeaker
    category option instead of the implicit routing the chat modes provide. This
    matches what the LiveKit Swift SDK already does.

    IOSAudioSessionPolicy gains an optional recordingWithoutVoiceProcessing
    configuration for the VPIO-off case. Policies that omit it keep using their
    recording configuration for both, so existing setups are unaffected.
    AudioEngineConfigurationState, passed to the deprecated
    setupIOSAudioManagement callback form, gains a matching
    isVoiceProcessingEnabled field.

    Requires @livekit/react-native-webrtc with the five-argument willEnableEngine
    delegate method. Older versions crash with an unrecognized selector when the
    audio engine first enables.

@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: 1 flag

Not posted on this PR by your GitHub settings — view it in Devin Review. (Configure)

Devin Review

@davidliu
davidliu merged commit 661b910 into main Sep 11, 2026
5 checks passed
@davidliu
davidliu deleted the changeset-release/main branch September 11, 2026 18:10
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.

1 participant