The format is based on Keep a Changelog.
- Improved the flow of joining a call #747
- Fix an issue causing audio/video misalignment with the server. #772
- Fix an issue causing the speaker to mute when video was off. #771
April 22, 2025
- Countdown timer and waiting participants info to the livestream player #754
- EventPublisher for
Call
objects. #759 - You can now access the
custom-data
attached on a Call object you received as incoming. #766
CallViewModel.callingState
transition to.idle
just before moving to.inCall
after the user has accepted the call. #759AudioSession
mode wasn't configured correctly for audio-only calls. #762- Updated WebRTC version to 125.6422.070 #760
- Picture-in-Picture improved UI and stability fixes. #724
- Sound resources weren't loaded correctly when the SDK was linked via SPM. #757
- Redefined the priorities by which dashboard audio settings will be applied. #758
April 07, 2025
- Updated WebRTC version to 125.6422.066 #748
- CallKit should only handle the CallAccepted events that match the userId of the current user. #733
- During a reconnection/migration the current user will not be appearing twice any more. #731
- ParticipantsCount and AnonymousParticipantsCount weren't updating correctly. #736
- Fast reconnection flow was unable to recover subscriber connections. #741
- CallSettings weren't set correctly (either when you were passing manually or from dashboard) when a call was joined without setting the create flag to
true
. #745 - Resolves a potential issue that was could cause the WebSocketClient to crash when deallocating. #746
March 27, 2025
- SPM dependency for SwiftProtobuf was outdated and sometimes Xcode couldn't fetch the latest required version. #730
March 25, 2025
- Fix an issue that was keeping the Picture-in-Picture active while the app was in the foreground #723
- Update WebRTC to resolve a crash on HangUp #727
March 20, 2025
- Fix an issue that was stopping NoiseCancellation from being activated #705
- Fix an issue where SetPublisher request was firing when nothing was published #706
- The VideoRendererView for the localParticipant, will flip only the front camera feed, not the back one #708
- Attempt to fix a race condition caused in the MicrophoneChecker. #718
- Better handling for blocked users #707
- Expose publicly the
StreamPictureInPictureAdapter
so it can be used outside of theCallViewModel
#711
March 06, 2025
- Support for Swift 6 #684
- Fix a race condition caused in the MicrophoneChecker. #700
February 14, 2025
- You can now configure the policy used by SDK's AudioSession.
DefaultAudioSessionPolicy
is meant to be used for active participants in a call (1:1, group calls) andOwnCapabilitiesAudioSessionPolicy
was designed to be used from call participants who don't actively participate in the call, but they may do in the future (e.g. Livestream viewers, Twitter Space listener etc)
- When a call is being created from another device than the one starting the call, if you don't provide any members, the SDK will get the information from the backend #660
- The
OutgoingCallView
provided by the defaultViewFactory
implementation won't show the current user in the ringing member bubbles #660
- The provided
CallControls
andCallTopView
component will now respect user's capabilities in order to show/hide the video, audio and toggleCamerat buttons. #661 #666
January 31, 2025
- You can now override the default
UserAvatar
, that is used across various SDK components, by using overriding the newmakeUserAvatar
method on yourViewFactory
implementation. #644
- Fix an issue that was causing the video capturer to no be cleaned up when the call was ended, causing the camera access system indicator to remain on while the
CallEnded
screen is visible. #636 - Fix an issue which was not dismissing incoming call screen if the call was accepted on another device. #640
January 14, 2025
- CallKit availability policies allows you to control wether
Callkit
should be enabled/disabled based on different rules #611 - Support for setting a ringtone for CallKit calls #628
- Codec negotiation during calls (#606)(#606)
- When moving to background/foreground while your video is active, if the device doesn't support AVCaptureSession.isMultitaskingCameraAccessSupported the SDK will mute/unmute the track to ensure that other participants have some feedback from your track. #633
- By observing the
CallKitPushNotificationAdapter.deviceToken
you will be notified with an emptydeviceToken
value, once the object unregister push notifications. #608 - When a call you receive a ringing while the app isn't running (and the screen is locked), websocket connection wasn't recovered. #600
- Sorting order on Fullscreen Layout and Picture-in-Picture wasn't respecting dominant speaker change. #613
November 12, 2024
- When joining one call after another, the last frame of the previous call was flashing for a split second in the new call #596
November 06, 2024
- You can now provide the incoming video quality setting for some or all participants #571
- You can now set the time a user can remain in the call - after their connection disrupted - while waiting for their network connection to recover #573
- You can now provide the preferred Video stream codec to use #583
- Sync microphone mute state between the SDK and CallKit #590
- Toggling the speaker during a call wasn't always working. #585
- In some cases when joining a call setup wasn't completed correctly which lead in issues during the call (e.g. missing video tracks or mute state not updating). #586
October 08, 2024
September 27, 2024
- You can now pass your customData when initializing a
CallViewModel
#530
- Updated the default sorting for Participants during a call to minimize the movement of already visible tiles #515
- Breaking The
StreamDeviceOrientation
values now are.portrait(isUpsideDown: Bool)
&.landscape(isLeft: Bool)
. #534
- An
MissingPermissions
error was thrown when creating aStreamVideo
with anonymous user type. #525
August 29, 2024
- Participants (regular and anonymous) count, can be accessed - before or after joining a call - from the
Call.state.participantCount
&Call.state.anonymousParticipantCount
respectively. #496 - You can now provide the
CallSettings
when you start a ringing call #497
- The following
Call
APIs have been now marked as async to provide better observability.func focus(at point: CGPoint)
func addCapturePhotoOutput(_ capturePhotoOutput: AVCapturePhotoOutput)
func removeCapturePhotoOutput(_ capturePhotoOutput: AVCapturePhotoOutput)
func addVideoOutput(_ videoOutput: AVCaptureVideoDataOutput)
func removeVideoOutput(_ videoOutput: AVCaptureVideoDataOutput)
func zoom(by factor: CGFloat)
July 19, 2024
- Support for custom participant sorting in the Call object. #438
- Ability to join call in advance with joinAheadTimeSeconds parameter. #446
- Missed calls support #449
- IncomingCallViewModel has been simplified and the
hideIncomingCallScreen
property as also thestopTimer
have been removed. #449
June 17, 2024
- A new
ParticipantAutoLeavePolicy
that allows you to set when a user should automatically leave a call. #434
June 10, 2024
May 30, 2024
- In
CallKitService
you can now configure if calls support Video. Depending on the valueCallKit
will suffix either the wordAudio
(when false) orVideo
when true, next to the application's name. #420
May 28, 2024
May 27, 2024
CallKitAdapter
will dispatch voIP notification reporting to the MainActor. #411
May 22, 2024
Call
objects for the samecId
will reference the same memory instance. #404CallKitService.callEnded
now accepts the cId of the call to end. #406CallKitService.State
has been deprecated. #406
- Video tracks for anonymous users not displaying
May 17, 2024
- An
originalName
property on theUser
that will hold the name provided when initialized. [#391](#391
May 10, 2024
- A viewModifier that allows you to present a view whenever a call ends. #382
May 01, 2024
- The return type of
call.get()
is now the API typeGetCallResponse
which encapsulates the previousCallResponse
under thecall
property. #335 - Remove Nuke dependency from the SwiftUI SDK. #340
members
type changed fromMemberRequest
toMember
instartCall
andenterLobby
inCallViewModel
. #368
- The SDK now provides a CallKit integration out of the box. #334
- Infrastructure required for NoiseCancellation support #353
- User
call_display_name
property from VoIP push notifications, whenever is available #361
- An issue where VoIP push notifications for ended calls, were received when the user connects #336
March 19, 2024
- CallView positioning when placed inside a UIKit container. #329
March 15, 2024
- Stats reporting. #313
March 05, 2024
- New API that allows adding/removing capturePhotoOutput, videoOutput on the local participant's AVCaptureSession. #301
- New API that allows zooming the local participant's camera. #301
- VideoFilters for blurring or setting an image as background. #309
- Updated Web Socket reconnection logic. #314
February 15, 2024
- The following API changes occurred as part of the redesign. #269 & #270
OutgoingCallView
now accepts an additionalcallTopView
parameter to align with the updated design.CallParticipantsInfoView
and theViewFactory.makeParticipantsListView
method aren't accept theavailableFrame
anymore.ParticipantsGridLayout
orientation
parameter isn't required anymore.- The
onRotate
ViewModifier has been removed. You can use theInjectedValues[\.orientationAdapter]
which is an ObservableObject that can provide information regarding device orientation.
December 08, 2023
- Nuke dependency is no longer exposed. If you were using this dependency we were exposing, you would need to import it manually. This is due to our newest addition supporting Module Stable XCFramework, see more below in the "Added" section. If you encounter any SPM-related problems, be sure to reset the package caches.
- Add support for pre-built XCFrameworks
- Fast reconnection
- New redesigned UI components. #236
- You can now focus on a desired point in the local video stream. #221
- The following API changes occurred as part of the redesign. #221
CornerDragableView
has been renamed toCornerDraggableView
and initializer changed.LocalParticipantViewModifier
&VideoCallParticipantModifier
now accept a few parameters that allow you to further control their presentation.ScreenSharingView
now accepts aisZoomEnabled
parameter to control if the the view will be zoom-able.LocalVideoView
now accepts aavailableFrame
parameter.
October 16, 2023
- Video tracks remain disabled when they become visible #191
October 11, 2023
- Picture-in-Picture support
- Livestream Player
- Call stats report
- Factory method for creating
LocalParticipantViewModifier
availableSize
has been replaced byavailableFrame
in most Views.
- Current user overlay view size when camera is off
- Thermal state improvements
- Benchmark tests for up to 1000 users
August 25, 2023
- Screensharing from iOS devices
- Remote pinning of users
- Add XCPrivacy manifest
- Custom Audio Filters
- Factory method for creating
VideoCallParticipantView
VideoCallParticipantView
init method
- Stability improvements
- CPU usage improvements
July 18, 2023
- SDK version info sent in all requests
- Call participants shown in the lobby view
- Support for setting default audio device
- Improved test coverage
July 07, 2023
- StreamVideo iOS SDK π