Repository navigation
chore(deps): update dependency livekit-client to v2.22.4 - #1465
Merged
Merged
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
renovate
Bot
requested review from
1egoman,
lukasIO and
thomasyuill-livekit
as code owners
October 9, 2026 14:24
|
Contributor
size-limit report 📦
|
1egoman
approved these changes
Oct 11, 2026
This branch was successfully deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
2.22.3→2.22.4Release Notes
livekit/client-sdk-js (livekit-client)
v2.22.4Compare Source
Patch Changes
Catch the rejection from the publisher's
negotiate()when ensuring the PC transport connection, so a failed offer no longer surfaces as an unhandled promise rejection - #2142 (@1egoman)Catch the rejection from
negotiate()when the server requests media sections, so a failed renegotiation no longer surfaces as an unhandled promise rejection - #2108 (@SergeAx)Add
disableIceLiteconnect option to request full ICE from a server running ICE lite. - #2085 (@subham2006)Fix Document Picture-in-Picture detection reporting opener-document elements as being in PiP.
isElementInPiPcompared an element's coordinates (computed within its own document) against the PiP window's viewport without checking which document the element belongs to, so while any Document PiP window was open, every observed video element positioned inside the PiP window's bounds - a tile near the top-left of the page, for example - was treated as in PiP. BecauseHTMLElementInfo.visibleisisPiP || isIntersecting, those elements also counted as visible while scrolled out of view, which affected adaptiveStream subscription and layer selection. Detection now requires the element to live in the PiP window's document, or in a frame nested inside it. - #2106 (@dkelson)Ignore a duplicated server answer (same offerId) instead of applying it twice and surfacing a
NegotiationError. - #2114 (@pblazej)Wait for the first video frame in waitForDimensions on iPadOS, which reports a desktop user agent - #2110 (@1egoman)
Avoid attaching a new Closing/Restarting event listener for each negotiate call - #2084 (@1egoman)
Wait for first video frame to be received before responding to waitForDimension on ios - #2100 (@1egoman)
fix: wait for ReconnectResponse to arrive before declaring signal rec… - #2082 (@lukasIO)
Disable data streams v2 compression when CompressionStream exists but doesn't support deflate-raw - #2119 (@1egoman)
Retry against other LiveKit Cloud regions when the initial connection is rejected with 403. Cloud signals project-level region pinning with a 403 on the RTC paths, which was previously treated as terminal, so a client that geo-routed to a disallowed region never reached
/settings/regionsand failed to connect. 401 and the 404 "room does not exist" case remain terminal. - #2097 (@xianshijing-lk)Fix unhandled RPC timeout rejections when a request fails to publish or takes longer than the ack timeout to send - #2123 (@deepanshupal)
refresh subscribed codecs after publisher answer - #2121 (@lukasIO)
fix: expose participantIdentity on RoomEvent.DataReceived - #2092 (@mariusgassen)
Add
subscriberAllowPauseconnect option to control whether the SFU may pause subscribed video tracks when the subscriber is congested. - #2143 (@1egoman)Fix track volume losing effect when set to 0 - #2111 (@robintown)
Write the
x-google-start-bitratehint as a single connection-level value, once per publisher connection. - #2102 (@xianshijing-lk)libwebrtc reads this fmtp parameter per m-section but applies it to the shared
Call(WebRtcVideoSendChannel::ApplyChangedParams→SetSdpBitrateParameters), whereRtpBitrateConfiguratorholds one config for the whole peer connection. Differing per-section values were therefore last-writer-wins on m-section order, so publishing a camera and a screen share together could seed the estimator from either one depending on SDP layout. Every video section now carries the same value: the largest hint among the sections that are currently sending.Only sending sections count. The list of registered track bitrates is append-only, and an unpublished section keeps its
a=msid, so matching a section to a track by msid alone would still pair a stale entry with the section it used to occupy — letting an uncapped screen-share target seed a connection that now carries only a camera, or consuming the one-shot hint on a section that sends nothing, which would leave later publishes with no hint at all. The section's direction distinguishes them:a=recvonlyanda=inactivecannot carry local media and are exactly where an unpublished or pre-populated section lands, whilea=sendonly,a=sendrecvand an omitted direction all send.The hint is also written only on the first offer that carries local video, instead of on every offer. libwebrtc retains
start_bitrate_bpsand re-applies it on network route changes (RtpTransportControllerSend::OnNetworkRouteChanged), so rewriting it later is at best a no-op and at worst restarts a converged bandwidth estimator. A full reconnect builds a new peer connection and seeds the new estimator again.Targets below 300 kbps now get no hint, matching the Rust SDK: below that, seeding above the real capacity costs more than the ramp it saves.
Configuration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.