daily_flutter 0.41.0
daily_flutter: ^0.41.0 copied to clipboard
Flutter plugin for Daily. The Daily Client SDK allows you to build video and audio calling into your Flutter applications.
Changelog #
All notable changes to the daily-flutter SDK will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
0.41.0 - 2026-10-20 #
Added #
-
Added
allowAdaptiveLayerstoVideoSendSettingsandVideoSendSettingsUpdate, to turn adaptive bitrate off. -
Added
preferredCodectoVideoSendSettingsandVideoSendSettingsUpdate, to choose the codec the camera is sent with:vp8(the default),vp9orh264. VP9 is experimental and only used when the SFU's router offers it. -
Added
startBitratetoVideoSendSettingsandVideoSendSettingsUpdate, so the bitrate the camera starts sending at can be configured. It is in bits per second and defaults to 1000000. -
Added
adaptiveLayerMaxBitratetoVideoSendSettingsandVideoSendSettingsUpdate, to cap, in bits per second, the bitrate adaptive bitrate ramps up to. It never goes below 200000 and can be changed during a call;IntUpdate.fromDefaultsremoves it. -
Added
connectiontoClientSettingsUpdate, used when joining, withConnectionSettings.initialReceiveBitrate: your expected download bandwidth, in bits per second. The SFU starts its estimate of what it can send you from this value (1000000 by default), which also sets the first target bitrate other participants get.
Changed #
-
Adaptive bitrate is now on by default, as in Daily's other SDKs. To keep to the configured encodings instead, set
allowAdaptiveLayers: BoolUpdate.set(false)in the camera's send settings. -
Swift Package Manager is now supported on iOS, alongside CocoaPods.
Fixed #
-
Fixed a crash on iOS when calling
CallClient.dispose()right afterleave(). -
Fixed an issue where calling
CallClient.dispose()on a joined client without callingleave()first left the call running: the microphone stayed open and the call's media kept being sent after the dispose. -
Fixed a deadlock when
CallClient.dispose()was called while aleave()orjoin()was still in progress: the dispose blocked the main isolate while waiting for the request, and the request was waiting for the main isolate. -
Fixed a rare deadlock that could freeze the app while a
CallClientwas being disposed shortly after another one. -
Fixed a native memory leak that grew with the length of a call, about 0.7 MB per minute with one published and one subscribed track.
-
Fixed per-stream bitrates in the network stats (
videoSendBitsPerSecond,videoRecvBitsPerSecond) being 1,000 times too small. -
Fixed
videoSendBitsPerSecond,sendBitsPerSecondand the other send-side network stats always reading 0: libwebrtc 8010's stats no longer include a field the parser required, so all stats for the sending connection were discarded. -
Fixed the top simulcast layer not being sent at the start of a call.
maxQualitywas passed to libmediasoupclient off by one, sohighturned the high layer off,mediumturned the medium layer off andlowhad no effect. With adaptive layers off, receivers got at most the medium layer (360p for a 720p camera) until the camera track was next updated, for example by switching or toggling the camera. With adaptive layers on, it lasted only until the first adaptive-layer update, a second or two in.
0.40.0 - 2026-09-22 #
Added #
-
Added support to automatically start transcription when joining a room if the
auto_start_transcriptionmeeting token property is set, using the room'sauto_transcription_settings. -
Added
StreamingLayout.audioOnly, theaudio-onlyrecording layout preset, which was missing from the Flutter SDK. This also fixes an issue where an audio-only recording started by another participant or the REST API would not emitonRecordingStarted(the event failed to deserialize).
Changed #
-
Breaking: the minimum supported Flutter version is now 3.32.0 (Dart 3.8.0). If you cannot upgrade Flutter yet, stay on 0.39.0.
-
Relaxed the
permission_handlerconstraint to>=11.3.1 <14.0.0, so it no longer holds your app to one major version of that package. -
Model classes such as
ParticipantandCallStateare now declaredabstractorsealed. Constructing them, reading their fields,copyWithand the union helpers are all unchanged; only extending or implementing them directly no longer works. -
Upgraded libwebrtc to
branch-heads/8010(M153). Its vendored media and crypto dependencies (ffmpeg, libvpx and BoringSSL among them) are substantially newer. -
Breaking: the minimum supported iOS version is now 14.0 (was 13.0). This follows the libwebrtc upgrade, which is built against an iOS 14.0 deployment target.
-
The bundled example app now targets iOS 15.0. The SDK itself still supports 14.0; the example is raised separately because Apple requires a
MinimumOSVersionof 15.0 or later for apps uploaded to App Store Connect from Spring 2027.
Fixed #
-
Fixed an issue where
videoBitrateandaudioBitratein a meeting token'sstart_cloud_recording_optswere ignored, causing recordings started from the token to use the default bitrates. -
Fixed multiple memory, thread and file descriptor leaks when creating and releasing
CallClients. -
Fixed an issue on Android where enabling the microphone during a call sent no audio if the camera had been enabled first while the microphone was off.
0.39.0 - 2026-07-24 #
Added #
- Added
StreamingLayout.rawTracksAudioOnly, theraw-tracks-audio-onlyrecording layout preset for audio-only raw-tracks recordings.
Fixed #
-
Fixed an issue where participants would appear as "guest" in saved transcriptions.
-
Fixed an issue where the
raw-tracks-audio-onlyrecording layout preset in a meeting token'sstart_cloud_recording_optswas ignored, causing raw-tracks recordings to include video. -
Fixed an issue where server-side
startRecording()failures were reported as an opaque deserialization error instead of a proper recording error.
0.38.0 - 2026-06-19 #
Added #
- Added automatic fallback to
dailywebrtc.comanddailywebrtc.netwhendaily.coauthoritative nameservers are unreachable, improving connection resilience.
Fixed #
-
Fixed panics in signalling reconnect paths when room lookup returns no worker.
-
Fixed support for cloud-audio-only recording type
Performance #
-
Replaced
ureqHTTP client withhyper+rustls(ring backend). Includes connection timeouts, TLS configuration reuse, and per-request timing metrics for DNS lookup, TCP connect, and TLS handshake. -
Added per-phase connection timing metrics for WebSocket signalling (DNS lookup, TCP connect, TLS handshake, and WebSocket upgrade), complementing the existing HTTP connection timings.
0.37.0 - 2026-01-16 #
Fixed #
- Avoid unnecessary signalling reconnection attempts when
leave()is called during a network failure.
0.33.0 - 2025-08-11 #
0.32.0 - 2025-07-23 #
Added #
- Support the new
canReceivepermission, which involves:- Adding the
canReceivepermission to:ParticipantPermissions(the type in theParticipantmodel)ParticipantPermissionsUpdate(the type used byupdateRemoteParticipants())
- Showing the proper track state (i.e.
off, with reasonreceivePermission) whencanReceivepermission is lacking for a remote track. - Resuming receiving remote tracks when previously-revoked
canReceivepermissions have been restored.
- Adding the
Changed #
- Updated
daily-flutterdependencies.
Fixed #
-
Handle meeting session ID changes which occur once the session has started.
-
Fixed an issue on smartphones with a 32-bit OS where the app would get stuck on launch.
-
Fixed an issue where participants from previous meetings were being retained.
0.31.0 - 2025-05-06 #
Added #
-
Retrying multiple times to open the signalling channel during the join.
-
Alternate websocket URI format to avoid connection issues potentially caused by ISPs.
0.30.0 - 2025-03-31 #
Fixed #
-
Fixed issue where the ice servers configured by the user were not being applied when creating the PeerConnection.
-
Fixed a potential crash in the Flutter iOS SDK when disposing the renderer.
0.29.0 - 2025-02-28 #
Added #
- Added support to automatically start a recording when joining a room if the
start_cloud_recordingtoken property is set toTrue.
Changed #
- Updated third party dependencies
Fixed #
-
Fixed issue that when running
flutter build ios framework, theGCC_PREPROCESSOR_DEFINITIONSsettings from the Podfile were not being included. This caused thedaily_flutterpackage to incorrectly assume that permissions weren’t granted. -
Fixed an issue where reconnection would fail if the meeting token was no longer valid.
0.28.0 - 2024-12-13 #
Changed #
- Renamed
org.webrtcpackage toco.daily.webrtcto avoid conflicts.
Fixed #
-
Fixed various Android build issues seen with new versions of Gradle, Java, and AGP.
-
Fixed a logging-related crash (stack overflow) that could occur when rapidly starting and stopping the SDK.
-
Fixed an issue where missing fields in the domain/room permission config could cause a connection failure.
-
Improved meeting move robustness by increasing the number of retries, to account for situations where the backend takes longer to complete the move.
0.22.0 - 2024-08-05 #
Added #
- Added new metrics that will allow us to better understand the meeting quality.
Fixed #
-
Preventing Flutter iOS from crashing when closing the app (via the user manually swiping away).
-
Preventing Flutter Android from crashing when closing the app if the
surfaceTextureHelperhas not been properly initialized. -
Fixed an issue to show the correct state when the mic is muted remotely.
-
Fixed an issue with meeting moves that could occur in an exceptional case where, for a short period of time, we didn't receive information about which worker server to connect to.
0.20.0 - 2024-05-20 #
Added #
- Added support for Flutter 3.22 and Dart 3.4.
Fixed #
-
Fixed multi-threading issue encountered when sending events.
-
Resolved an issue where the videos sent had the wrong orientation when viewed on iOS mobile web.
-
Fixed an issue where
joinedAtvalue (participant info) could sometimes be zero. -
Fixed issue where
onParticipantUpdated()didn't reflect the new state of the local participant's screen video track, in cases whereleave()was called while a screen share was active. -
Fixed an issue that could cause join to fail if recording/transcription/live stream was started from the REST API.
-
Fixed an issue that would not allow join to succeed if a React Native client was already in the room.
0.16.0-beta.1 - 2024-03-04 #
Bringing the latest changes to daily-flutter, primarily focused on fixing multiple issues that could cause deadlock during network reconnection, enhancing performance, and reducing the bundle size for Android.
0.1.0-alpha.1 - 2023-01-17 #
Initial alpha release.