Release Notes

1.3.3 - 2023-03-22


  • Fixed an issue in Android PIP Mode wherein the PIP window showed black tile if the device is locked and then unlocked

  • Android PIP window will now automatically close if the Peer is removed from the Room

  • Updated the 100ms Quickstart, GetX, MobX & Riverpod based Sample apps

Updated to Android SDK 2.5.9 & iOS SDK 0.7.1

Full Changelog: 1.3.2...1.3.3

1.3.2 - 2023-03-09


  • Corrected an issue with DateTime parsing where joining failed on iOS devices behind UTC Timezone

Using Android SDK 2.5.7 & iOS SDK 0.6.4

Full Changelog: 1.3.1...1.3.2

1.3.1 - 2023-02-27


  • Performance improvements for Picture-in-Picture (PIP) mode on iOS
  • Improved Disconnected State detection on certain Networks
  • Gracefully handling of null objects

Updated to Android SDK 2.5.7 & iOS SDK 0.6.4

Full Changelog: 1.3.0...1.3.1

1.3.0 - 2023-02-01


  • Removed Start / Stop Capturing APIs on Local Video Tracks. Use toggleCameraMuteState to mute / unmute video of local peer as mentioned in Guide here.


  • Added support for PIP Mode on iOS

    Now on iOS devices you can show a Picture-in-Picture(PIP) window while your app is in Background. You can configure the PIP window to show the Video of currently speaking Peer, or a Screenshare happening in Room, a Remote Peer's video in 1-to-1 Video Calls, etc

    To learn more about PIP & how to implement it in your apps, refer the PIP Guide here.

  • Added HMSPIPAndroidController to easily configure & use PIP Mode on Android

    PIP Mode support was available on Android since version 1.0.0. With this release we have made it more easy & simple to setup PIP on Android devices. Use the new HMSPIPAndroidController class to configure & start playing your Live Videos when your app is in Background. Refer the PIP Guide here.

  • Added Capture Snapshot API to capture a frame of the video track being rendered

    With the new captureSnapshot() method on HMSVideoTrack you can instantly capture a frame of any Video being rendered on screen. You can use this to capture moments of a Peer's Video, or a Screenshare happening in Room, etc. To learn more about how to use Capture Snapshot refer the Guide here.


  • Deprecated direct passing of AppGroup & PreferredExtension while building HMSSDK for iOS Screenshare. Use the new HMSIOSScreenshareConfig class for starting Screenshare from iOS Devices. For more details, refer the Screnshare Guide here.

  • Deprecated switchAudio and switchVideo functions to mute/unmute Audio/Video of local peer. Use toggleMicMuteState and toggleCameraMuteState functions as mentioned in the Guide here.


  • Corrected an issue where doing multiple Role Changes stopped working
  • Corrected an issue where video views were getting recreated

Updated to Android SDK 2.5.7 & iOS SDK 0.6.2

Full Changelog: 1.2.0...1.3.0

1.2.0 - 2023-01-13


  • Made await while building HMSSDK Required

    Adding await to the build() method was optional earlier. It has been made Required now to eliminate edge cases where SDK initialization did not complete before invocation of join() method. Adding await ensures that an instance of HMSSDK is available before any further usages.

    hmsSDK = HMSSDK(); await; // NEW: adding await while invoking build method on HMSSDK is now Required hmsSDK.addUpdateListener(listener:this); HMSConfig config = HMSConfig(authToken: 'eyJH5c', // client-side token generated from your token service userName: 'John Appleseed'); hmsSDK.join(config: config);


  • Added support for Adaptive Bitrate (Simulcast)

    Adaptive Bitrate refers to features that enable dynamic adjustments in video quality to optimize for end-user experience under diverse network conditions.

    To learn more about how ABR works & how it enhances your app, refer the guide here.

  • Using HMSVideoView on Android

    HMSVideoView on Android provides a better abstraction to render live video and handles edge cases like managing Release/Init states. It has in-built support to subscribe to video of the correct resolution.

    To learn more about Rendering Video, refer the guide here.

  • Added Simulcast support for RTC Stats

    RTC Call Stats are updated to show Simulcast layer data if available for Local Peer's Video Track. This can be used to diagnose user experience with metrics such as Audio/Video Bitrate, Round Trip Time, Packet loss, etc.

    To learn more about using RTC Call Stats, refer the guide here.


  • Sending correct joined_at property on Android indicating the time when the peer joins the Room

  • Logging error messages when the App Group used for starting Screenshare from iOS is incorrect

  • On Android, the onJoin updates will now be triggered before onPeerUpdate when a user joins the room

