livekit_client
Flutter Client SDK for LiveKit. Build real-time video and audio into your apps. Supports iOS, Android, and Web.
2.11.0
160K downloads/mo
#932 most downloaded on pub.dev
livekit/client-sdk-flutter
What this package is like to depend on
Last release 13 days ago
11 Aug 2026
Ships fairly regularly
a new release about every 3 weeks
Nearly every release is documented
notes for 110 of 112 stable releases
Nothing withdrawn
no release was ever pulled
5 years old
115 releases · first in 2021
17 releases in the last 12 months
see the full history below
Release timeline
115 releases · Aug 2021 to Aug 2026Releases
latest 60 of 115-
2.11.011 Aug 2026Release notes
Open source →What's Changed
- chore: introduce DevelopmentTokenSource and deprecate SandboxTokenSource by @hiroshihorie in #1149
- fix: Room.getSid() never resolves when the JoinResponse carries an empty room sid by @bkali in #1152
- Migrate enum conversions from map lookups to switch expressions by @hiroshihorie in #1156
- Default video degradation preference by track source, including the backup codec by @xianshijing-lk in #1155
- chore: update generated protocol definitions to v1.50.4 by @hiroshihorie in #1161
- Surface newer server disconnect reasons as distinct DisconnectReason values by @hiroshihorie in #1158
- Clear simulcast codec state on unpublish and full reconnect by @hiroshihorie in #1159
- Batch dependency bumps (supersedes open dependabot PRs) by @hiroshihorie in #1163
- Ensure roomOptions in Room.connect(...) are using the locally defined variable, NOT implicitly this.roomOptions by @1egoman in #1169
- Modernize the Flutter example app by @hiroshihorie in #1066
New Contributors
Full Changelog: v2.10.0...v2.11.0
Release notes
Open source →- Added: New DisconnectReason members for newer server disconnect reasons, previously reported as unknown
- Added: Add DevelopmentTokenSource, the new name for the now-deprecated SandboxTokenSource
- Changed: Default video degradation preference is now based on the track source (camera maintains framerate, screen share maintains resolution, others balanced) and is applied to the backup codec's sender as well
- Changed: Update generated protocol definitions to v1.50.4
- Changed: Unrecognized protobuf enum values from newer servers now fall back to safe defaults, for example a new DisconnectReason maps to unknown
- Changed: Update dependencies: device_info_plus to 13.x, connectivity_plus 7.3.1, dart_webrtc 1.8.1, synchronized 3.4.1, uuid 4.6.0
- Changed: Modernize the example app with a redesigned connect page, connection history, room header, focus layout, and an in-room messages panel
- Fixed: Room.connect no longer ignores the roomOptions argument passed to it
- Fixed: Room.getSid() now resolves when the room sid is issued after the join response
- Fixed: Backup codec state is cleared on unpublish and full reconnect, so republishing no longer acts on senders from a torn down connection
- Fixed: DegradationPreference.disabled now maps to maintainFramerateAndResolution, as WebRTC defines it
-
2.10.003 Aug 2026Release notes
Open source →What's Changed
- Add RPC tester interface to example app by @1egoman in #1085
- fix: don't set zero size if size is unknown by @holzgeist in #1141
- fix: compile errors on Dart 3.13 from stricter flow analysis by @hiroshihorie in #1146
- feat: Swift Package Manager support for iOS and macOS by @hiroshihorie in #1142
- feat: typed screen share helpers by @hiroshihorie in #1147
- Fix publish workflow failing on the flutter_webrtc pin warning by @hiroshihorie in #1140
Full Changelog: v2.9.0...v2.10.0
Release notes
Open source →- Added: Swift Package Manager support for iOS and macOS. CocoaPods remains fully supported.
- Added: Add ScreenSelectDialog.show and Hardware.requestCapturePermission so apps can start screen share without importing flutter_webrtc
- Fixed: Omit data stream totalLength when size is unknown
- Fixed: Fix compile errors on Dart 3.13 where nullable publish options are no longer promoted across await
- Fixed: Harden the example RPC tester
-
2.9.028 Jul 2026Release notes
Open source →Added: Add native certificate pinning for SDK-owned connections
Added: Add RPC v2 (data-stream-based payloads) with v1 fallback
Added: Audio engine availability and externalCallSystem mode for CallKit
Added: AudioManager audio session options with engine-driven native lifecycle and platform routing controls
Added: Add ConnectionCheck utility for diagnosing connection issues (port of the client-sdk-js connection helper)
Added: Audio frame capture on Linux/Windows
Added: Microphone mute mode control on iOS/macOS
Added: Runtime audio processing controls for local audio tracks
Added: Widget Placeholder added for VideoTrackRenderer
Changed: Default VideoTrackRenderer renderMode to auto, which currently resolves to texture rendering
Fixed: Apply Android media audio attributes during WebRTC initialization
Fixed: Use initialization audio options as the default Android session policy
Fixed: Avoid sticky Android speaker routing when updating route preference
Fixed: Clean up local audio tracks when recording start fails
Fixed: Throw platformUnavailable when runtime audio processing is unsupported
Fixed: Apply create-time audio processing when local recording is prepared
Fixed: Remove non-public buttonPressed: selector from broadcast picker activation
Fixed: Allow selectAudioOutput on Android
Fixed: Support platform video rendering on macOS
Fixed: Emit a single disconnected event when connecting fails
Fixed: Handle switching video render modes without stale renderers
Docs: Add AGENTS.md with agent/contributor guidelinesRelease notes
Open source →- Added: Add native certificate pinning for SDK-owned connections
- Added: Add RPC v2 (data-stream-based payloads) with v1 fallback
- Added: Audio engine availability and externalCallSystem mode for CallKit
- Added: AudioManager audio session options with engine-driven native lifecycle and platform routing controls
- Added: Add ConnectionCheck utility for diagnosing connection issues (port of the client-sdk-js connection helper)
- Added: Audio frame capture on Linux/Windows
- Added: Microphone mute mode control on iOS/macOS
- Added: Runtime audio processing controls for local audio tracks
- Added: Widget Placeholder added for VideoTrackRenderer
- Changed: Default VideoTrackRenderer renderMode to auto, which currently resolves to texture rendering
- Fixed: Apply Android media audio attributes during WebRTC initialization
- Fixed: Use initialization audio options as the default Android session policy
- Fixed: Avoid sticky Android speaker routing when updating route preference
- Fixed: Clean up local audio tracks when recording start fails
- Fixed: Throw platformUnavailable when runtime audio processing is unsupported
- Fixed: Apply create-time audio processing when local recording is prepared
- Fixed: Remove non-public buttonPressed: selector from broadcast picker activation
- Fixed: Allow selectAudioOutput on Android
- Fixed: Support platform video rendering on macOS
- Fixed: Emit a single disconnected event when connecting fails
- Fixed: Handle switching video render modes without stale renderers
- Docs: Add AGENTS.md with agent/contributor guidelines
-
2.9.0-dev.020 Jun 2026 pre-release -
2.8.120 Jun 2026Release notes
Open source →Added: Add agent deployment targeting to token source options
Fixed: Android plugin compatibility with AGP 9 built-in Kotlin
Fixed: Use maintain-resolution as the default video degradation preference for local video publishingFull Changelog: v2.8.0...v2.8.1
Release notes
Open source →- Added: Add agent deployment targeting to token source options
- Fixed: Android plugin compatibility with AGP 9 built-in Kotlin
- Fixed: Use maintain-resolution as the default video degradation preference for local video publishing
-
2.8.003 Jun 2026Release notes
Open source →Added: Session API support for simpler E2EE setup
Changed: Manual video quality selection can be used with adaptive stream enabled
Changed: Generated protocol definitions for LiveKit protocol v1.45.8
Fixed: waitForBufferStatusLow busy-waiting after engine close
Fixed: Simulcast lower layers exceeding the top layer
Fixed: forceRelay log message interpolation
Fixed: sendSyncState error handling so sync-state preparation failures are not swallowed
Fixed: Screen share simulcast default low layer alignment
Fixed: Region failover null-provider dereference
Fixed: Android builds with dependencies that require compileSdk 36
Fixed: Deferred track listener leaks across reconnects
Fixed: Adaptive stream dimensions on high-density displays
Fixed: Session.start() reentrancy during concurrent calls
Fixed: Connected server address resolving from the wrong peer connection
Fixed: Reconnect counter null assertion on the first reconnect attempt
Fixed: Premature publication disposal during unpublishRelease notes
Open source →- Added: Session API support for simpler E2EE setup
- Changed: Manual video quality selection can be used with adaptive stream enabled
- Changed: Generated protocol definitions for LiveKit protocol v1.45.8
- Fixed: waitForBufferStatusLow busy-waiting after engine close
- Fixed: Simulcast lower layers exceeding the top layer
- Fixed: forceRelay log message interpolation
- Fixed: sendSyncState error handling so sync-state preparation failures are not swallowed
- Fixed: Screen share simulcast default low layer alignment
- Fixed: Region failover null-provider dereference
- Fixed: Android builds with dependencies that require compileSdk 36
- Fixed: Deferred track listener leaks across reconnects
- Fixed: Adaptive stream dimensions on high-density displays
- Fixed: Session.start() reentrancy during concurrent calls
- Fixed: Connected server address resolving from the wrong peer connection
- Fixed: Reconnect counter null assertion on the first reconnect attempt
- Fixed: Premature publication disposal during unpublish
-
2.7.024 Mar 2026Release notes
Open source →What's Changed
- Add audio renderer API by @hiroshihorie in #1004
- Fix missing offer in syncState by @hiroshihorie in #1028
- Fix signal resume events by @hiroshihorie in #1027
- chore: bump flutter-webrtc and upgrade to libwebrtc m144. by @cloudwebrtc in #1029
- Bump android m144 by @hiroshihorie in #1030
- Processor fixes 1 by @hiroshihorie in #1038
- Retry jitter by @hiroshihorie in #1036
- Ping RTT by @hiroshihorie in #1035
- Fix dynacast by @hiroshihorie in #1033
- Set video dimensions API by @hiroshihorie in #1037
Full Changelog: v2.6.5...v2.7.0
Release notes
Open source →- Added: Add setVideoDimensions for remote track publications
- Added: Add audio renderer API for receiving raw audio frames
- Changed: Bump flutter-webrtc to 1.4.0 and upgrade to libwebrtc m144
- Fixed: Add signal RTT tracking via pingReq/pongResp
- Fixed: Add jitter to reconnect retry delays
- Fixed: Fix missing params in CameraCaptureOptions.copyWith
- Fixed: Fix missing RoomReconnectedEvent and incorrect SyncState timing during signal-only reconnection
- Fixed: Fix VP9/SVC dynacast layer handling
- Fixed: Stop processor on track end
- Fixed: Include last server offer in SyncState during reconnection
-
2.6.506 Mar 2026Release notes
Open source →What's Changed
- Protocol v16 support by @hiroshihorie in #1003
- Fix pub score static analysis by @hiroshihorie in #1010
- chore: Update dependency constraints to latest compatible versions by @hiroshihorie in #1011
- Fix audio visualizer exception by @hiroshihorie in #1008
- Fix duplicate track publish by @hiroshihorie in #1009
- Fix: use correct ProcessorOptions type based on track kind by @hiroshihorie in #1014
- Fix: preserve audio category options when forcing speaker output by @hiroshihorie in #1015
- [🤖 readme-manager] Update README by @ladvoc in #1017
- chore: Add ReconnectReason for reconnect. by @cloudwebrtc in #1020
- Fix microphone stopping after pre-connect audio by @hiroshihorie in #1021
Full Changelog: v2.6.4...v2.6.5
Release notes
Open source →- Added: Send reconnect reason to server during WebSocket reconnection
- Fixed: setProcessor() now uses VideoProcessorOptions for video tracks instead of AudioProcessorOptions
- Fixed: Fix wildcard variable lint warnings to improve pub.dev score
- Fixed: Preserve Bluetooth and AirPlay options when forcing speaker output on iOS
- Fixed: MissingPluginException when stopping audio visualizer on Android/iOS
- Fixed: Fix microphone stopping after pre-connect audio completes
- Fixed: Duplicate tracks published when setCameraEnabled called rapidly
-
2.6.426 Feb 2026Release notes
Open source →What's Changed
- Fix setVideoInputDevice by @hiroshihorie in #973
- Fix duplicate leave by @hiroshihorie in #999
- Optimize audio renderer payloads by @hiroshihorie in #988
- Fix native audio renderer cleanup and simplify Android path by @hiroshihorie in #1001
- Add web support for pre-connect audio buffer by @hiroshihorie in #1000
- Fix web audio capture on Safari by @hiroshihorie in #1006
- Fix web pre-connect audio buffer sample rate by @hiroshihorie in #1007
Full Changelog: v2.6.3...v2.6.4
Release notes
Open source →- Added: Add web support for pre-connect audio buffer
- Fixed: Remove duplicate sendLeave
- Fixed: Fix setVideoInputDevice not switching camera
- Fixed: Web pre-connect audio buffer using wrong sample rate
- Fixed: Fix iOS audio renderer resource leak and remove Android 32-bit dead code
- Fixed: Fix web audio capture not starting on Safari due to suspended AudioContext
- Performance: Send raw PCM bytes in audio renderer instead of boxed int arrays
-
2.6.313 Feb 2026Release notes
Open source →What's Changed
- fix: debounce for ensurePublisherConnected. by @cloudwebrtc in #967
- chore: Bump protobuf to v1.44.0 by @hiroshihorie in #980
- Fix meta package import errors by @hiroshihorie in #981
- Fix region provider related bugs by @hiroshihorie in #983
- chore: fix docs and web example workflows by @hiroshihorie in #985
- Fix concurrent modification by @hiroshihorie in #986
- Prevent crashes from writing to closed data stream controllers by @hiroshihorie in #989
- Fix publisher pc causing redundant renegotiations by @hiroshihorie in #990
Full Changelog: v2.6.2...v2.6.3
Release notes
Open source →- Fixed: Fix publisher connection causing redundant renegotiations on lower-end devices
- Fixed: Use explicit show clauses for foundation imports
- Fixed: Fix concurrent modification on collection iteration during async operations
- Fixed: Fix crash when writing to closed data stream controllers
- Fixed: Fix region URL provider cache using wrong time unit and wrong field check for regions in leave event
- Chore: Update protobuf to v1.44.0
-
2.6.202 Feb 2026Release notes
Open source →- Added: Bitrate priority control APIs
- Fixed: Windows: stop camera after unpublishing video track
- Fixed: Keep mute state in sync with server
- Fixed: Fix example prejoin device dropdown handling
- Chore: Mark LocalVideoTrack constructor as internal for consistency with LocalAudioTrack
- Chore: Update protobuf dependency to v6.0.0
- Chore: Skip iOS platform download in CI
-
2.6.109 Jan 2026Release notes
Open source →- Fixed: Enable E2EE for VP9 codec
- Fixed: Correct spelling in E2EE log and error messages
- Fixed: Ensure all dispose functions are executed even if one throws
- Fixed: Fix microphone label typo in example app prejoin audio settings
- Docs: Fix typos and inconsistencies in README and CHANGELOG
-
2.6.009 Dec 2025Release notes
Open source →- Session API
- Allow customizing screen share dialog labels for localization
-
2.5.425 Nov 2025Release notes
Open source →- Added pre-connect audio buffering
- Added token source API with caching and endpoint helpers
- Enabled software AEC/NS/AGC for Linux
- Added event logging with public/internal tagging
- Migrated manual JSON serialization to json_serializable code generation
- Re-enabled Flutter lint warnings and fixed existing issues
- Improved reliable data channel buffering, sequencing, and added integration tests
- Fixed race condition with pending tracks
-
2.5.323 Oct 2025Release notes
Open source →- Feat: Data Packet Cryptor (#873)
- Feat: Add E2EE support for H265 (#864)
- Fix: fix async call for update participant info (#897)
- Move the accessToken to header (#891)
- Bumpup and clamp connection timeout, fix the comment (#893)
- Fix events emit order (#902)
-
2.5.214 Oct 2025Release notes
Open source →- Fix missing properties for TextStreamInfo (#881)
- Enum for TextStreamOperationType (#882)
- Fix stream progress (#884)
-
2.5.117 Sep 2025Release notes
Open source →- Fix Publication's track property initialization (#867)
- Fix Missing attributes in data stream (#865)
- Fix Internal WebRTC pod version conflict (#876)
-
2.5.025 Jul 2025Release notes
Open source →- Bump flutter-webrtc to 1.0.0.
- Upgrade libwebrtc to m137.7151
- fix: E2EE bug for Chrome. (#832)
- fix(web, firefox): backup old values before overwriting them (#819)
- fix: memory leak visualizer stop android (#831)
- fix: ensure engine always has correct device id if switching camera fails (#820)
- fix: Always emit RoomDisconnectedEvent when the reason is clientInitiated. (#821)
- fix: sif frame enqueuing with e2ee (#822)
- fix: update camera
deviceIdwhen track is null (#814) - feat: Audio Visualizer for Windows/Linux. (#739)
-
2.5.0+hotfix.131 Jul 2025Release notes
Open source →- fix: Switch to livekit fork of noise for 16KB page support (#839)
- hotfix: bump libwebrtc to m137.7151.01 for android (#837)
- fix: tighten VideoTrackRenderer Widget (#695)
-
2.5.0+hotfix.221 Aug 2025Release notes
Open source →- hotfix: bump libwebrtc to m137.7151.03 to support H.265 (#837)
- feat: Expose ParticipantState (#848)
- chore: Update protobuf to v1.39.2 (#847)
-
2.5.0+hotfix.321 Aug 2025Release notes
Open source →- fix: Fix @internal conflicting imports from package meta or flutter/foundation.
-
2.4.930 Jun 2025Release notes
Open source →- Added: Attribute typings for agent and transcription (#811)
- Changed: Enum for VideoView.fit (#806)
- Chore: Update protobuf protocol to v1.39.2 (#812)
-
2.4.811 Jun 2025Release notes
Open source →- fix: fix room.disconnect when pending reconnect. (#802)
- fix: fix bitrate display for remote video track. (#801)
- feat: add a flag to skip auto native audio config (#797)
- fix: sif detection for e2ee (#788)
- chore: Update protobuf dep (#790)
-
2.4.722 May 2025Release notes
Open source →- fix: interop for encode and decode function in e2ee cryptor (#785)
- chore: Unorder the lossy data channel (#783)
- chore: bump flutter-webrtc to 0.14.1.
- fix: mitigate reconnect loop (#780)
-
2.4.606 May 2025Release notes
Open source →- feat: Add smoothTransition option for AudioVisualizer. (#773)
- fix: Fix deadlock when creating a frame cryptor on iOS/macOS.
- fix: add task runner for linux to fix crashes.
-
2.4.521 Apr 2025 -
2.4.415 Apr 2025Release notes
Open source →- feat: data stream
- fix: calling setSourceEnabled should not affect the current output settings (#754)
- fix: Calling connect on a disconnected room instance should reset _isClosed. (#752)
- fix: Fix for Chrome getUserMedia "ideal" Constraint Change.
- fix: fix duplicate fmtp for vp9 on some old Android devices. (#758)
-
2.4.309 Apr 2025 -
2.4.203 Apr 2025Release notes
Open source →- fix: Fixed the echo issue on some specific models of Android devices.
- chore: Bbmp version for flutter-webrtc.
- fix: Improve browser version detection, fix issue #730 (#738)
- feat: Fast track publication. (#720)
- chore: Remove
bypassVoiceProcessing = truesettings for connect page. (#693) - fix: [bug] Crash when join room on Windows.
- fix: Disable selectAudioInput for mobile platforms.
-
2.4.2+hotfix.104 Apr 2025 -
2.4.2+hotfix.209 Apr 2025Release notes
Open source →- fix: Fix creation timing for local participant. (#749)
- fix: Filter out non-video codecs for fast video track publication. (#747)
-
2.4.110 Mar 2025Release notes
Open source →- feat: VideoRenderer support cache renderer. (#723)
- feat: Visualizer for web. (#718)
- fix: Fix bar Visualizer overflow for Android. (#717)
- fix: disconnect reason inconsistent. (#715)
- fix: remove stats video data print from logs (#716)
-
2.4.023 Feb 2025 -
2.3.607 Feb 2025Release notes
Open source →- Emit a final empty AudioVisualizerEvent after track stops (#701)
- fix: Improve speaker switching logic for iOS. (#692)
-
2.3.514 Jan 2025Release notes
Open source →- feat: add TrackProcessor support. (#657)
- fix: bug for mute/unmute and speaker switch. (#684)
-
2.3.427 Dec 2024Release notes
Open source →- fix bypass voice processing not work. (#668)
- fix track.stop for remote track. (#669)
- fix Visualizer block UI. (#667)
-
2.3.4+hotfix.130 Dec 2024 -
2.3.4+hotfix.231 Dec 2024 -
2.3.323 Dec 2024Release notes
Open source →- Support FocusMode/ExposureMode for camera capture options. (#658)
- Fix Swift compilation errors (#662)
- Improve reconnect logic. (#654)
- Fixed bug for Screen Share on iOS/Android.
-
2.3.208 Dec 2024 -
2.3.128 Nov 2024Nothing published for this version
-
2.3.1+hotfix.102 Dec 2024 -
2.3.026 Oct 2024Release notes
Open source →- fix: Fixed speaker cannot be switched on iOS. (#617)
- feat: Increase default audio bitrate. (#616)
-
2.2.823 Oct 2024 -
2.2.721 Oct 2024Release notes
Open source →- feat: support bypass voice processing. (#595)
- fix: Dispose LocalParticipant when room.disconnect. (#609)
- Fix spelling error in method name: _checkPremissions to_checkPermissions (#605)
- fix: fix speaker switching behavior for android. (#604)
- fix: Optimize stats display (#602)
- fix: Handle disconnect reasons correctly. (#594)
-
2.2.620 Sep 2024Release notes
Open source →- fix: android build failure. (#587)
- Update README.md for Android Screenshare (#583)
-
2.2.504 Sep 2024Release notes
Open source →- upgrade flutter-webrtc to 0.11.7
- upgrade web to 1.0.0
- feat: Add timestamps to TranscriptionSegment. (#577)
- feat: Prepare connection/region pinning. (#574)
-
2.2.412 Aug 2024Release notes
Open source →- fix bug for PlatformView on iOS (#570)
- Deprecated
connectOptionsinRoomconstructor. - Deprecated
roomOptionsintroom.connect. - Added
screenShareEncodingforVideoPublishOptions. - Change
CameraCaptureOptions.params.encodingto optional. It is recommended to useVideoPublishOptions.videoEncoding/screenShareEncodingto control the video sending bitrate.
-
2.2.302 Aug 2024 -
2.2.223 Jul 2024Release notes
Open source →- feat: expose DegradationPreference for publish options. (#556)
- fix room.disconnect issue. (#559)
- fix: use getSettings() to get actual dimensions for mobile (#560)
- Add support for participant attributes (#558)
-
2.2.112 Jul 2024Release notes
Open source →- fix: fix crash for windows
- feat: bump version for flutter-webrtc.
- fix: ratchet on a single frame until ratchetWindowSize (#544)
- fix: fix mediaStreamTrack.getSettings() on Flutter Web.
-
2.2.012 Jun 2024Release notes
Open source →- feat: add Transcription Event. (#531)
- feat: Expose Participant.Kind. (#532)
- fix: ignore unable to parse frames completely (#530)
-
2.1.606 Jun 2024Release notes
Open source →- Framecryptor decrypting fixes (#520)
- feat: add voiceIsolation support (#523)
- fix: audio session control for ios.
-
2.1.521 May 2024Release notes
Open source →fix: audio devcie ids consistency (#513) feat: provide option to skip stop/restartTrack for mute/unmute (#516)
-
2.1.406 May 2024 -
2.1.319 Apr 2024 -
2.1.209 Apr 2024Release notes
Open source →- fix: Expose keyRingSize/discardFrameWhenCryptorNotReady parameters for KeyProvider
-
2.1.109 Apr 2024Release notes
Open source →- update to package:web (#484)
- feat: add keyRingSize/discardFrameWhenCryptorNotReady to KeyProviderOptions. (#493)
-
2.1.005 Apr 2024 -
2.0.328 Mar 2024Release notes
Open source →- Read capabilities from RtcRTPReceiver instead of from sender. (#488)
- Update screenshare logic for svc publishing (#487)
- Prevent screen-sharing on flutter web mobile. (#486)
- feat: add setKey variant, setRawKey (#482)