PackageTrack
Sign in Get early access

stream_video_flutter

The Official UI package for Stream Video, a service for building video calls, audio rooms, and live-streaming applications.

1.4.3 5.7K downloads/mo #3655 most downloaded on pub.dev GetStream/stream-video-flutter

What this package is like to depend on

Last release 11 days ago

12 Aug 2026

Ships fairly regularly

a new release about every 3 weeks

Nearly every release is documented

notes for 71 of 71 stable releases

Nothing withdrawn

no release was ever pulled

3 years old

71 releases · first in 2023

21 releases in the last 12 months

see the full history below

Release timeline

71 releases · Jul 2023 to Aug 2026
2024 2025 2026
Release Pre-release

Releases

latest 60 of 71
  1. 1.4.3 12 Aug 2026
    Release notes

    What's Changed

    Full Changelog: v1.4.2...v1.4.3

    Open source →
    Release notes

    🐞 Fixed

    • Fixed duplicate publisher tracks: concurrent enable/publish calls of the same type (e.g. a double camera enable racing the join flow) could create two senders for the same track type, which the SFU rejects with a forced rejoin loop. A publish now claims its (trackType, publishOptionId) before creating the sender, so a concurrent one reuses that sender instead of adding a second, and a repeated enable joins the media acquisition already in flight rather than opening the camera twice.
    • Fixed the incoming call UI (CallKit on iOS) ringing for a call whose ringing flow was already resolved before the push was delivered.
    • Fixed the publisher announcing a stale track mid after a renegotiation or publish retry. It's now resolved from the current peer-connection state so the SFU can reliably match the track to its media.
    • Serialized remote-description and ICE-candidate handling so a candidate arriving mid-negotiation can no longer be dropped.
    • Fixed an issue where republishing could reuse a cached publisher transceiver without renegotiating.
    • Fixed a FormatException when sending requests if the application name (or other device/app info) contains non-ASCII characters. Values included in the X-Stream-Client header are now sanitized to valid header characters.
    Open source →
  2. 1.4.2 17 Jul 2026
    Release notes

    What's Changed

    • feat(samples): Update chat sdk in dogfooding by @renefloor in #1253
    • feat(llc): Client call event reporting (join telemetry) by @Brazol in #1268
    • chore(repo): migrate melos to Dart Pub Workspaces by @Brazol in #1274
    • fix(llc): fix connection quality blanking after reconnect by @Brazol in #1270
    • chore(repo): fixed dogfooding google login by @Brazol in #1269
    • fix(llc): sync audio output on iOS when device is picked via native picker by @Brazol in #1273
    • fix(ui): make video fit adaptive on web and desktop by @Brazol in #1271
    • ci(repo): add least-privilege permissions to GitHub Actions workflows by @peter-matkovski in #1276
    • fix(llc): fixed stats not being flushed on call end by @Brazol in #1275
    • chore(repo): track webrtc version for desktop platforms by @Brazol in #1280
    • chore(repo): align sfu events naming with other SDKs by @Brazol in #1279
    • chore(repo): fix web distribute permission by @Brazol in #1281
    • docs(samples, ui, llc): document platform compatibility by @renefloor in #1277
    • chore(repo): Release v1.4.2 by @Brazol in #1282
    • fix(llc): rejoin escalation fixes by @Brazol in #1284

    New Contributors

    Full Changelog: v1.4.1...v1.4.2

    Open source →
    Release notes

    ✅ Added

    • Added VideoFit.adaptive, which picks between cover and contain based on the video's own orientation: landscape/square video fills the tile while portrait/tall video is letterboxed so the whole frame stays visible.
    • [iOS] Call.state.audioOutputDevice now stays in sync with the active native audio route when the output changes outside of Call.setAudioOutputDevice (e.g. via the native route-selection UI, or when the system re-routes on device connect/disconnect).
    • Added client-side call join telemetry (ClientEventReporter).

    🔄 Changed

    • Increased minimum Flutter version to 3.38.1.
    • Participant video fit now defaults per-platform when not explicitly set: VideoFit.adaptive on web and desktop (so portrait feeds such as phone cameras are shown in full instead of being cropped) and VideoFit.cover on mobile. Set videoFit explicitly on StreamCallParticipantThemeData (or the renderer widgets) to override.
    Open source →
  3. 1.4.1 25 Jun 2026
    Release notes

    What's Changed

    • chore(deps): bump the all-actions group across 1 directory with 3 updates by @dependabot[bot] in #1259
    • fix(llc): ongoing call ringing fixes by @Brazol in #1250
    • fix(llc): guard null intent action in TransparentActivity by @solkennedy in #1256
    • fix(llc): call accept race fix by @Brazol in #1258
    • fix(llc): fix stream header client details by @Brazol in #1262
    • fix(llc): improve reconnect reliability and fix strategy escalation by @Brazol in #1263
    • chore(repo): Release v1.4.1 by @Brazol in #1264

    New Contributors

    Full Changelog: v1.4.0...v1.4.1

    Open source →
    Release notes

    🐞 Fixed

    • Fixed an issue where ringing a member during an ongoing call could prematurely end the call if they declined.
    • Fixed an issue where a failed call accept attempt left the CallKit call active on iOS.
    • Improved reconnect flow reliability: fixed several issues that could cause reconnection to stall or silently fail, including delayed disconnect detection on broken connections and reconnect strategy hints being dropped while a reconnect was already in progress.
    • Fixed fast reconnect escalating to rejoin after every single failure regardless of attempt count or connection health. Escalation now follows the same backoff and strategy-promotion logic used by all other reconnect modes.
    • Fixed X-Stream-Client header and SFU ClientDetails being sent with stale or incomplete device/app info.
    • Fixed incoming calls being locally rejected after accept when the coordinator WebSocket event arrived before the HTTP response (#1254).
    • Fixed an Android crash when the push notification TransparentActivity is recreated with a null intent action (e.g. after process death or restore from recents) (#1256).
    • [Android] Fixed a crash in TransparentActivity when the activity is recreated with a null intent action (e.g. after process death or restore from recents) (#1256).
    Open source →
  4. 1.4.0 03 Jun 2026
    Release notes

    What's Changed

    • chore(llc): unit tests manual edits of open api models by @Brazol in #1227
    • chore(repo): spm and kgp fixes after Flutter 3.44 by @Brazol in #1232
    • fix(llc): fix for multicall audio issues, per-call pc factory by @Brazol in #1230
    • fix(llc): safety nets and recovery during reconnect by @Brazol in #1237
    • fix(llc): fix noise cancellation breaking on iOS after rejoin reconnection flow by @Brazol in #1234
    • fix(llc): connection flickering rejoin by @Brazol in #1236
    • feat(llc): honor SFU degradationPreference on the publisher by @Brazol in #1239
    • feat(llc): multi call audio policy + noise cancelation fix by @Brazol in #1240
    • chore(llc): noise cancellation enum rename by @Brazol in #1241
    • fix(llc): deprecate precacheGenericSdps instead of removing it by @Brazol in #1242
    • fix(llc): integers not properly casted in WASM builds by @OutdatedGuy in #1216
    • chore: wasm casting unit test by @Brazol in #1243
    • chore(repo): distribute ci fix by @Brazol in #1245
    • chore(repo): distribute dogfooding fixes by @Brazol in #1247
    • chore(repo): Release v1.4.0 by @Brazol in #1244
    • fix(llc): iOS noise cancellation fix by @Brazol in #1249

    Full Changelog: v1.3.3...v1.4.0

    Open source →
    Release notes

    Each call now owns an isolated native PeerConnectionFactory. This fixes cross-call audio interference, sibling-call microphone capture loss, and noise cancellation failing to engage during lobby preview.

    ✅ Added

    • Added Call.ensureNativeFactory(), which returns the per-call native NativePeerConnectionFactory. Use it to pin pre-join media (e.g. lobby-preview tracks created via RtcLocalTrack.camera(nativeFactory: …)) to the same factory the call uses after joining.
    • Added a per-call audioConfigurationPolicy override on DefaultCallPreferences. It falls back to StreamVideoOptions.audioConfigurationPolicy when null.
    • The publisher now respects the SFU degradationPreference for video quality, falling back to maintain-framerate when it is unspecified.

    🐞 Fixed

    • Fixed connection flickering that caused the rejoin flow to fail in some cases.
    • Added safety nets and recovery for cases where the publisher connection fails to establish after a reconnection (e.g. the SFU answer is lost or ICE stays in the new state).
    • Fixed sibling-call audio capture being silently broken when another concurrently active call ended (e.g. a 1:1 ringing call ending alongside a running livestream, or a previous ringing call ending before a new one was accepted).
    • Fixed a sibling call's audio breaking when a ringing 1:1 call ended via dropIfAloneInRingingFlow (the remote party hung up first). Call.end() and Call.leave() now share a single _disconnect cleanup path.
    • Made the audio processor teardown in Call._clear multi-call aware. The audio processor is owned by StreamVideo rather than by an individual Call, so disabling it during one call's teardown silently dropped noise cancellation on any other still-active call. _clear now stops the global processor only when no other active call is configured to use NoiseCancellationSettingsMode.autoOn.
    • Fixed noise cancellation breaking on iOS after the rejoin reconnection flow.
    • Fixed a potential iOS crash on call end when noise cancellation was active.
    • [WASM] Fixed integer stats fields failing to parse, where JS numbers arrive as double.

    🔄 Changed

    • [iOS/Android] Each call now also owns an isolated native AudioDeviceModule. Previously, all calls shared the global ambient factory. This per-call isolation is what enables clean multi-call audio. Integrators building tracks directly should pass nativeFactory: await call.ensureNativeFactory() to the RtcLocalTrack.* constructors.
    Open source →
  5. 1.3.3 28 Apr 2026
    Release notes

    What's Changed

    • feat(llc): high scale livestream publisher hint added by @Brazol in #1219
    • feat(llc): handle isPinned in joinParticipant event by @Brazol in #1220
    • fix(llc): Fix TranscriptionSettingsResponse.fromJson null handling by @Brazol in #1224
    • chore(llc): send sfu stats for thermal and low power mode by @Brazol in #1221
    • chore(llc): improve reject and leave reasons by @Brazol in #1218
    • chore(repo): Release v1.3.3 by @Brazol in #1225

    Full Changelog: v1.3.2...v1.3.3

    Open source →
    Release notes

    🐞 Fixed

    • Fixed TranscriptionSettingsResponse.fromJson crashing with a null check error when the backend returns an empty string for the language field.

    🔄 Changed

    • Improved disconnect/reject reason propagation.

    ✅ Added

    • Support server-side pinning on participant join. When the SFU sends isPinned: true on a ParticipantJoined event, the participant is now automatically pinned.
    • Added hintHighScaleLivestreamPublisher parameter to Call.join() to allow marking the participant as publishing to a large audience.
    Open source →
  6. 1.3.2 17 Apr 2026
    Release notes

    What's Changed

    • chore(llc): openAPI models regen by @Brazol in #1209
    • fix(llc): Fixed coordinator API token refresh by @Brazol in #1211
    • fix(llc): fixed calls auto accept when starting the app by @Brazol in #1208
    • fix(ui): ios pip dismiss when call end fix by @Brazol in #1210
    • feat: update conditional imports to support wasm by @OutdatedGuy in #1207
    • fix(ui): fix diagnostic content dispose by @Brazol in #1212
    • fix: Unwrap protobuf Value types in CallParticipantState.custom field by @antondokusov in #1172
    • chore(deps): bump codecov/codecov-action from 5 to 6 in the all-actions group by @dependabot[bot] in #1200
    • chore(ui): partial builder in call options by @Brazol in #1213
    • chore(repo): Release v1.3.2 by @Brazol in #1215

    New Contributors

    Full Changelog: v1.3.1...v1.3.2

    Open source →
    Release notes

    🐞 Fixed

    • Fixed consumeAndAcceptActiveCall auto-accepting incoming calls on Android when the user opens the app without pressing the Accept button on the notification. The method now only consumes calls that the user explicitly accepted.
    • Fixed coordinator REST API calls failing permanently when the JWT token expires.
    • Fixed iOS Picture-in-Picture window not dismissing when the call ends during PiP mode.
    • Fixed CallDiagnosticsContent throwing failed to call super.dispose when the widget was disposed while awaiting stats subscription cancellation.

    🔄 Changed

    • Regenerated OpenAPI models to match the latest backend schema.
    • Fixed broadcasting status updates not being wired through to call state.
    • Updated conditional imports to support WASM.

    ⚠️ Deprecated

    • StreamHlsSettings.qualityTracks (List<String>) is deprecated — use StreamHlsSettings.qualities (List<StreamVideoQuality>) instead.

    ✨ Refactor

    • Refactored call control options to use PartialCallStateBuilder for reactive state updates instead of one-shot call.state.value reads.
    Open source →
  7. 1.3.1 18 Mar 2026
    Release notes

    What's Changed

    • fix(llc): fixed ringing race conditions by @Brazol in #1185
    • fix(llc): improve the handling of SFU join errors by @Brazol in #1191
    • fix(llc): revert audio session release by @Brazol in #1190
    • chore(deps): bump webfactory/ssh-agent from 0.9.0 to 0.10.0 in the all-actions group by @dependabot[bot] in #1186
    • chore(repo): Release v1.3.1 by @Brazol in #1192

    Full Changelog: v1.3.0...v1.3.1

    Open source →
    Release notes

    🐞 Fixed

    • Reverted iOS audio session release on call leave (#1155) due to reports of broken audio playout on some iOS sessions.
    • Improved SFU join, recovery and migration logic to reduce failed joins with reconnect loops when joining full or shutting-down SFU
    • Fixed race condition in Call.join when another connect is already in progress, with proper timeout handling.
    • Fixed consumeAndAcceptActiveCall to ensure the coordinator WS is connected before consuming incoming calls during cold start.
    Open source →
  8. 1.3.0 03 Mar 2026
    Release notes

    What's Changed

    • feat(llc): hifi stereo playout (Android and iOS) by @Brazol in #1173
    • feat(llc): handle ice restart sfu event, rollback pc by @Brazol in #1175
    • chore(llc): open api regeneration by @Brazol in #1177
    • feat(llc): video moderation by @Brazol in #1178
    • fix(llc): end the call when last participant leaves fix by @Brazol in #1183
    • chore(repo): Release v1.3.0 by @Brazol in #1181

    Full Changelog: v1.2.4...v1.3.0

    Open source →
    Release notes

    ✅ Added

    • Added video moderation support by providing VideoModerationConfig in CallPreferences. Check cookbook for more details.
    • Added HiFi audio mode for high-fidelity scenarios such as live music, podcasts, and professional streaming. Use SfuAudioBitrateProfile to select an audio quality profile before joining a call:
      • SfuAudioBitrateProfile.voiceStandard – Standard voice (64 kbps, default)
      • SfuAudioBitrateProfile.voiceHighQuality – High-quality voice (128 kbps)
      • SfuAudioBitrateProfile.musicHighQuality – HiFi music mode (128 kbps, audio processing disabled)
    • Added stereo playout (iOS and Android) and capture (Android only) support with new audioConfigurationPolicy in StreamVideoOptions. Includes predefined policies:
      • AudioConfigurationPolicy.broadcaster() – Mono playout with voice processing enabled (default)
      • AudioConfigurationPolicy.viewer() – Stereo playout with voice processing disabled, ideal for passive listeners
      • AudioConfigurationPolicy.hiFi() – Stereo capture and playout with voice processing disabled, ideal for hosts streaming high-fidelity audio
      • AudioConfigurationPolicy.custom() – Full control over platform-specific audio settings with optional basePolicy fallback
    • Added RtcMediaDeviceNotifier.reinitializeAudioConfiguration() to switch audio configuration policy at runtime (must be called before starting a call).

    See the documentation for details.

    ⚠️ Deprecated

    • Deprecated androidAudioConfiguration in StreamVideoOptions. Use audioConfigurationPolicy instead.

    🐞 Fixed

    • Added handling for SFU iceRestart event — the client now correctly performs ICE restart and renegotiation when instructed by the SFU, improving fast reconnect reliability.
    • Added PeerConnection SDP rollback on failed remote answer to prevent the publisher from getting stuck in an inconsistent signaling state.
    • When dropIfAloneInRingingFlow is set to true in CallPreferences the call will now end when the last participant leaves the call.
    Open source →
  9. 1.2.4 03 Feb 2026
    Release notes

    What's Changed

    • fix(llc): fix call connection issues on web by @Brazol in #1171

    Full Changelog: v1.2.3...v1.2.4

    Open source →
    Release notes

    🐞 Fixed

    • [Web] Fixed an issue with call being stuck during Connecting state.
    Open source →
  10. 1.2.3 29 Jan 2026
    Release notes

    What's Changed

    • chore(repo): fixes required for pana by @Brazol in #1152
    • fix(llc): reconnect improvements by @Brazol in #1150
    • fix(llc): handle tracks sfu events before participant join by @Brazol in #1153
    • fix(ui): fixed callkit event silencing by @Brazol in #1154
    • feat(ui): exposed additional callkit options by @Brazol in #1138
    • chore(llc): improved call.leave() performance by @Brazol in #1157
    • fix(llc): pause audio playout when leaving call to release iOS audio session by @Umair-Syed in #1155
    • fix(ui): Skia flickering fix on Android by @Brazol in #1147
    • chore(llc): expose rtc stats classes by @Brazol in #1165
    • fix(llc): make sure android audio configuration is applied before creating rtc manager by @Brazol in #1164
    • fix(ui): fixes call ringing on Android when app is in detached state by @Brazol in #1161
    • chore(repo): Release v1.2.3 by @Brazol in #1166

    New Contributors

    Full Changelog: v1.2.2...v1.2.3

    Open source →
    Release notes

    ⚡ Performance

    • Improved call.leave() performance

    ✅ Added

    • Added includesCallsInRecents to iOS push configuration to control whether CallKit calls appear in Recents.

    🐞 Fixed

    • Fixed race condition where remote tracks could arrive before participant join events, causing track state to be lost.
    • Improved reconnection reliability:
      • Added exponential backoff with jitter to fast reconnect attempts.
      • Fixed fast reconnect deadline check to correctly trigger fallback to rejoin.
      • Fixed network availability verification during subsequent fast reconnect attempts.
      • Added reconnectReason to reconnect details for sfu logs.
      • Fixed race condition where automatic ICE restart could interfere with fast reconnect, causing subscriber video to not recover.
    • [iOS] Fixed audio session not being released when leaving a call, which prevented other audio packages from using the microphone.
    • [iOS] Fixed CallKit event suppression to avoid repeated mute toggle loops.
    • [Android] Fixed issues when accepting incoming calls from detached state (app exited via back button).
    • [Android] Fixed incoming call notifications not showing when the app is in a detached state (e.g., after pressing the back button).
    • [Android] Fixed video flickering in Skia renderer by scoping renderer keys with prefix and using stable participant-based keys.
    Open source →
  11. 1.2.2 30 Dec 2025
    Release notes

    🐞 Fixed

    • [Android] Fixed WebSocket/WebRTC connections persisting after app is killed from recents. Foreground services now properly terminate and leave calls when the app task is removed.
    Open source →
  12. 1.2.1 24 Dec 2025
    Release notes

    ✅ Added

    • Added default sorting preset for Picture-in-Picture mode to prioritize the most relevant participant.

    🐞 Fixed

    • [Android] Fixed screen share notification tap not opening the app.
    • [Android] Improved screen sharing foreground service reliability:
      • Added proper synchronization to ensure the foreground service is fully started before initiating media projection.
      • startScreenSharingNotificationService now returns a boolean indicating success/failure, preventing screen share attempts when the service fails to start.
    • [iOS/macOS] Fixed crash when VoIP push is received before Flutter fully initializes from the terminated state.
    Open source →
  13. 1.2.0 19 Dec 2025
    Release notes

    ✅ Added

    • [Android] Added support for screen audio sharing. To enable it set captureScreenAudio to true in ScreenShareConstraints. See documentation for more details.

    🐞 Fixed

    • Fixed unnecessary video filter reapplication when camera track is disabled.
    • [Android] Fixed an issue where the camera freezes for person using screen sharing without PiP enabled.
    • [Android] Fixed active foreground service not being started when notification permission is denied.
    Open source →
  14. 1.1.0 16 Dec 2025
    Release notes

    ✅ Added

    • Added pipTrackPriority parameter to PictureInPictureConfiguration to control whether screen sharing or camera track is preferred in PiP mode. When set to camera, the camera track is preferred, but screen share will still be shown as a fallback if the camera is disabled.
    • Added multiple-host and screen sharing support in LivestreamPlayer and LivestreamContent.
      • New flags: showMultipleHosts, layoutMode, screenShareMode.
      • New builders: livestreamHostsParticipantBuilder and livestreamHostsParticipantsFilter to customize how hosts are selected and rendered.
    • Added videoFit parameter in LivestreamPlayer to control contain/cover behavior when not in fullscreen.
    • Livestream reconnect UI customization:
      • LivestreamPlayer/LivestreamContent: added livestreamFastReconnectingOverlayBuilder to customize the UI shown during fast reconnect.
      • LivestreamContent: livestreamNotConnectedBuilder provides isMigrating/isReconnecting flags to tailor messaging when not connected.
    • Call screen reconnect UI customization:
      • StreamCallContent: added callFastReconnectingOverlayBuilder to render a custom overlay while fast reconnecting.
      • StreamCallContent: callNotConnectedBuilder now exposes CallNotConnectedProperties with isMigrating/isReconnecting to customize the not-connected/reconnecting view.

    🐞 Fixed

    • Fixed ANR (Application Not Responding) issue on Android that could happen when starting screen share service.
    • Fixed crash on Android versions below API 31 when disabling Picture-in-Picture mode.

    ⚡ Performance

    • Improved call.join() performance - reduced join time by optimizing WebRTC setup and deferring non-critical operations.
    • Improved SFU allocation reliability.
    Open source →
  15. 1.0.2 04 Dec 2025
    Release notes

    🐞 Fixed

    • Fixed incoming call timeout handling.
      • Use streamVideo.observeCoreRingingEventsForBackground() instead of streamVideo.observeCallDeclinedRingingEvent() in firebaseMessagingBackgroundHandler to support all necessary events.
    Open source →
  16. 1.0.1 01 Dec 2025
    Release notes

    ✅ Added

    • Added support for changing the camera target resolution during an ongoing call using the call.setCameraTargetResolution() method.

    LivestreamPlayer Improvements

    • Added support for Picture in Picture (PiP) mode, configurable via the pictureInPictureConfiguration parameter. For platform-specific setup, refer to the documentation.
    • Introduced the joinBehaviour parameter, allowing control over whether and when the LivestreamPlayer automatically connects the user to a call.
    • Added the showRecordingsWhenEnded parameter to LivestreamPlayer, which enables you to show or hide the recordings list in the default livestream ended UI.
    • Refactored LivestreamPlayer to leverage call.partialState for more efficient state management. New builder methods have been introduced to accommodate this change, and some previous builder methods are now deprecated.
    Open source →
  17. 1.0.0 25 Nov 2025
    Release notes

    🚧 Breaking changes

    CallKit/Ringing

    This release removes the dependency on flutter_callkit_incoming, resulting in several breaking changes to CallKit and ringing functionality:

    • CallKit/ringing configuration: The initialization process is updated. Replace the pushParams parameter in StreamVideoPushNotificationManager with the new pushConfiguration field (StreamVideoPushConfiguration).
    • Parameter renaming: The nameCaller parameter has been standardized and renamed to callerName across all relevant locations.
    • Removed properties:
      • The deprecated callerCustomizationCallback and backgroundVoipCallHandler have been fully removed from StreamVideoPushNotificationManager.
      • The previously used appName field in pushParams has been removed as it was deprecated. On iOS, the app’s product name from build settings is now used instead.
    • API renames and type changes
      • onCallKitEvent is now onRingingEvent
      • observeCoreCallKitEvents is now observeCoreRingingEvents
      • observeCallAcceptCallKitEvent is now observeCallAcceptRingingEvent
      • observeCallDeclinedCallKitEvent is now observeCallDeclinedRingingEvent
      • observeCallEndedCallKitEvent is now observeCallEndedRingingEvent
      • The CallKitEvent type is now RingingEvent

    Video Filter

    • The video filters feature, which enables blur and virtual backgrounds during calls, has been moved to a new package: stream_video_filters. To use video filters, add the package to your pubspec.yaml and update your relevant imports.

    Deprecated members

    • Removed deprecated APIs and parameters. Migrate as follows:
      • StreamVideo.muteVideoWhenInBackgroundStreamVideo.options.muteVideoWhenInBackground
      • StreamVideo.muteAudioWhenInBackgroundStreamVideo.options.muteAudioWhenInBackground
      • Default StreamCallType() constructor → StreamCallType.defaultType()
      • Call.setParticipantPinned()Call.setParticipantPinnedLocally() (local-only pin)
      • Removed deprecated startRtmpBroadcasts parameter from Call.goLive()
      • Removed localParticipant parameter from AddReactionOption constructor
      • Removed multiple deprecated builder callbacks in favor of callbacks that don't provide the state object; corresponding state object parameters in affected widgets have been removed.
      • Deprecated androidAudioAttributesUsageType and androidAudioAttributesContentType parameters in RtcMediaDeviceNotifier.handleCallInterruptionCallbacks()

    🍏 Swift Package Manager (SPM)

    • Added Swift Package Manager (SPM) support for iOS.

      [!IMPORTANT]
      Flutter's iOS SPM is experimental and disabled by default. You can enable it via flutter config --enable-swift-package-manager. Flutter will fall back to CocoaPods for plugins that don't support SPM. See the Flutter SPM docs.

    ✨ Improvements

    • [Android] Significantly improved video filter performance, resulting in smoother frame rates during calls.

    ✅ Added

    • Added Call.ring() to ring specific members of an existing call. Example: call.ring(userIds: ['<userId>'], video: true). Sends a ringing/VoIP push to the users’ devices. Users must already be members - use call.addMembers() first if needed.
    • Added RtcMediaDeviceNotifier.pauseAudioPlayout() / RtcMediaDeviceNotifier.resumeAudioPlayout() to mute and restore remote playback with platform-specific handling for iOS/macOS and Android.
    • [Android] Enhanced interruption handling via RtcMediaDeviceNotifier.handleCallInterruptionCallbacks().
    • [Android] Added RtcMediaDeviceNotifier.regainAndroidAudioFocus() to request audio focus when it was lost without automatic regain.

    🐞 Fixed

    • [iOS] Resolved an issue in Picture in Picture where video tracks might remain disabled after returning the app to the foreground.
    • [iOS] Addressed a problem where Picture in Picture was not exited properly if the call ended during PiP mode.
    • [iOS] Fixed a bug where quickly backgrounding the app right after ending a call could still activate PiP mode.
    • Resolved an issue that could cause the StreamVideo instance to be disposed prematurely before ringing events were fully processed when handling ringing notifications in the terminated state.
    Open source →
  18. 0.11.2 31 Oct 2025
    Release notes

    🐞 Fixed

    • [Web] Fixed setting input audio/video device passed by CallConnectOptions as well as switching those devices during the call.
    • [Web] Fixed changing the output audio device during the call.
    • [Android/iOS] Fixed an issue where screen sharing was not stopped correctly when canceled via the system UI on Android or iOS.
    • [iOS] Improved broadcast extension handling — the app now waits for the broadcast picker selection before actually starting screen sharing.
    • Resolved an issue where the camera wouldn’t flip correctly if the back camera was selected initially.
    • Fixed an issue where callMembers collection wasn't reflecting the actual members list after starting the call session.
    • Fixed an issue with initials creation when multicharacter symbols were used in a user name.

    ✅ Added

    • [Web] Added checkIfAudioOutputChangeSupported() to the Call class to check whether the browser supports changing the audio output device.
    Open source →
  19. 0.11.1 13 Oct 2025
    Release notes

    🔄 Changed

    • The byParticipantSource participant sorting now accepts a list of sources. The default sorting for speaker and livestream presets now include other ingress sources.
    • Updated the renderscript dependency on Android to support 16kb page size.
    Open source →
  20. 0.11.0 02 Oct 2025
    Release notes

    🚧 Build breaking changes

    Important: This release includes breaking changes for Android development.

    Android Requirements:

    • Minimum compileSDK 36
    • Android Gradle Plugin >=8.12.1
    • Gradle wrapper >=8.13
    • Kotlin 2.2.0
    • Updated minimum Flutter version to 3.32.0
    • Updated minimum supported Dart SDK version to 3.8.0

    🚧 Breaking changes

    • Call.stats payload structure changed

      • Before: ({ CallStats publisherStats, CallStats subscriberStats })
      • Now: ({ PeerConnectionStatsBundle publisherStatsBundle, PeerConnectionStatsBundle subscriberStatsBundle })
      • The record field names and element types have changed to provide more detailed WebRTC statistics
    • Stats-related fields removed from CallState

      • Removed: publisherStats, subscriberStats, latencyHistory
        • For periodic WebRTC stats: Use call.stats stream
        • For latest aggregated metrics: Use call.statsReporter?.currentMetrics
    • Dependency updates

      • Updated most dependencies to their latest versions to ensure compatibility and security

    ✅ Added

    • New call.statsReporter property provides access to currentMetrics
    • Battery level tracking now available via call.statsReporter?.currentMetrics
    • Device thermal status monitoring for better call quality optimization

    🔄 Changed

    • Call.stats record field names and types updated as noted in breaking changes section

    🐞 Fixed

    • Fixed leave call operation failures when parsing custom data encounters issues
    • [Android] Fixed custom Android audio configuration application for participants joining calls
    • [Android] Fixed video rendering issue where background textures were incorrectly blended with video content on devices using Impeller rendering engine
    Open source →
  21. 0.10.4 17 Sep 2025
    Release notes

    ✅ Added

    • Extended CallParticipantState with participantSource. This indicates the participant's source channel (e.g., WebRTC, RTMP, WHIP) and can be used in filtering and sorting criteria.
    • Livestream sorting preset now prioritises RTMP sources in layout sorting.
    • Automatic SFU-driven pausing of inbound video to save bandwidth and prevent visual artifacts:
      • New SfuClientCapability.subscriberVideoPause (on by default). Control via Call.enableClientCapabilities() / Call.disableClientCapabilities().
      • New SfuInboundStateNotificationEvent notifies when inbound tracks are paused or resumed.
      • CallParticipantState.pausedTracks and CallParticipantState.isTrackPaused() let you check which tracks are currently paused.
    • Added capability to remove a participant from a call via call.kickUser(). Requires the kick-user permission.

    🐞 Fixed

    • Multitasking camera on iOS is now enabled only once and kept enabled. This fixes potential errors when quickly toggling camera.
    Open source →
  22. 0.10.3 20 Aug 2025
    Release notes

    🐞 Fixed

    • Handled SFU stats reporting failures gracefully

    ✅ Added

    • Added option to configure android audio configuration when initializing StreamVideo instance by providing androidAudioConfiguration to StreamVideoOptions.
    Open source →
  23. 0.10.2 07 Aug 2025
    Release notes

    ✅ Added

    • Added support for setting video filters before the video track is created by listening for local participant state changes and applying the filters once the video is enabled.
    • Added support for setting video filters on a specific video track before the local participant is available — useful for scenarios like lobby previews with a temporary video track.
    • Introduced the reconnectTimeout option in CallPreferences, allowing you to set the maximum duration the SDK will attempt to reconnect to a call before giving up.

    🔄 Changed

    • Deprecated callRejoinTimeout in RetryConfig, instead added networkAvailabilityTimeout to CallPreferences to control how long the SDK waits for network connectivity to be restored during reconnection attempts before timing out.

    🔄 Dependency updates

    • Updated flutter_callkit_incoming dependency to version 2.5.7. That version contains Android 14 compatibility fixes for ringing notifications and lock screen handling.

    🐞 Fixed

    • (Android) CircleTransform Argument type mismatch on Bitmap.Config?
    • Sorting of participants after screen sharing stopped.
    • Fixed an issue where video filters were cleared after toggling the camera.
    • (Windows) Fixed DtlsSrtpKeyAgreement audio constraint parameter mapping
    Open source →
  24. 0.10.1 18 Jul 2025
    Release notes

    🐞 Fixed

    • (iOS) Fixed Picture-in-Picture (PiP) issue where remote participants joining during active PiP mode would not have their video tracks displayed properly.
    • (iOS) Fixed a visual issue where the Picture-in-Picture view displayed an empty container when participant name and microphone indicator settings were disabled.
    • Fixed an issue where the last reaction was removed too fast when a user sends multiple reactions quickly after each other.
    • Fixed an issue where toggling camera enabled quickly could cause AVCaptureMultiCamSession to crash.
    • Fixed an issue where the default camera selection would occasionally be incorrect even when properly configured.
    • Fixed an issue where changing the audio input device while muted from the start of a call would not apply the new device when unmuting. The selected device will now be correctly set upon unmuting.

    ✅ Added

    • Added support for customization of display name for ringing notifications by providing display_name custom data to the call. See the documentation for details.
    Open source →
  25. 0.10.0 04 Jul 2025
    Release notes

    🚧 (Android) Picture-in-Picture (PiP) Improvements - Breaking Change

    • Simplified Setup: Introduced StreamFlutterActivity - extend it instead of FlutterActivity for automatic PiP support.
    • Automatic Activation: PiP now triggers automatically when users press home button or background the app during calls.
    • Fixed Overlay Issues: PiP view can no longer be overlapped by other widgets and will always display the correct video layout.
    • Migration Required: In your MainActivity, remove the manual onUserLeaveHint() implementation and extend the MainActivity with StreamFlutterActivity. Previously required manually calling PictureInPictureHelper.enterPictureInPictureIfInCall(this) - now handled automatically.
    • Removed Deprecated Methods: Removed the deprecated setPictureInPictureEnabled method from StreamVideoFlutterPlatform, StreamVideoFlutterBackground, and MethodChannelStreamVideoFlutter classes, and the deprecated enterPictureInPictureIfInCall method from PictureInPictureHelper (Android). PiP is now handled automatically by StreamPictureInPictureAndroidView.

    🔄 Partial State Updates:

    For a more detailed explanation check the dedicated documentation.

    • Added call.partialState for more specific and efficient state updates.
    • Added callbacks in StreamCallContainer, StreamCallContent, StreamIncomingCallContent, and others that no longer return a state. By (only) using these callbacks the root widgets will use more efficient partial state updates.
    • Added PartialCallStateBuilder to help with making widgets that depend on partialState.
    • Deprecated old callbacks

    ✅ Added

    • Added setMirrorVideo method to Call class to control video mirroring for participants.
    • Added maxParticipantsExcludeOwner and maxParticipantsExcludeRoles to Call limits settings, providing finer control over participant limits by allowing exclusion of call owners and specific roles from the maximum count.

    🐞 Fixed

    • Improved SFU error handling in Call flow and disconnect reason handling. The disconnected call state now accurately reflects the original cause of disconnection.
    • Fixed an issue where rejecting a ringing call on one device would incorrectly end the call for all already connected participants.
    • Enhanced fast reconnect mechanism with improved PeerConnection issue detection and recovery. The system now attempts multiple fast reconnects before falling back to a full call rejoin.
    • Fixed simulcast video quality by correcting resolution calculations and layer selection for optimal video track display.
    • Fixed an edge case where a call with the same CID as an incoming call is also an outgoing call to ensure the same Call instance is used.
    Open source →
  26. 0.9.6 13 Jun 2025
    Release notes

    ✅ Added

    • Added handleCallInterruptionCallbacks method to RtcMediaDeviceNotifier that provides an option to handle system audio interruption like incoming calls, or other media playing. See the documentation for details.
    • Improved the Picture-in-Picture (PiP) implementation for video calls
      • (iOS) Shows participant avatar instead of black screen when video track is disabled.
      • (iOS) Added overlay with participant name, microphone indicator and connection qualit indicator.
      • (iOS/Android) Added sort in PictureInPictureConfiguration that enables customization of PiP participant selection.

    🐞 Fixed

    • Fixed the handling of user blocking event to disconnect the blocked user with a proper reason.
    Open source →
  27. 0.9.5 05 Jun 2025
    Release notes

    ✅ Added

    • Introduced extendBody parameter in StreamCallContent that extends the participants view to the bottom edge of the scaffold when enabled.
    • Introduced allowMultipleActiveCalls option in StreamVideoOptions enabling support for concurrent active calls. See the documentation for details.

    🐞 Fixed

    • Enhanced permission update handling to only process events targeting the current user.
    • Improved audio output device selection to prioritize external audio devices during call connection.
    Open source →
  28. 0.9.4 22 May 2025
    Release notes

    🐞 Fixed

    • Resolved an issue where the screen share track would disappear when zoomed in.
    • Fixed screen sharing layout issues on wide screens.
    • Fixed ScreenShareCallParticipantsContent with Spotlight view on very wide windows.

    ✅ Added

    • Introduced new builder parameters to LivestreamPlayer for enhanced customization:
      • videoRendererBuilder: Build a custom video renderer.
      • videoPlaceholderBuilder: Build a placeholder for the video renderer.
      • livestreamHostsUnavailableBuilder: Customize the UI when a livestream is connected but no hosts have video enabled.
      • livestreamNotConnectedBuilder: Customize the UI when the livestream is not connected.
    Open source →
  29. 0.9.3 20 May 2025
    Release notes

    ✅ Added

    • Introduced callDurationStream to the Call class. A Stream<Duration> that emits the current call duration.
    • Added createdByUser property to the CallState for better tracking of the initiating user.
    • Added livestreamControlsBuilder parameter to LivestreamPlayer allowing customisation of controls panel.

    🐞 Fixed

    • Resolved an issue where participants’ tracks would briefly disappear ("blink") or change location when many participants are in the call.
    • Fixed a bug where subsequent screen sharing sessions did not end properly when terminated via the browser UI.
    Open source →
  30. 0.9.2 05 May 2025
    Release notes

    🐞 Fixed

    • Fixed issue with the user feedback collection endpoint.

    ✅ Added

    • Added ring, audio, video, screenshare, session and frameRecordings settings to Call.getOrCreate() method.
    • Added members list parameter to Call.getOrCreate() method to allow assigning roles when creating a call.
    • Added session and frameRecordings settings to Call.update() method.

    🔄 Updated

    • Updated LivestreamPlayer widget with a refreshed look and feel. Added livestreamEndedBuilder and livestreamBackstageBuilder for enhanced configuration options.
    Open source →
  31. 0.9.1 09 Apr 2025
    Release notes

    ✅ Added

    • Introduced camera focus and zoom control features:
      • New Call.setZoom() method to adjust the camera’s zoom level.
      • New Call.focus() method for setting focus and exposure points on the camera.

    🐞 Fixed

    • [Android] Fixes the device orientation detection when screen-sharing on some Android devices.
    • Addressed minor bugs and improved performance.
    Open source →
  32. 0.9.0 02 Apr 2025
    Release notes

    ✅ Added

    • Introducing noise cancellation support to enhance call audio quality. Implement this feature easily by following our documentation.
    • Added networkMonitorSettings to StreamVideoOptions for configuring network monitoring, including customization of test URLs for connection checks.

    🚧 (Breaking Changes)

    • Enhanced the onCallDisconnected callback in StreamCallContainer to include a CallDisconnectedProperties parameter with detailed disconnection reason information.
    • Improved setScreenShareEnabled method in CallSession class to return the screen sharing track.
    • Relocated callPreferences property from CallStateNotifier to CallState for better state management.
    • Increased minimum platform requirements
      • Android: Minimum SDK 21 (Android 5.0 Lollipop)
      • iOS: iOS 14.0 or higher

    🐞 Fixed

    • Enhanced fast reconnect flow for more reliable connection recovery during network interruptions.
    • Resolved an issue where video tracks weren't properly subscribed when participants joined calls.
    • Fixed multi-device support to properly handle when the same user joins from multiple devices.
    • Corrected screen sharing source switching when changing between multiple sources.
    • Fixed a bug where CallPreferences could be ignored when accepting a ringing call.
    • (Android) Resolved compatibility issues with battery_plus plugin on older Android devices.
    • (Web) Fixed screen sharing termination when using browser UI controls to stop sharing.
    • (iOS) Synchronized CallKit microphone mute state with the actual call mute state.
    Open source →
  33. 0.8.4 13 Mar 2025
    Release notes

    🐞 Fixed

    • (iOS) Fixed an issue where Picture-in-Picture (PiP) would not stop when bringing the app back to the foreground.

    🔄 Changed

    • Updated the device_info_plus dependency to support a wider range of versions and resolve potential conflicts.
    • Deprecated the setParticipantPinned() method in the Call class — use setParticipantPinnedLocally() instead.
    • Replaced the isPinned parameter in CallParticipantState with a pin object, which now differentiates between local and remote pinning.

    ✅ Added

    • Introduced a membersLimit parameter in the getOrCreate() and join() methods of the Call class to limit the number of members included in the response.
    • Added setParticipantPinnedForEveryone(), allowing users with the required permissions to pin participants for all. The setParticipantPinned() method has been replaced with setParticipantPinnedLocally(), which, as before, only pins participants locally.

    🔄 Changed

    • Update stream_webrtc_flutter and device_info_plus dependencies
    Open source →
  34. 0.8.3 07 Mar 2025
    Release notes

    ✅ Added

    • Introduced CallParticipantState.audioLevels, which stores the last 10 audio levels of a participant.
    • Added CallState.activeSpeakers to retrieve a list of currently active speakers.
    • Enhanced observeCoreCallKitEvents() in StreamVideo with a new CallPreferences? preferences parameter, allowing for configuration of the accepted call.
    • Implemented localization support for the SDK's UI components. See the documentation for details.
    • Added the ability to customize the screen share selector on desktop devices. See the updated documentation for details.

    🐞 Fixed

    • Resolved various issues related to screen sharing on desktop devices.
    Open source →
  35. 0.8.2 05 Mar 2025
    Release notes

    ✅ Added

    • Added CallPreferences? preferences parameter to consumeIncomingCall() method in StreamVideo to make it possible to configure the consumed call.

    🐞 Fixed

    • Fixed remote participant roles array being empty after joining the call.
    • Fixed and issue with thermal package throwing exception on Android 9 and lower.
    Open source →
  36. 0.8.1 27 Feb 2025
    Release notes

    ✅ Added

    • Introduced the onCallDisconnected callback in StreamCallContainer, enabling customization of the default behavior, which invokes Navigator.pop upon call disconnection.
    • Made registerDevice() and unregisterDevice() methods publicly available in PushNotificationManager.
    Open source →
  37. 0.8.0 18 Feb 2025
    Release notes
    • Updated minimum Flutter version to 3.27.4
      • Note: If you updated Flutter version and are using flutterfire_cli for push notifications you might need to reactivate it by running: dart pub global activate flutterfire_cli.

    ✅ Added

    • Introduced disposeAfterResolvingRinging() and consumeAndAcceptActiveCall() methods in StreamVideo to simplify the ringing flow implementation.

    🔄 Changed

    • Deprecated the backgroundVoipCallHandler parameter in StreamVideoPushNotificationManager, as it is no longer required for iOS ringing to function in a terminated state.

    🐞 Fixed

    • Center alignment of buttons in StreamLobbyVideo to support more screen sizes.
    • (Windows/Linux) Fixes compilation issues caused by stream_webrtc_flutter package.

    🚧 (Breaking) Picture-in-Picture (PiP) Improvements & Fixes

    • Fixed: PiP not working on Android 15.
    • Fixed: PiP not displaying other participants' screen sharing.
    • Added support for iOS 18 Multitasking Camera Access changes. From iOS 18, you can easily enable camera usage while the app is in the background (e.g., for PiP). Refer to Picture in Picture documentation for details.
    • Added disablePictureInPictureWhenScreenSharing configuration option to PictureInPictureConfiguration. When true (default), PiP is disabled if the local device is screen sharing.
    • ❗ Breaking Change: ignoreLocalParticipantVideo parameter in IOSPictureInPictureConfiguration is replaced by includeLocalParticipantVideo. By default, local video is enabled and will appear in PiP mode if the iOS device supports Multitasking Camera Access.
    • ❗ Breaking Change: ignoreLocalParticipantVideo parameter in StreamPictureInPictureUiKitView is also replaced by includeLocalParticipantVideo.
    Open source →
  38. 0.7.2 28 Jan 2025
    Release notes

    🐞 Fixed

    • Resolved an issue where accepting a second call while already on a call would not open the call screen correctly. #840 and #834
    • (Web) Fixed web compilation issues. #832
    • (Web) Addressed an issue where battery_plus and thermal packages were erroneously called on web. #837
    • (iOS) Fixed an issue where Picture-in-Picture mode was not ended when the call ended. #840
    • (iOS) Resolved an issue where CallKit calls sometimes were not terminated when the Stream call ended. #840
    • (iOS) Fixed a missing app icon on the CallKit screen when the app was in a terminated state. #841

    🔄 Changed

    • Deprecated the handleVoipPushNotification() method in the StreamVideo class. Use handleRingingFlowNotifications() instead.
    Open source →
  39. 0.7.1 16 Jan 2025
    Release notes

    🐞 Fixed

    • Resolved an issue where media tracks were not being disabled or enabled correctly. #828
    • Fixed a problem causing anonymous users to fail when connecting and joining calls. #827
    Open source →
  40. 0.7.0 15 Jan 2025
    Release notes

    🚧 Breaking changes

    • The package is now compatible with Gradle 8. The minimum required Java version is now 17. #820
    • Updated the flutter_callkit_incoming package to version 2.5.0, which also requires Java 17. #820
    • The resolution parameter of Call.setPreferredIncomingVideoResolution() method changed type from VideoResolution to VideoDimension.
    • The Call.onPermissionRequest callback changed the event type passed as an argument from CoordinatorCallPermissionRequestEvent to StreamCallPermissionRequestEvent

    ✅ Added

    • Added out-of-the-box support for blur background filters and image filters. As well as the option to create custom video filters. For complete documentation of those features please check here. #799
    • Added support for Closed Captions. #796
      • Listen to the Call.closedCaptions stream to overlay captions during your call.
      • Use CallPreferences to configure:
        • closedCaptionsVisibilityDurationMs for controlling how long captions are displayed.
        • closedCaptionsVisibleCaptions for managing the number of captions in the display queue.
      • Easily enable or disable captions with the ToggleClosedCaptionsOption widget.
      • Learn More:
        • Check the guide for integration steps.
        • Explore the cookbook for UI tips.
    • Dynamic codec negotiation during calls. #811

    🐞 Fixed

    • Fixed issues when ending the call while in Picture in Picture mode on Android. #822
    • Fixes rejecting ringing call when CallEnd, instead of CallDecline, event is triggered by CallKit during ringing. #824
    Open source →
  41. 0.6.1 30 Dec 2024
    Release notes
    • Updated minimum Flutter version to 3.24.5

    ✅ Added

    • Added the call.collectUserFeedback() method which allows users to send call quality rating. These ratings are visible on the Dashboard and are aggregated in call stats for easy tracking. For a sample implementation, please refer to the documentation.
    • Added device thermal status reporting to better optimize call quality.
    • Added the StreamVideoPushNotificationManager.ensureFullScreenIntentPermission() method. This resolves an issue on some Android 14 devices where full-screen notifications would not appear due to missing permissions. You can now invoke this method to show a settings screen, allowing users to enable the required permission if it's not already enabled.

    🐞 Fixed

    • Resolved an issue where CallKit calls would not connect when accepted while the screen was locked.
    • Fixed a bug where the Android foreground service would not stop when the app was killed, keeping the call connection active.
    Open source →
  42. 0.6.0 06 Nov 2024
    Release notes

    This release introduces a major rework of the join/reconnect flow in the Call class to support Reconnect V2, enhancing reconnection handling across various scenarios. Most updates are within the internals of the Call class, though some changes are outward-facing, including a few breaking changes.

    🔄 Changed

    • Call.reject() method will now always call Call.leave() method internally.

    🚧 Breaking changes

    • Removed the deprecated Call.joinLobby() method.
    • The maxDuration and maxParticipants parameters of Call.getOrCreate() are now combined into the StreamLimitsSettings? limits parameter.

    🔄 Dependency updates

    • Updated Firebase dependencies to resolve Xcode 16 build issues.

    ✅ Added

    • Added the registerPushDevice optional parameter (default is true) to the StreamVideo.connect() method,allowing the prevention of automatic push token registration.
    • Added participantCount and anonymousParticipantCount to CallState reflecting the current number of participants in the call.
    • Introduced the watch parameter to Call.get() and Call.getOrCreate() methods (default is true). When set to true, this enables the Call to listen for coordinator events and update its state accordingly, even before the call is joined (Call.join()).
    • Added support for targetResolution setting set on the Dashboard to determine the max resolution the video stream.
    • Introduced new API methods to give greater control over incoming video quality. Call.setPreferredIncomingVideoResolution() allows you to manually set a preferred video resolution, while Call.setIncomingVideoEnabled() enables or disables incoming video. For more details, refer to the documentation.

    🐞 Fixed

    • Automatic push token registration by StreamVideo now stores registered token in SharedPreferences, performing an API call only when the token changes.
    • Fixed premature ringing termination issues.
    • Resolved issues where ringing would not end when the caller terminates the call in an app-terminated state.
    • Fixed issue with call not ending in some cases when only one participant is left and dropIfAloneInRingingFlow is set to true.
    Open source →
  43. 0.5.5 25 Sep 2024
    Release notes

    🐞 Fixed

    • Migrated from internet_connection_checker to internet_connection_checker_plus due to license issues.
    • callAppBarBuilder in StreamCallContent can now return null in order to hide the app bar.
    • backgroundColor field in StreamCallControls is now correctly applied.
    Open source →
  44. 0.5.4 20 Sep 2024
    Release notes

    🐞 Fixed

    • Fixed an issue where active call foreground service was recreated after being stopped when ringing call was declined and in-app incoming screen was displayed.

    🚧 Breaking changes

    • The regular push notification handling has been removed from iOS, providing more control over the implementation. VoIP push notifications will continue to be handled as before. For more details, refer to the documentation.

    • Dependency updates

      • Flutter SDK constraint updated to >=3.22.0 (Dart SDK to >=3.4.0 <4.0.0)
      • internet_connection_checker updated from ^1.0.0+1 to ^2.0.0
      • rxdart updated from ^0.27.7 to ^0.28.0
      • web updated from ^0.5.1 to ^1.0.0
      • web_socket_channel updated from ^2.4.0 to ^3.0.1
      • firebase_core updated from ^2.15.1 to ^3.4.0
      • firebase_messaging updated from ^14.5.0 to ^15.1.1
      • share_plus updated from ^7.1.0 to ^10.0.2
      • json_annotation updated from ^4.8.0 to ^4.9.0
    Open source →
  45. 0.5.3 12 Sep 2024
    Release notes

    🐞 Fixed

    • Improved video quality for a smoother experience.
    • Resolved an issue where the participant's state showed an empty roles list.
    • Fixed a bug that caused the CallKit ringing notification to continue after a call was accepted.
    Open source →
  46. 0.5.2 09 Sep 2024
    Release notes

    🐞 Fixed

    • Fixed CallKit integration on iOS when app is in a terminated state. It now correctly openes the app when the call is accepted.
    • Fixed onLeaveCallTap callback in StreamCallContent. It's now correctly handled.
    • (Android) Prevented the app from crashing when microphone permission is not granted and actove call foreground services is started. The service will now not start if no permission is granted.
    • (Android) Marked the active call notification channel's lockscreen visibility as public to ensure it shows when the Android device is locked.

    🔄 Changed

    • SortParam changed to SortParamRequest in queryMembers() method inside Call and StreamVideo class
    Open source →
  47. 0.5.1 28 Aug 2024
    Release notes

    ✅ Added

    • Added backstage parameter to call.getOtCreate() method with backstage settings. For more information, refer to the documentation
      • Ability to join call in advance with joinAheadTimeSeconds parameter (part of StreamBackstageSettings)
    • Added startsAt parameter to call.getOtCreate() method
    • Added maxDuration and maxParticipants parameters to call.getOtCreate() method
    • Added video parameter to call.getOtCreate(), call.getCall() and call.join() methods. This parameter is used to distinguish between audio-only and video calls for ringing purposes.
      • ❗Important❗ the video parameter is false by default. If you want your call to be treated as a video call while ringing set it to true.
    • Added streamVideo paramter to StreamLobbyView and StreamLobbyVideo widgets provide a custom StreamVideo instance.

    🐞 Fixed

    • Fixed reaction dismissal: Sent and received reactions are now correctly dismissed after a 5-second timeout (configurable in CallPreferences).
    • Fixed the cancel button behavior in the screen-sharing notification on Android. It will now correctly stop the screen-sharing process.
    • Fixed the issue with the cancel button in the call-in-progress notification was not stopping the call.
    • Fixed the connection quality updates for other call participants.
    • Fixed an issue where declining a ringing call when the app was in a terminated state did not stop the ringing on the caller's end.
    Open source →
  48. 0.5.0 05 Aug 2024
    Release notes

    ✅ Added

    • Picture in Picture (PiP) is now also supported on iOS. For more information, refer to the documentation

    🐞 Fixed

    • Fixed an issue where the microphone was being muted when the app was running in the background on Android versions greater than 14.

    🚧 Breaking changes

    • The implementation of BroadcastSampleHandler, used for broadcast screen-sharing mode on iOS is now moved from stream_video_flutter package to a separate stream_video_screen_sharing package. Migration steps:
    • Add stream_video_screen_sharing dependency to your pubspec.yaml file
    • Replace the import in SampleHandler.swift file from stream_video_flutter to stream_video_screen_sharing
    • Replace the dependancy added to the extension target in Podfile file from stream_video_flutter to stream_video_screen_sharing

    For complete screen-sharing guide please refer to the documentaiton

    • Previously deprecated String type parameters in makeCall() and getCallRingingState() methods are now removed. Use StreamCallType callType parameter now.
    • Previously deprecated events and coordinatorEvents streams are now removed from Call class. Use callEvents instead.
    Open source →
  49. 0.4.4 02 Aug 2024
    Release notes

    ✅ Added

    • Added watch parameter to StreamVideo.queryCalls() method, allowing you to subscribe to queried call events. For more information, refer to the documentation.
    • Introduced listRecordings() to StreamVideo object, enabling you to query call recordings using a provided call CID.

    🔄 Changed

    • The default constructor for StreamCallType is now deprecated. Instead, use the StreamCallType.defaultType() factory constuctor.

    🐞 Fixed

    • Improved the quality of screen sharing. It now correctly respects the parameters set in ScreenSharingConstraints to adjust the quality.
    • The FloatingViewAlignment enum is now properly exported in the stream_video_flutter package.
    Open source →
  50. 0.4.3 24 Jul 2024
    Release notes

    🐞 Fixed

    • Fixed reconnection flow.
    • Fixed compilation errors on web.
    • Fixed screen-sharing not working on some versions of Android.
    • Fixed accepting incoming call during another call (or outgoing call).
    • Fixed CallKit incoming push label and Android accept call button icons for audio-only calls.

    ✅ Added

    • Added support for missed calls. Push notifications and CallMissedEvent event will be sent now when the user misses the call.
    • Added support for call transcription check transcription cookbook
      • Added startTranscription(), stopTranscription() and listTranscriptions() methods to Call class.
    • Added option to take a screenshot during the call check screenshot documentation
      • Added takeScreenshot() method to Call class.
    • Added recordingExternalStorage optional param to call.startRecording() method.
    • Added requestScreenSharePermission() method to Call class that ensures correct permissions are given for screen-sharing on Android.

    🔄 Changed

    • Changed role member to roles, to reflect the possibility of the user having multiple roles, in CallParticipantState and CallMember.
    • Changed SortParamRequest to SortParam.

    🔄 Changed some of the signatures

    • listRecordings() method in PermissionsManager doesn't require sessionId param now.
    • setParticipantPinned() method in Call and CallSession now requires sessionId, userId, and pinned params instead of SetParticipantPinned action.
    • updateViewportVisibility() method in CallSession now requires visibilityChange param instead of UpdateViewportVisibility action.
    • setSubscriptions() and updateSubscription() methods in CallSession now require a list of subscriptionChanges param instead of a list of SetSubscription actions.
    • Added optional reason param to reject() method in Call class.

    Removed

    • Removed updateSubscriptions method from Call.
    Open source →
  51. 0.4.2 21 May 2024
    Release notes

    ✅ Added

    • Added ClientDetails to SFU's join request.

    🐞 Fixed

    • Tweaked SFU events handling to ensure there is no gap in handling them.
    • Fixed camera and microphone toggling on incoming/outgoing screen.
    • Fixed screen sharing not working when camera track was enabled.
    • Fixed issues with video freezing sometimes.
    Open source →
  52. 0.4.1 14 May 2024
    Release notes

    🚧 Build breaking changes

    • Bumped connectivity_plus dependency to 6.0.3

    Note, that this changes the plugin requirements:

    • compileSDK 34 for Android part
    • Java 17 for Android part
    • Gradle 8.4 for Android part

    🐞 Fixed

    • Added foreground service type to service declaration in AndroidManifest
    Open source →
  53. 0.4.0 08 May 2024
    Release notes

    🚧 Breaking changes

    • Updated minimum supported dart SDK version to 3.3.0 (which requires min Flutter SDK 3.19.0)

    • Updated flutter_webrtc to 0.10.4

    🐞 Fixed

    • Fixed an issue where subscriber offer events might be missed causing missing video/audio tracks for call participants.
    • Fixed speakerphone/earpiece switching on iOS.
    • User is now diconnected immedietaly when leaving the call.
    Open source →
  54. 0.3.9 23 Apr 2024
    Release notes
    • Reverted flutter_webrtc dependency version back to 0.9.47 to fix the compilation issues for web in Flutter 3.19.
    Open source →
  55. 0.3.8 22 Apr 2024
    Release notes

    🐞 Fixed

    • Fixed application of initial call configuration (via CallConnectOptions) and default settings from Stream Dashboard
    • Default camera facing is now applied from Dashboard settings (was ignored previously)

    ✅ Added

    • audioOutputDevice, audioInputDevice and cameraFacingMode added to CallConnectOptions
    • Optional connectOptions parameter added to call.join() method as a preferred way of setting initial call configuration - check out our documentation for more info
    Open source →
  56. 0.3.7 15 Apr 2024
    Release notes
    • Updated minimum supported SDK version to Flutter 3.16

    ✅ Added

    • Added mirrorMode parameter to CameraConstraints, which determines whether the camera for the given track should be mirrored or not. When set as defaultMode the mirroring is set as true, when facingMode is set to user and false when facingMode is set to environment.

    🐞 Fixed

    • Fixed an issue that might break screen sharing functionality.
    • Fixed an issue that caused output audio device not being set correctly.
    • Fixed an issue that still caused constant notification sound being triggered during the call on Android.
    • Fixed an issue that blocked volume adjastment during the call on Android.
    Open source →
  57. 0.3.6 08 Apr 2024
    Release notes

    ✅ Added

    • Added callEvents stream to Call that replaces events and coordinatorEvents streams (both are now deprecated).
    • Added callBackgroundBuilder to StreamOutg/oingCallContent.

    🚧 Breaking changes

    • Removed the callCid parameter requirement from sendCustomEvent() method in Call class.

    🐞 Fixed

    • Fixed an issue that caused an empty Call participants list in CallState during ringing.
    • Fixed an issue that caused constant notification sound being triggered during the call on Android.
    • Disabled camera mirroring when using back camera and when screensharing.
    Open source →
  58. 0.3.5 02 Apr 2024
    Release notes

    ✅ Added

    • Added keepConnectionsAliveWhenInBackground to StreamVideoOptions to allow keeping websocket connections and event subscribtions open when app is in the background (false by default).
    • Added support for Picture in Picture feature to Android - check out our documentation for more info
    • Added usage statictics reporting

    🐞 Fixed

    • Fixed handling of default audio output device setting from Stream dashboard
    • Fixed handling of default camera/microphone state setting from Stream dashboard
    • Fixed an issue where call could sometimes loose participants state
    • Fixed an issue in LobbyView where camera/microphone state selected would not be correctly applied into the call
    Open source →
  59. 0.3.4 06 Mar 2024
    Release notes
    • Fixed the size of the LeaveCall aciton button in CallAppBar
    • Added showLeaveCallAction property to CallAppBar
    Open source →
  60. 0.3.3 05 Mar 2024
    Release notes

    🚧 UI changes to SDK components

    • CallParticipantsLabel - removed internal padding, it sticks to the corner of the video frame by default now
    • Extracted StreamLobbyVideo widget from StreamLobbyView that can be easly reused in custom layout
    • CallAppBar
      • LeaveCallOption moved from default call controls to CallAppBar
      • Participants button removed from CallAppBar together with onParticipantsInfoTap and participantsInfoBuilder properties
      • Layout Mode button removed from CallAppBar together with onLayoutModeChanged property. You can use new ToggleLayoutOption instead in custom layout anywhere
    • ToggleLayoutOption added
    • Components related to participants menu item from CallAppBar are removed: CallParticipantsInfoItem, StreamCallParticipantsInfoMenu and CallParticipantsInfoOptions
    • StreamCallParticipantsInfoMenuTheme is removed

    Other changes:

    • Added StreamCallType class that replaces depricated String type parameter
    • Exapanded CallStats class with more structured WebRTC statistics as stats field
    • Changed raw statistics in CallStats to be of a Map<Stirng, dynamic> type
    • Added publisherStats, subsciberStats and latencyHistory to the CallState that hold some of the processed statistcs

    Bug fixes

    • Fixes incoming call behavior when both CallKit and Stream incoming screen component is used
    • Fixes the issue on Android that caused missed call notification when ringing with reused call id
    Open source →

Every package, every release, already written down.

The archive is open and free. Watching your own project is what we are building next.

Browse the archive