Updated to Android SDK 2.5.6 & iOS SDK 0.5.5

Full Changelog: 1.1.0...1.2.0

1.1.0 - 2022-12-17


  • Added support for Bulk Role Change

    Bulk Role Change is used when you want to convert all Roles from a list of Roles, to another Role.

    For example, if peers join a room with a Waiting Role and now you want to change all these peers to Viewer Role then use the changeRoleOfPeersWithRoles API.

    // fetch all available Roles in the room List<HMSRole> roles = await hmsSDK.getRoles(); // get the Host Role object HMSRole toHostRole = roles.firstWhere((element) => == "host"); // get list of Roles to be updated - in this case "Waiting" and "Guest" Roles roles.retainWhere((element) => (( == "waiting") || ( == "guest"))); // now perform Role Change of all peers in "Waiting" and "Guest" Roles to the "Host" Role hmsSDK.changeRoleOfPeersWithRoles( toRole: toHostRole, ofRoles: roles, hmsActionResultListener: hmsActionResultListener);

    For More Information, refer:

  • Added Switch Audio Output APIs on iOS

    Audio Output Routing is helpful when users want to switch output to a connected device other than the default one.

    hmsSDK.switchAudioOutput(audioDevice: HMSAudioDevice.SPEAKER_PHONE);

    For More Information, refer:


  • Deprecated changeRole API in favour of changeRoleOfPeer

    No change in functionality or method signature.


  • Microphone not getting captured on Role Change from a non-publishing to publishing Role on iOS
  • Corrected an issue where on iOS a default Audio Mixer was getting created if Track Settings was passed while building the HMSSDK instance

Updated to Native Android SDK 2.5.4 & Native iOS SDK 0.5.3

Full Changelog: 1.0.0...1.1.0

1.0.0 - 2022-12-09


  • Added support for Picture in Picture mode on Android

    PIP Mode lets the user watch the room video in a small window pinned to a corner of the screen while navigating between apps or browsing content on the main screen.

    Example implementation for checking device support & enabling PIP mode:

    // to start PIP mode invoke the `enterPipMode` function, the parameters passed to it are optional hmsSDK.enterPipMode(aspectRatio: [16, 9], autoEnterPip: true); // method to check whether PIP mode is available for current device bool isPipAvailable = await hmsSDK.isPipAvailable(); // method to check whether PIP mode is active currently bool isPipActive = await hmsSDK.isPipActive();
  • Added roomPeerCountUpdated type in HMSRoomUpdate

  • Added isPlaybackAllowed to Remote Audio & Video Tracks to check if the track is allowed to be played locally

  • Added convenience APIs to Mute / Unmute Audio or Video of the entire room locally


  • Corrected parsing of HMSMessage objects sent Server-side APIs
  • Session Metadata can now be reset to a null value
  • Importing Native Android SDK dependency from Maven Central instead of Jitpack
  • HMSTrackSettings is now nullable while building the HMSSDK object
  • Corrected usage of Native Util functions to fetch Audio & Video tracks
  • Corrected default local audio track settings for iOS devices
  • Corrected sending of peer count in HMSRoom instance on iOS

Updated to Native Android SDK 2.5.1 & Native iOS SDK 0.4.7

Full Changelog: 0.7.8...1.0.0

