Skip to main content
Version: 3.x.x

Release Notes - iOS

This page will keep you updated with all the releases of iOS SDK.

v3.2.0

Release Date: Aug 17th, 2026

What's New:

  • Agent turn metricsParticipantEventListener.onAgentMetrics(_:forParticipant:) is called after every turn of the conversation and gives you latency and speech, plus providers and systemInstructions on the first turn. It comes with an empty default, so your existing listeners keep working as they are.

    func onAgentMetrics(_ metrics: [String: Any], forParticipant participant: Participant) {
    print("\(participant.displayName): \(metrics)")
    }
  • Limited signalling reconnect attempts — 7 tries, waiting 1 second to 5 seconds between them. If they all fail, the meeting ends and onMeetingLeft(reason:) gives you LeaveReason.websocketConnectionAttemptsExhausted (1102).

Change Log:

  • leave() now gives you LeaveReason.manualLeaveCalled (1101), instead of general meeting left reason as LeaveReason.websocketDisconnected (1001).
  • leave() after the meeting has ended → ERROR_ALREADY_IN_REQUESTED_STATE, and the message names the method you called. Before the meeting is joined — including while you are waiting to be let in → ERROR_ACTION_PERFORMED_BEFORE_MEETING_JOINED. You can still call leave() at any time while the SDK is reconnecting.

v3.1.1

Release Date: Aug 10th, 2026

What's New:

  • Methods called before you join, or while the SDK is reconnecting, are now rejected and reported through onError(error:) — in Meeting, Participant, MediaStream, PubSub, RealtimeStore and AICharacter.
SituationErrorCode
Before the meeting is joinedERROR_ACTION_PERFORMED_BEFORE_MEETING_JOINED3035
While reconnectingERROR_MEETING_RECONNECTING3065
leave() after the meeting is leftERROR_ALREADY_IN_REQUESTED_STATE3054
  • 3035 names the method you called: "You must join the meeting before calling the enableWebcam() method."

    • leave() works while reconnecting and while you are waiting to be let in.
    • PubSub and RealtimeStore still throw instead — using the new meetingNotJoined/meetingReconnecting cases.

Bug Fixes:

  • Mute and camera-off now stay that way through a reconnect — earlier the user came back unmuted.
  • The three stats accessors no longer give old data during a reconnect, and stay quiet instead of reporting once on every check.

v3.1.0

Release Date: Aug 5th, 2026

Change Log:

Consistent tracks across events: Custom track settings now persist for the lifetime of the meeting.

  • Pass encoderConfig, multiStream, facingMode, bitrateMode, maxLayer or noiseConfig once — later enableWebcam() / unmuteMic() calls reuse them automatically, until you pass the new configuration.
  • Settings survive mode changes and reconnects, so the camera comes back exactly as configured, until you pass the new configuration.

v3.0.0

Release Date: 25th July 2026

Major release — contains breaking changes. See the Migration Guide.

Change Log:

  • New PubSub: Rebuilt for higher throughput and better backpressure handling. Messaging now runs on a background queue, so real-time traffic never blocks your UI thread.
    • onBatchReceived delivers live messages in batches for high-throughput topics.
    • Backpressure control through PubSubSubscribeOptionsrealtimeOverflow (.queue | .drop), maxQueue, newMessageLimit, and oldMessageLimit.
    • onMessageDrop reports when messages were shed because the device could not keep up.
    • onOldMessagesReceived streams persisted messages in batches, with info.isLast marking the final one.
    • sendOnly on PubSubMessage targets specific participant IDs, so you can send a message to just one person.
  • Typed errors on PubSub: PubSub methods are async throws and fail with the PubSubError enum, so failures surface at the call site instead of only through a global handler. switch over cases such as .meetingNotJoined, .meetingReconnecting, .alreadySubscribed, or .publishFailed(reason) to handle each one meaningfully.
  • Expanded error catalog: Added PubSub error codes (40874089), a meeting reconnecting state (3065), and operation-specific failure codes. VideoSDKError also gained a type property that returns the constant name — for example "PUBSUB_SUBSCRIBE_FAILED" — which makes it easier to correlate logs across platforms.
  • Tell a room switch apart from a normal join: The new onMeetingJoined(switchMeetingId:) overload receives the ID of the meeting you switched to when the join came from switchTo, and nil on a normal join.
  • Simpler codec change callback: onCodecChanged(info:) replaces five positional arguments with a single CodecChangeInfo struct (currentCodec, previousCodec, unsupportedCodec, kind, causedBy).
  • Livestream layout options: startLivestream(outputs:config:) accepts an optional LivestreamConfig for layout, theme, and recording options.

