Skip to content

Version Packages - #2158

Open
github-actions[bot] wants to merge 1 commit into
mainfrom
changeset-release/main
Open

github-actions[bot] wants to merge 1 commit into
mainfrom
changeset-release/main

Conversation

@github-actions

@github-actions github-actions Bot commented Oct 19, 2026 •

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-client@2.24.0

Minor Changes

  • Split Room into CoreRoom plus extensions. createRoom(options, [extensions]) from livekit-client/core builds a room with only the extensions an application needs; e2ee, frameMetadata and dataStreams take their options directly. Room.dispose() releases a room for good. Video publishing (camera, screen share, simulcast, SVC, backup codecs) is the video extension; receiving video stays in core. The new livekit-client/core entry (ESM only, experimental) exports CoreRoom and the extensions. simulateParticipants and the legacy chat messages are extensions too; the core entry does not offer legacy chat. - #2141 (@lukasIO)

Patch Changes

  • If the server disconnects the participant while room.connect() is still waiting for the transports (e.g. a DUPLICATE_IDENTITY leave), the connection attempt is now cancelled. Previously it kept waiting until peerConnectionTimeout, then failed over to another region and rejoined with the same token after the room had already emitted Disconnected; room.disconnect() could not stop it because the room already looked disconnected. - #2177 (@tobelesa)

  • Cancel an incoming data stream when its reader stops early (an aborted signal, a break out of for await, or a read error), so the stream is unregistered and later packets for it are dropped instead of buffering until the trailer arrives. A reader can no longer resume a stream after leaving its iteration early. - #2168 (@1egoman)

  • add datatrack data channel to sync state info - #2159 (@lukasIO)

  • Fix data packet decryption after the sender ratchets its key: DataCryptor now retries with the ratcheted key instead of the stored one - #2188 (@ninglinLiu)

  • Mark data track unpublished after republish fail - #2170 (@1egoman)

  • Fix an unhandled promise rejection when the signal passed to dataTracks.getDeferred() aborts, even though the caller catches the rejected promise. - #2156 (@Abhishek-B-R)

  • Keep the H.264 PPS id readable in E2EE keyframes, so that Chrome no longer drops keyframes from encoders such as Intel Quick Sync - #2181 (@lukasIO)

  • Speed up the emulation prevention step for encrypted H.264 and H.265 frames. writeRbsp now returns the input unchanged when no byte needs escaping, and otherwise copies runs of bytes instead of building a JS array. The output does not change. - #2184 (@lukasIO)

  • Fixes an issue where if a data stream runs into a terminal error, any packets delivered afterwards will be treated as if the stream doesn't exist (and not throw a sync error) - #2167 (@1egoman)

  • Apply the peerConnectionTimeout connect option to the negotiation deadline - #2189 (@ninglinLiu)

  • fix published type declarations for consumers with skipLibCheck: false or exactOptionalPropertyTypes - #2175 (@lukasIO)

  • Stop logging error reading from signal stream at error level when the signal socket was closed by the client or replaced; the read failure is now logged at debug level with the ignored close - #2192 (@ninglinLiu)

  • The debug log for a ratcheted E2EE key no longer includes the ratchet result, so the chain key and the new key material stay out of the console and out of log extensions. - #2213 (@lukasIO)

  • Keep engine.pendingReconnect accurate across reconnect attempts. A failed attempt no longer clears the handle of the retry it just scheduled (which made pendingReconnect read false while a retry was pending), and the flag now clears as soon as the reconnect timer is cleared. Buffered room events are also flushed when the engine finishes restarting if the room already reports connected. - #2193 (@1egoman)

  • Emit Reconnected once and keep room metadata and recording changes when a full reconnect fails over to another region - #2165 (@lukasIO)

  • Fix dynacast never pausing video layers on React Native: save sender encodings before skipping the stats monitor - #2163 (@davidliu)

  • Wait for the first frame of a screen share before reading its dimensions, so its simulcast layers are announced at the size the capture delivers instead of the requested resolution. - #2217 (@CSantosM)

  • Ignore signal messages received after the WebSocket is closed on React Native - #2173 (@davidliu)

  • Keep the mid to track id mapping of the current publisher answer when an answer to an older offer or an answer with an empty mapping arrives in single peer connection mode, so remote tracks whose track event fires later are no longer dropped - #2196 (@ninglinLiu)

  • If room.disconnect() runs during the signal join, the connection attempt now rejects as cancelled instead of with a TypeError. A stale connection attempt no longer closes the engine of a newer connection or disconnects the room. - #2151 (@lukasIO)

  • Fix TokenSource caching: a failed fetch no longer leaves the previous response cached under the new options, and participantAttributes is compared by content - #2198 (@ninglinLiu)

  • Incoming data stream chunks and trailers are now only accepted from the participant whose header opened the stream. Previously any participant that knew a stream id (as every recipient of a multi-destination stream does) could append content to another participant's stream, merge attributes into it, or end it. A packet from the wrong sender is dropped on its own; the stream continues. - #2215 (@1egoman)

  • Reject WebSocketStream.opened when the socket closes before it opens, so that a failed, timed-out or aborted signal (re)connect on React Native no longer holds the connection lock. - #2179 (@sarankumar1325)

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

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

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

✅ Devin Review: No Issues Found

Devin Review analyzed this PR and found no bugs or issues to report.

Devin Review

@github-actions
github-actions Bot force-pushed the changeset-release/main branch from 6f9a82e to 7971c3e Compare October 19, 2026 10:24
@github-actions

Copy link
Copy Markdown
Contributor Author

size-limit report 📦

Path Size
dist/livekit-client.esm.mjs 115.81 KB (+0.04% 🔺)
dist/livekit-client.umd.js 125.07 KB (+0.01% 🔺)
dist/core/core.mjs 78.62 KB (+0.1% 🔺)

@github-actions
github-actions Bot force-pushed the changeset-release/main branch 10 times, most recently from 0faae98 to 3f0e702 Compare October 23, 2026 12:37
@github-actions
github-actions Bot force-pushed the changeset-release/main branch 12 times, most recently from f9f4624 to b83f028 Compare October 29, 2026 08:02
@github-actions
github-actions Bot force-pushed the changeset-release/main branch from b83f028 to 397c1af Compare October 30, 2026 00:35
@github-actions
github-actions Bot force-pushed the changeset-release/main branch 4 times, most recently from 57553f9 to d31b5f2 Compare November 1, 2026 19:58
@github-actions
github-actions Bot force-pushed the changeset-release/main branch from d31b5f2 to a34200b Compare November 1, 2026 20:44

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

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants