Release Notes

Latest Versions

@100mslive/hms-video-storenpm version
@100mslive/react-sdknpm version
@100mslive/hms-video-react(deprecated)npm version


Released: @100mslive/hms-video-store@0.3.4, @100mslive/react-sdk@0.1.4


  • clearList and removeItem actions in playlist
  • getContextType in video plugin interface
  • joining without webrtc connection for hls stream viewer


Released: @100mslive/hms-video-store@0.3.2, @100mslive/react-sdk@0.1.2, @100mslive/hms-video-react@0.4.2


  • Codec in track stats


  • System denied permission error for camera and microphone
  • Duplicate tile in server recording on role change from AV to audio to AV
  • Retry in join


Released: @100mslive/hms-video-store@0.3.1, @100mslive/react-sdk@0.1.1, @100mslive/hms-video-react@0.4.1


  • Analytics events
  • Reconnected notification not being triggered in some cases


Released: @100mslive/hms-video-store@0.3.0, @100mslive/react-sdk@0.1.0, @100mslive/hms-video-react@0.4.0


  • Video freezing when same video track is played in multiple video elements and one of them is removed
  • Incorrect device showing in device selection when initially joined as muted and then unmuted.


  • All the requests will have the sender as optional now. Examples:
    • In chat message object, message.sender is optional
    • in unmute request, request.requestedBy is optional

NOTE: if you are planning to use api's to send chat messages, update metadata or change roles, the sdk version should be minimun at this version.


Released: @100mslive/hms-video-store@0.2.100, @100mslive/react-sdk@0.0.17, @100mslive/hms-video-react@0.3.128

  • Upgrade to React 18
  • Added support for server-side subscribe degradation
  • Fix device list failing to be populated in preview on device error
  • Fix inconsistent peer list in preview
  • Fix auxiliary regular tracks not having their own video tiles
  • Fix token errors - made terminal


Released: @100mslive/hms-video-store@0.2.98, @100mslive/react-sdk@0.0.15, @100mslive/hms-video-react@0.3.126

  • Added support for resolutions in rtmp.
  • Added methods to set your app data in 100ms store. Refer docs here
  • Exposed Styleable Pagination component from react-ui


Released: @100mslive/hms-video-store@0.2.96, @100mslive/react-sdk@0.0.13, @100mslive/hms-video-react@0.3.125

  • Add reconnections due to internet issues in preview phase
  • Add treeshaking for react-sdk and react-ui
  • Fix race condition when leave is called immediately after join before join could complete.
  • Fix race condition where preview complete could be notified before join was ready to be called.
  • Support for server side degradation
  • Fix bug in useVideo not leading to proper detach on unmounting


Released: @100mslive/hms-video-store@0.2.94, @100mslive/react-sdk@0.0.11, @100mslive/hms-video-react@0.3.124

  • Get Connection quality score to show network bar in UI, docs here
  • Measure internet quality score for local peer in preview
  • Errors occured during screenshare(permission not given etc.) will be sent via notification as well now in addition to being thrown on the method call
  • hmsActions.refreshDevices() to refresh the device list from UI side. This can be done for e.g. if the UI is taking control of asking user permission.
  • server timestamp for local peer's messages
  • changed interface to check plugin's support
  • Significant improvements and refactoring of our public sample app


Released: @100mslive/hms-video-store@0.2.93, @100mslive/react-sdk@0.0.10, @100mslive/hms-video-react@0.3.123


  • Redundant events sent to analytics


Released: @100mslive/hms-video-store@0.2.91, @100mslive/react-sdk@0.0.8, @100mslive/hms-video-react@0.3.121


  • useCustomEvent hook in react-sdk
  • Subscribing to specific notification types
  • HLS recording status on joining room
  • Additional fields in disconnection events
  • Video Only mode for screenshare
  • joinedAt in HMSPeer


  • Fix turning on recording with hls


Released: @100mslive/hms-video-store@0.2.90, @100mslive/react-sdk@0.0.7, @100mslive/hms-video-react@0.3.119


  • PeerList in preview
  • HLS recording status will be available


  • input/output interfaces of useVideo has been changed. check react quickstart for reference.