Breaking Changes:

  • subscribe() and unsubscribe() are now async throws — call them with try await and handle PubSubError. Errors thrown by publish() are now PubSubError values as well.
  • Removed getMessagesForTopic(_:) — previously published messages are delivered to onOldMessagesReceived(_:info:) instead of being read back from a local cache.
  • A listener may hold at most one subscription per topic. Subscribing the same listener twice now throws .alreadySubscribed; call unsubscribe() first, or use a second listener.
  • onCodecChanged now receives a single CodecChangeInfo struct instead of five positional arguments.

onMeetingJoined() is not a breaking change — the existing no-argument callback still fires on both normal joins and room switches, so listeners written against v2.x keep working. Implement onMeetingJoined(switchMeetingId:) only when you need to tell the two apart; when both are implemented, only the overload is called.

Docs: Migration Guide | Chat using PubSub | PubSubError | VideoSDKError


v2.8.2

Release Date: June 23, 2026

Change Log:

  • When a meeting fails to join during join() method, the SDK now emits a structured onError event with the corresponding code and message, transitions to the FAILED state, and aborts the join.

v2.8.1

Release Date: June 13, 2026

What's New:

  • Expanded error reporting — Added new VideoSDKError codes (4019–4030, 4050, 4051, 3008) for clearer, more actionable error handling.

Fixes & Improvements:

  • More accurate stats reporting — Improved statsData handling and submission for audio, video, and screen-share tracks, with correct peerId mapping and an updated data structure for reliable dashboard reporting.
  • Stable codec & bitrate stats — Fixed an issue where the reported video codec value fluctuated after a codec switch. Video codec and bitrate (kbps) statistics are now reported reliably.
  • Renamed the error case ERROR_VIDEO_CODEC_NOT_SUPPORTED to ERROR_VIDEO_PRODUCE_CODEC_NOT_SUPPORTED (error code 3008 unchanged).

v2.8.0

Release Date: May 19, 2026

What's New:

  • New video codecs: VP9 and AV1 are now supported alongside VP8 and H.264. If the chosen codec isn't available on the device, the SDK falls back to VP8 and emits an error.
  • Custom audio presets: CustomAudioTrackConfig is now public and can be passed via the new encoderConfig parameter.
  • New error codes:
CodeCaseBehavior
3008ERROR_VIDEO_CODEC_NOT_SUPPORTEDThe provided video codec is not supported by the device. Falling back to VP8.
3009ERROR_MULTISTREAM_NOT_SUPPORTEDMultistream is not supported for provided video codec.

v2.7.1

Release Date: 2nd April, 2026

Improvements

  • Stability

    • Fixed rare crashes during screen sharing, participant pin/unpin, and media handling
    • Resolved edge cases in socket connection and video processing
  • Memory Optimisations

    • Reduced memory usage for long-running meetings
    • Improved cleanup when participants leave or meetings end
  • Thread Safety

    • Improved reliability of PubSub, RealtimeStore, and stream operations under high concurrency
    • Enhanced stability during rapid participant join/leave
  • Performance

    • Optimised internal stats collection for large meetings

v2.7.0

Release Date: 18th March, 2026

New Features

1. Agent Participant Support

  • Introduced AgentParticipant, a dedicated participant type for AI agents within a room.

    • Agents are automatically identified using the isAgent property when they join.

    Docs: AgentParticipant

2. Agent Lifecycle and Transcription Events

  • Added AgentState enum (IDLE, LISTENING, THINKING, SPEAKING) to represent the agent lifecycle.

    Docs: AgentState

  • Introduced event listeners for agent updates:


v2.6.0

Release Date: 19th Feb, 2026

Change Log :

1. Configurable Log Level: Added setLogLevel method in VideoSDK to give developers control over log verbosity. This helps streamline debugging during development and optimize log output for production environments.

