[1.3.10] - 2026.09.23
Changed
- The SRTC dependency is bumped from 1.4.6 to 1.4.7. That release contains only fixes: an unknown
device_typeno longer makes the entire member list fail to parse, and subscriptions rejected one by one by the SFU no longer fail silently (retries and registration rollback were added). For details, see the SRTC changelog.
This release has no feature changes in the meeting layer itself; the version number is bumped only to stay paired with SRTC 1.4.7. There are no public API changes and no breaking changes, so integration code for 1.3.9 can be upgraded directly. The minimum OS versions are unchanged (iOS 16 / macOS 14).For projects that use iOS full-screen sharing, change the extra
srtc-swift-sdk dependency of the extension target to exact: "1.4.7" so it matches the version pinned in this package’s manifest; otherwise dependency resolution fails outright.[1.3.9] - 2026.09.23
Fixed
- After the host forcibly stopped sharing, the sharing state was reported again:
admin_stop_room_sharepreviously stopped only the local publishing and didn’t clear the room’s sharing state (share_state/share_uid). The leftover state was then re-evaluated as “someone is sharing” by track or property refreshes arriving afterward, so sharing reappeared right after being forcibly stopped, leaving a share in the room that couldn’t be stopped. Forcibly stopping sharing now also settles the room state. - A fourth convergence path was added for the screen sharing start event: the three-path convergence in 1.3.8 still missed the timing where “the user snapshot refresh (
freshUserInfo) arrives before the other three paths.” In that case, the snapshot silently changedshareStatetoscreen, and the deduplication condition shared by all paths then blocked the later path as well, so the event was never sent, and others in the room didn’t receive the share and the video didn’t show. Now the snapshot refresh also reports the event whenshareStatejumps; whichever of the four paths completes last triggers it. This jump check applies only to remote members; local sharing is still reported explicitly by the publish and stop flows. - After the sharer exited the meeting abruptly, the meeting stayed permanently in “someone is sharing”: when the sharer’s process was killed or lost network, there was no
user_stop_room_share, and no path previously settled the state, so the video stayed stuck on screen. Now, when a member exits (userDidLeavefires), the room’s sharing state is settled and a stop event is reported—“the person has exited” isn’t a transient state, so it’s more reliable than a track disappearing.
Changed
- The SRTC dependency stays at 1.4.6. This release contains only meeting layer changes, with no public API changes.
This release contains only fixes, with no breaking changes, so integration code for 1.3.8 can be upgraded directly. For projects that use iOS full-screen sharing, the extra
srtc-swift-sdk dependency of the extension target remains exact: "1.4.6"; no change is needed this time.One case is still not covered: “the person is still in the meeting, and only the Broadcast Extension has died on its own.” In that case there is neither a user_stop_room_share nor a member-left event. This scenario must be handled on the sharer’s own side; don’t use the disappearance of the screen track as the stop signal—a track can also disappear just because of network jitter, which would wrongly remove the video.[1.3.8] - 2026.09.23
Added
updateLocalCameraView(_:): moves the local camera preview’s renderer to another view without interrupting capture. During layout changes such as grid rebuilds or switching between the first screen and the video wall, UIKit hosts destroy and rebuild the view that holds the preview; previously you could only turn the camera off and on again, and now you can just move it.
Fixed
- Calling
requestOpenCamera(view:)again while the camera was already on ignored the newly passed preview view: the branch that reuses the existing track previously returned immediately without attaching the new view, and the renderer stayed on the old view that had already been removed from the view hierarchy, so the local video was black (everything was normal for the other side). The reuse branch now moves the renderer to the newly passed view. - Members already in the meeting didn’t receive the screen sharing start event: the start signal for screen sharing converges asynchronously—the room’s sharing state (the
user_start_room_sharebroadcast andshare_state/share_uidin the channel properties) and thescreentrack each arrive through their own path. Previously the two paths were evaluated separately, and the property refresh path wasn’t covered: when the broadcast arrived first, the track hadn’t been registered yet; when the track arrived first, the room state hadn’t been refreshed yet. Both sides gave up, and when the property refresh arrived later, nothing re-evaluated it. As a result, members already in the meeting never receivedROOM_SHARE_START, while exiting and re-entering showed the share (re-entering goes through a different notification path for existing shares). The logic now uses three-path convergence: whichever path completes last triggers the event, and the deduplication logic is unchanged.
Changed
- The SRTC dependency is upgraded to 1.4.6 (including two fixes for camera orientation and for landscape screen sharing video being rotated 180°; for details, see the audio and video SDK’s Changelog).
This release contains only new APIs and fixes, with no breaking changes, so integration code for 1.3.7 can be upgraded directly.
[1.3.7] - 2026.09.18
Added
- Meeting title change event: adds the
SMeetingDelegatecallbackmeeting(_:roomTitleDidChange:),RoomTitleChangeEventData(title/previousTitle), andRoomEventType.roomTitleChanged. It’s triggered both when the host renames the main meeting and when a sub-meeting is renamed (adminUpdateSubMeetingTitle), and corresponds toonRoomMeetingTitleChanged:in the oldMeetingKit. - Remote video receive timeout / recovery: adds the
meeting(_:didChangeReceiveStreamStatus:)callback andRoomEventType.receiveStreamStatusChanged, which determine per track whether a video tile has stopped producing frames, for toggling a “loading” indicator. The payload directly reuses the audio and video SDK’sReceiveStreamStatuswithout wrapping it in a meeting-specific structure. It corresponds toonReceiveStreamStatusChange:streamType:status:in the oldMeetingKit. - Enabling and disabling the audio unit: adds
SMeetingEngine.setAudioModuleEnabled(_:)andisAudioModuleEnabled(iOS), thin wrappers around the APIs of the same name on the audio and video SDK’sAudioRouteSession, for purely local playback scenarios such as recorded and live-streamed classes.
Changed
- The SRTC dependency is upgraded to 1.4.5.
The payload of
roomTitleDidChange has no opUid: renaming a meeting has no dedicated broadcast command, and the event is derived by comparing titles after the channel properties are updated; the properties contain only the result, not the operator. It will be included once the backend adds a corresponding broadcast command.All three protocol methods have default empty implementations, and there are no breaking changes, so integration code for 1.3.6 can be upgraded directly.Don’t use connectionQualityDidChange in place of the receive stream status event: the former is the quality tier of the whole connection, not stalling of a particular video; for details, see the audio and video SDK’s Changelog.[1.3.6] - 2026.09.17
Added
MeetingUserInfoadds thedrawDisabledfield, so you can read a member’s drawing-disabled state directly.- Adds the
SMeetingDelegatecallbackmeeting(_:userDrawDisabledDidChange:)andUserDrawDisabledChangeEventData, triggered when the host changes a member’s drawing permission; see Host controls.
Changed
- Previously there was only the setter
adminUpdateUserDrawDisabled(targetId:drawDisable:), with no way to read the state and no change event, so drawing permissions couldn’t be fully implemented in your app; this release fills the gap. The protocol method has a default empty implementation, and there are no breaking changes, so integration code for 1.3.5 can be upgraded directly. - The SRTC dependency stays at 1.4.4.
[1.3.5] - 2026.09.15
Changed
- View capture sharing now carries microphone audio when publishing through Wangsu (CDN); the
messageOnlymode of the sharing API is removed. Depends on SRTC 1.4.4.
[1.3.4] - 2026.09.15
Added
startViewCaptureShare(): creates and publishes a custom video track with thescreendescription; the caller can render a view into aCVPixelBufferand keep pushing frames throughLocalVideoTrack.pushFrameon the returned track.stopViewCaptureShare(): stops the view capture video track without turning off or unpublishing the microphone. For usage and limitations, see the Media control API.
Changed
- The SRTC dependency stays at 1.4.3, and existing integration code is compatible; to use the new APIs, upgrade SMeeting to 1.3.4.
[1.3.3] - 2026.09.15
Changed
- The SRTC dependency is upgraded to 1.4.3: Wangsu (CDN) screen sharing streams now carry an audio track for cloud recording, and an issue where the microphone track handle was lost after unpublishing audio failed has been fixed; for details, see the audio and video SDK’s Changelog. SMeeting itself has no changes in this release and no public API changes, so integration code for 1.3.2 can be upgraded directly.
The extra dependency of the iOS full-screen sharing extension target must be upgraded to 1.4.3 as well:
.package(url: "https://github.com/seastart/srtc-swift-sdk.git", exact: "1.4.3"). It must match the version pinned in this SDK’s manifest; otherwise dependency resolution conflicts. See Integration.[1.3.2] - 2026.09.12
Added
requestShare(source:preset:view:messageOnly:byAdmin:adminUid:)adds two parameters with default values,excludedWindowIdsandexcludesCurrentApplication, which are passed through to the audio and video layer so you can cut out some of your own windows when sharing the entire screen on macOS. Existing call sites remain source compatible.
Changed
- The SRTC dependency is upgraded to 1.4.2: full-screen sharing on macOS now includes your app’s own windows by default (previously the entire process was excluded), and an issue where “the microphone was sent along when sharing only screen audio” has been fixed; for details, see the audio and video SDK’s Changelog.
The extra dependency of the iOS full-screen sharing extension target must be upgraded to 1.4.2 as well:
.package(url: "https://github.com/seastart/srtc-swift-sdk.git", exact: "1.4.2"). It must match the version pinned in this SDK’s manifest; otherwise dependency resolution conflicts. See Integration.[1.3.1] - 2026.09.11
Changed
- The SRTC dependency is upgraded to 1.4.1: fixes an issue where active speaker events didn’t fire in Wangsu (CDN) channels. If a meeting uses CDN media streaming,
meeting(_:activeSpeakersDidChange:)ofSMeetingDelegatenow receives events as well (previously only SeaStart channels had data); for details, see the audio and video SDK’s Changelog.
The extra dependency of the iOS full-screen sharing extension target must be upgraded to 1.4.1 as well:
.package(url: "https://github.com/seastart/srtc-swift-sdk.git", exact: "1.4.1"). It must match the version pinned in this SDK’s manifest; otherwise dependency resolution conflicts. See Integration.[1.3.0] - 2026.09.09
Added
- Virtual background:
SMeetingEngineaddsinstallVirtualBackground(modelPath:),uninstallVirtualBackground(),enableVirtualBackground(_:),isVirtualBackgroundEnabled,setVirtualBackgroundBlur(level:),setVirtualBackgroundImage(_:),setVirtualBackgroundInferenceInterval(_:),setVirtualBackgroundMaskSync(_:), and the instance accessorvirtualBackground(read-only diagnostic state and dropped-frame counts). Installing it doesn’t require a license key; for details, see Virtual background;- It’s a device-level configuration, so a setting applies to all meetings at once; you don’t need to reapply it in your app after switching cameras in a meeting, turning the camera off and on again, or reconnecting after a disconnection.
Changed
- The SRTC dependency is upgraded to 1.4.0 (virtual background,
DegradationPreferencenow actually takes effect, presets changed tomaintainResolution, and an API for the macOS system default output device); for details, see the audio and video SDK’s Changelog.
The extra dependency of the iOS full-screen sharing extension target must be upgraded to 1.4.0 as well:
.package(url: "https://github.com/seastart/srtc-swift-sdk.git", exact: "1.4.0"). It must match the version pinned in this SDK’s manifest; otherwise dependency resolution conflicts. See Integration.[1.2.1] - 2026.09.07
Fixed
- Fixed how remote screen sharing state is determined: a member’s
shareStatenow jumps to sharing only when both “the room’s sharing state (share_state/share_uid) + an existing screen track” are satisfied, instead of relying on the track’s presence alone. This removes false positives when the track arrives before the room state, and false “sharing has stopped” reports when the room state is unchanged but the track briefly disappears. - Whiteboard sharing (
whiteBoard) has no media track and is still derived entirely from the room props; its behavior is unchanged.
Changed
- The SRTC dependency is upgraded to 1.3.2 (including a crash fix for mqtt
contentbeingnull, andDeviceType.harmonyOS).
[1.2.0] - 2026.08.20
Added
- iOS full-screen screen sharing: adds
prepareBroadcastShare(appGroup:preset:),publishBroadcastShare(view:byAdmin:adminUid:),stopBroadcastListening(),requestShare(broadcastAppGroup:...), and the read-only propertyisShareBroadcastActive, which let you share the entire system screen (previously iOS could capture only your app’s own content). It requires integrating an additional Broadcast Upload Extension; for details, see Screen sharing; - Adds the sharing frame events
meeting(_:shareBroadcastDidStart:)andmeeting(_:shareBroadcastDidFinish:), which distinguish “the listener is attached” from “there is actually video,” with the data typesShareBroadcastStartEventDataandShareBroadcastStopEventData; - iOS audio routing: adds
defaultAudioRoute(persistent default),setAudioRoute(_:)andclearAudioRouteOverride()(temporary switching), and read-only state such ascurrentAudioRoute,effectiveAudioRouteTarget,audioRouteOverride,isExternalAudioRouteActive,isAudioSessionActive,audioCallState, andavailableAudioRoutes(); for details, see Audio routing; - Adds the audio routing events
meeting(_:audioRouteDidChange:)andmeetingAudioRouteDidRecoverFromInterruption(_:), with the data typeAudioRouteChangeEventData; - Adds the call quality events
meeting(_:didReceiveQualityReport:),meeting(_:connectionQualityDidChange:),meeting(_:activeSpeakersDidChange:), andmeeting(_:didSwitchLayer:), whose data structures directly reuse SRTC’sQualityReport,ConnectionQualityChange,ActiveSpeakersSnapshot, andLayerSwitchedInfo.
Changed
- The
SRTCdependency is upgraded to1.3.0(previously1.1.0), bringing public API changes such as error enum cases renamed frommqtt*tosignaling*; for details, see the audio and video SDK’s changelog; roomShareDidStartfor screen sharing is now based on the RTC media track: it’s reported as soon as the remote screen track arrives, without also requiring the room’s sharing state to be in place.
Fixed
- Fixed an issue where, after a remote member started sharing, other clients didn’t receive
roomShareDidStartand the shared video didn’t show (when the room state and the media track arrived in an unpredictable order, the two reporting paths blocked each other); - Fixed an issue where
roomShareDidStopwasn’t reported when the sharer’s process was killed, the network disconnected, etc., leaving the meeting permanently in “someone is sharing”; - Fixed an issue where whiteboard sharing reported
roomShareDidStarttwice when the room state arrived first; exitRoom()now leaves exactly the one RTC channel that belongs to the meeting, and no longer affects channels the caller joined separately throughmeeting.srtc.
The iOS full-screen sharing extension target needs one extra dependency declared.
SRTCBroadcastKit is a product of the audio and video layer’s srtc-swift-sdk, and SwiftPM doesn’t allow using products of transitive dependencies, so you need to add another .package(url: "https://github.com/seastart/srtc-swift-sdk.git", exact: "1.3.0") to your project, and add it only to the extension target; see Integration.[1.1.0] - 2026.08.02
Changed
- The
SRTCdependency is upgraded to1.1.0, bringing public API changes such as underlying WebRTC types no longer appearing; for details, see the audio and video SDK’s changelog.
[1.0.0] - 2026.08.02
Added
- First official release, distributed via Swift Package Manager as a precompiled XCFramework containing three platform slices: iOS device, iOS simulator, and macOS;
- The SDK’s main entry class is
SMeetingEngine.