Released: @100mslive/hms-video-store@0.2.89, @100mslive/react-sdk@0.0.6, @100mslive/hms-video-react@0.3.116


  • startedAt fields for rtmp and recording
  • A exception will be thrown when preview/join is called if there is no WebRTC support now(for e.g. disable via an extension)
  • APIs to get WebRTC Stats for the call
  • A new @100mslive/react-sdk beta package for primitive hooks to build React UI components
  • A new disconnecting room state which happens from the moment leave is clicked till it's successful


  • Fix for wrong video mute state in a corner case after high frequency updates
  • Fix for vb-background video overlaying
  • VB not enabling in firefox if turned on in muted state
  • Fixes related to device settings remembering in muted state
  • Distorted audio when both noise suppression and virtual background are on


Released: @100mslive/hms-video@0.1.41, @100mslive/hms-video-store@0.2.87, @100mslive/hms-video-react@0.3.115


  • Terminal error for insecure contexts(http://)


  • Type errors in few selectors
  • iOS video getting stuck when custom plugins are enabled.
  • Preview audio level failing.


Released: @100mslive/hms-video@0.1.40, @100mslive/hms-video-store@0.2.86, @100mslive/hms-video-react@0.3.114


  • server errors are marked as terminal, SDK will automatically leave and give a terminal error


  • process is not defined error when using with CRA5, webpack5 or with react-scripts@5
  • update recording/streaming status when they are actually started


  • requestedBy is now optional in HMSRoleChangeRequest, HMSChangeTrackStateRequest, HMSChangeMultiTrackStateRequest


Released: @100mslive/hms-video@0.1.39, @100mslive/hms-video-store@0.2.85, @100mslive/hms-video-react@0.3.113


  • HLS streaming for streaming a room to a large number of viewers
  • Support for Multiple video plugins
  • startedAt field in room to know since when the call is running
  • An additional boolean showTileForAllPeers in VideoList component to show peers with no tiles.


  • Type in custom events not getting passed for direct messages
  • Camera selection showing wrong device in some cases


Released: @100mslive/hms-video@0.1.37, @100mslive/hms-video-store@0.2.83, @100mslive/hms-video-react@0.3.112


  • Support for Multiple Audio Plugins(alpha)
  • Notification when user updates peer info(name or metadata)


  • Throw proper error with error code and description for firefox when network is blocked/disconnected.
  • Resolve preview promise correctly. (You can directly await the preview promise and perform the necessary actions after that.)
  • Device change with audio plugins

Add @100mslive/hms-video-react or @100mslive/hms-video-store as a sole dependency for using 100ms. They include the core sdk.


Released: @100mslive/hms-video@0.1.36, @100mslive/hms-video-store@0.2.82, @100mslive/hms-video-react@0.3.111


Breaking Changes

  • peer.customerDescription is now renamed to peer.metadata


Released: @100mslive/hms-video@0.1.32, @100mslive/hms-video-store@0.2.79, @100mslive/hms-video-react@0.3.105


  • Support to play next item from audio/video playlist after current track ended
  • Support for setting playbackrate on audio/video playlist
  • selectPeerSharingAudioPlaylist selector to get peer who is sharing audioplaylist
  • selectPeersByRole(role: string) selector to get peers by role


  • Not able to change respective devices when audio/video is muted
  • Devicelist empty if permissions are denied while joining and enabled later on unmuting.
  • Retry getusermedia when it fails with overconstrainedError.
  • Type errors for selectors
  • Role changes not persisent when the role change event occurs when a peer is reconnecting


Released: @100mslive/hms-video@0.1.18, @100mslive/hms-video-react@0.3.97

  • Fix an issue in VideoTile react component leading to blank tile
  • Fix unsuccesful tracks publish in case of user toggling video in preview


Released: @100mslive/hms-video@0.1.16, @100mslive/hms-video-store@0.2.71, @100mslive/hms-video-react@0.3.96

  • Support resolution changes for screenshare on role change
  • Fix extra track getting added when joined with Audio/Video muted
  • Fix setVolume(0, trackId) not working on IOS when it is called on onTrackUpdate.
  • Screenshare error codes - 3001 for user rejection, 3002 for OS level block.
  • Fix a bug in mute all where it behaves in opposite way on a request from Android/iOS.
  • Fix type error for setRemoteTracksEnabled
  • Add peerId for all tracks
  • Optimisations for tracksMap selector
  • Add HMSNotificationTypes.PEER_LIST notification which gives peers already in room when joined
  • Optimise video tile, participant list rerenders
  • Add feedback component

Breaking Changes:

  • ParticipantsInView component removed. Use UiSettings component instead


Released: @100mslive/hms-video@0.1.1, @100mslive/hms-video-store@0.2.62, @100mslive/hms-video-react@0.3.88

  • Single permission for audio and video
  • Bulk Remote mute per type, source and roles. Refer to remote muting section in the docs for more information.
  • Locally muting remote track on iOS Devices
  • Performance optimizations


  • Role change takes video resolution into account as well now


Released: @100mslive/hms-video@0.0.204, @100mslive/hms-video-store@0.2.57, @100mslive/hms-video-react@0.3.81

  • Support for starting/stopping rtmp/recording
  • Add bitrate capping for playlist tracks
    • AudioTrack - 64kbps
    • VideoTrack - 1mbps
  • Fix addSink issue in videoTrack. Sometimes, addSink not sending correct data to backend, which leads to black tile


  • onPeerUpdate is called with HMSPeer[] for initial peer list instead of calling onPeerUdpate for each peer


  • Add/remove sink for audio element with feature flag.
  • Join before publish with feature flag


Released: @100mslive/hms-video@0.0.185, @100mslive/hms-video-store@0.2.43, @100mslive/hms-video-react@0.3.64


  • Support for Audio/Video Playlist from remote urls
  • Support for AudioOnly screenshare


Released: @100mslive/hms-video@0.0.173, @100mslive/hms-video-store@0.2.34, @100mslive/hms-video-react@0.3.54



  • Autoplay error on ios safari


Released: @100mslive/hms-video@0.0.148, @100mslive/hms-video-store@0.2.22, @100mslive/hms-video-react@0.3.32.


Breaking Change

  • sendMessage is now deprecated, please use sendBroadcastMessage, sendGroupMessage and sendDirectMessage for messaging. Refer Usage

0.0.128 - 2021-08-07

  • Fix tracks not getting removed properly in Firefox in between role changes

0.0.127 - 2021-08-06

  • Fix black tile issue

0.0.124 - 2021-08-06

  • Export HMSLogLevel to set the HMSdk's log level.

0.0.123 - 2021-08-05


  • Autoplay handling added.
    • on autoplay error, the onError callback is called
    • unblockAutoplay method is provided to resolve the autoplay error
    • Refer Usage
  • Audio/video state is preserved when setSettings is called.
  • Device change handling improvements
    • Output device selection logic improved
    • Handled headphones with no microphone
    • Stereo headphones are handled correctly for input/output
  • Handle virtual background on role change
  • Cleanup video/audio elements to limit chrome 92 bug for mediaplayers


  • Fix Settings component to show correct selected devices
  • Fix video elements not detached when not in view



  • Changing roles mid-call. Refer Usage
  • BREAKING CHANGE: The interface of HMSPeer has been modified for users using the JavaScript SDK without the Reactive Store.
// Before peer.role; // returns a string // After peer.role; // returns HMSRole interface HMSRole { name: string; publishParams: PublishParams; subscribeParams: { subscribeToRoles: string[], maxSubsBitRate: number }; permissions: { endRoom: boolean, removeOthers: boolean, stopPresentation: boolean, muteAll: boolean, askToUnmute: boolean, muteSelective: boolean, changeRole: boolean }; priority: number; } export interface PublishParams { audio: { bitRate: number, codec: string }; video: { bitRate: number, codec: string, frameRate: number, width: number, height: number }; screen: { bitRate: number, codec: string, frameRate: number, width: number, height: number }; allowed: string[]; }
  • BREAKING CHANGE: For users of the Reactive Store and React SDK, the HMSPeer interface has been modified. Use peer.roleName instead of peer.role to obtain the name of a peer's role.


  • Improved automatic detection of input/output devices.
  • Audio level update in Firefox due to wrong track ID.

Known Issues

  • Safari on Mac gives echo with some wired headphones
  • With some bluetooth headphones(eg: OnePlus Bullets) with stereo output option, the default audioOutput doesn't work on windows. (Quick Fix: Change device to another option of same device)



  • Added custom audio output management. Refer Usage
  • Added audio output device and volume control using hmsActions.setAudioOutputDevice("a-valid-MediaDeviceInfo-object-id") and hmsActions.setVolume(30). Refer Usage
  • Audio Level at preview could be fetched by selectPeerAudioByID(


  • Audio level update callback in preview. Refer Usage
  • Experimental Automatic device change on plug/unplug. Use track.setSettings to override input devices. Refer Usage. Use audio output manager(hms.getAudioOutput().setDevice()) to override output devices. Refer Usage





  • Adjust remote peer volume locally
  • Add HMSPeer, HMSTrack objects to HMSSpeaker for use in onAudioLevelUpdate callback.
interface HMSSpeaker { peer: HMSPeer; track: HMSTrack; audioLevel: number; }
  • Add HMSPolicy to HMSPeer.


  • Analytics



  • New preview API.
  • Screenshare with Audio


  • Analytics



  • Preview method to enable showing preview UI. Refer Usage
  • Audio in screen-share


  • Analytics



  • Enable OpusDtx
  • Replace HMSPeer with HMSLocalPeer and HMSRemotePeer
  • Made @100mslive/hms-video as peer dependency. Install @100mslive/hms-video alongside @100mslive/hms-video-react to use 100ms web SDK in your app.

For yarn,

yarn add @100mslive/hms-video @100mslive/hms-video-react

For npm,

npm i @100mslive/hms-video @100mslive/hms-video-react
  • Added transitionType property to hmsToast.


  • Black tiles in Safari - Correctly queue messages when data channel not open
  • Retry Join Init API fetch failure and throw terminal error on retry failure
  • Silent Audio
  • Import problem in Angular - Replace Bowser with ua-parser-js
  • UI fixes in components.



  • Connection Reestablishment Mechanism.
  • On network switch, disconnection, Websocket signal, Publish and Subscribe ICE connections will be retried for reconnection
  • onReconnecting - called when reconnection starts
  • onReconnected - called when reconnection has succeeded
  • onError - called when reconnection has failed
  • Internal Bug fixes



  • addTrack and removeTrack to add/remove auxiliary tracks to local peer. See documentation.





  • Join with camera/microphone device failures.
  • Join with camera/microphone failures.
  • Preview shows correct error message.
  • Start preview if either of camera/microphone is available.
  • Stop preview when page goes into background.
  • UI Fixes in modal, chat.





  • HMSPeer object will now have customerUserId property that stores the userId from Client Token.


  • Removed unsupported deviceId constraint in Safari.
  • Use EventEmitter instead of EventTarget to support older versions of some browsers.
  • selectDominantSpeaker replaces selectDominantSpeakerName. selectDominantSpeaker will return a HMSPeer object which contains customerUserId, name, role.
  • More responsive UI for smaller screens.



  • Handle device change on mid-call.


  • Video tile going black when double/multiple clicked for unmute.
  • Block on preview on camera/mic failure.



  • Support for Firefox(>=60).
  • Shim and polyfills for cross browser compatibility.
  • Exported isSupported method to check if browser and device are supported. import { isSupported } from "@100mslive/hms-video";


  • Show dismissible warning for unsupported browsers in preview.
  • Export MessageModal component.

0.0.19 - 2021-06-02


  • Error Codes - every error thrown from the SDK now will be of type HMSException, a wrapper over the native Error.
interface HMSException { code: number; // A code number denoting the type of error name: string; // Name of the error action: string; // What action caused the error message: string; // Message related to the error description: string; // Additional information and steps to recover from the error }

0.0.18 - 2021-06-02


  • Screenshare permitted only when user's role is allowed to share screen.
  • Improved screenshare quality by removing maxBitrate limit.


Our alpha release is here.

Thanks for your patience :).

This release might still have bugs, some interfaces can change (we will keep them to a minimum)

This release has

  • Simplified SDK interfaces that can power a fully-featured video conferencing application
    • join
    • leave
    • getPeers, getLocalPeer for tracks/peers/other data
  • Features not covered in this release
    • Handling network disconnections (disconnect from wi-fi to 4g ends the call)
    • Handling subscription network degradations
    • Handling second order publish network degradations
    • Detailed analytics
    • Recording
  • Our sample app is currently a React edtech app to demonstrate how roles work, and also how our UI-components work. Documentation for these roles will be released soon
  • Browser coverage is limited to latest versions of Chrome on desktop. We will improve this over the next few releases
  • Please contact @akash goswami in your Slack channel if you have any questions