2. Media Status Updates: Introduced onMediaStatusChanged callback to receive real-time updates regarding a participant's media status (e.g., audio/video state changes). This enables better synchronization of UI and participant state handling.

3. Presenter Change Notifications: Added onPresenterChanged callback to notify when the active presenter in the meeting changes. This allows applications to dynamically update presenter-specific UI and controls.


v2.5.4

  • Minor bug fixes and improvements

v2.5.2

  • Bug fixes and improvements

    • Improved handling of reconnections and request management
    • Improved HLS playback reliability

v2.5.0

Release Date : 12th January 2026

Change Log :

  • Updates:

    • Added a FAILED case to the MeetingState enum to explicitly represent unrecoverable meeting initialization or runtime failures.
    • Introduced a consolidated removeAllEventListener API to allow bulk deregistration of all event listeners from Meeting, Participant, and AICharacter instances, reducing memory-leak risks and simplifying lifecycle management.
  • Bug Fixes & Enhancements

    • Refactored the internal ChangeMode workflow to improve state consistency, reliability, and overall SDK robustness.
    • Enhanced camera track lifecycle management to ensure deterministic creation and disposal of tracks based on the MeetingMode provided during initMeeting.
    • Fixed an issue where the meeting mode was not correctly reapplied after a reconnection; the SDK now resumes using the latest active meeting mode when a user rejoins.
    • Resolved inconsistencies in media state restoration by ensuring the most recent microphone and camera states are correctly reinstated after reconnection or app lifecycle transitions (background to foreground).

v2.4.0

Release Date : 3rd December 2025

Change Log :

  1. New Features & Enhancements
  • Quality Limitation Event added

    • Enables detection of bandwidth, network congestion, or CPU limitations during a meeting, helping monitor local call quality in real time.
  • Stream State Change Method added

    • Allows detection of changes in a stream’s state, such as freeze, stuck, or recovery events, for better monitoring of remote participants’ stream health.
  • Leave Reason Support

    • Updated onMeetingLeft and onParticipantLeft callbacks with reason parameter. This helps developers understand why a participant or the meeting ended.

v2.3.0

Release Date : 20th November 2025

Change Log :

  1. This release introduces advanced video track optimisation features, enabling greater flexibility and control over quality and bandwidth. Below is the new parameter added to createCameraVideoTrack().
    • MaxLayer
      • Added the MaxLayer parameter to specify the maximum number of simulcast layers published for a video track.
      • Developers can now select from three modes based on their requirements:
        • MAX_LAYER_2
        • MAX_LAYER_3 (default)
  1. Added error throwing mechanism for handling timeout from the socket in pubsub's publish method

v2.2.9

Release Date : 18th November 2025

Change Log :

  1. This release introduces advanced video track optimization features, enabling greater flexibility and control over quality and bandwidth. Below are the new parameters added to createCameraVideoTrack().
    • BitrateMode
      • Added the BitrateMode parameter to manage video quality and bandwidth usage easily.
      • Developers can now select from three modes based on their requirements:
        • BANDWIDTH_OPTIMIZED
        • BALANCED (default)
        • HIGH_QUALITY

v2.2.7

Release Date : 4th November 2025

Change Log :

  1. Realtime Store – The Realtime Store allows you to store, update, retrieve, and observe custom key-value data within a meeting — in real time. It acts as a shared data layer across all connected participants, ensuring synchronized states throughout the session.

Methods:

 - set(key:value:)
- get(key:)
- observe(key:forListener:)
- stopObserving(key:forListener:)

v2.2.6

Release Date : 18th August 2025

Change Log :

  1. Multitasking Camera Access – Enabled multitasking camera access to allow local background camera during Picture-in-Picture(PiP) Mode.(Only supported on iOS 16+).

v2.2.5

Release Date : 20th June 2025

Change Log :

  1. Bug Fix – Meeting connection issue when using proxy.

v2.2.4

Release Date : 28th May 2025

Change Log :

  1. Fast Channel Switching – Renamed method SwitchToMeeting to switchTo for better clarity and consistency in the Fast Channel Switching feature.

Docs:

  1. Fast Channel Switching

v2.2.3

Release Date : 17th May 2025

Change Log :

  1. Fast Channel Switching – Fast Channel Switching feature enables instant transitions between live streams with minimal latency.

  2. Media Relay Support – Introducing Relay Media, enabling hosts to share their media (audio, video, screen) with other live streams. Perfect for creating engaging "PK battles" and collaborative broadcasts.

  3. Adaptive Subscriptions