0.7.8 - 2022-10-31

  • Added support for Joining with Muted Audio & Video on iOS devices
  • Added Maven Central repository to look for Android dependencies
  • Added support for receiving Server-side HMSMessage
  • Added HMSLogSettings to configure Native Android SDK logs
  • Corrected setters for local audio/video track settings while building the HMSSDK object
  • Updated to Native Android SDK 2.5.1 & Native iOS SDK 0.4.6

Full Changelog: 0.7.7...0.7.8

0.7.7 - 2022-10-20

  • Added ability to set & get session metadata
  • Added ability to join with muted audio & video using Initial states (Muted / Unmuted) HMSVideoTrackSettings & HMSAudioTrackSettings in the builder of HMSSDK
  • Added better Telemetrics for analytics
  • Added option to use Software Decoder for Video rendering on Android devices
  • Added action result listener to switchCamera function on local video track
  • Fixed LetterBoxing (Black borders on top and bottom) observed when sharing the screen in landscape mode on Android
  • Fixed incorrect sending of Speaker Updates when peer has left the room
  • Removed unused setters for Local Audio & Video Track Settings
  • Updated to Native Android SDK 2.5.0 & Native iOS SDK 0.4.5

Full Changelog: 0.7.6...0.7.7

0.7.6 - 2022-09-23

  • Added audio output change listener callback while in Preview on Android
  • Added API to show Native Audio Output Picker on iOS
  • Corrected an issue where audio was always coming from the Earpiece instead of Built-In Speaker on iOS
  • Fixed an issue where audio gets distorted when headset is used while sharing audio playing on iOS
  • Updated HMSException class. Added canRetry attribute

Full Changelog: 0.7.6...0.7.5

0.7.5 - 2022-08-18

  • Added support on iOS for sharing audio from local files on your device & from other audio playing apps
  • Added ability to apply local peer track settings while initializing HMSSDK
  • Added APIs to fetch local peer track settings
  • Fixed an issue where exiting from Preview without joining room was not releasing camera access
  • Added destroy API to cleanup Native HMSSDK instance correctly
  • Disabled Hardware Scaler on Android to correct intermittent Video tile flickering
  • Updated to Native Android SDK 2.4.8 & Native iOS SDK 0.3.3

0.7.4 - 2022-07-29


  • Added APIs to stream device audio in different modes
  • Added APIs to view and change the output speaker selected by the SDK to playout
  • setAudioMode API to change the Audio out mode manually between in-call volume and media volume


  • Calling switchCamera API leads to triggering of onSuccess callback twice
  • onRoomUpdate with type HMSRoomUpdate.ROOM_PEER_COUNT_UPDATED not getting called when peer count changes in the room
  • Peer not able to publish tracks when updated to WebRTC from HLS if rejoins after a reconnection in WebRTC Mode


  • HMSHLSConfig is now an optional parameter while calling startHLSStreaming and stopHLSStreaming
  • The meetingUrl parameter is optional while creating the HMSHLSMeetingURLVariant instance for HMSHLSConfig. If nothing is provided HMS system will take the default meetingUrl for starting HLS stream
  • changeRoleForce permission in HMSRole is now removed and no longer used
  • recording permission in HMSRole is now broken into - browserRecording and rtmpStreaming
  • streaming permission in HMSRole is now hlsStreaming

0.7.3 - 2022-06-23

  • Added support for iOS Screen-share
  • Added HMSHLSRecordingConfig to perform recording while HLS Streaming
  • Updated error callback in HMSUpdateListener to onHMSError
  • Updated to Native Android SDK 2.4.2 & Native iOS SDK 0.3.1

0.7.2 - 2022-06-02

  • Segregated RTC Stats update notifications from HMSUpdateListener into HMSStatsListener
  • Removed room_peer_count_updated from HMSRoomUpdate enum
  • Added sessionId to the HMSRoom class
  • Updated to Native Android SDK 2.3.9 & Native iOS SDK 0.3.1

0.7.1 - 2022-05-20

  • Added RTC Stats Listener which provides info about local & remote peer's audio/video quality
  • Improved video rendering performance for Android devices
  • Correct RTMP Streaming & Recording configuration settings
  • Added support for Server-side Subscribe Degradation
  • Updated to Native Android SDK 2.3.9 & Native iOS SDK 0.2.13

