All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Upgrade protocol to v1.48.0
livekit-api now installs a minimal in-crate HMAC CryptoProvider
(HS256/384/512) instead of jsonwebtoken's rust_crypto backend, dropping the
unused RSA/EC/EdDSA algorithms. LiveKit access tokens are HS256, so there is no
public API or behavior change. This trims ~200 KiB of unreachable crypto code,
shrinking the shipped binaries ~25–29% — the RustLiveKitUniFFI iOS framework
drops from ~900 KiB to ~672 KiB (arm64) and the Android arm64-v8a .so from
~1.13 MiB to ~816 KiB. livekit-ffi and livekit benefit too.
When connecting to LiveKit Cloud from containers without CA certificates installed, the error message now includes the full error chain (e.g., "invalid peer certificate: UnknownIssuer") instead of just "error sending request for url (...)". This makes TLS certificate issues self-diagnosing.
Also added documentation for TLS features in Cargo.toml, highlighting rustls-tls-webpki-roots as the recommended option for container deployments.
- Send publisher offer with join request to accelerate connection - #996 (@cnderrauber)
- bump protocol to v1.46.4 - #1121 (@lukasIO)
- add pagination to ListEgressRequest
0.4.14 - 2026-02-16
- fix full_reconnect downgrade & don't ignore Leave messages (#893)
- turn single peerconnection off by default (#897)
- ensure signal connections times out properly and retries (#895)
- added Single Peer Connection support to Rust (#888)
0.4.13 - 2026-02-09
- update proto & fix CI (#871)
- Use workspace dependencies & settings (#856)
- Upgrade protocol to v1.44.0 (#857)
- expose audio mixing as a configurable field (#850)
- UniFFI interface (#750)
0.4.12 - 2026-01-15
- fix incorrect 404 status code when WS connection fails (#832)
- Add Wait Until Answered for CreateSip (#833)
0.4.11 - 2025-12-04
- (connector) initial service impl (#790)
0.4.10 - 2025-11-20
- add outbound trunk config for create_sip_participant. (#771)
0.4.9 - 2025-10-22
0.4.8 - 2025-10-13
- Bump reqwest to 0.12 (#711)
0.4.7 - 2025-09-29
- updated the following local packages: livekit-protocol
0.4.6 - 2025-09-03
- add attributes to Claims and AccessToken (#693)
0.4.5 - 2025-07-31
0.4.4 - 2025-06-17
- Expose room updates, support MoveParticipant (protocol 15) (#662)
- Update protocol and add SendDataRequest nonce
- Support for large RPC messages using data streams - #1013 (@1egoman)
- Expose room playout delay options in the server API and let the local video publisher recreate rooms with explicit min/max playout delay settings.
- Proper client SDK - #1081 (@stephen-derosa)
- Upgrade protocol to v1.45.8
- Bump
rustls-webpkito 0.103.13, addressing GHSA-82j2-j2ch-gfr8
- fix(signal-client): carry access token on validate() fallback - #1044 (@abhisheksingh-R41)
- Add advertising of SDK client capabilities - #1022 (@chenosaurus)
##890 by @chenosaurus
- Add support to attach/parse frame level timestamps & frame ID to VideoTracks as a custom payload trailer.
- Breaking change in VideoFrame API, must include
frame_metadataor use VideoFrame::new().
- Add device-info crate and send device_info to telemetry - #982 (@maxheimbrock)
##956 by @xianshijing-lk
Before this PR, it uses an unbounded buffer for video stream, that will cause multiple problems: 1, video will be lagged behind if rendering is slow or just wake up from background 2, it will be out of sync with audio
This PRs provides options to set a bounded buffer for video stream, and use 1 buffer as the default option.
- Fix clippy warnings in livekit-api and build.rs
- Upgrade to thiserror 2
##952 by @MaxHeimbrock
Adds os_info crate as dependency and sends the data for client connections.
##917 by @gasmith