// Enable adaptive subscriptions
meeting?.enableAdaptiveSubscriptions();

// Disable adaptive subscriptions
meeting?.disableAdaptiveSubscriptions();

Docs:

  1. Fast Channel Switching

  2. Media Relay

Benefits of AdabtiveSubscriptionManager

  • Reduced bandwidth consumption for large meetings
  • Smart prioritization of active speakers
  • Improved call quality for users with network constraints

For detailed documentation, please visit our Scalability Guide for Large Participant Meetings.


v2.2.2

Release Date: 11th April 2025

Change Log :

1. End-to-End Encryption (E2EE) Support:

  • Introduced End-to-End Encryption (E2EE) support to ensure secure media transmission, where media streams are fully encrypted between participants without any server-side access.

2. New Methods in Meeting Class:

Two new methods have been added to provide better control over media streams:

  • pauseAllStreams(kind: String): Pauses all media streams (audio, video, and screen sharing), or a specific type if specified.
  • resumeAllStreams(kind: String): Resumes all paused media streams or a specific type if specified.

Docs:

Associated Event Listeners:

  • onPausedAllStreams
  • onResumedAllStreams

Docs:

3. Updates to External Call Handling:

We have refined the external call event system to provide more granular insights and control:

  • Removed:
    • onExternalCallStarted
  • Added:
    • onExternalCallRinging
    • onExternalCallAnswered
    • onExternalCallRejected
    • onExternalCallHangup

Docs: onExternalCall

4. Streamlined Meeting Connection Flow:

To simplify and standardize connection state handling, we have removed the following states:

  • CLOSING
  • CLOSED
  • CANCELLED

All disconnection scenarios are now consolidated under the DISCONNECTED state, providing a more consistent and predictable connection lifecycle.


v2.2.1

Release Date : 28th Feb 2025

Change Log :

  • External Call Detection Feature: Added support for the onExternalCallStarted() event inside MeetingEventListener, which notifies about incoming and outgoing calls detected during an ongoing meeting.

Docs: onExternalCallStarted


v2.2.0

Release Date : 21st Jan 2025

Change Log :

  • Deprecated Modes: Replaced CONFERENCE with SEND_AND_RECV and VIEWER with SIGNALLING_ONLY.
  • New Mode: Added RECV_ONLY for live streaming, allowing participants to receive media only.
  • Role Switching: Enabled seamless role switching between SEND_AND_RECV (host) and RECV_ONLY (audience) using meeting.changeMode().
  • Enhanced Media Processing: Optimized encoder configurations for better video quality and performance, with improved camera and audio device management for enhanced reliability and interaction.

Docs: Quick Start for Interactive Live Streaming


v2.1.8

Release Date : 6th Nov 2024

Change Log :

Whiteboard Feature:

  • Start: meeting.startWhiteboard()onWhiteboardStarted event (returns URL)
  • Stop: meeting.stopWhiteboard()onWhiteboardStopped event
  • Use: Embed URL in iOS Webview
  • Benefit: Real-time visual collaboration in meetings

Docs: Whiteboard

Bug Fix :

  • Fixed reconnection issues and optimized memory usage

v2.1.7

Release Date : 1st Nov 2024

Bug Fix :

  • Resolved an issue causing the app to crash when joining or leaving a session.
  • Fixed a reconnection issue to ensure stable connections during session rejoining.

v2.1.5

Release Date : 8th July 2024

New Features:

Added support for Hardware Accelerated Codec (H.264) in VideoSDK.createCameraVideoTrack(). This enhance compresses video data for efficient transmission over the internet, balancing quality and bandwidth usage.


v2.1.4

Release Date : 21st June 2024

Bug Fix :

  1. Resolved a conflict between the join() method and createCameraVideoTrack() method's facingMode(front/back) property.

  2. The facingMode property now takes priority over the cameraPosition setting specified during join().


v2.1.3

Release Date : 6th June 2024

New Features:

  1. Image capture that enables capturing local participant's image using methods.
  2. Fetch and upload base64 data during the meeting.
  3. Added public protocol VideoSDKVideoProcessor for processing frames manually.
  4. Added a public class VideoSDKBackgroundProcessor that helps in seamlessly starting virtual background during the meeting.
  5. Added setVideoProcessor method for setting the processor instance for frame processing.