0.7.0 - 2022-04-19


  • Network Quality in preview. Network quality reports can now be requested at the preview screen. Use the returned value to determine if you should suggest people's internet is too slow to join with video etc.

  • Network Quality during calls. Peer Network Quality updates are now received during the call. Use this to show how strong any peer's internet is during the call.

  • Added HLS Recording to initial PeerList

  • onPeerUpdate and onRoomUpdate callbacks in 'HMSPreviewListener' to get info about the room at Preview screen

  • Added startedAt and stoppedAt field for Browser and SFU recording


  • Error Analytics events not being sent

  • Leave not finishing if SDK is in reconnection state. Hence all join calls after that was getting queued up if called on the same HMSSDK instance

  • Improved subscribe degradation so that new add sinks are handled properly when SDK is already in degraded state

  • Crash fix on starting/stopping HLS where HlsStartRecording was null

  • HLS recording status wasn't always updated when stopped

  • Rare crash when cameras are unavailable and it seemed to the app like none exist

  • Updated to Native Android SDK 2.3.4 & Native iOS SDK 0.2.9

0.6.0 - 2022-01-25

Breaking Change

  • Updated Change Role APIs argument types
  • Changed Messaging APIs argument types
  • Updated argument types of changeTrackState, changeRole, acceptRoleChange, changeTrackStateForRoles APIs


  • Added HLS Support. Now you can Start/Stop HLS Streaming from Flutter SDK
  • Added support to do ScreenShare from Android device


  • Updated callbacks for Permission based action APIs

0.5.0 - 2022-01-15

Breaking Change

  • Renamed SDK Public interface to HMSSDK class
  • Updated HMSConfig object which is used to join the room


  • Added APIs to change remote track status
  • Added APIs to start/stop Recording
  • Added APIs to change metadata of local peer which can be used to implement raise hand functionality
  • Added API to change name of local peer
  • Added API to get current room status
  • Added API to get peer audio/video status
  • Added new Group & Direct Peer Messaging APIs
  • Added volume setter & getter APIs on audio tracks
  • Added Action Result Listeners to notify success or failure of API invocations


  • Updated HMSException object with isTerminal
  • Changed sendMessage API to sendBroadcastMessage to send a message to all peers in room
  • Changed HMSMessageResultListener to HMSActionResultListener in Messaging APIs
  • Video Rendering flow for Android & iOS video tracks
  • Preview API implementation


  • Reconnection issues wherein even when network recovered, peer could not rejoin the room
  • Cleaning up config object whenever room is joined/left

0.4.1 - 2021-12-03

  • Added matchParent boolean on video view

0.4.0 - 2021-10-22

  • Updated Messaging APIs
  • Added audio level, peer & track object in HMSSpeaker
  • Updated track source type to string
  • Updated sample app

0.3.0 - 2021-10-14

  • Corrected crash on using getLocalPeer
  • Updated sample app

0.2.0 - 2021-10-07

This version of 100ms Flutter SDK comes loaded with bunch of features & improvements like -

  • Improved low network performance
  • Added Active Speaker listener
  • Resolved build conflicts on iOS
  • Added APIs to Change Role of a Peer
  • Added APIs to Mute Audio/Video of a Remote Peer
  • Added APIs to End a Room
  • Updated Chat Messaging APIs to enable Broadcast, Group & Personal
  • Improved Reconnection after network switch/loss
  • Improved Interruption Handling when a Meeting is ongoing

0.1.0 - 2021-08-17

The first version of 100ms Flutter SDK comes power-packed with support for multiple features like -

  • Join/Leave Rooms
  • Mute / Unmute Audio / Video
  • Switch Camera
  • Chat
  • Preview Screen
  • Change Role
  • Network Switch Support
  • Subscribe Degradation in bad network scenarios
  • Error Handling and much more.

Take it for a spin! 🥳

Have a suggestion? Recommend changes ->

Was this helpful?