Docs: Video Processor

Docs: Virtual Background

Docs: Image Capture

Docs: Temporary Storage


v2.1.2

Release Date : 8th May 2024

Change Log :

  1. Introducing real-time transcription capabilities with the following methods:

    Methods:
    • startTranscription: Easily begin real-time transcription with a single method call.

      SDK Reference : startTranscription

    • stopTranscription: Stops ongoing transcription processes seamlessly when necessary.

      SDK Reference : stopTranscription

    Events:
    • onTranscriptionStateChanged: Receive updates on transcription states, including started, stopped, and failed states.

      SDK Reference : onTranscriptionStateChanged

    • onTranscriptionText: Get real-time updates of transcription text as it is generated, ensuring a responsive transcription experience.

      SDK Reference : onTranscriptionText

  2. Introducing post-meeting transcription and summary capabilities with the recording and HLS methods:

    • startRecording(): Begins recording the meeting and supports post-transcription and summary configuration.

      SDK Reference : startRecording

    • startHls(): Starts HLS streaming with options for post-transcription and summary settings.

      SDK Reference : startHls

  3. Added new error code for better debugging. Checkout the list of available error codes here

Docs: Realtime Transcription

Docs: Post Transcription & Summary


v2.1.1

Release Date : 28th April 2024

Change log :

  1. Support for Custom Audio Track added.

Bug Fix :

  1. Room stats issue fixed.

v2.1.0

Release Date : 11th April 2024

Change log :

  1. Screen share feature added into SDK.

  2. Precall-Functions added into SDK.

  3. Added Change-Mic method into SDK.


v2.0.14

Release Date : 2nd January 2024

Change log : None

Bug Fix :

  1. Video Stream Orientation Issue Fix (Firefox): Resolved an issue where the video stream orientation was incorrect, specifically for users using the Firefox browser. This fix ensures a consistent and accurate video display on Firefox.

  2. System Mic Enable Fix on Call Exit: Resolved an issue where the system microphone remained active after a user exited a call. This update ensures that the system microphone is now properly disabled upon leaving a call, safeguarding user privacy.


v2.0.13

Release Date : 25th September 2023

Change log : None

Bug Fix :

  1. Fix: HLSUrl class properties access modifier changed.

v2.0.12

Release Date : 8th September 2023

Change log :

  1. Updated startRecording with custom config support.

v2.0.11

Release Date : 2nd September 2023

Change log :

  1. Integrate Open telemetry Traces & Logs (internal-release).

v2.0.10

Release Date : 12th June 2023

Change log :

  1. Get stats integration on participant.

v2.0.9

Release Date : 5th June 2023

Change log :

  1. Custom Participant Id Support.

  2. Participant's Pin/Unpin method added.

  3. New meeting events added like WebSocket events, state changes of HLS, Meeting, Streams, etc.


v2.0.8

Release Date : 11th May 2023

Change log :

  1. Websocket events integration in meeting.

  2. Meeting events integration in meeting.

  3. SDK Error integration in meeting.

  4. Start/Stop HLS support.


v2.0.7

Release Date : 02nd May 2023

Change log :

  1. New features added of customVideoTrack and Multistream support.

v2.0.6

Release Date : 29th April 2023

Change log :

  1. Added support for custom-video-track in meeting.

v2.0.5

Release Date : 17th April 2023

Change log : None

Bug Fix :

  • SDK internal improvements.

v2.0.4

Release Date : 11th April 2023

Change log :

  1. Replace Starscream dependency with VideoSDKWebSocket.

v2.0.3

Release Date : 10th March 2023

Change log : None

Bug Fix :

  • Video and share stream issue fixed.

v2.0.2

Release Date : 23rd February 2023

Change log : None

Bug Fix :

  • Enhanced SDK with reduction of dependency errors.

v2.0.1

Release Date : 20th February 2023

Change log :

  • Extended the Mediasoup's MediaKind enum for adding share Mediakind.

v2.0.0

Release Date : 09th January 2023

Change log : None

Bug Fix :

  • Reduced memory leaks and crashes in SDK.

Got a Question? Ask us on discord