From 7c9f6774a101e5ebd33402bc962d2837d07c6fea Mon Sep 17 00:00:00 2001 From: KaustubhKumar05 <57426646+KaustubhKumar05@users.noreply.github.com> Date: Wed, 28 May 2025 12:34:03 +0000 Subject: [PATCH 01/28] docs(web): update api reference --- docs/api-reference/javascript/v2/interfaces/HMSActions.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/api-reference/javascript/v2/interfaces/HMSActions.md b/docs/api-reference/javascript/v2/interfaces/HMSActions.md index 88f273da6..ac4f32838 100644 --- a/docs/api-reference/javascript/v2/interfaces/HMSActions.md +++ b/docs/api-reference/javascript/v2/interfaces/HMSActions.md @@ -1432,9 +1432,9 @@ If you want to stop HLS streaming. The passed in arguments is not considered at #### Parameters -| Name | Type | Description | -| :-------- | :--------------------------------------------------------------- | :---------------------------------------------------- | -| `params?` | [`HLSConfig`](/api-reference/javascript/v2/interfaces/HLSConfig) | HLSConfig - HLSConfig object with the required fields | +| Name | Type | Description | +| :-------- | :-------------- | :---------------------------------------------------- | +| `params?` | `StopHLSConfig` | HLSConfig - HLSConfig object with the required fields | #### Returns From f6e23fb9e7320fba6fe4617f5ae1cc5ff8b3ef72 Mon Sep 17 00:00:00 2001 From: Pratim Mallick <34009202+PratimMallick@users.noreply.github.com> Date: Thu, 7 Aug 2025 00:35:09 +0530 Subject: [PATCH 02/28] Release notes android 2.9.77 (#2486) * Release notes for v2.9.71 * Release notes for v2.9.77 --- docs/android/v2/release-notes/release-notes.mdx | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/docs/android/v2/release-notes/release-notes.mdx b/docs/android/v2/release-notes/release-notes.mdx index 1c1653f6c..e5c388bec 100644 --- a/docs/android/v2/release-notes/release-notes.mdx +++ b/docs/android/v2/release-notes/release-notes.mdx @@ -19,10 +19,18 @@ import AndroidPrebuiltVersionShield from '@/common/android-prebuilt-version-shie | live.100ms:virtual-background: || | live.100ms:hms-noise-cancellation-android: | | +## v2.9.77 - 2025-08-07 +### Added +* Support for 16kb page size + +## v2.9.76 - 2025-04-16 +### Fixed +* Screen share rotation crash fix on android 12 and above + ## v2.9.74 - 2025-03-3 ### Added * Renamed the namespace of all WebRTC-related files to prevent conflicts with files from other WebRTC vendors when integrated into an application. -### Breaking +### Breaking * Due to the namespace changes, imports for WebRTC files must be updated from org.webrtc to hms.webrtc throughout the application, if present ## v2.9.73 - 2025-02-12 From 2cdcdb62ddd6413c5d1d1e51cc0e57c083a9d2cb Mon Sep 17 00:00:00 2001 From: Ravi theja Date: Wed, 13 Aug 2025 13:45:25 +0530 Subject: [PATCH 03/28] docs: update js release notes (#2487) docs: update release js notes --- .../v2/release-notes/release-notes.mdx | 25 +++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/docs/javascript/v2/release-notes/release-notes.mdx b/docs/javascript/v2/release-notes/release-notes.mdx index e166dfa4d..3aac42609 100644 --- a/docs/javascript/v2/release-notes/release-notes.mdx +++ b/docs/javascript/v2/release-notes/release-notes.mdx @@ -14,6 +14,31 @@ description: Release Notes for 100ms.live JavaScript SDK | @100mslive/hms-noise-cancellation | [![npm version](https://badge.fury.io/js/%40100mslive%2Fhms-noise-cancellation.svg)](https://badge.fury.io/js/%40100mslive%2Fhms-noise-cancellation) | | @100mslive/hms-virtual-background | [![npm version](https://badge.fury.io/js/%40100mslive%2Fhms-virtual-background.svg)](https://badge.fury.io/js/%40100mslive%2Fhms-virtual-background) | +## 2025-08-12 + +Released: `@100mslive/hms-video-store@0.12.37`, `@100mslive/react-sdk@0.10.37`, `@100mslive/hls-player@0.3.37`, `@100mslive/roomkit-react@0.3.37` + +### Fixed: + +- `deviceId` overconstrained error when joining or toggling video/audio for first time or skip preview flows + +## 2025-08-08 + +Released: `@100mslive/hms-video-store@0.12.36`, `@100mslive/react-sdk@0.10.36`, `@100mslive/hls-player@0.3.36`, `@100mslive/roomkit-react@0.3.36` + +### Fixed: + +- Use `exact` constraint for deviceId in getUserMedia calls to prevent device selection issues due to this [chromium bug](https://issues.chromium.org/issues/436065976) + +## 2025-05-15 + +Released: `@100mslive/hms-video-store@0.12.35`, `@100mslive/react-sdk@0.10.35`, `@100mslive/hls-player@0.3.35`, `@100mslive/roomkit-react@0.3.35` + +### Fixed: + +- Add stop reason for `hls-stop` +- Roomkit Prebuilt: Duplicate `hls-stop` call on end call + ## 2024-05-15 Released: `@100mslive/hms-video-store@0.12.34`, `@100mslive/react-sdk@0.10.34`, `@100mslive/hls-player@0.3.34`, `@100mslive/roomkit-react@0.3.34`, `@100mslive/hms-whiteboard@0.0.24`, `@100mslive/hms-virtual-background@1.13.34` From 0074766fb4b78b4e6027f18994c06f7ccaad7ae6 Mon Sep 17 00:00:00 2001 From: Ravi theja Date: Tue, 26 Aug 2025 12:54:20 +0530 Subject: [PATCH 04/28] docs: add release notes for version 0.12.38 (#2488) --- docs/javascript/v2/release-notes/release-notes.mdx | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/docs/javascript/v2/release-notes/release-notes.mdx b/docs/javascript/v2/release-notes/release-notes.mdx index 3aac42609..cd52710ea 100644 --- a/docs/javascript/v2/release-notes/release-notes.mdx +++ b/docs/javascript/v2/release-notes/release-notes.mdx @@ -14,6 +14,15 @@ description: Release Notes for 100ms.live JavaScript SDK | @100mslive/hms-noise-cancellation | [![npm version](https://badge.fury.io/js/%40100mslive%2Fhms-noise-cancellation.svg)](https://badge.fury.io/js/%40100mslive%2Fhms-noise-cancellation) | | @100mslive/hms-virtual-background | [![npm version](https://badge.fury.io/js/%40100mslive%2Fhms-virtual-background.svg)](https://badge.fury.io/js/%40100mslive%2Fhms-virtual-background) | +## 2025-08-26 + +Released: `@100mslive/hms-video-store@0.12.38`, `@100mslive/react-sdk@0.10.38`, `@100mslive/hls-player@0.3.38`, `@100mslive/roomkit-react@0.3.38` + +### Fixed: + +- Additional Permission popup getting shown after dismissing the first one, when audio/video is enabled for first time +- Permission popup not shown when tab is active and then becomes active if permissions are denied earlier + ## 2025-08-12 Released: `@100mslive/hms-video-store@0.12.37`, `@100mslive/react-sdk@0.10.37`, `@100mslive/hls-player@0.3.37`, `@100mslive/roomkit-react@0.3.37` From c0362eb17a92b68e6f689a255db839e12ac591fa Mon Sep 17 00:00:00 2001 From: sapta100ms Date: Wed, 15 Oct 2025 14:13:05 +0530 Subject: [PATCH 05/28] Add release notes for version 2.9.78 (#2490) Co-authored-by: Saptarshi --- docs/android/v2/release-notes/release-notes.mdx | 4 ++++ package.json | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/docs/android/v2/release-notes/release-notes.mdx b/docs/android/v2/release-notes/release-notes.mdx index e5c388bec..bc5a852a6 100644 --- a/docs/android/v2/release-notes/release-notes.mdx +++ b/docs/android/v2/release-notes/release-notes.mdx @@ -19,6 +19,10 @@ import AndroidPrebuiltVersionShield from '@/common/android-prebuilt-version-shie | live.100ms:virtual-background: || | live.100ms:hms-noise-cancellation-android: | | +## v2.9.78 - 2025-10-15 +### Fixed +* Fix for memory leak issue + ## v2.9.77 - 2025-08-07 ### Added * Support for 16kb page size diff --git a/package.json b/package.json index ee6172e32..acba80b74 100644 --- a/package.json +++ b/package.json @@ -33,7 +33,7 @@ "id": "yarn && yarn dev" }, "engines": { - "node": "^18" + "node": "^22" }, "files": [ "/dist", From ebac8984a77964cd7934c6c596ec9d21958c2ee1 Mon Sep 17 00:00:00 2001 From: Yogesh Singh Date: Tue, 28 Oct 2025 23:47:40 +0530 Subject: [PATCH 06/28] updated release notes --- .../v2/release-notes/release-notes.mdx | 702 ++++++++++-------- 1 file changed, 412 insertions(+), 290 deletions(-) diff --git a/docs/react-native/v2/release-notes/release-notes.mdx b/docs/react-native/v2/release-notes/release-notes.mdx index 5585d527b..395bdd4dc 100644 --- a/docs/react-native/v2/release-notes/release-notes.mdx +++ b/docs/react-native/v2/release-notes/release-notes.mdx @@ -5,12 +5,154 @@ nav: 4.1 ## Latest Versions -| Package | Version | -| -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------- | -| @100mslive/react-native-room-kit | [![npm](https://img.shields.io/npm/v/@100mslive/react-native-room-kit)](https://www.npmjs.com/package/@100mslive/react-native-room-kit) | -| @100mslive/react-native-hms | [![npm](https://img.shields.io/npm/v/@100mslive/react-native-hms)](https://www.npmjs.com/package/@100mslive/react-native-hms) | -| @100mslive/react-native-video-plugin | [![npm](https://img.shields.io/npm/v/@100mslive/react-native-video-plugin)](https://www.npmjs.com/package/@100mslive/react-native-video-plugin) | +| Package | Version | +| ------------------------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------- | +| @100mslive/react-native-room-kit | [![npm](https://img.shields.io/npm/v/@100mslive/react-native-room-kit)](https://www.npmjs.com/package/@100mslive/react-native-room-kit) | +| @100mslive/react-native-hms | [![npm](https://img.shields.io/npm/v/@100mslive/react-native-hms)](https://www.npmjs.com/package/@100mslive/react-native-hms) | +| @100mslive/react-native-video-plugin | [![npm](https://img.shields.io/npm/v/@100mslive/react-native-video-plugin)](https://www.npmjs.com/package/@100mslive/react-native-video-plugin) | +## 1.12.0 - 2025-10-28 + +# Release Notes - v1.12.0 & v1.3.0 + +| Package | Version | +| ------------------------------------ | ------- | +| @100mslive/react-native-room-kit | 1.3.0 | +| @100mslive/react-native-hms | 1.12.0 | +| @100mslive/react-native-video-plugin | 1.1.0 | + +## 🎉 Highlights + +This is a major release bringing **React Native 0.77+ support**, **Android 16KB page size compliance** for Google Play 2025 requirements, and significant modernization of the SDK build system. This release includes breaking changes - please review the migration guide below. + +### Key Improvements + +- ⚡ **React Native 0.77.3 Support** - Full compatibility with the latest React Native version with improved performance and stability +- 📱 **Android 16KB Page Size Compliance** - Ready for Google Play's 2025 requirements for Android 15+ devices +- 📷 **Modernized QR Code Scanner** - Migrated to react-native-vision-camera 4.7.2 with ML Kit for better performance +- 🏗️ **Build System Modernization** - Updated to AGP 8.7.2, Gradle 8.11.1, Kotlin 2.0.21, and Java 17 +- 🚀 **Performance Improvements** - Major dependency updates across 20+ packages + +--- + +## 📦 react-native-hms (1.12.0) + +### React Native 0.77.3 Support + +The SDK now fully supports React Native 0.77.3 (upgraded from 0.71.19), bringing 6 major versions of improvements including: + +- Enhanced performance and stability +- Latest React 18.3.1 features +- Improved developer experience +- Better TypeScript support + +### Android 16KB Page Size Compliance + +Full compliance with Google Play's 2025 requirements for Android 15+ devices: + +- NDK r27 support with 16KB page size +- Experimental flags enabled for compatibility +- Ready for next-generation Android devices +- Ensures your app won't be blocked on Google Play + +### Architecture Updates + +- **64-bit Only Support**: Dropped 32-bit architectures (armeabi-v7a, x86) to support modern Android requirements +- **Supported Architectures**: arm64-v8a, x86_64 +- Improved performance on modern devices + +### Native SDK Updates + +- **Android SDK**: Updated to **2.9.78** (from 2.9.69) +- **iOS SDK**: Updated to **1.17.0** (from 1.16.5) +- Includes latest bug fixes, performance improvements, and new features from native SDKs + +### Modernized Build System + +**Android:** + +- Android Gradle Plugin: 8.7.2 +- Gradle: 8.11.1 +- Kotlin: 2.0.21 +- Java: 17 (minimum required) +- Target SDK: 35 +- Compile SDK: 35 +- Minimum SDK: 24 (Android 7.0) + +**iOS:** + +- Minimum iOS: 16.0 (from 13.0) +- Updated Podfile for RN 0.77.3 compatibility +- New Architecture explicitly disabled for stability + +### Technical Improvements + +- Fixed TypeScript event emitter and session store imports +- Improved build performance with modern tooling +- Better type safety and developer experience +- Removed Flipper support (deprecated) +- Package namespace updated: com.rnexample → live.hms.rn +- MainApplication migrated from Java to Kotlin + +--- + +## 🎨 react-native-room-kit (1.3.0) + +### Major Dependency Updates + +Updated core dependencies for better performance, stability, and RN 0.77.3 compatibility: + +| Package | Old Version | New Version | +| ------------------------------ | ----------- | ----------- | +| react-native-reanimated | 3.4.2 | 3.16.7 | +| react-native-screens | 3.25.0 | 4.18.0 | +| react-native-gesture-handler | 2.15.0 | 2.22.0 | +| react-native-safe-area-context | 3.3.0 | 5.6.1 | +| react-native-permissions | 3.4.0 | 4.1.5 | +| lottie-react-native | 6.7.2 | 7.3.4 | +| react-native-device-info | 11.1.0 | 14.0.0 | +| @shopify/flash-list | 1.4.3 | 1.7.1 | +| zustand | - | 5.0.8 (new) | + +### Technical Improvements + +- Fixed TypeScript AnimatedStyleProp type errors +- Improved keyboard avoiding view type safety +- Added 5 critical patches for RN 0.77.3 compatibility using patch-package +- Security fixes from npm audit +- Better performance with updated dependencies + +--- + +## ⚠️ Breaking Changes + +### Minimum Requirements Updated + +| Requirement | Previous | New | Impact | +| ---------------- | ------------ | ------------------------- | ----------------- | +| **Android** | 5.0 (API 21) | **7.0 (API 24)** | ~2.6% of devices | +| **iOS** | 13.0 | **16.0** | ~5% of devices | +| **React Native** | 0.60+ | **0.77.3+** | Major upgrade | +| **Node.js** | 14+ | **18+** (22+ recommended) | - | +| **Java** | 8/11 | **17+** | Build requirement | + +### Architecture Changes + +- **32-bit Android devices no longer supported** + - Dropped: armeabi-v7a, x86 + - Supported: arm64-v8a, x86_64 only + - Reason: Required for 16KB page size compliance and modern Android + +### Peer Dependencies + +- React Native peer dependency updated to `>=0.77.3` +- React peer dependency updated to `>=18.2.0` + +## 📊 Version Details + +**Uses Android SDK 2.9.78 & iOS SDK 1.17.0** + +**Full Changelog**: [1.11.0...1.12.0](https://github.com/100mslive/100ms-react-native/compare/1.11.0...1.12.0) ## 1.11.0 - 2024-10-29 @@ -33,14 +175,13 @@ Uses Android SDK 2.9.69 & iOS SDK 1.16.5 **Full Changelog**: [1.10.9...1.11.0](https://github.com/100mslive/react-native-hms/compare/1.10.9...1.11.0) - ## 1.10.9 - 2024-07-31 -| Package | Version | -| -------------------------------- | ------- | -| @100mslive/react-native-room-kit | 1.2.2 | -| @100mslive/react-native-hms | 1.10.9 | -| @100mslive/react-native-video-plugin | 1.0.0 | +| Package | Version | +| ------------------------------------ | ------- | +| @100mslive/react-native-room-kit | 1.2.2 | +| @100mslive/react-native-hms | 1.10.9 | +| @100mslive/react-native-video-plugin | 1.0.0 | ### react-native-hms @@ -66,7 +207,6 @@ Uses Android SDK 2.9.64 & iOS SDK 1.15.0 **Full Changelog**: [1.10.8...1.10.9](https://github.com/100mslive/react-native-hms/compare/1.10.8...1.10.9) - ## 1.10.8 - 2024-07-10 | Package | Version | @@ -90,14 +230,13 @@ Uses Android SDK 2.9.62 & iOS SDK 1.13.0 **Full Changelog**: [1.10.7...1.10.8](https://github.com/100mslive/react-native-hms/compare/1.10.7...1.10.8) - ## 1.10.7 - 2024-07-01 -| Package | Version | -| -------------------------------- | ------- | -| @100mslive/react-native-room-kit | 1.2.0 | -| @100mslive/react-native-hms | 1.10.7 | -| @100mslive/react-native-video-plugin | 0.1.2 | +| Package | Version | +| ------------------------------------ | ------- | +| @100mslive/react-native-room-kit | 1.2.0 | +| @100mslive/react-native-hms | 1.10.7 | +| @100mslive/react-native-video-plugin | 0.1.2 | ### react-native-hms @@ -115,14 +254,13 @@ Uses Android SDK 2.9.60 & iOS SDK 1.12.0 **Full Changelog**: [1.10.6...1.10.7](https://github.com/100mslive/react-native-hms/compare/1.10.6...1.10.7) - ## 1.10.6 - 2024-06-10 -| Package | Version | -| -------------------------------- | ------- | -| @100mslive/react-native-room-kit | 1.1.9 | -| @100mslive/react-native-hms | 1.10.6 | -| @100mslive/react-native-video-plugin | 0.1.2 | +| Package | Version | +| ------------------------------------ | ------- | +| @100mslive/react-native-room-kit | 1.1.9 | +| @100mslive/react-native-hms | 1.10.6 | +| @100mslive/react-native-video-plugin | 0.1.2 | ### react-native-hms @@ -148,13 +286,10 @@ Uses Android SDK 2.9.60 & iOS SDK 1.12.0 - The first version of the plugin is released. It provides support for Virtual Background in 100ms. Read more about it [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/extend-capabilities/virtual-background). - Uses Android SDK 2.9.59 & iOS SDK 1.11.0 **Full Changelog**: [1.10.5...1.10.6](https://github.com/100mslive/react-native-hms/compare/1.10.5...1.10.6) - - ## 1.10.5 - 2024-05-15 | Package | Version | @@ -168,7 +303,6 @@ Uses Android SDK 2.9.59 & iOS SDK 1.11.0 HMSSDK now provides support for Whiteboard. You can now start/stop a Whiteboard using `startWhiteboard` & `stopWhiteboard` methods on `HMSInteractivityCenter`. HMSSDK provides also provides callbacks for whiteboard start/stop events. Learn more about it [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/extend-capabilities/whiteboard). - ### react-native-room-kit - Whiteboard @@ -185,7 +319,6 @@ Uses Android SDK 2.9.56 & iOS SDK 1.10.0 **Full Changelog**: [1.10.4...1.10.5](https://github.com/100mslive/react-native-hms/compare/1.10.4...1.10.5) - ## 1.10.4 - 2024-04-26 | Package | Version | @@ -203,25 +336,22 @@ Uses Android SDK 2.9.56 & iOS SDK 1.10.0 Learn more about it [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/record-and-live-stream/hls-player#how-to-enable-or-disable-closed-captions). - ### react-native-room-kit - Support for captions in HLS Player UI -HLS Player now supports captions for better accessibility. This can be enabled or disabled from the player settings. + HLS Player now supports captions for better accessibility. This can be enabled or disabled from the player settings. - Updated Chat message design in the new HLS Player UI - Added new controls for the HLS video player -Added controls are - "Go Live", "Seekbar", "Closed Captions", "Pause", "Resume" and "Seek forward/backwards" + Added controls are - "Go Live", "Seekbar", "Closed Captions", "Pause", "Resume" and "Seek forward/backwards" - Added support for "Pinch and Zoom" in the HLS Player UI - Uses Android SDK 2.9.54 & iOS SDK 1.9.0 **Full Changelog**: [1.10.3...1.10.4](https://github.com/100mslive/react-native-hms/compare/1.10.3...1.10.4) - ## 1.10.3 - 2024-04-15 | Package | Version | @@ -241,7 +371,6 @@ Using Android SDK 2.9.53 & iOS SDK 1.8.0 **Full Changelog**: [1.10.2...1.10.3](https://github.com/100mslive/react-native-hms/compare/1.10.2...1.10.3) - ## 1.10.2 - 2024-04-08 | Package | Version | @@ -253,7 +382,7 @@ Using Android SDK 2.9.53 & iOS SDK 1.8.0 - Added Active Noise Cancellation support in SDK. This feature can be used to reduce background noise during a call. Read more details [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/extend-capabilities/noise-cancellation). -- Added support for showing Session Initiation Protocol(SIP) Peers in Room. Read more about SIP [here](https://www.100ms.live/docs/server-side/v2/how-to-guides/Session%20Initiation%20Protocol%20(SIP)/SIP-Interconnect). +- Added support for showing Session Initiation Protocol(SIP) Peers in Room. Read more about SIP [here](). - Added support for passing Hand Raise as a layout config in Prebuilt Customizer. @@ -261,7 +390,7 @@ Using Android SDK 2.9.53 & iOS SDK 1.8.0 - Added support for showing Noise Cancellation option in Preview & Room screens. -- Added support for appropriately indicating [SIP](https://www.100ms.live/docs/server-side/v2/how-to-guides/Session%20Initiation%20Protocol%20(SIP)/SIP-Interconnect) Peers in the Room. +- Added support for appropriately indicating [SIP]() Peers in the Room. - Using Hand Raise config to show/hide the Hand Raise button in the Prebuilt UI. @@ -269,7 +398,6 @@ Updated to Android SDK 2.9.53 & iOS SDK 1.8.0 **Full Changelog**: [1.10.1...1.10.2](https://github.com/100mslive/react-native-hms/compare/1.10.1...1.10.2) - ## 1.10.1 - 2024-03-15 | Package | Version | @@ -302,13 +430,13 @@ Updated to Android SDK 2.9.51 & iOS SDK 1.6.0 ### react-native-hms -- Added `fetchLeaderboard` API to fetch Quizzes Leaderboard data. Read more about it [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/room/polls). +- Added `fetchLeaderboard` API to fetch Quizzes Leaderboard data. Read more about it [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/room/polls). -- Added `sendHLSTimedMetadata` API to send HLS Timed Metadata. Read more about it [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/record-and-live-stream/hls-player). +- Added `sendHLSTimedMetadata` API to send HLS Timed Metadata. Read more about it [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/record-and-live-stream/hls-player). ### react-native-room-kit -- Added Quizzes Leaderboard UI on Prebuilt. +- Added Quizzes Leaderboard UI on Prebuilt. Users can now view the Leaderboard of Quizzes directly from the Prebuilt user interface. @@ -325,7 +453,7 @@ Updated to Android SDK 2.9.4 & iOS SDK 1.6.0 ### react-native-room-kit -- Introducing Quiz on Prebuilt +- Introducing Quiz on Prebuilt Users can now create, manage, and stop Quizzes directly from the Prebuilt user interface. @@ -342,27 +470,24 @@ Updated to Android SDK 2.9.2 & iOS SDK 1.5.1 ### react-native-hms -- Introducing Polls - - - APIs for Comprehensive Poll Management: - - - `startPoll` method to start polls - - `add` method to add responses/vote on poll questions - - `stop` method to end polls +- Introducing Polls + - APIs for Comprehensive Poll Management: + - `startPoll` method to start polls + - `add` method to add responses/vote on poll questions + - `stop` method to end polls - - Poll Update Listeners for Real-Time Notifications: + - Poll Update Listeners for Real-Time Notifications: + - Use `addPollUpdateListener` to start listening to poll updates - - Use `addPollUpdateListener` to start listening to poll updates - - - Enhanced Poll Permissions within `HMSPermissions`: - - `pollRead` property ensures controlled read access to poll results and details. - - `pollWrite` property enables secure write access, allowing for poll creation and response submission. + - Enhanced Poll Permissions within `HMSPermissions`: + - `pollRead` property ensures controlled read access to poll results and details. + - `pollWrite` property enables secure write access, allowing for poll creation and response submission. More information on Polls can be found [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/room/polls). ### react-native-room-kit -- Introducing polls on prebuilt +- Introducing polls on prebuilt Users can now create, manage, and stop polls directly from the prebuilt interface. @@ -379,7 +504,7 @@ Updated to Android SDK 2.9.2 & iOS SDK 1.5.1 ### react-native-room-kit -- Added Immersive Mode when in Landscape Orientation +- Added Immersive Mode when in Landscape Orientation When the device is in Landscape Orientation, the Prebuilt UI will now hide the Status Bar and Navigation Bar to provide a more immersive video experience. @@ -396,12 +521,12 @@ Updated to Android SDK 2.9.0 & iOS SDK 1.5.0 ### react-native-hms -- Added an enhancement on iOS where the user will leave Room if the app is killed. This behaviour will work only if the app gets some execution time before getting terminated by iOS. +- Added an enhancement on iOS where the user will leave Room if the app is killed. This behaviour will work only if the app gets some execution time before getting terminated by iOS. ### react-native-room-kit -- Resolved an issue where the SDK instance was getting recreated on leaving or ending the Room -- Resolved an issue where the Participants List was not getting updated immediately. +- Resolved an issue where the SDK instance was getting recreated on leaving or ending the Room +- Resolved an issue where the Participants List was not getting updated immediately. Updated to Android SDK 2.8.7 & iOS SDK 1.4.2 @@ -416,17 +541,17 @@ Updated to Android SDK 2.8.7 & iOS SDK 1.4.2 ### react-native-hms -- Added support for JSON values in Session Store -- Added `isLargeRoom` prop on `HMSRoom` object +- Added support for JSON values in Session Store +- Added `isLargeRoom` prop on `HMSRoom` object ### react-native-room-kit -- Added Real Time Chat Controls to pause/resume chat in a Room -- Added support to pin up to 3 messages in Chat -- Added support to configure Message Recipient selector via Prebuilt Customizer -- Added support to block a Peer from sending Chat Messages -- Added option to remove a Peer from Room via Chat Messages -- Added capability to perform Role Change without Preview +- Added Real Time Chat Controls to pause/resume chat in a Room +- Added support to pin up to 3 messages in Chat +- Added support to configure Message Recipient selector via Prebuilt Customizer +- Added support to block a Peer from sending Chat Messages +- Added option to remove a Peer from Room via Chat Messages +- Added capability to perform Role Change without Preview Updated to Android SDK 2.8.6 & iOS SDK 1.4.1 @@ -441,9 +566,9 @@ Updated to Android SDK 2.8.6 & iOS SDK 1.4.1 ### Changed -- Prebuilt: Now if a `username` is passed in `PrebuiltOptions`, then the user cannot modify it -- Prebuilt: Header and Footer can now be hidden by tapping on Screen -- Prebuilt: Resolved an issue where sometimes Screenshare on iOS did not start +- Prebuilt: Now if a `username` is passed in `PrebuiltOptions`, then the user cannot modify it +- Prebuilt: Header and Footer can now be hidden by tapping on Screen +- Prebuilt: Resolved an issue where sometimes Screenshare on iOS did not start Updated to Android SDK 2.8.3 & iOS SDK 1.4.0 @@ -458,9 +583,9 @@ Updated to Android SDK 2.8.3 & iOS SDK 1.4.0 ### Added -- Added intermediate state updates to Recording & Streaming APIs +- Added intermediate state updates to Recording & Streaming APIs -- Added Landscape orientation support on Prebuilt UI +- Added Landscape orientation support on Prebuilt UI Updated to Android SDK 2.8.2 & iOS SDK 1.3.1 @@ -475,7 +600,7 @@ Updated to Android SDK 2.8.2 & iOS SDK 1.3.1 ### Fixed -- Resolved an issue on iOS where build could have failed due to missing self declaration [here](https://github.com/100mslive/100ms-react-native/blob/b1456cb549d41e814f206724b179903ab9d274e1/packages/react-native-hms/ios/HMSRNSDK.swift#L857C9-L857C9). +- Resolved an issue on iOS where build could have failed due to missing self declaration [here](https://github.com/100mslive/100ms-react-native/blob/b1456cb549d41e814f206724b179903ab9d274e1/packages/react-native-hms/ios/HMSRNSDK.swift#L857C9-L857C9). Updated to Android SDK 2.8.1 & iOS SDK 1.3.0 @@ -490,13 +615,13 @@ Updated to Android SDK 2.8.1 & iOS SDK 1.3.0 ### Added -- Prebuilt: Added an option to mute the Room locally such that no audio of any Peers is heard in the Room +- Prebuilt: Added an option to mute the Room locally such that no audio of any Peers is heard in the Room ### Fixed -- Publisher and Subscriber Stats are sent according to whether they're enabled in flags on the Dashboard on Android +- Publisher and Subscriber Stats are sent according to whether they're enabled in flags on the Dashboard on Android -- Prebuilt: Resolved an issue where the PIP window was shown even when no Remote Peers are in the Room +- Prebuilt: Resolved an issue where the PIP window was shown even when no Remote Peers are in the Room Updated to Android SDK 2.8.1 & iOS SDK 1.3.0 @@ -511,15 +636,15 @@ Updated to Android SDK 2.8.1 & iOS SDK 1.3.0 ### Added -- Sending Subscriber side WebRTC analytics +- Sending Subscriber side WebRTC analytics ### Fixed -- Resolved an issue where after a Call Interruption the voices of users were robotic +- Resolved an issue where after a Call Interruption the voices of users were robotic -- Resolved an issue where on Android devices the lower video quality was being chosen instead of medium or high-resolution +- Resolved an issue where on Android devices the lower video quality was being chosen instead of medium or high-resolution -- Now, Hardware-based Echo Cancellation is the default instead of Software-based. More information is available [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/configure-your-device/microphone/echo-cancellation) +- Now, Hardware-based Echo Cancellation is the default instead of Software-based. More information is available [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/configure-your-device/microphone/echo-cancellation) Updated to Android SDK 2.8.0 & iOS SDK 1.2.0 @@ -531,17 +656,17 @@ Released: `@100mslive/react-native-room-kit@1.0.2`, `@100mslive/react-native-hms ### Added -- Added Automatic Entering Picture-in-Picture (PIP) Mode support on Android when app goes to background +- Added Automatic Entering Picture-in-Picture (PIP) Mode support on Android when app goes to background ### Changed -- Now action APIs like `changeRole`, `changeName`, etc will not send `ON_ERROR` events. Instead only the promise will be rejected with an appropriate error message. +- Now action APIs like `changeRole`, `changeName`, etc will not send `ON_ERROR` events. Instead only the promise will be rejected with an appropriate error message. -- Prebuilt: Showing `Bring to Stage` option by default for all off-stage peers +- Prebuilt: Showing `Bring to Stage` option by default for all off-stage peers -- Prebuilt: Android device's Back button press can be handled with the `handleBackButton` prop +- Prebuilt: Android device's Back button press can be handled with the `handleBackButton` prop -- Prebuilt: After leaving a Room, now a reason - `OnLeaveReason` - for which the `onLeave` callback was called will be sent. +- Prebuilt: After leaving a Room, now a reason - `OnLeaveReason` - for which the `onLeave` callback was called will be sent. Updated to Android SDK 2.7.9 & iOS SDK 1.1.0 @@ -553,21 +678,20 @@ Released: `@100mslive/react-native-room-kit@1.0.1`, `@100mslive/react-native-hms ### Added -- Large Room Support - - - Added first class "Hand Raise" apis: `raiseLocalPeerHand`, `lowerLocalPeerHand`, `lowerRemotePeerHand` and `isHandRaised` property on `HMSPeer` class instance - - Added `ON_PEER_LIST_UPDATED` event on `HMSUpdateListenerActions` enum - - Added "Peer List Iterator" APIs - `hmssdk.getPeerListIterator`, `HMSPeerListIterator.ts` and `HMSPeerListIteratorOptions.ts` +- Large Room Support + - Added first class "Hand Raise" apis: `raiseLocalPeerHand`, `lowerLocalPeerHand`, `lowerRemotePeerHand` and `isHandRaised` property on `HMSPeer` class instance + - Added `ON_PEER_LIST_UPDATED` event on `HMSUpdateListenerActions` enum + - Added "Peer List Iterator" APIs - `hmssdk.getPeerListIterator`, `HMSPeerListIterator.ts` and `HMSPeerListIteratorOptions.ts` For more details refer [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/peer/large-room) ### Changed -- Improved light theme support on `react-native-room-kit` package +- Improved light theme support on `react-native-room-kit` package -- Improved Browser Recording State notification while in Room +- Improved Browser Recording State notification while in Room -- Removed `react-native-keyboard-controller` lib dependency from `react-native-room-kit` package +- Removed `react-native-keyboard-controller` lib dependency from `react-native-room-kit` package Updated to Android SDK 2.7.7 & iOS SDK 1.1.0 @@ -579,18 +703,17 @@ Released: `@100mslive/react-native-hms@2.0.0-alpha.0` ### Added -- Large Room Support +- Large Room Support + - Added first class "Hand Raise" apis: `raiseLocalPeerHand`, `lowerLocalPeerHand`, `lowerRemotePeerHand` and `isHandRaised` property on `HMSPeer` class instance + - Added `ON_PEER_LIST_UPDATED` event on `HMSUpdateListenerActions` enum - - Added first class "Hand Raise" apis: `raiseLocalPeerHand`, `lowerLocalPeerHand`, `lowerRemotePeerHand` and `isHandRaised` property on `HMSPeer` class instance - - Added `ON_PEER_LIST_UPDATED` event on `HMSUpdateListenerActions` enum +- `ON_PIP_MODE_CHANGED` event on `HMSPIPListenerActions` enum -- `ON_PIP_MODE_CHANGED` event on `HMSPIPListenerActions` enum - -- new `autoEnterPipMode` option in PIPConfig interface +- new `autoEnterPipMode` option in PIPConfig interface ### Changed -- Renamed `enablePipMode` method available on `HMSSDK` instance to `enterPipMode` +- Renamed `enablePipMode` method available on `HMSSDK` instance to `enterPipMode` Updated to Android SDK 2.7.7 & iOS SDK 1.1.0 @@ -602,7 +725,7 @@ Released: `@100mslive/react-native-room-kit@1.0.0`, `@100mslive/react-native-hms ### Added -- Added `previewForRole` & `cancelPreview` APIs to preview the audio / video of a particular role before changing into the new Role. +- Added `previewForRole` & `cancelPreview` APIs to preview the audio / video of a particular role before changing into the new Role. ```js // preview video of a particular role @@ -616,7 +739,7 @@ Released: `@100mslive/react-native-room-kit@1.0.0`, `@100mslive/react-native-hms ### Changed -- Stopped sending `ON_ERROR` event when an action API fails. Instead, the promise wiil be rejected with an appropriate error message. +- Stopped sending `ON_ERROR` event when an action API fails. Instead, the promise wiil be rejected with an appropriate error message. Updated to Android SDK 2.7.6 & iOS SDK 0.9.12 @@ -626,11 +749,11 @@ Updated to Android SDK 2.7.6 & iOS SDK 0.9.12 ### Changed -- Resolved an issue where capturing screenshot of Video on iOS was failing +- Resolved an issue where capturing screenshot of Video on iOS was failing -- Resolved an issue where empty peer name was being sent in `onPeerUpdate` events +- Resolved an issue where empty peer name was being sent in `onPeerUpdate` events -- Changed `type` prop of `HMSMessage` to `string` +- Changed `type` prop of `HMSMessage` to `string` Updated to Android SDK 2.7.3 & iOS SDK 0.9.10 @@ -638,9 +761,9 @@ Updated to Android SDK 2.7.3 & iOS SDK 0.9.10 ## 1.7.1 - 2023-08-19 -- Reduced SDK size on Android by trimming out unused packages +- Reduced SDK size on Android by trimming out unused packages -- Enabled sending of `HMSRoomUpdate.ROOM_PEER_COUNT_UPDATED` event by default +- Enabled sending of `HMSRoomUpdate.ROOM_PEER_COUNT_UPDATED` event by default Updated to Android SDK 2.7.3 & iOS SDK 0.9.9 @@ -650,9 +773,9 @@ Updated to Android SDK 2.7.3 & iOS SDK 0.9.9 ### Breaking -- On Android, in the `build.gradle` file, increasing the `compileSdkVersion` & `targetSdkVersion` to `33` is required. For the changes in `build.gradle` file, refer [here](https://github.com/100mslive/react-native-hms/pull/1064/files#diff-ed8534ece8080a880075e103269eb1b9bdff22e8dfcf8427d7d977603292b889). +- On Android, in the `build.gradle` file, increasing the `compileSdkVersion` & `targetSdkVersion` to `33` is required. For the changes in `build.gradle` file, refer [here](https://github.com/100mslive/react-native-hms/pull/1064/files#diff-ed8534ece8080a880075e103269eb1b9bdff22e8dfcf8427d7d977603292b889). -- Removed Session Metadata methods +- Removed Session Metadata methods The `setSessionMetadata` and `getSessionMetadata` methods which were deprecated in previous versions have been removed now. @@ -660,27 +783,27 @@ Updated to Android SDK 2.7.3 & iOS SDK 0.9.9 ### New Features -- Added HLS Player +- Added HLS Player Introducing the 100ms HLS Player named `HMSHLSPlayer` a comprehensive end-to-end solution for playing Live Streaming content with inbuilt support for [Timed Metadata](https://www.100ms.live/docs/react-native/v2/how-to-guides/record-and-live-stream/hls-player#how-to-use-hls-timed-metadata-with-100ms-hls-player), [HLS Diagnostic Stats](https://www.100ms.live/docs/react-native/v2/how-to-guides/record-and-live-stream/hls-player#how-to-know-the-stats-related-to-hls-playback) & [Custom Player Controls](https://www.100ms.live/docs/react-native/v2/how-to-guides/record-and-live-stream/hls-player#how-to-show-video-player-ui). Learn more about `HMSHLSPlayer` [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/record-and-live-stream/hls-player). -- Switch Audio Output using Native iOS UI +- Switch Audio Output using Native iOS UI On iOS devices, you can now show the Native Airplay UI provided by iOS. Users can control the connected device which can be Airpods, any Bluetooth earphones, Wired Headsets, etc through which the Room's audio should be routed. Learn more about it [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/configure-your-device/speaker/audio-output-routing#switch-audio-output-device-using-ios-airplay-ui). -- Publisher Stats +- Publisher Stats SDK now sends detailed analytics from the WebRTC publisher side for enhanced debugging of call quality issues. ### Changed -- RTMP Streaming can now be started without the `meetingUrl`. It is now an optional parameter. Learn more about RTMP Streaming [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/record-and-live-stream/recording#start-streaming-recording). +- RTMP Streaming can now be started without the `meetingUrl`. It is now an optional parameter. Learn more about RTMP Streaming [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/record-and-live-stream/recording#start-streaming-recording). -- [Software Audio Echo Cancellation](https://www.100ms.live/docs/react-native/v2/how-to-guides/configure-your-device/microphone/echo-cancellation) is now enabled by default. To further customize Audio & Video Track Settings, refer the docs [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/track/track-settings). +- [Software Audio Echo Cancellation](https://www.100ms.live/docs/react-native/v2/how-to-guides/configure-your-device/microphone/echo-cancellation) is now enabled by default. To further customize Audio & Video Track Settings, refer the docs [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/track/track-settings). Updated to Android SDK 2.6.7 & iOS SDK 0.9.5 @@ -690,7 +813,7 @@ Updated to Android SDK 2.6.7 & iOS SDK 0.9.5 ### Added -- Added messageId property to HMSMessage class +- Added messageId property to HMSMessage class `messageId` allows you to uniquely identify messages sent or received by users within Rooms. @@ -704,7 +827,7 @@ Updated to Android SDK 2.6.4 & iOS SDK 0.9.4 ### Fixed -- Resolved an issue where applying Aspect Fit Ratio resulted in an unintended reset to AspectFill before restoring the correct behavior. +- Resolved an issue where applying Aspect Fit Ratio resulted in an unintended reset to AspectFill before restoring the correct behavior. For more details, refer to the documentation [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/render-video/overview#scale-type). @@ -716,13 +839,13 @@ Updated to Android SDK 2.6.3 & iOS SDK 0.9.4 ### New Features -- Session Store +- Session Store You can now use Session Store, a shared real-time key-value store accessible by everyone in the Room. This can be used to implement new features such as Pinned Messages and Spotlight Video Tiles, which brings a particular peer to the center stage for everyone in the Room. Learn more about [Session Store here](https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/room/session-store). -- Music Mode on iOS +- Music Mode on iOS The latest update adds the ability to achieve high-quality audio recordings with full, rich sound, whether you are recording music, podcasts, or any other type of audio. @@ -730,9 +853,9 @@ Updated to Android SDK 2.6.3 & iOS SDK 0.9.4 ### Fixed -- Resolved a compilation error caused by an incorrect import of internal HMSSDK types when used with certain versions of Babel. +- Resolved a compilation error caused by an incorrect import of internal HMSSDK types when used with certain versions of Babel. -- Fixed an issue on Android devices where the app was unable to handle null video tracks appropriately. +- Fixed an issue on Android devices where the app was unable to handle null video tracks appropriately. Updated to Android SDK 2.6.2 & iOS SDK 0.9.3 @@ -742,25 +865,25 @@ Updated to Android SDK 2.6.2 & iOS SDK 0.9.3 ### Added -- Added support for Adaptive Bitrate (Simulcast) +- 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](https://www.100ms.live/docs/concepts/v2/concepts/adaptive-bitrate). -- Using HMSVideoView on Android +- 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](https://www.100ms.live/docs/react-native/v2/how--to-guides/set-up-video-conferencing/render-video/overview). -- Added Simulcast support for RTC Stats +- 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](https://www.100ms.live/docs/react-native/v2/how--to-guides/measure-network-quality-and-performance/rtc-stats). -- Camera Control Capabilities +- Camera Control Capabilities The latest update includes the ability to capture an image from a local peer feed at the maximum resolution supported by the Camera. @@ -774,11 +897,10 @@ Full Changelog: [1.4.0...1.5.0](https://github.com/100mslive/react-native-hms/co ### Added -- Join using Room Codes - - - Room Codes is a streamlined and secure way to manage user authentication in Rooms. - - By generating short codes via `getAuthTokenByRoomCode` API, you can easily manage user access with one code per role for each room, without the need for server infrastructure - - This feature ensures a smoother login experience for users while enhancing security. +- Join using Room Codes + - Room Codes is a streamlined and secure way to manage user authentication in Rooms. + - By generating short codes via `getAuthTokenByRoomCode` API, you can easily manage user access with one code per role for each room, without the need for server infrastructure + - This feature ensures a smoother login experience for users while enhancing security. You can read more about Room Codes [here](https://www.100ms.live/docs/concepts/v2/concepts/rooms/room-codes/room-codes). @@ -792,13 +914,13 @@ Full Changelog: [1.3.0...1.4.0](https://github.com/100mslive/react-native-hms/co Our latest release comes with major performance enhancements which include - -- The introduction of Room and Peer Stores internally to optimize the initial data transfer across the JS Bridge. +- The introduction of Room and Peer Stores internally to optimize the initial data transfer across the JS Bridge. -- This design reduces the time taken to Join a Room. +- This design reduces the time taken to Join a Room. -- Post joining the Room, a minimal amount of data is exchanged to enhance performance. +- Post joining the Room, a minimal amount of data is exchanged to enhance performance. -- This effect is more evident in Rooms with a large number of Peers. +- This effect is more evident in Rooms with a large number of Peers. Updated to Native Android SDK 2.5.9 & Native iOS SDK 0.8.1 @@ -808,19 +930,19 @@ Full Changelog: [1.2.0...1.3.0](https://github.com/100mslive/react-native-hms/co ### Added -- Added support for video snapshot capture in HMSView for iOS, giving users the ability to extract high-quality images from the video playback +- Added support for video snapshot capture in HMSView for iOS, giving users the ability to extract high-quality images from the video playback ### Changed -- Improved performance for joining large rooms, reducing the time taken. +- Improved performance for joining large rooms, reducing the time taken. -- Implemented internal caching of Role objects to improve performance in large Rooms. +- Implemented internal caching of Role objects to improve performance in large Rooms. -- Updated the internal Native Events subscriber to prevent sending unattached event updates. +- Updated the internal Native Events subscriber to prevent sending unattached event updates. -- Fixed an issue where HMSTrack was incorrectly removed from HMSPeer if a RemotePeer un-publishes and re-publishes the HMSTrack. +- Fixed an issue where HMSTrack was incorrectly removed from HMSPeer if a RemotePeer un-publishes and re-publishes the HMSTrack. -- Enhanced Disconnected State detection on specific networks for better stability. +- Enhanced Disconnected State detection on specific networks for better stability. Updated to Native Android SDK 2.5.7 & Native iOS SDK 0.6.4 @@ -830,13 +952,13 @@ Full Changelog: [1.1.1...1.2.0](https://github.com/100mslive/react-native-hms/co ### Fixed -- Corrected the path of SDK Versions JSON file used in Gradle & Podspec files +- Corrected the path of SDK Versions JSON file used in Gradle & Podspec files ## 1.1.0 - 2022-12-16 ### Added -- Added support for Bulk Role Change +- 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. @@ -858,7 +980,7 @@ Full Changelog: [1.1.1...1.2.0](https://github.com/100mslive/react-native-hms/co For More Information, refer: https://www.100ms.live/docs/react-native/v2/features/change-role -- Added HMSPIPConfig to enable buttons on PIP Window on Android +- Added HMSPIPConfig to enable buttons on PIP Window on Android Actionable buttons like Mute/Unmute Audio/Video, Leave Room for local peers can now be configured while enabling PIP Mode. @@ -875,15 +997,15 @@ Full Changelog: [1.1.1...1.2.0](https://github.com/100mslive/react-native-hms/co ### Deprecated -- Deprecated `changeRole` API in favour of `changeRoleOfPeer` +- Deprecated `changeRole` API in favour of `changeRoleOfPeer` No change in functionality or method signature. ### Fixed -- Corrected Speaker updates by avoiding sending of update event if a peer is not found in room on Android -- 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 +- Corrected Speaker updates by avoiding sending of update event if a peer is not found in room on Android +- 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 @@ -893,7 +1015,7 @@ Full Changelog: [1.0.0...1.1.0](https://github.com/100mslive/react-native-hms/co #### Added -- Added support for Picture in Picture mode on Android. +- 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. @@ -905,7 +1027,7 @@ Full Changelog: [1.0.0...1.1.0](https://github.com/100mslive/react-native-hms/co const isEnabled = await hmsInstance.enablePipMode(); ``` -- Added Session Metadata APIs. +- Added Session Metadata APIs. Session metadata is a shared state that is accessible by everyone in the room. @@ -924,7 +1046,7 @@ Full Changelog: [1.0.0...1.1.0](https://github.com/100mslive/react-native-hms/co const metadata = await hmsInstance.getSessionMetaData(); ``` -- Added accessing of the local peer from the `HMSRoom` instance +- Added accessing of the local peer from the `HMSRoom` instance ```js // you can now directly access local peer from HMSRoom object returned in `ON_JOIN` event listener @@ -933,12 +1055,12 @@ Full Changelog: [1.0.0...1.1.0](https://github.com/100mslive/react-native-hms/co }; ``` -- Added `HMSMessageType` enum to Message +- Added `HMSMessageType` enum to Message #### Fixed -- Fixed memory leak on changing props of `HMSView` -- Importing Native Android SDK dependency from Maven Central instead of Jitpack +- Fixed memory leak on changing props of `HMSView` +- Importing Native Android SDK dependency from Maven Central instead of Jitpack Updated to Native Android SDK 2.5.1 & Native iOS SDK 0.4.7 @@ -948,28 +1070,28 @@ Full Changelog: [0.9.94...1.0.0](https://github.com/100mslive/react-native-hms/c #### Breaking Change -- Removed sending of the list of all peers in `onPeerUpdate` & `onTrackUpdate` event listeners. - Now, only the specific peer & track for which the change occurred will be sent to the listeners. - All peers in the room can be fetched using the `getRemotePeers` & `getLocalPeer` functions. +- Removed sending of the list of all peers in `onPeerUpdate` & `onTrackUpdate` event listeners. + Now, only the specific peer & track for which the change occurred will be sent to the listeners. + All peers in the room can be fetched using the `getRemotePeers` & `getLocalPeer` functions. #### Added -- Added option to use Software Decoder for Video rendering on Android devices -- Added support for Joining with Muted Audio & Video for local peers -- Added better Telemetrics for analytics -- Added support for receiving Server-side HMSMessage -- Added Maven Central repository to look for Android dependencies -- Added HMSLogSettings to configure Native Android SDK logs -- Added Utility functions to get all peers - Remote or Local peers & all Roles in the room -- Added toggle functions to enable/disable network quality updates +- Added option to use Software Decoder for Video rendering on Android devices +- Added support for Joining with Muted Audio & Video for local peers +- Added better Telemetrics for analytics +- Added support for receiving Server-side HMSMessage +- Added Maven Central repository to look for Android dependencies +- Added HMSLogSettings to configure Native Android SDK logs +- Added Utility functions to get all peers - Remote or Local peers & all Roles in the room +- Added toggle functions to enable/disable network quality updates #### Fixed -- Corrected RTMP Streaming & Recording running status -- Corrected `HMSSubscribeSettings`'s roles which are subscribed -- Fixed LetterBoxing (Black borders on top and bottom) observed when sharing the screen from Android devices -- Corrected Preview callback track types -- Removed unused setters for Local Audio & Video Track Settings +- Corrected RTMP Streaming & Recording running status +- Corrected `HMSSubscribeSettings`'s roles which are subscribed +- Fixed LetterBoxing (Black borders on top and bottom) observed when sharing the screen from Android devices +- Corrected Preview callback track types +- Removed unused setters for Local Audio & Video Track Settings Updated to Native Android SDK 2.5.1 & Native iOS SDK 0.4.6 @@ -977,229 +1099,229 @@ Full Changelog: [0.9.93...0.9.94](https://github.com/100mslive/react-native-hms/ ## 0.9.93 - 2022-09-27 -- Corrected params required while building HMSSDK instance -- Added the ability to play local audio files from iOS devices -- Added ability to share audio playing on iOS devices -- Updated HMSException class. Added `canRetry` attribute -- Updated to Native Android SDK 2.4.8 & Native iOS SDK 0.4.2 +- Corrected params required while building HMSSDK instance +- Added the ability to play local audio files from iOS devices +- Added ability to share audio playing on iOS devices +- Updated HMSException class. Added `canRetry` attribute +- Updated to Native Android SDK 2.4.8 & Native iOS SDK 0.4.2 **Full Changelog**: [0.9.92...0.9.93](https://github.com/100mslive/react-native-hms/compare/0.9.92...0.9.93) ## 0.9.92 - 2022-09-13 -- Added ability to set track settings while building the SDK -- Added capability to start screen share from iOS devices -- Added more descriptive error messages +- Added ability to set track settings while building the SDK +- Added capability to start screen share from iOS devices +- Added more descriptive error messages **Full Changelog**: [0.9.91...0.9.92](https://github.com/100mslive/react-native-hms/compare/0.9.91...0.9.92) ## 0.9.91 - 2022-08-18 -- Starting HLS streaming can now be done without HLSConfig object -- Added ability to do custom audio routing on Android -- Added the ability to share audio from local files on Android -- Updated permissions available to roles -- Corrected properties available in `HMSException` class -- Fixed an issue where exiting from Preview without joining the room was not releasing camera access -- Correct RTC Stats updates on Android -- `minifyEnabled` is set to `true` for Android release builds -- Updated to Native Android SDK 2.4.8 & Native iOS SDK 0.3.3 +- Starting HLS streaming can now be done without HLSConfig object +- Added ability to do custom audio routing on Android +- Added the ability to share audio from local files on Android +- Updated permissions available to roles +- Corrected properties available in `HMSException` class +- Fixed an issue where exiting from Preview without joining the room was not releasing camera access +- Correct RTC Stats updates on Android +- `minifyEnabled` is set to `true` for Android release builds +- Updated to Native Android SDK 2.4.8 & Native iOS SDK 0.3.3 **Full Changelog**: [0.9.9...0.9.91](https://github.com/100mslive/react-native-hms/compare/0.9.9...0.9.91) ## 0.9.9 - 2022-07-11 -- `leave` functions fails when invoked in Reconnecting (No Internet) state -- Added ability to remove logger after attaching -- `changeMetadata` & `remoteMuteAllAudio` functions is now async +- `leave` functions fails when invoked in Reconnecting (No Internet) state +- Added ability to remove logger after attaching +- `changeMetadata` & `remoteMuteAllAudio` functions is now async **Full Changelog**: [0.9.8...0.9.9](https://github.com/100mslive/react-native-hms/compare/0.9.8...0.9.9) ## 0.9.8 - 2022-07-08 -- Added resolution option in HMSRTMPConfig -- Added granular error information when incorrect/missing params found in API invocations -- Corrected current audio playback status when new tracks are added -- Updated to Native Android SDK 2.4.4 & Native iOS SDK 0.3.2 +- Added resolution option in HMSRTMPConfig +- Added granular error information when incorrect/missing params found in API invocations +- Corrected current audio playback status when new tracks are added +- Updated to Native Android SDK 2.4.4 & Native iOS SDK 0.3.2 **Full Changelog**: [0.9.7...0.9.8](https://github.com/100mslive/react-native-hms/compare/0.9.7...0.9.8) ## 0.9.7 - 2022-06-16 -- Corrected parsing of time in HMSMessage objects -- Made sender peer nullable in HMSMessage. The sender will be null when messages are triggered from Server. -- Updated to Native Android SDK 2.4.1 & Native iOS SDK 0.3.1 +- Corrected parsing of time in HMSMessage objects +- Made sender peer nullable in HMSMessage. The sender will be null when messages are triggered from Server. +- Updated to Native Android SDK 2.4.1 & Native iOS SDK 0.3.1 **Full Changelog**: [0.9.6...0.9.7](https://github.com/100mslive/react-native-hms/compare/0.9.6...0.9.7) ## 0.9.6 - 2022-06-09 -- Corrected HLSRecordingState updates received via room update events -- Corrected return types of Browser/Server Recording & RTMP Streaming APIs -- Fixed incorrect source type being passed for some tracks -- Added function & missing param details on receiving`REQUIRED_KEYS_NOT_FOUND` errors -- Added `destroy` API which will de-initialize all HMSSDK instances, even for multiple instances scenarios -- Added sessionId to HMSRoom class -- Updated to Native Android SDK 2.3.9 & Native iOS SDK 0.3.1 +- Corrected HLSRecordingState updates received via room update events +- Corrected return types of Browser/Server Recording & RTMP Streaming APIs +- Fixed incorrect source type being passed for some tracks +- Added function & missing param details on receiving`REQUIRED_KEYS_NOT_FOUND` errors +- Added `destroy` API which will de-initialize all HMSSDK instances, even for multiple instances scenarios +- Added sessionId to HMSRoom class +- Updated to Native Android SDK 2.3.9 & Native iOS SDK 0.3.1 ## 0.9.5 - 2022-05-11 -- Added the ability to take capture video frame (screenshot) of an individual video track -- Resolved circular dependency warnings -- Updated HMSView params - removed `sink` & `id` keys, made `style` optional -- Corrected `serverReceiveTime` param type in `HMSMessage` -- Updated to Native Android SDK 2.3.7 & Native iOS SDK 0.2.11 +- Added the ability to take capture video frame (screenshot) of an individual video track +- Resolved circular dependency warnings +- Updated HMSView params - removed `sink` & `id` keys, made `style` optional +- Corrected `serverReceiveTime` param type in `HMSMessage` +- Updated to Native Android SDK 2.3.7 & Native iOS SDK 0.2.11 ## 0.9.4 - 2022-04-20 -- Added ability to overlay HMS Views in z-index via `setZOrderMediaOverlay` on `HmsView` [to enable Mini-view type of layouts](/react-native/v2/how-to-guides/set-up-video-conferencing/render-video/mini-view) -- Added the ability to take screenshots of [individual video tiles using `screenshot` on `HmsView`](https://www.100ms.live/docs/react-native/v2/advanced-features/capture-hmsView) -- Sending error callback when a user denies permission to start screen-share from an Android device -- Updated to Native Android SDK 2.3.5 & Native iOS SDK 0.2.9 +- Added ability to overlay HMS Views in z-index via `setZOrderMediaOverlay` on `HmsView` [to enable Mini-view type of layouts](/react-native/v2/how-to-guides/set-up-video-conferencing/render-video/mini-view) +- Added the ability to take screenshots of [individual video tiles using `screenshot` on `HmsView`](https://www.100ms.live/docs/react-native/v2/advanced-features/capture-hmsView) +- Sending error callback when a user denies permission to start screen-share from an Android device +- Updated to Native Android SDK 2.3.5 & Native iOS SDK 0.2.9 ## 0.9.3 - 2022-04-05 -- Added Network Quality Reports measuring a user's connection speed -- Added the ability to render local auxiliary tracks on Android -- Updated to Native Android SDK 2.3.4 & Native iOS SDK 0.2.9 +- Added Network Quality Reports measuring a user's connection speed +- Added the ability to render local auxiliary tracks on Android +- Updated to Native Android SDK 2.3.4 & Native iOS SDK 0.2.9 ## 0.9.2 - 2022-03-28 -- Added `hlsRecordingConfig?: HMSHLSRecordingConfig` to allow HLS Recording -- Added `hlsRecordingState?: HMSHLSRecordingState` to `HMSRoom` for fetching the HLS Recording state of the room -- Added `sender: HMSPeer` & `recipient: HMSMessageRecipient` properties on `HMSMessage` -- Added promise to `startScreenshare` API so that clients can perform an action when screen share from an android mobile device -- Fixed an issue where muting audio/video of a remote peer does not work -- Updated to Native Android SDK 2.3.4 & Native iOS SDK 0.2.8 +- Added `hlsRecordingConfig?: HMSHLSRecordingConfig` to allow HLS Recording +- Added `hlsRecordingState?: HMSHLSRecordingState` to `HMSRoom` for fetching the HLS Recording state of the room +- Added `sender: HMSPeer` & `recipient: HMSMessageRecipient` properties on `HMSMessage` +- Added promise to `startScreenshare` API so that clients can perform an action when screen share from an android mobile device +- Fixed an issue where muting audio/video of a remote peer does not work +- Updated to Native Android SDK 2.3.4 & Native iOS SDK 0.2.8 ## 0.9.1 - 2022-03-02 -- Added room update & peer update callbacks on Preview. So before joining the room, you can know the peers already in the room & current room state like recording/streaming, etc -- Added RTC Call Stats to show info about packet loss, bitrate, jitter, fps, resolution, etc for video tracks -- Added start & stop timestamps in Server / Browser Recording & RTMP / HLS Streaming -- Added streaming allowed attribute to peer's role permission -- Added peer count attribute on HMSRoom object -- Updated Native iOS SDK to 0.2.7, Native Android SDK to 2.3.1 +- Added room update & peer update callbacks on Preview. So before joining the room, you can know the peers already in the room & current room state like recording/streaming, etc +- Added RTC Call Stats to show info about packet loss, bitrate, jitter, fps, resolution, etc for video tracks +- Added start & stop timestamps in Server / Browser Recording & RTMP / HLS Streaming +- Added streaming allowed attribute to peer's role permission +- Added peer count attribute on HMSRoom object +- Updated Native iOS SDK to 0.2.7, Native Android SDK to 2.3.1 ## 0.9.0 - 2022-01-28 -- Added support for HLS Streaming - You can now start / stop / view HLS from the package -- Added support for Android Screenshare - From an android device, you can do a screen share in the meeting room -- Updated API parameter types -- Updated to Native iOS SDK version 0.2.6 & Native Android SDK version 2.2.8 +- Added support for HLS Streaming - You can now start / stop / view HLS from the package +- Added support for Android Screenshare - From an android device, you can do a screen share in the meeting room +- Updated API parameter types +- Updated to Native iOS SDK version 0.2.6 & Native Android SDK version 2.2.8 ## 0.8.4 - 2022-01-07 -- Added check for Preview in progress before invoking join -- Added support React Native version 0.63 +- Added check for Preview in progress before invoking join +- Added support React Native version 0.63 ## 0.8.3 - 2021-12-29 -- Made HMSTrackSettings as an optional parameter while building the HMS SDK instance +- Made HMSTrackSettings as an optional parameter while building the HMS SDK instance ## 0.8.2 - 2021-12-29 -- Resolved a bug in Self Role Change which prevented the operation to succeed -- Updated data passed in onPeerUpdate & onTrackUpdate callbacks -- Made metadata as an optional field on peer object -- Added configuration to enable/disable the usage of Hardware Echo Cancellation on Android -- Added promise callbacks to messaging & Change Track/Role state APIs -- Corrected error messages sent by SDK +- Resolved a bug in Self Role Change which prevented the operation to succeed +- Updated data passed in onPeerUpdate & onTrackUpdate callbacks +- Made metadata as an optional field on peer object +- Added configuration to enable/disable the usage of Hardware Echo Cancellation on Android +- Added promise callbacks to messaging & Change Track/Role state APIs +- Corrected error messages sent by SDK ## 0.8.1 - 2021-12-10 -- Added peer metadata APIs using which you can build Raise Hand like features -- Added Recording APIs to start / stop recording / streaming meeting room -- Added set / get volume APIs -- Corrected emitting of errors on failures -- Added support for custom video sources +- Added peer metadata APIs using which you can build Raise Hand like features +- Added Recording APIs to start / stop recording / streaming meeting room +- Added set / get volume APIs +- Corrected emitting of errors on failures +- Added support for custom video sources ## 0.8.0 - 2021-11-19 #### Breaking -- `build` function of HMSSDK will not create a singleton now. -- `requestedBy` field has been made optional for HMSChangeTrackStateRequest, HMSRemovedFromRoomNotification, HMSRoleChangeRequest. It will be nil if the request originated from the REST API. -- `leave` function is now asynchronous. Join another room only when the previous leave call has been completed. +- `build` function of HMSSDK will not create a singleton now. +- `requestedBy` field has been made optional for HMSChangeTrackStateRequest, HMSRemovedFromRoomNotification, HMSRoleChangeRequest. It will be nil if the request originated from the REST API. +- `leave` function is now asynchronous. Join another room only when the previous leave call has been completed. #### Changed -- Corrected a bug where userId was not being passed. -- Sending full error description when any error/exceptions occur. -- `isMute` function of HMSTrack now returns correct status. -- `HMSView` is now exported from HMSSDK class. +- Corrected a bug where userId was not being passed. +- Sending full error description when any error/exceptions occur. +- `isMute` function of HMSTrack now returns correct status. +- `HMSView` is now exported from HMSSDK class. #### Added -- Added `isPlaybackAllowed` & `setPlaybackAllowed` for Remote Audio/Video tracks. -- Added `getRoom` function on HMSSDK which returns the currently joined room. Returns null if the peer is not in a room. -- Added `changeTrackStateForRole` API with which you can mute/unmute audio/video of all peers of a particular Role. +- Added `isPlaybackAllowed` & `setPlaybackAllowed` for Remote Audio/Video tracks. +- Added `getRoom` function on HMSSDK which returns the currently joined room. Returns null if the peer is not in a room. +- Added `changeTrackStateForRole` API with which you can mute/unmute audio/video of all peers of a particular Role. ## 0.7.4 - 2021-11-03 -- Catching exception on join function -- Cleared iOS global variables on leave -- Removed listeners on leave -- Exposed type param in message functions +- Catching exception on join function +- Cleared iOS global variables on leave +- Removed listeners on leave +- Exposed type param in message functions ## 0.7.3 - 2021-10-29 -- Clearing local cache data when leaving a room -- Catching exceptions thrown by join function -- Added Role-based permissions checks +- Clearing local cache data when leaving a room +- Catching exceptions thrown by join function +- Added Role-based permissions checks ## 0.7.2 - 2021-10-28 -- Added isPlaybackAllowed to remote audio & video tracks to mute/unmute remote tracks locally -- Added changeTrackState API to mute/unmute remote peers audio/video tracks for the entire room +- Added isPlaybackAllowed to remote audio & video tracks to mute/unmute remote tracks locally +- Added changeTrackState API to mute/unmute remote peers audio/video tracks for the entire room ## 0.7.1 - 2021-10-27 -- Added mirror prop to HMSView to horizontally flip video tracks +- Added mirror prop to HMSView to horizontally flip video tracks ## 0.7.0 - 2021-10-22 -- Added audio level, peer & track object to HMSSpeaker -- Made package backwards compatible up to React Native version 0.63.0 -- Removed Xcode 13 requirement -- Updated Sample app +- Added audio level, peer & track object to HMSSpeaker +- Made package backwards compatible up to React Native version 0.63.0 +- Removed Xcode 13 requirement +- Updated Sample app ## 0.6.0 - 2021-10-15 -- Added aspect ratio prop to HMSView -- Asking for Camera & Microphone permissions only when required -- Updated video tiles aspect ratio -- Added horizontal pagination in sample app to improve performance +- Added aspect ratio prop to HMSView +- Asking for Camera & Microphone permissions only when required +- Updated video tiles aspect ratio +- Added horizontal pagination in sample app to improve performance ## 0.5.0 - 2021-09-29 -- Added Role-based permissions -- You can now Change the Role of Remote Peers -- Change Role of yourself -- If you have permission then you can remove a peer from the room -- Multiple improvements for network & device usage optimization +- Added Role-based permissions +- You can now Change the Role of Remote Peers +- Change Role of yourself +- If you have permission then you can remove a peer from the room +- Multiple improvements for network & device usage optimization ## 0.3.0 - 2021-08-31 -- Updated to "react-native": "0.65.1" to mitigate security vulnerabilities -- Example App updated -- Multiple bug fixes & performance improvements +- Updated to "react-native": "0.65.1" to mitigate security vulnerabilities +- Example App updated +- Multiple bug fixes & performance improvements ## 0.2.0 - 2021-08-18 -- Added Support for Android! 🥳 +- Added Support for Android! 🥳 ## 0.1.0 - 2021-08-09 The first version of 100ms React Native SDK comes power-packed with support for multiple features like - -- Join/Leave Rooms -- Mute / Unmute Audio / Video -- Switch Camera -- Chat -- Preview Screen -- Network Switch Support -- Subscribe Degradation in bad network scenarios -- Error Handling and much more. +- Join/Leave Rooms +- Mute / Unmute Audio / Video +- Switch Camera +- Chat +- Preview Screen +- Network Switch Support +- Subscribe Degradation in bad network scenarios +- Error Handling and much more. Take it for a spin! 🥳 From f72455acfbbb10ab4bf172b7d5b5fe9f13540a7a Mon Sep 17 00:00:00 2001 From: Yogesh Singh Date: Wed, 29 Oct 2025 15:38:13 +0530 Subject: [PATCH 07/28] updated release notes --- .../v2/release-notes/release-notes.mdx | 690 +++++++++--------- 1 file changed, 345 insertions(+), 345 deletions(-) diff --git a/docs/react-native/v2/release-notes/release-notes.mdx b/docs/react-native/v2/release-notes/release-notes.mdx index 395bdd4dc..760667cde 100644 --- a/docs/react-native/v2/release-notes/release-notes.mdx +++ b/docs/react-native/v2/release-notes/release-notes.mdx @@ -13,90 +13,84 @@ nav: 4.1 ## 1.12.0 - 2025-10-28 -# Release Notes - v1.12.0 & v1.3.0 - | Package | Version | | ------------------------------------ | ------- | | @100mslive/react-native-room-kit | 1.3.0 | | @100mslive/react-native-hms | 1.12.0 | | @100mslive/react-native-video-plugin | 1.1.0 | -## 🎉 Highlights +## Highlights This is a major release bringing **React Native 0.77+ support**, **Android 16KB page size compliance** for Google Play 2025 requirements, and significant modernization of the SDK build system. This release includes breaking changes - please review the migration guide below. ### Key Improvements -- ⚡ **React Native 0.77.3 Support** - Full compatibility with the latest React Native version with improved performance and stability -- 📱 **Android 16KB Page Size Compliance** - Ready for Google Play's 2025 requirements for Android 15+ devices -- 📷 **Modernized QR Code Scanner** - Migrated to react-native-vision-camera 4.7.2 with ML Kit for better performance -- 🏗️ **Build System Modernization** - Updated to AGP 8.7.2, Gradle 8.11.1, Kotlin 2.0.21, and Java 17 -- 🚀 **Performance Improvements** - Major dependency updates across 20+ packages - ---- +- ⚡ **React Native 0.77.3 Support** - Full compatibility with the latest React Native version with improved performance and stability +- 📱 **Android 16KB Page Size Compliance** - Ready for Google Play's 2025 requirements for Android 15+ devices +- 📷 **Modernized QR Code Scanner** - Migrated to react-native-vision-camera 4.7.2 with ML Kit for better performance +- 🏗️ **Build System Modernization** - Updated to AGP 8.7.2, Gradle 8.11.1, Kotlin 2.0.21, and Java 17 +- 🚀 **Performance Improvements** - Major dependency updates across 20+ packages -## 📦 react-native-hms (1.12.0) +## react-native-hms (1.12.0) ### React Native 0.77.3 Support The SDK now fully supports React Native 0.77.3 (upgraded from 0.71.19), bringing 6 major versions of improvements including: -- Enhanced performance and stability -- Latest React 18.3.1 features -- Improved developer experience -- Better TypeScript support +- Enhanced performance and stability +- Latest React 18.3.1 features +- Improved developer experience +- Better TypeScript support ### Android 16KB Page Size Compliance Full compliance with Google Play's 2025 requirements for Android 15+ devices: -- NDK r27 support with 16KB page size -- Experimental flags enabled for compatibility -- Ready for next-generation Android devices -- Ensures your app won't be blocked on Google Play +- NDK r27 support with 16KB page size +- Experimental flags enabled for compatibility +- Ready for next-generation Android devices +- Ensures your app won't be blocked on Google Play ### Architecture Updates -- **64-bit Only Support**: Dropped 32-bit architectures (armeabi-v7a, x86) to support modern Android requirements -- **Supported Architectures**: arm64-v8a, x86_64 -- Improved performance on modern devices +- **64-bit Only Support**: Dropped 32-bit architectures (armeabi-v7a, x86) to support modern Android requirements +- **Supported Architectures**: arm64-v8a, x86_64 +- Improved performance on modern devices ### Native SDK Updates -- **Android SDK**: Updated to **2.9.78** (from 2.9.69) -- **iOS SDK**: Updated to **1.17.0** (from 1.16.5) -- Includes latest bug fixes, performance improvements, and new features from native SDKs +- **Android SDK**: Updated to **2.9.78** (from 2.9.69) +- **iOS SDK**: Updated to **1.17.0** (from 1.16.5) +- Includes latest bug fixes, performance improvements, and new features from native SDKs ### Modernized Build System **Android:** -- Android Gradle Plugin: 8.7.2 -- Gradle: 8.11.1 -- Kotlin: 2.0.21 -- Java: 17 (minimum required) -- Target SDK: 35 -- Compile SDK: 35 -- Minimum SDK: 24 (Android 7.0) +- Android Gradle Plugin: 8.7.2 +- Gradle: 8.11.1 +- Kotlin: 2.0.21 +- Java: 17 (minimum required) +- Target SDK: 35 +- Compile SDK: 35 +- Minimum SDK: 24 (Android 7.0) **iOS:** -- Minimum iOS: 16.0 (from 13.0) -- Updated Podfile for RN 0.77.3 compatibility -- New Architecture explicitly disabled for stability +- Minimum iOS: 16.0 (from 13.0) +- Updated Podfile for RN 0.77.3 compatibility +- New Architecture explicitly disabled for stability ### Technical Improvements -- Fixed TypeScript event emitter and session store imports -- Improved build performance with modern tooling -- Better type safety and developer experience -- Removed Flipper support (deprecated) -- Package namespace updated: com.rnexample → live.hms.rn -- MainApplication migrated from Java to Kotlin +- Fixed TypeScript event emitter and session store imports +- Improved build performance with modern tooling +- Better type safety and developer experience +- Removed Flipper support (deprecated) +- Package namespace updated: com.rnexample → live.hms.rn +- MainApplication migrated from Java to Kotlin ---- - -## 🎨 react-native-room-kit (1.3.0) +## react-native-room-kit (1.3.0) ### Major Dependency Updates @@ -116,15 +110,15 @@ Updated core dependencies for better performance, stability, and RN 0.77.3 compa ### Technical Improvements -- Fixed TypeScript AnimatedStyleProp type errors -- Improved keyboard avoiding view type safety -- Added 5 critical patches for RN 0.77.3 compatibility using patch-package -- Security fixes from npm audit -- Better performance with updated dependencies +- Fixed TypeScript AnimatedStyleProp type errors +- Improved keyboard avoiding view type safety +- Added 5 critical patches for RN 0.77.3 compatibility using patch-package +- Security fixes from npm audit +- Better performance with updated dependencies --- -## ⚠️ Breaking Changes +## Breaking Changes ### Minimum Requirements Updated @@ -138,17 +132,17 @@ Updated core dependencies for better performance, stability, and RN 0.77.3 compa ### Architecture Changes -- **32-bit Android devices no longer supported** - - Dropped: armeabi-v7a, x86 - - Supported: arm64-v8a, x86_64 only - - Reason: Required for 16KB page size compliance and modern Android +- **32-bit Android devices no longer supported** + - Dropped: armeabi-v7a, x86 + - Supported: arm64-v8a, x86_64 only + - Reason: Required for 16KB page size compliance and modern Android ### Peer Dependencies -- React Native peer dependency updated to `>=0.77.3` -- React peer dependency updated to `>=18.2.0` +- React Native peer dependency updated to `>=0.77.3` +- React peer dependency updated to `>=18.2.0` -## 📊 Version Details +## Version Details **Uses Android SDK 2.9.78 & iOS SDK 1.17.0** @@ -163,13 +157,13 @@ Updated core dependencies for better performance, stability, and RN 0.77.3 compa ### react-native-hms -- Added namespace in Android to support compile target 34 and above +- Added namespace in Android to support compile target 34 and above -- Resolved an issue in PIP on Android where screen could be stuck when switching to PIP mode fails +- Resolved an issue in PIP on Android where screen could be stuck when switching to PIP mode fails ### react-native-room-kit -- Disabled capturing of network quality in Preview screen by default +- Disabled capturing of network quality in Preview screen by default Uses Android SDK 2.9.69 & iOS SDK 1.16.5 @@ -185,21 +179,21 @@ Uses Android SDK 2.9.69 & iOS SDK 1.16.5 ### react-native-hms -- Added support for runtime permission handling in Android +- Added support for runtime permission handling in Android Users can now request runtime permissions for Camera, Microphone on Android devices. Read more about it [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/permissions). -- Added support for running apps on Android 14 +- Added support for running apps on Android 14 -- Corrected return types of APIs to be more consistent +- Corrected return types of APIs to be more consistent ### react-native-room-kit -- Added support for default state of Noise Cancellation when entering a Room +- Added support for default state of Noise Cancellation when entering a Room Users can now set the default state of Noise Cancellation when entering a Room. This can be set in the Prebuilt Customizer. -- Added support for Switching Role of a Peer in Prebuilt UI +- Added support for Switching Role of a Peer in Prebuilt UI Users can now switch the role of a Peer in the Prebuilt UI. This can be done by clicking on the Peer's name in the Participants List or on the Remote Peer Settings icon. @@ -216,13 +210,13 @@ Uses Android SDK 2.9.64 & iOS SDK 1.15.0 ### react-native-hms -- Added support for PIP Mode in iOS +- Added support for PIP Mode in iOS Users can now switch to Picture-in-Picture mode on iOS devices while in a Room. Read more about it [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/render-video/pip-mode). ### react-native-room-kit -- Added support for PIP Mode in Prebuilt UI +- Added support for PIP Mode in Prebuilt UI Users can now switch to Picture-in-Picture mode in the Prebuilt UI. @@ -240,13 +234,13 @@ Uses Android SDK 2.9.62 & iOS SDK 1.13.0 ### react-native-hms -- Live Transcriptions in WebRTC Calls +- Live Transcriptions in WebRTC Calls HMSSDK now provides support for Live Transcriptions in WebRTC calls. Users can now enable/disable Live Transcriptions during a call. The SDK provides a callback with the transcript for each peer when they speak. Read more about it [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/extend-capabilities/live-captions). ### react-native-room-kit -- Introducing Live Transcriptions options in Prebuilt +- Introducing Live Transcriptions options in Prebuilt Prebuilt now supports live transcription for better accessibility. Users can enable or disable live transcription from the prebuilt interface. @@ -264,27 +258,27 @@ Uses Android SDK 2.9.60 & iOS SDK 1.12.0 ### react-native-hms -- Introducing Virtual Background support in 100ms +- Introducing Virtual Background support in 100ms HMSSDK now provides support for Virtual Background using [`@100mslive/react-native-video-plugin`](https://github.com/100mslive/react-native-video-plugin). It allows users to change their background during a call. Users can choose from a variety of backgrounds or upload their own custom background. It also provides a feature to blur the background. Read more about it [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/extend-capabilities/virtual-background). -- Resolved warnings on Android & iOS when using HMSSDK in development mode +- Resolved warnings on Android & iOS when using HMSSDK in development mode ### react-native-room-kit -- Added support for Virtual Background in Prebuilt UI +- Added support for Virtual Background in Prebuilt UI By just adding [`@100mslive/react-native-video-plugin`](https://github.com/100mslive/react-native-video-plugin) package, users can now change their background during a call using the Virtual Background feature in the Prebuilt UI. -- Added support for Hyperlinks in Chat Messages on Prebuilt UI +- Added support for Hyperlinks in Chat Messages on Prebuilt UI Users can now click on hyperlinks in chat messages to open them in a browser. ### react-native-video-plugin -- The first version of the plugin is released. It provides support for Virtual Background in 100ms. Read more about it [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/extend-capabilities/virtual-background). +- The first version of the plugin is released. It provides support for Virtual Background in 100ms. Read more about it [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/extend-capabilities/virtual-background). Uses Android SDK 2.9.59 & iOS SDK 1.11.0 @@ -299,21 +293,21 @@ Uses Android SDK 2.9.59 & iOS SDK 1.11.0 ### react-native-hms -- Introducing Whiteboard support in 100ms +- Introducing Whiteboard support in 100ms HMSSDK now provides support for Whiteboard. You can now start/stop a Whiteboard using `startWhiteboard` & `stopWhiteboard` methods on `HMSInteractivityCenter`. HMSSDK provides also provides callbacks for whiteboard start/stop events. Learn more about it [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/extend-capabilities/whiteboard). ### react-native-room-kit -- Whiteboard +- Whiteboard Whiteboard is now supported in the Prebuilt UI. Users can now start/stop a Whiteboard using the Whiteboard button in the Prebuilt UI. -- Updated PIP Mode support for HLS Player +- Updated PIP Mode support for HLS Player PIP Mode is now supported in the HLS Player UI. Users can now switch to PIP mode while watching a video in the HLS Player. -- Resolved an issue where tile content was clipping from bottom in the Prebuilt UI +- Resolved an issue where tile content was clipping from bottom in the Prebuilt UI Uses Android SDK 2.9.56 & iOS SDK 1.10.0 @@ -328,7 +322,7 @@ Uses Android SDK 2.9.56 & iOS SDK 1.10.0 ### react-native-hms -- Support for captions in HLS Player +- Support for captions in HLS Player HMSSDK now provides support for Closed Captions in HLS Player. You can now check the support of captions in the stream, and enable or disable captions in the HLS Player using the methods available on its `ref` @@ -338,15 +332,15 @@ Uses Android SDK 2.9.56 & iOS SDK 1.10.0 ### react-native-room-kit -- Support for captions in HLS Player UI - HLS Player now supports captions for better accessibility. This can be enabled or disabled from the player settings. +- Support for captions in HLS Player UI + HLS Player now supports captions for better accessibility. This can be enabled or disabled from the player settings. -- Updated Chat message design in the new HLS Player UI +- Updated Chat message design in the new HLS Player UI -- Added new controls for the HLS video player - Added controls are - "Go Live", "Seekbar", "Closed Captions", "Pause", "Resume" and "Seek forward/backwards" +- Added new controls for the HLS video player + Added controls are - "Go Live", "Seekbar", "Closed Captions", "Pause", "Resume" and "Seek forward/backwards" -- Added support for "Pinch and Zoom" in the HLS Player UI +- Added support for "Pinch and Zoom" in the HLS Player UI Uses Android SDK 2.9.54 & iOS SDK 1.9.0 @@ -361,11 +355,11 @@ Uses Android SDK 2.9.54 & iOS SDK 1.9.0 ### react-native-room-kit -- Added revamped HLS Player UI in Prebuilt +- Added revamped HLS Player UI in Prebuilt -- Added support for both Portrait & Landscape orientations in HLS Player UI +- Added support for both Portrait & Landscape orientations in HLS Player UI -- More enhancements in HLS Player UI will be released soon! +- More enhancements in HLS Player UI will be released soon! Using Android SDK 2.9.53 & iOS SDK 1.8.0 @@ -380,19 +374,19 @@ Using Android SDK 2.9.53 & iOS SDK 1.8.0 ### react-native-hms -- Added Active Noise Cancellation support in SDK. This feature can be used to reduce background noise during a call. Read more details [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/extend-capabilities/noise-cancellation). +- Added Active Noise Cancellation support in SDK. This feature can be used to reduce background noise during a call. Read more details [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/extend-capabilities/noise-cancellation). -- Added support for showing Session Initiation Protocol(SIP) Peers in Room. Read more about SIP [here](). +- Added support for showing Session Initiation Protocol(SIP) Peers in Room. Read more about SIP [here](). -- Added support for passing Hand Raise as a layout config in Prebuilt Customizer. +- Added support for passing Hand Raise as a layout config in Prebuilt Customizer. ### react-native-room-kit -- Added support for showing Noise Cancellation option in Preview & Room screens. +- Added support for showing Noise Cancellation option in Preview & Room screens. -- Added support for appropriately indicating [SIP]() Peers in the Room. +- Added support for appropriately indicating [SIP]() Peers in the Room. -- Using Hand Raise config to show/hide the Hand Raise button in the Prebuilt UI. +- Using Hand Raise config to show/hide the Hand Raise button in the Prebuilt UI. Updated to Android SDK 2.9.53 & iOS SDK 1.8.0 @@ -407,15 +401,15 @@ Updated to Android SDK 2.9.53 & iOS SDK 1.8.0 ### react-native-hms -- Added support for `switchAudioOutput` on iOS. An example usage of this API can be to programmatically route the audio of the Room to Earpiece or Speaker. Read more about it [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/configure-your-device/speaker/audio-output-routing). +- Added support for `switchAudioOutput` on iOS. An example usage of this API can be to programmatically route the audio of the Room to Earpiece or Speaker. Read more about it [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/configure-your-device/speaker/audio-output-routing). -- Added API to keep device awake while in Room. This can be used to prevent the device from going to sleep while in a Room. Read more about it [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/keep-awake). +- Added API to keep device awake while in Room. This can be used to prevent the device from going to sleep while in a Room. Read more about it [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/keep-awake). ### react-native-room-kit -- Added support for joining a Room in Prebuilt using only the Auth Token instead of Room Code. +- Added support for joining a Room in Prebuilt using only the Auth Token instead of Room Code. -- Users can now skip the Preview Screen based on a flag in the Prebuilt Customizer to directly enter a Room. +- Users can now skip the Preview Screen based on a flag in the Prebuilt Customizer to directly enter a Room. Updated to Android SDK 2.9.51 & iOS SDK 1.6.0 @@ -430,13 +424,13 @@ Updated to Android SDK 2.9.51 & iOS SDK 1.6.0 ### react-native-hms -- Added `fetchLeaderboard` API to fetch Quizzes Leaderboard data. Read more about it [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/room/polls). +- Added `fetchLeaderboard` API to fetch Quizzes Leaderboard data. Read more about it [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/room/polls). -- Added `sendHLSTimedMetadata` API to send HLS Timed Metadata. Read more about it [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/record-and-live-stream/hls-player). +- Added `sendHLSTimedMetadata` API to send HLS Timed Metadata. Read more about it [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/record-and-live-stream/hls-player). ### react-native-room-kit -- Added Quizzes Leaderboard UI on Prebuilt. +- Added Quizzes Leaderboard UI on Prebuilt. Users can now view the Leaderboard of Quizzes directly from the Prebuilt user interface. @@ -453,7 +447,7 @@ Updated to Android SDK 2.9.4 & iOS SDK 1.6.0 ### react-native-room-kit -- Introducing Quiz on Prebuilt +- Introducing Quiz on Prebuilt Users can now create, manage, and stop Quizzes directly from the Prebuilt user interface. @@ -470,24 +464,27 @@ Updated to Android SDK 2.9.2 & iOS SDK 1.5.1 ### react-native-hms -- Introducing Polls - - APIs for Comprehensive Poll Management: - - `startPoll` method to start polls - - `add` method to add responses/vote on poll questions - - `stop` method to end polls +- Introducing Polls + + - APIs for Comprehensive Poll Management: - - Poll Update Listeners for Real-Time Notifications: - - Use `addPollUpdateListener` to start listening to poll updates + - `startPoll` method to start polls + - `add` method to add responses/vote on poll questions + - `stop` method to end polls - - Enhanced Poll Permissions within `HMSPermissions`: - - `pollRead` property ensures controlled read access to poll results and details. - - `pollWrite` property enables secure write access, allowing for poll creation and response submission. + - Poll Update Listeners for Real-Time Notifications: + + - Use `addPollUpdateListener` to start listening to poll updates + + - Enhanced Poll Permissions within `HMSPermissions`: + - `pollRead` property ensures controlled read access to poll results and details. + - `pollWrite` property enables secure write access, allowing for poll creation and response submission. More information on Polls can be found [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/room/polls). ### react-native-room-kit -- Introducing polls on prebuilt +- Introducing polls on prebuilt Users can now create, manage, and stop polls directly from the prebuilt interface. @@ -504,7 +501,7 @@ Updated to Android SDK 2.9.2 & iOS SDK 1.5.1 ### react-native-room-kit -- Added Immersive Mode when in Landscape Orientation +- Added Immersive Mode when in Landscape Orientation When the device is in Landscape Orientation, the Prebuilt UI will now hide the Status Bar and Navigation Bar to provide a more immersive video experience. @@ -521,12 +518,12 @@ Updated to Android SDK 2.9.0 & iOS SDK 1.5.0 ### react-native-hms -- Added an enhancement on iOS where the user will leave Room if the app is killed. This behaviour will work only if the app gets some execution time before getting terminated by iOS. +- Added an enhancement on iOS where the user will leave Room if the app is killed. This behaviour will work only if the app gets some execution time before getting terminated by iOS. ### react-native-room-kit -- Resolved an issue where the SDK instance was getting recreated on leaving or ending the Room -- Resolved an issue where the Participants List was not getting updated immediately. +- Resolved an issue where the SDK instance was getting recreated on leaving or ending the Room +- Resolved an issue where the Participants List was not getting updated immediately. Updated to Android SDK 2.8.7 & iOS SDK 1.4.2 @@ -541,17 +538,17 @@ Updated to Android SDK 2.8.7 & iOS SDK 1.4.2 ### react-native-hms -- Added support for JSON values in Session Store -- Added `isLargeRoom` prop on `HMSRoom` object +- Added support for JSON values in Session Store +- Added `isLargeRoom` prop on `HMSRoom` object ### react-native-room-kit -- Added Real Time Chat Controls to pause/resume chat in a Room -- Added support to pin up to 3 messages in Chat -- Added support to configure Message Recipient selector via Prebuilt Customizer -- Added support to block a Peer from sending Chat Messages -- Added option to remove a Peer from Room via Chat Messages -- Added capability to perform Role Change without Preview +- Added Real Time Chat Controls to pause/resume chat in a Room +- Added support to pin up to 3 messages in Chat +- Added support to configure Message Recipient selector via Prebuilt Customizer +- Added support to block a Peer from sending Chat Messages +- Added option to remove a Peer from Room via Chat Messages +- Added capability to perform Role Change without Preview Updated to Android SDK 2.8.6 & iOS SDK 1.4.1 @@ -566,9 +563,9 @@ Updated to Android SDK 2.8.6 & iOS SDK 1.4.1 ### Changed -- Prebuilt: Now if a `username` is passed in `PrebuiltOptions`, then the user cannot modify it -- Prebuilt: Header and Footer can now be hidden by tapping on Screen -- Prebuilt: Resolved an issue where sometimes Screenshare on iOS did not start +- Prebuilt: Now if a `username` is passed in `PrebuiltOptions`, then the user cannot modify it +- Prebuilt: Header and Footer can now be hidden by tapping on Screen +- Prebuilt: Resolved an issue where sometimes Screenshare on iOS did not start Updated to Android SDK 2.8.3 & iOS SDK 1.4.0 @@ -583,9 +580,9 @@ Updated to Android SDK 2.8.3 & iOS SDK 1.4.0 ### Added -- Added intermediate state updates to Recording & Streaming APIs +- Added intermediate state updates to Recording & Streaming APIs -- Added Landscape orientation support on Prebuilt UI +- Added Landscape orientation support on Prebuilt UI Updated to Android SDK 2.8.2 & iOS SDK 1.3.1 @@ -600,7 +597,7 @@ Updated to Android SDK 2.8.2 & iOS SDK 1.3.1 ### Fixed -- Resolved an issue on iOS where build could have failed due to missing self declaration [here](https://github.com/100mslive/100ms-react-native/blob/b1456cb549d41e814f206724b179903ab9d274e1/packages/react-native-hms/ios/HMSRNSDK.swift#L857C9-L857C9). +- Resolved an issue on iOS where build could have failed due to missing self declaration [here](https://github.com/100mslive/100ms-react-native/blob/b1456cb549d41e814f206724b179903ab9d274e1/packages/react-native-hms/ios/HMSRNSDK.swift#L857C9-L857C9). Updated to Android SDK 2.8.1 & iOS SDK 1.3.0 @@ -615,13 +612,13 @@ Updated to Android SDK 2.8.1 & iOS SDK 1.3.0 ### Added -- Prebuilt: Added an option to mute the Room locally such that no audio of any Peers is heard in the Room +- Prebuilt: Added an option to mute the Room locally such that no audio of any Peers is heard in the Room ### Fixed -- Publisher and Subscriber Stats are sent according to whether they're enabled in flags on the Dashboard on Android +- Publisher and Subscriber Stats are sent according to whether they're enabled in flags on the Dashboard on Android -- Prebuilt: Resolved an issue where the PIP window was shown even when no Remote Peers are in the Room +- Prebuilt: Resolved an issue where the PIP window was shown even when no Remote Peers are in the Room Updated to Android SDK 2.8.1 & iOS SDK 1.3.0 @@ -636,15 +633,15 @@ Updated to Android SDK 2.8.1 & iOS SDK 1.3.0 ### Added -- Sending Subscriber side WebRTC analytics +- Sending Subscriber side WebRTC analytics ### Fixed -- Resolved an issue where after a Call Interruption the voices of users were robotic +- Resolved an issue where after a Call Interruption the voices of users were robotic -- Resolved an issue where on Android devices the lower video quality was being chosen instead of medium or high-resolution +- Resolved an issue where on Android devices the lower video quality was being chosen instead of medium or high-resolution -- Now, Hardware-based Echo Cancellation is the default instead of Software-based. More information is available [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/configure-your-device/microphone/echo-cancellation) +- Now, Hardware-based Echo Cancellation is the default instead of Software-based. More information is available [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/configure-your-device/microphone/echo-cancellation) Updated to Android SDK 2.8.0 & iOS SDK 1.2.0 @@ -656,17 +653,17 @@ Released: `@100mslive/react-native-room-kit@1.0.2`, `@100mslive/react-native-hms ### Added -- Added Automatic Entering Picture-in-Picture (PIP) Mode support on Android when app goes to background +- Added Automatic Entering Picture-in-Picture (PIP) Mode support on Android when app goes to background ### Changed -- Now action APIs like `changeRole`, `changeName`, etc will not send `ON_ERROR` events. Instead only the promise will be rejected with an appropriate error message. +- Now action APIs like `changeRole`, `changeName`, etc will not send `ON_ERROR` events. Instead only the promise will be rejected with an appropriate error message. -- Prebuilt: Showing `Bring to Stage` option by default for all off-stage peers +- Prebuilt: Showing `Bring to Stage` option by default for all off-stage peers -- Prebuilt: Android device's Back button press can be handled with the `handleBackButton` prop +- Prebuilt: Android device's Back button press can be handled with the `handleBackButton` prop -- Prebuilt: After leaving a Room, now a reason - `OnLeaveReason` - for which the `onLeave` callback was called will be sent. +- Prebuilt: After leaving a Room, now a reason - `OnLeaveReason` - for which the `onLeave` callback was called will be sent. Updated to Android SDK 2.7.9 & iOS SDK 1.1.0 @@ -678,20 +675,21 @@ Released: `@100mslive/react-native-room-kit@1.0.1`, `@100mslive/react-native-hms ### Added -- Large Room Support - - Added first class "Hand Raise" apis: `raiseLocalPeerHand`, `lowerLocalPeerHand`, `lowerRemotePeerHand` and `isHandRaised` property on `HMSPeer` class instance - - Added `ON_PEER_LIST_UPDATED` event on `HMSUpdateListenerActions` enum - - Added "Peer List Iterator" APIs - `hmssdk.getPeerListIterator`, `HMSPeerListIterator.ts` and `HMSPeerListIteratorOptions.ts` +- Large Room Support + + - Added first class "Hand Raise" apis: `raiseLocalPeerHand`, `lowerLocalPeerHand`, `lowerRemotePeerHand` and `isHandRaised` property on `HMSPeer` class instance + - Added `ON_PEER_LIST_UPDATED` event on `HMSUpdateListenerActions` enum + - Added "Peer List Iterator" APIs - `hmssdk.getPeerListIterator`, `HMSPeerListIterator.ts` and `HMSPeerListIteratorOptions.ts` For more details refer [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/peer/large-room) ### Changed -- Improved light theme support on `react-native-room-kit` package +- Improved light theme support on `react-native-room-kit` package -- Improved Browser Recording State notification while in Room +- Improved Browser Recording State notification while in Room -- Removed `react-native-keyboard-controller` lib dependency from `react-native-room-kit` package +- Removed `react-native-keyboard-controller` lib dependency from `react-native-room-kit` package Updated to Android SDK 2.7.7 & iOS SDK 1.1.0 @@ -703,17 +701,18 @@ Released: `@100mslive/react-native-hms@2.0.0-alpha.0` ### Added -- Large Room Support - - Added first class "Hand Raise" apis: `raiseLocalPeerHand`, `lowerLocalPeerHand`, `lowerRemotePeerHand` and `isHandRaised` property on `HMSPeer` class instance - - Added `ON_PEER_LIST_UPDATED` event on `HMSUpdateListenerActions` enum +- Large Room Support -- `ON_PIP_MODE_CHANGED` event on `HMSPIPListenerActions` enum + - Added first class "Hand Raise" apis: `raiseLocalPeerHand`, `lowerLocalPeerHand`, `lowerRemotePeerHand` and `isHandRaised` property on `HMSPeer` class instance + - Added `ON_PEER_LIST_UPDATED` event on `HMSUpdateListenerActions` enum -- new `autoEnterPipMode` option in PIPConfig interface +- `ON_PIP_MODE_CHANGED` event on `HMSPIPListenerActions` enum + +- new `autoEnterPipMode` option in PIPConfig interface ### Changed -- Renamed `enablePipMode` method available on `HMSSDK` instance to `enterPipMode` +- Renamed `enablePipMode` method available on `HMSSDK` instance to `enterPipMode` Updated to Android SDK 2.7.7 & iOS SDK 1.1.0 @@ -725,7 +724,7 @@ Released: `@100mslive/react-native-room-kit@1.0.0`, `@100mslive/react-native-hms ### Added -- Added `previewForRole` & `cancelPreview` APIs to preview the audio / video of a particular role before changing into the new Role. +- Added `previewForRole` & `cancelPreview` APIs to preview the audio / video of a particular role before changing into the new Role. ```js // preview video of a particular role @@ -739,7 +738,7 @@ Released: `@100mslive/react-native-room-kit@1.0.0`, `@100mslive/react-native-hms ### Changed -- Stopped sending `ON_ERROR` event when an action API fails. Instead, the promise wiil be rejected with an appropriate error message. +- Stopped sending `ON_ERROR` event when an action API fails. Instead, the promise wiil be rejected with an appropriate error message. Updated to Android SDK 2.7.6 & iOS SDK 0.9.12 @@ -749,11 +748,11 @@ Updated to Android SDK 2.7.6 & iOS SDK 0.9.12 ### Changed -- Resolved an issue where capturing screenshot of Video on iOS was failing +- Resolved an issue where capturing screenshot of Video on iOS was failing -- Resolved an issue where empty peer name was being sent in `onPeerUpdate` events +- Resolved an issue where empty peer name was being sent in `onPeerUpdate` events -- Changed `type` prop of `HMSMessage` to `string` +- Changed `type` prop of `HMSMessage` to `string` Updated to Android SDK 2.7.3 & iOS SDK 0.9.10 @@ -761,9 +760,9 @@ Updated to Android SDK 2.7.3 & iOS SDK 0.9.10 ## 1.7.1 - 2023-08-19 -- Reduced SDK size on Android by trimming out unused packages +- Reduced SDK size on Android by trimming out unused packages -- Enabled sending of `HMSRoomUpdate.ROOM_PEER_COUNT_UPDATED` event by default +- Enabled sending of `HMSRoomUpdate.ROOM_PEER_COUNT_UPDATED` event by default Updated to Android SDK 2.7.3 & iOS SDK 0.9.9 @@ -773,9 +772,9 @@ Updated to Android SDK 2.7.3 & iOS SDK 0.9.9 ### Breaking -- On Android, in the `build.gradle` file, increasing the `compileSdkVersion` & `targetSdkVersion` to `33` is required. For the changes in `build.gradle` file, refer [here](https://github.com/100mslive/react-native-hms/pull/1064/files#diff-ed8534ece8080a880075e103269eb1b9bdff22e8dfcf8427d7d977603292b889). +- On Android, in the `build.gradle` file, increasing the `compileSdkVersion` & `targetSdkVersion` to `33` is required. For the changes in `build.gradle` file, refer [here](https://github.com/100mslive/react-native-hms/pull/1064/files#diff-ed8534ece8080a880075e103269eb1b9bdff22e8dfcf8427d7d977603292b889). -- Removed Session Metadata methods +- Removed Session Metadata methods The `setSessionMetadata` and `getSessionMetadata` methods which were deprecated in previous versions have been removed now. @@ -783,27 +782,27 @@ Updated to Android SDK 2.7.3 & iOS SDK 0.9.9 ### New Features -- Added HLS Player +- Added HLS Player Introducing the 100ms HLS Player named `HMSHLSPlayer` a comprehensive end-to-end solution for playing Live Streaming content with inbuilt support for [Timed Metadata](https://www.100ms.live/docs/react-native/v2/how-to-guides/record-and-live-stream/hls-player#how-to-use-hls-timed-metadata-with-100ms-hls-player), [HLS Diagnostic Stats](https://www.100ms.live/docs/react-native/v2/how-to-guides/record-and-live-stream/hls-player#how-to-know-the-stats-related-to-hls-playback) & [Custom Player Controls](https://www.100ms.live/docs/react-native/v2/how-to-guides/record-and-live-stream/hls-player#how-to-show-video-player-ui). Learn more about `HMSHLSPlayer` [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/record-and-live-stream/hls-player). -- Switch Audio Output using Native iOS UI +- Switch Audio Output using Native iOS UI On iOS devices, you can now show the Native Airplay UI provided by iOS. Users can control the connected device which can be Airpods, any Bluetooth earphones, Wired Headsets, etc through which the Room's audio should be routed. Learn more about it [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/configure-your-device/speaker/audio-output-routing#switch-audio-output-device-using-ios-airplay-ui). -- Publisher Stats +- Publisher Stats SDK now sends detailed analytics from the WebRTC publisher side for enhanced debugging of call quality issues. ### Changed -- RTMP Streaming can now be started without the `meetingUrl`. It is now an optional parameter. Learn more about RTMP Streaming [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/record-and-live-stream/recording#start-streaming-recording). +- RTMP Streaming can now be started without the `meetingUrl`. It is now an optional parameter. Learn more about RTMP Streaming [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/record-and-live-stream/recording#start-streaming-recording). -- [Software Audio Echo Cancellation](https://www.100ms.live/docs/react-native/v2/how-to-guides/configure-your-device/microphone/echo-cancellation) is now enabled by default. To further customize Audio & Video Track Settings, refer the docs [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/track/track-settings). +- [Software Audio Echo Cancellation](https://www.100ms.live/docs/react-native/v2/how-to-guides/configure-your-device/microphone/echo-cancellation) is now enabled by default. To further customize Audio & Video Track Settings, refer the docs [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/track/track-settings). Updated to Android SDK 2.6.7 & iOS SDK 0.9.5 @@ -813,7 +812,7 @@ Updated to Android SDK 2.6.7 & iOS SDK 0.9.5 ### Added -- Added messageId property to HMSMessage class +- Added messageId property to HMSMessage class `messageId` allows you to uniquely identify messages sent or received by users within Rooms. @@ -827,7 +826,7 @@ Updated to Android SDK 2.6.4 & iOS SDK 0.9.4 ### Fixed -- Resolved an issue where applying Aspect Fit Ratio resulted in an unintended reset to AspectFill before restoring the correct behavior. +- Resolved an issue where applying Aspect Fit Ratio resulted in an unintended reset to AspectFill before restoring the correct behavior. For more details, refer to the documentation [here](https://www.100ms.live/docs/react-native/v2/how-to-guides/set-up-video-conferencing/render-video/overview#scale-type). @@ -839,13 +838,13 @@ Updated to Android SDK 2.6.3 & iOS SDK 0.9.4 ### New Features -- Session Store +- Session Store You can now use Session Store, a shared real-time key-value store accessible by everyone in the Room. This can be used to implement new features such as Pinned Messages and Spotlight Video Tiles, which brings a particular peer to the center stage for everyone in the Room. Learn more about [Session Store here](https://www.100ms.live/docs/react-native/v2/how-to-guides/interact-with-room/room/session-store). -- Music Mode on iOS +- Music Mode on iOS The latest update adds the ability to achieve high-quality audio recordings with full, rich sound, whether you are recording music, podcasts, or any other type of audio. @@ -853,9 +852,9 @@ Updated to Android SDK 2.6.3 & iOS SDK 0.9.4 ### Fixed -- Resolved a compilation error caused by an incorrect import of internal HMSSDK types when used with certain versions of Babel. +- Resolved a compilation error caused by an incorrect import of internal HMSSDK types when used with certain versions of Babel. -- Fixed an issue on Android devices where the app was unable to handle null video tracks appropriately. +- Fixed an issue on Android devices where the app was unable to handle null video tracks appropriately. Updated to Android SDK 2.6.2 & iOS SDK 0.9.3 @@ -865,25 +864,25 @@ Updated to Android SDK 2.6.2 & iOS SDK 0.9.3 ### Added -- Added support for Adaptive Bitrate (Simulcast) +- 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](https://www.100ms.live/docs/concepts/v2/concepts/adaptive-bitrate). -- Using HMSVideoView on Android +- 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](https://www.100ms.live/docs/react-native/v2/how--to-guides/set-up-video-conferencing/render-video/overview). -- Added Simulcast support for RTC Stats +- 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](https://www.100ms.live/docs/react-native/v2/how--to-guides/measure-network-quality-and-performance/rtc-stats). -- Camera Control Capabilities +- Camera Control Capabilities The latest update includes the ability to capture an image from a local peer feed at the maximum resolution supported by the Camera. @@ -897,10 +896,11 @@ Full Changelog: [1.4.0...1.5.0](https://github.com/100mslive/react-native-hms/co ### Added -- Join using Room Codes - - Room Codes is a streamlined and secure way to manage user authentication in Rooms. - - By generating short codes via `getAuthTokenByRoomCode` API, you can easily manage user access with one code per role for each room, without the need for server infrastructure - - This feature ensures a smoother login experience for users while enhancing security. +- Join using Room Codes + + - Room Codes is a streamlined and secure way to manage user authentication in Rooms. + - By generating short codes via `getAuthTokenByRoomCode` API, you can easily manage user access with one code per role for each room, without the need for server infrastructure + - This feature ensures a smoother login experience for users while enhancing security. You can read more about Room Codes [here](https://www.100ms.live/docs/concepts/v2/concepts/rooms/room-codes/room-codes). @@ -914,13 +914,13 @@ Full Changelog: [1.3.0...1.4.0](https://github.com/100mslive/react-native-hms/co Our latest release comes with major performance enhancements which include - -- The introduction of Room and Peer Stores internally to optimize the initial data transfer across the JS Bridge. +- The introduction of Room and Peer Stores internally to optimize the initial data transfer across the JS Bridge. -- This design reduces the time taken to Join a Room. +- This design reduces the time taken to Join a Room. -- Post joining the Room, a minimal amount of data is exchanged to enhance performance. +- Post joining the Room, a minimal amount of data is exchanged to enhance performance. -- This effect is more evident in Rooms with a large number of Peers. +- This effect is more evident in Rooms with a large number of Peers. Updated to Native Android SDK 2.5.9 & Native iOS SDK 0.8.1 @@ -930,19 +930,19 @@ Full Changelog: [1.2.0...1.3.0](https://github.com/100mslive/react-native-hms/co ### Added -- Added support for video snapshot capture in HMSView for iOS, giving users the ability to extract high-quality images from the video playback +- Added support for video snapshot capture in HMSView for iOS, giving users the ability to extract high-quality images from the video playback ### Changed -- Improved performance for joining large rooms, reducing the time taken. +- Improved performance for joining large rooms, reducing the time taken. -- Implemented internal caching of Role objects to improve performance in large Rooms. +- Implemented internal caching of Role objects to improve performance in large Rooms. -- Updated the internal Native Events subscriber to prevent sending unattached event updates. +- Updated the internal Native Events subscriber to prevent sending unattached event updates. -- Fixed an issue where HMSTrack was incorrectly removed from HMSPeer if a RemotePeer un-publishes and re-publishes the HMSTrack. +- Fixed an issue where HMSTrack was incorrectly removed from HMSPeer if a RemotePeer un-publishes and re-publishes the HMSTrack. -- Enhanced Disconnected State detection on specific networks for better stability. +- Enhanced Disconnected State detection on specific networks for better stability. Updated to Native Android SDK 2.5.7 & Native iOS SDK 0.6.4 @@ -952,13 +952,13 @@ Full Changelog: [1.1.1...1.2.0](https://github.com/100mslive/react-native-hms/co ### Fixed -- Corrected the path of SDK Versions JSON file used in Gradle & Podspec files +- Corrected the path of SDK Versions JSON file used in Gradle & Podspec files ## 1.1.0 - 2022-12-16 ### Added -- Added support for Bulk Role Change +- 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. @@ -980,7 +980,7 @@ Full Changelog: [1.1.1...1.2.0](https://github.com/100mslive/react-native-hms/co For More Information, refer: https://www.100ms.live/docs/react-native/v2/features/change-role -- Added HMSPIPConfig to enable buttons on PIP Window on Android +- Added HMSPIPConfig to enable buttons on PIP Window on Android Actionable buttons like Mute/Unmute Audio/Video, Leave Room for local peers can now be configured while enabling PIP Mode. @@ -997,15 +997,15 @@ Full Changelog: [1.1.1...1.2.0](https://github.com/100mslive/react-native-hms/co ### Deprecated -- Deprecated `changeRole` API in favour of `changeRoleOfPeer` +- Deprecated `changeRole` API in favour of `changeRoleOfPeer` No change in functionality or method signature. ### Fixed -- Corrected Speaker updates by avoiding sending of update event if a peer is not found in room on Android -- 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 +- Corrected Speaker updates by avoiding sending of update event if a peer is not found in room on Android +- 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 @@ -1015,7 +1015,7 @@ Full Changelog: [1.0.0...1.1.0](https://github.com/100mslive/react-native-hms/co #### Added -- Added support for Picture in Picture mode on Android. +- 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. @@ -1027,7 +1027,7 @@ Full Changelog: [1.0.0...1.1.0](https://github.com/100mslive/react-native-hms/co const isEnabled = await hmsInstance.enablePipMode(); ``` -- Added Session Metadata APIs. +- Added Session Metadata APIs. Session metadata is a shared state that is accessible by everyone in the room. @@ -1046,21 +1046,21 @@ Full Changelog: [1.0.0...1.1.0](https://github.com/100mslive/react-native-hms/co const metadata = await hmsInstance.getSessionMetaData(); ``` -- Added accessing of the local peer from the `HMSRoom` instance +- Added accessing of the local peer from the `HMSRoom` instance ```js // you can now directly access local peer from HMSRoom object returned in `ON_JOIN` event listener - const onJoinSuccess = (data: {room: HMSRoom}) => { + const onJoinSuccess = (data: { room: HMSRoom }) => { console.log('local peer: ', data.room.localPeer); }; ``` -- Added `HMSMessageType` enum to Message +- Added `HMSMessageType` enum to Message #### Fixed -- Fixed memory leak on changing props of `HMSView` -- Importing Native Android SDK dependency from Maven Central instead of Jitpack +- Fixed memory leak on changing props of `HMSView` +- Importing Native Android SDK dependency from Maven Central instead of Jitpack Updated to Native Android SDK 2.5.1 & Native iOS SDK 0.4.7 @@ -1070,28 +1070,28 @@ Full Changelog: [0.9.94...1.0.0](https://github.com/100mslive/react-native-hms/c #### Breaking Change -- Removed sending of the list of all peers in `onPeerUpdate` & `onTrackUpdate` event listeners. - Now, only the specific peer & track for which the change occurred will be sent to the listeners. - All peers in the room can be fetched using the `getRemotePeers` & `getLocalPeer` functions. +- Removed sending of the list of all peers in `onPeerUpdate` & `onTrackUpdate` event listeners. + Now, only the specific peer & track for which the change occurred will be sent to the listeners. + All peers in the room can be fetched using the `getRemotePeers` & `getLocalPeer` functions. #### Added -- Added option to use Software Decoder for Video rendering on Android devices -- Added support for Joining with Muted Audio & Video for local peers -- Added better Telemetrics for analytics -- Added support for receiving Server-side HMSMessage -- Added Maven Central repository to look for Android dependencies -- Added HMSLogSettings to configure Native Android SDK logs -- Added Utility functions to get all peers - Remote or Local peers & all Roles in the room -- Added toggle functions to enable/disable network quality updates +- Added option to use Software Decoder for Video rendering on Android devices +- Added support for Joining with Muted Audio & Video for local peers +- Added better Telemetrics for analytics +- Added support for receiving Server-side HMSMessage +- Added Maven Central repository to look for Android dependencies +- Added HMSLogSettings to configure Native Android SDK logs +- Added Utility functions to get all peers - Remote or Local peers & all Roles in the room +- Added toggle functions to enable/disable network quality updates #### Fixed -- Corrected RTMP Streaming & Recording running status -- Corrected `HMSSubscribeSettings`'s roles which are subscribed -- Fixed LetterBoxing (Black borders on top and bottom) observed when sharing the screen from Android devices -- Corrected Preview callback track types -- Removed unused setters for Local Audio & Video Track Settings +- Corrected RTMP Streaming & Recording running status +- Corrected `HMSSubscribeSettings`'s roles which are subscribed +- Fixed LetterBoxing (Black borders on top and bottom) observed when sharing the screen from Android devices +- Corrected Preview callback track types +- Removed unused setters for Local Audio & Video Track Settings Updated to Native Android SDK 2.5.1 & Native iOS SDK 0.4.6 @@ -1099,229 +1099,229 @@ Full Changelog: [0.9.93...0.9.94](https://github.com/100mslive/react-native-hms/ ## 0.9.93 - 2022-09-27 -- Corrected params required while building HMSSDK instance -- Added the ability to play local audio files from iOS devices -- Added ability to share audio playing on iOS devices -- Updated HMSException class. Added `canRetry` attribute -- Updated to Native Android SDK 2.4.8 & Native iOS SDK 0.4.2 +- Corrected params required while building HMSSDK instance +- Added the ability to play local audio files from iOS devices +- Added ability to share audio playing on iOS devices +- Updated HMSException class. Added `canRetry` attribute +- Updated to Native Android SDK 2.4.8 & Native iOS SDK 0.4.2 **Full Changelog**: [0.9.92...0.9.93](https://github.com/100mslive/react-native-hms/compare/0.9.92...0.9.93) ## 0.9.92 - 2022-09-13 -- Added ability to set track settings while building the SDK -- Added capability to start screen share from iOS devices -- Added more descriptive error messages +- Added ability to set track settings while building the SDK +- Added capability to start screen share from iOS devices +- Added more descriptive error messages **Full Changelog**: [0.9.91...0.9.92](https://github.com/100mslive/react-native-hms/compare/0.9.91...0.9.92) ## 0.9.91 - 2022-08-18 -- Starting HLS streaming can now be done without HLSConfig object -- Added ability to do custom audio routing on Android -- Added the ability to share audio from local files on Android -- Updated permissions available to roles -- Corrected properties available in `HMSException` class -- Fixed an issue where exiting from Preview without joining the room was not releasing camera access -- Correct RTC Stats updates on Android -- `minifyEnabled` is set to `true` for Android release builds -- Updated to Native Android SDK 2.4.8 & Native iOS SDK 0.3.3 +- Starting HLS streaming can now be done without HLSConfig object +- Added ability to do custom audio routing on Android +- Added the ability to share audio from local files on Android +- Updated permissions available to roles +- Corrected properties available in `HMSException` class +- Fixed an issue where exiting from Preview without joining the room was not releasing camera access +- Correct RTC Stats updates on Android +- `minifyEnabled` is set to `true` for Android release builds +- Updated to Native Android SDK 2.4.8 & Native iOS SDK 0.3.3 **Full Changelog**: [0.9.9...0.9.91](https://github.com/100mslive/react-native-hms/compare/0.9.9...0.9.91) ## 0.9.9 - 2022-07-11 -- `leave` functions fails when invoked in Reconnecting (No Internet) state -- Added ability to remove logger after attaching -- `changeMetadata` & `remoteMuteAllAudio` functions is now async +- `leave` functions fails when invoked in Reconnecting (No Internet) state +- Added ability to remove logger after attaching +- `changeMetadata` & `remoteMuteAllAudio` functions is now async **Full Changelog**: [0.9.8...0.9.9](https://github.com/100mslive/react-native-hms/compare/0.9.8...0.9.9) ## 0.9.8 - 2022-07-08 -- Added resolution option in HMSRTMPConfig -- Added granular error information when incorrect/missing params found in API invocations -- Corrected current audio playback status when new tracks are added -- Updated to Native Android SDK 2.4.4 & Native iOS SDK 0.3.2 +- Added resolution option in HMSRTMPConfig +- Added granular error information when incorrect/missing params found in API invocations +- Corrected current audio playback status when new tracks are added +- Updated to Native Android SDK 2.4.4 & Native iOS SDK 0.3.2 **Full Changelog**: [0.9.7...0.9.8](https://github.com/100mslive/react-native-hms/compare/0.9.7...0.9.8) ## 0.9.7 - 2022-06-16 -- Corrected parsing of time in HMSMessage objects -- Made sender peer nullable in HMSMessage. The sender will be null when messages are triggered from Server. -- Updated to Native Android SDK 2.4.1 & Native iOS SDK 0.3.1 +- Corrected parsing of time in HMSMessage objects +- Made sender peer nullable in HMSMessage. The sender will be null when messages are triggered from Server. +- Updated to Native Android SDK 2.4.1 & Native iOS SDK 0.3.1 **Full Changelog**: [0.9.6...0.9.7](https://github.com/100mslive/react-native-hms/compare/0.9.6...0.9.7) ## 0.9.6 - 2022-06-09 -- Corrected HLSRecordingState updates received via room update events -- Corrected return types of Browser/Server Recording & RTMP Streaming APIs -- Fixed incorrect source type being passed for some tracks -- Added function & missing param details on receiving`REQUIRED_KEYS_NOT_FOUND` errors -- Added `destroy` API which will de-initialize all HMSSDK instances, even for multiple instances scenarios -- Added sessionId to HMSRoom class -- Updated to Native Android SDK 2.3.9 & Native iOS SDK 0.3.1 +- Corrected HLSRecordingState updates received via room update events +- Corrected return types of Browser/Server Recording & RTMP Streaming APIs +- Fixed incorrect source type being passed for some tracks +- Added function & missing param details on receiving`REQUIRED_KEYS_NOT_FOUND` errors +- Added `destroy` API which will de-initialize all HMSSDK instances, even for multiple instances scenarios +- Added sessionId to HMSRoom class +- Updated to Native Android SDK 2.3.9 & Native iOS SDK 0.3.1 ## 0.9.5 - 2022-05-11 -- Added the ability to take capture video frame (screenshot) of an individual video track -- Resolved circular dependency warnings -- Updated HMSView params - removed `sink` & `id` keys, made `style` optional -- Corrected `serverReceiveTime` param type in `HMSMessage` -- Updated to Native Android SDK 2.3.7 & Native iOS SDK 0.2.11 +- Added the ability to take capture video frame (screenshot) of an individual video track +- Resolved circular dependency warnings +- Updated HMSView params - removed `sink` & `id` keys, made `style` optional +- Corrected `serverReceiveTime` param type in `HMSMessage` +- Updated to Native Android SDK 2.3.7 & Native iOS SDK 0.2.11 ## 0.9.4 - 2022-04-20 -- Added ability to overlay HMS Views in z-index via `setZOrderMediaOverlay` on `HmsView` [to enable Mini-view type of layouts](/react-native/v2/how-to-guides/set-up-video-conferencing/render-video/mini-view) -- Added the ability to take screenshots of [individual video tiles using `screenshot` on `HmsView`](https://www.100ms.live/docs/react-native/v2/advanced-features/capture-hmsView) -- Sending error callback when a user denies permission to start screen-share from an Android device -- Updated to Native Android SDK 2.3.5 & Native iOS SDK 0.2.9 +- Added ability to overlay HMS Views in z-index via `setZOrderMediaOverlay` on `HmsView` [to enable Mini-view type of layouts](/react-native/v2/how-to-guides/set-up-video-conferencing/render-video/mini-view) +- Added the ability to take screenshots of [individual video tiles using `screenshot` on `HmsView`](https://www.100ms.live/docs/react-native/v2/advanced-features/capture-hmsView) +- Sending error callback when a user denies permission to start screen-share from an Android device +- Updated to Native Android SDK 2.3.5 & Native iOS SDK 0.2.9 ## 0.9.3 - 2022-04-05 -- Added Network Quality Reports measuring a user's connection speed -- Added the ability to render local auxiliary tracks on Android -- Updated to Native Android SDK 2.3.4 & Native iOS SDK 0.2.9 +- Added Network Quality Reports measuring a user's connection speed +- Added the ability to render local auxiliary tracks on Android +- Updated to Native Android SDK 2.3.4 & Native iOS SDK 0.2.9 ## 0.9.2 - 2022-03-28 -- Added `hlsRecordingConfig?: HMSHLSRecordingConfig` to allow HLS Recording -- Added `hlsRecordingState?: HMSHLSRecordingState` to `HMSRoom` for fetching the HLS Recording state of the room -- Added `sender: HMSPeer` & `recipient: HMSMessageRecipient` properties on `HMSMessage` -- Added promise to `startScreenshare` API so that clients can perform an action when screen share from an android mobile device -- Fixed an issue where muting audio/video of a remote peer does not work -- Updated to Native Android SDK 2.3.4 & Native iOS SDK 0.2.8 +- Added `hlsRecordingConfig?: HMSHLSRecordingConfig` to allow HLS Recording +- Added `hlsRecordingState?: HMSHLSRecordingState` to `HMSRoom` for fetching the HLS Recording state of the room +- Added `sender: HMSPeer` & `recipient: HMSMessageRecipient` properties on `HMSMessage` +- Added promise to `startScreenshare` API so that clients can perform an action when screen share from an android mobile device +- Fixed an issue where muting audio/video of a remote peer does not work +- Updated to Native Android SDK 2.3.4 & Native iOS SDK 0.2.8 ## 0.9.1 - 2022-03-02 -- Added room update & peer update callbacks on Preview. So before joining the room, you can know the peers already in the room & current room state like recording/streaming, etc -- Added RTC Call Stats to show info about packet loss, bitrate, jitter, fps, resolution, etc for video tracks -- Added start & stop timestamps in Server / Browser Recording & RTMP / HLS Streaming -- Added streaming allowed attribute to peer's role permission -- Added peer count attribute on HMSRoom object -- Updated Native iOS SDK to 0.2.7, Native Android SDK to 2.3.1 +- Added room update & peer update callbacks on Preview. So before joining the room, you can know the peers already in the room & current room state like recording/streaming, etc +- Added RTC Call Stats to show info about packet loss, bitrate, jitter, fps, resolution, etc for video tracks +- Added start & stop timestamps in Server / Browser Recording & RTMP / HLS Streaming +- Added streaming allowed attribute to peer's role permission +- Added peer count attribute on HMSRoom object +- Updated Native iOS SDK to 0.2.7, Native Android SDK to 2.3.1 ## 0.9.0 - 2022-01-28 -- Added support for HLS Streaming - You can now start / stop / view HLS from the package -- Added support for Android Screenshare - From an android device, you can do a screen share in the meeting room -- Updated API parameter types -- Updated to Native iOS SDK version 0.2.6 & Native Android SDK version 2.2.8 +- Added support for HLS Streaming - You can now start / stop / view HLS from the package +- Added support for Android Screenshare - From an android device, you can do a screen share in the meeting room +- Updated API parameter types +- Updated to Native iOS SDK version 0.2.6 & Native Android SDK version 2.2.8 ## 0.8.4 - 2022-01-07 -- Added check for Preview in progress before invoking join -- Added support React Native version 0.63 +- Added check for Preview in progress before invoking join +- Added support React Native version 0.63 ## 0.8.3 - 2021-12-29 -- Made HMSTrackSettings as an optional parameter while building the HMS SDK instance +- Made HMSTrackSettings as an optional parameter while building the HMS SDK instance ## 0.8.2 - 2021-12-29 -- Resolved a bug in Self Role Change which prevented the operation to succeed -- Updated data passed in onPeerUpdate & onTrackUpdate callbacks -- Made metadata as an optional field on peer object -- Added configuration to enable/disable the usage of Hardware Echo Cancellation on Android -- Added promise callbacks to messaging & Change Track/Role state APIs -- Corrected error messages sent by SDK +- Resolved a bug in Self Role Change which prevented the operation to succeed +- Updated data passed in onPeerUpdate & onTrackUpdate callbacks +- Made metadata as an optional field on peer object +- Added configuration to enable/disable the usage of Hardware Echo Cancellation on Android +- Added promise callbacks to messaging & Change Track/Role state APIs +- Corrected error messages sent by SDK ## 0.8.1 - 2021-12-10 -- Added peer metadata APIs using which you can build Raise Hand like features -- Added Recording APIs to start / stop recording / streaming meeting room -- Added set / get volume APIs -- Corrected emitting of errors on failures -- Added support for custom video sources +- Added peer metadata APIs using which you can build Raise Hand like features +- Added Recording APIs to start / stop recording / streaming meeting room +- Added set / get volume APIs +- Corrected emitting of errors on failures +- Added support for custom video sources ## 0.8.0 - 2021-11-19 #### Breaking -- `build` function of HMSSDK will not create a singleton now. -- `requestedBy` field has been made optional for HMSChangeTrackStateRequest, HMSRemovedFromRoomNotification, HMSRoleChangeRequest. It will be nil if the request originated from the REST API. -- `leave` function is now asynchronous. Join another room only when the previous leave call has been completed. +- `build` function of HMSSDK will not create a singleton now. +- `requestedBy` field has been made optional for HMSChangeTrackStateRequest, HMSRemovedFromRoomNotification, HMSRoleChangeRequest. It will be nil if the request originated from the REST API. +- `leave` function is now asynchronous. Join another room only when the previous leave call has been completed. #### Changed -- Corrected a bug where userId was not being passed. -- Sending full error description when any error/exceptions occur. -- `isMute` function of HMSTrack now returns correct status. -- `HMSView` is now exported from HMSSDK class. +- Corrected a bug where userId was not being passed. +- Sending full error description when any error/exceptions occur. +- `isMute` function of HMSTrack now returns correct status. +- `HMSView` is now exported from HMSSDK class. #### Added -- Added `isPlaybackAllowed` & `setPlaybackAllowed` for Remote Audio/Video tracks. -- Added `getRoom` function on HMSSDK which returns the currently joined room. Returns null if the peer is not in a room. -- Added `changeTrackStateForRole` API with which you can mute/unmute audio/video of all peers of a particular Role. +- Added `isPlaybackAllowed` & `setPlaybackAllowed` for Remote Audio/Video tracks. +- Added `getRoom` function on HMSSDK which returns the currently joined room. Returns null if the peer is not in a room. +- Added `changeTrackStateForRole` API with which you can mute/unmute audio/video of all peers of a particular Role. ## 0.7.4 - 2021-11-03 -- Catching exception on join function -- Cleared iOS global variables on leave -- Removed listeners on leave -- Exposed type param in message functions +- Catching exception on join function +- Cleared iOS global variables on leave +- Removed listeners on leave +- Exposed type param in message functions ## 0.7.3 - 2021-10-29 -- Clearing local cache data when leaving a room -- Catching exceptions thrown by join function -- Added Role-based permissions checks +- Clearing local cache data when leaving a room +- Catching exceptions thrown by join function +- Added Role-based permissions checks ## 0.7.2 - 2021-10-28 -- Added isPlaybackAllowed to remote audio & video tracks to mute/unmute remote tracks locally -- Added changeTrackState API to mute/unmute remote peers audio/video tracks for the entire room +- Added isPlaybackAllowed to remote audio & video tracks to mute/unmute remote tracks locally +- Added changeTrackState API to mute/unmute remote peers audio/video tracks for the entire room ## 0.7.1 - 2021-10-27 -- Added mirror prop to HMSView to horizontally flip video tracks +- Added mirror prop to HMSView to horizontally flip video tracks ## 0.7.0 - 2021-10-22 -- Added audio level, peer & track object to HMSSpeaker -- Made package backwards compatible up to React Native version 0.63.0 -- Removed Xcode 13 requirement -- Updated Sample app +- Added audio level, peer & track object to HMSSpeaker +- Made package backwards compatible up to React Native version 0.63.0 +- Removed Xcode 13 requirement +- Updated Sample app ## 0.6.0 - 2021-10-15 -- Added aspect ratio prop to HMSView -- Asking for Camera & Microphone permissions only when required -- Updated video tiles aspect ratio -- Added horizontal pagination in sample app to improve performance +- Added aspect ratio prop to HMSView +- Asking for Camera & Microphone permissions only when required +- Updated video tiles aspect ratio +- Added horizontal pagination in sample app to improve performance ## 0.5.0 - 2021-09-29 -- Added Role-based permissions -- You can now Change the Role of Remote Peers -- Change Role of yourself -- If you have permission then you can remove a peer from the room -- Multiple improvements for network & device usage optimization +- Added Role-based permissions +- You can now Change the Role of Remote Peers +- Change Role of yourself +- If you have permission then you can remove a peer from the room +- Multiple improvements for network & device usage optimization ## 0.3.0 - 2021-08-31 -- Updated to "react-native": "0.65.1" to mitigate security vulnerabilities -- Example App updated -- Multiple bug fixes & performance improvements +- Updated to "react-native": "0.65.1" to mitigate security vulnerabilities +- Example App updated +- Multiple bug fixes & performance improvements ## 0.2.0 - 2021-08-18 -- Added Support for Android! 🥳 +- Added Support for Android! 🥳 ## 0.1.0 - 2021-08-09 The first version of 100ms React Native SDK comes power-packed with support for multiple features like - -- Join/Leave Rooms -- Mute / Unmute Audio / Video -- Switch Camera -- Chat -- Preview Screen -- Network Switch Support -- Subscribe Degradation in bad network scenarios -- Error Handling and much more. +- Join/Leave Rooms +- Mute / Unmute Audio / Video +- Switch Camera +- Chat +- Preview Screen +- Network Switch Support +- Subscribe Degradation in bad network scenarios +- Error Handling and much more. Take it for a spin! 🥳 From 18eb1ba7cbfea48c86905c89da6af4fcc53ac4a0 Mon Sep 17 00:00:00 2001 From: Yogesh Singh Date: Wed, 29 Oct 2025 23:04:59 +0530 Subject: [PATCH 08/28] updated virtual background docs --- .../extend-capabilities/virtual-background.mdx | 8 ++++---- .../extend-capabilities/virtual-background.mdx | 14 +++++++------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/docs/flutter/v2/how-to-guides/extend-capabilities/virtual-background.mdx b/docs/flutter/v2/how-to-guides/extend-capabilities/virtual-background.mdx index 117fbf77c..6f00a21f7 100644 --- a/docs/flutter/v2/how-to-guides/extend-capabilities/virtual-background.mdx +++ b/docs/flutter/v2/how-to-guides/extend-capabilities/virtual-background.mdx @@ -1,5 +1,5 @@ --- -title: Virtual Background Plugin (Beta) +title: Virtual Background Plugin nav: 13.4 --- @@ -16,9 +16,9 @@ Virtual Background plugin helps customise one’s background by replacing the ba ## Limitations -- Has poor fps on older android phones -- Minimum iOS version required to support Virtual Background plugin is `iOS 15` -- Virtual background plugin is in beta stage and may have performance issues on iPhone X, 8, 7, 6 and other older devices. We recommend that you use this feature on a high performance device for smooth experience. +- Has poor fps on older android phones +- Minimum iOS version required to support Virtual Background plugin is `iOS 16` +- Virtual background plugin may have performance issues on older iPhone devices. We recommend that you use this feature on a high performance device for smooth experience. ## Add dependency diff --git a/docs/react-native/v2/how-to-guides/extend-capabilities/virtual-background.mdx b/docs/react-native/v2/how-to-guides/extend-capabilities/virtual-background.mdx index 5d1e9b931..e6a2b994e 100644 --- a/docs/react-native/v2/how-to-guides/extend-capabilities/virtual-background.mdx +++ b/docs/react-native/v2/how-to-guides/extend-capabilities/virtual-background.mdx @@ -1,5 +1,5 @@ --- -title: Virtual Background Plugin (Beta) +title: Virtual Background Plugin nav: 13.3 --- @@ -13,19 +13,19 @@ This guide provides an overview of usage of the Virtual Background plugin of 100 ## Minimum Requirements -- Minimum `@100mslive/react-native-hms` SDK version is `^1.10.6` -- `@100mslive/react-native-video-plugin` library is required - +- Minimum `@100mslive/react-native-hms` SDK version is `^1.10.6` +- `@100mslive/react-native-video-plugin` library is required ## Limitations ### Android -- Has poor fps on older android phones + +- Has poor fps on older android phones ### iOS -- Minimum iOS version required to support Virtual Background plugin is `iOS 15` -- Virtual background plugin is in beta stage and may have performance issues on iPhone X, 8, 7, 6 and other older devices. We recommend that you use this feature on a high performance device for smooth experience. +- Minimum iOS version required to support Virtual Background plugin is `iOS 16` +- Virtual background plugin may have performance issues on older iPhone devices. We recommend that you use this feature on a high performance device for smooth experience. ## Usage From f2a7341dd79f0244319b809996fdfea789f4f281 Mon Sep 17 00:00:00 2001 From: Yogesh Singh Date: Wed, 29 Oct 2025 23:11:50 +0530 Subject: [PATCH 09/28] updated flutter release notes --- .../v2/release-notes/release-notes.mdx | 280 +++++++++++------- 1 file changed, 170 insertions(+), 110 deletions(-) diff --git a/docs/flutter/v2/release-notes/release-notes.mdx b/docs/flutter/v2/release-notes/release-notes.mdx index 63771d0fd..693c55060 100644 --- a/docs/flutter/v2/release-notes/release-notes.mdx +++ b/docs/flutter/v2/release-notes/release-notes.mdx @@ -5,32 +5,93 @@ nav: 99 # Latest Versions -| Package | Version | -| -------------- | ------------------------------------------------------------------------------------------------------ | -| hms_room_kit | [![Pub Version](https://img.shields.io/pub/v/hms_room_kit)](https://pub.dev/packages/hms_room_kit) | -| hmssdk_flutter | [![Pub Version](https://img.shields.io/pub/v/hmssdk_flutter)](https://pub.dev/packages/hmssdk_flutter) | +| Package | Version | +| ---------------- | ---------------------------------------------------------------------------------------------------------- | +| hms_room_kit | [![Pub Version](https://img.shields.io/pub/v/hms_room_kit)](https://pub.dev/packages/hms_room_kit) | +| hmssdk_flutter | [![Pub Version](https://img.shields.io/pub/v/hmssdk_flutter)](https://pub.dev/packages/hmssdk_flutter) | | hms_video_plugin | [![Pub Version](https://img.shields.io/pub/v/hms_video_plugin)](https://pub.dev/packages/hms_video_plugin) | +# 1.11.0 - 2025-10-29 + +| Package | Version | +| ---------------- | ------- | +| hms_room_kit | 1.2.0 | +| hmssdk_flutter | 1.11.0 | +| hms_video_plugin | 0.1.0 | + +## Breaking Changes + +⚠️ **This release includes important breaking changes to ensure compliance with Google Play's Android 16KB page size requirement.** + +### Minimum Version Requirements + +- **Flutter:** Minimum version upgraded to 3.24.0 (Recommended: 3.27.x) + + Applications must now use Flutter 3.24.0 or higher. For optimal performance and compatibility, Flutter 3.27.x is recommended. + +- **Android API Level:** Minimum increased from API 21 to API 24 (Android 7.0) + + The minimum supported Android version is now Android 7.0 (Nougat, API level 24). Recommended target is API 35 (Android 15). + +- **iOS Platform:** Minimum version upgraded to iOS 16.0 + + Applications must now target iOS 16.0 or higher as the minimum deployment target. + +- **Architecture Support:** Migrated to 64-bit only architectures + + Support is now limited to 64-bit architectures only: + + - Android: arm64-v8a and x86_64 only (32-bit architectures removed) + - iOS: arm64 only + +### Build Tools & Dependencies Updated + +- **Android Gradle Plugin (AGP):** Upgraded to 8.9.0 +- **Gradle:** Updated to 8.11.1 +- **Kotlin:** Updated to 2.1.10 +- **Android NDK:** Updated to r28 (28.0.12674087) + +## What's New + +### Android 16KB Page Size Support + +Added full support for Android devices with 16KB memory page sizes, ensuring optimal performance on modern Android devices and maintaining Google Play Store compliance. + +This change ensures your application will: + +- Run smoothly on next-generation Android devices +- Meet Google Play's new requirements +- Maintain optimal performance across all supported Android versions + +### Documentation & Examples + +- Added comprehensive Android Build Requirements documentation +- Updated all sample applications with consistent build configurations +- Updated dependencies across all packages and examples to ensure compatibility + +Uses Android SDK 2.9.68 & iOS SDK 1.17.0 + +**Full Changelog**: [1.10.6...1.11.0](https://github.com/100mslive/100ms-flutter/compare/1.10.6...1.11.0) + # 1.10.6 - 2024-09-17 -| Package | Version | -| ----------------------------| ------ | -| hms_room_kit | 1.1.6 | -| hmssdk_flutter | 1.10.6 | +| Package | Version | +| -------------- | ------- | +| hms_room_kit | 1.1.6 | +| hmssdk_flutter | 1.10.6 | ### Breaking Changes in hms_room_kit -- Removed Noise Cancellation dependency from Prebuilt on Android +- Removed Noise Cancellation dependency from Prebuilt on Android Noise Cancellation dependency is removed from Prebuilt on Android. Users will have to add the dependency manually in their Android project to use Noise Cancellation. This change is made to reduce the size of the Prebuilt package. Refer to the [Noise Cancellation](https://www.100ms.live/docs/flutter/v2/how-to-guides/extend-capabilities/noise-cancellation) documentation for more details. - ### hmssdk_flutter -- Added Camera Zoom Controls in `HMSCameraControls` +- Added Camera Zoom Controls in `HMSCameraControls` Users can now control the camera zoom using the `HMSCameraControls` class. The `setZoom` method can be used to set the zoom level of the camera. @@ -38,17 +99,17 @@ nav: 99 ### hms_room_kit -- Added support to control Automatic Gain Control and Noise Suppresion in Prebuilt +- Added support to control Automatic Gain Control and Noise Suppresion in Prebuilt Prebuilt now supports toggling Automatic Gain Control (AGC) and Noise Suppresion for better audio quality. Users can enable or disable AGC and Noise Suppresion from the prebuilt interface. -- Resolved an issue where the Prebuilt UI was not updating on performing End Session +- Resolved an issue where the Prebuilt UI was not updating on performing End Session -- Hand Raise sorting based on Time +- Hand Raise sorting based on Time Hand Raise list is now sorted based on the time of raising the hand. Refer to the [Hand Raise](https://www.100ms.live/docs/flutter/v2/how-to-guides/interact-with-room/peer/large-room) documentation for more details. -- Added support to perform Switch Role of any user on Prebuilt +- Added support to perform Switch Role of any user on Prebuilt Users can now switch the role of any user, if they have necessary permissions, from the Prebuilt interface. Refer to the [Change Role](https://www.100ms.live/docs/flutter/v2/how-to-guides/interact-with-room/peer/change-role) documentation for more details. @@ -58,16 +119,16 @@ Uses Android SDK 2.9.67 & iOS SDK 1.16.1 # 1.10.5 - 2024-07-25 -| Package | Version | -| -------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | -| hms_room_kit | 1.1.5 | -| hmssdk_flutter | 1.10.5 | +| Package | Version | +| -------------- | ------- | +| hms_room_kit | 1.1.5 | +| hmssdk_flutter | 1.10.5 | ### hms_room_kit -- Noise Cancellation initial state customisation +- Noise Cancellation initial state customisation - Noise cancellation initial state can now be customised from the prebuilt customiser. + Noise cancellation initial state can now be customised from the prebuilt customiser. Uses Android SDK 2.9.64 & iOS SDK 1.15.0 @@ -75,25 +136,25 @@ Uses Android SDK 2.9.64 & iOS SDK 1.15.0 ## 1.10.4 - 2024-07-01 -| Package | Version | -| -------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | -| hms_room_kit | 1.1.4 | -| hmssdk_flutter | 1.10.4| -| hms_video_plugin | 0.0.2 | +| Package | Version | +| ---------------- | ------- | +| hms_room_kit | 1.1.4 | +| hmssdk_flutter | 1.10.4 | +| hms_video_plugin | 0.0.2 | ### hmssdk_flutter -- Live Transcription in webRTC calls +- Live Transcription in webRTC calls - HMSSDK now provides support for transcription in webRTC calls. You can now start/stop transcription using `HMSTranscriptionController` methods. HMSSDK provides also provides callbacks for transcription start/stop events. Learn more about it [here](https://www.100ms.live/docs/flutter/v2/how-to-guides/extend-capabilities/live-captions) + HMSSDK now provides support for transcription in webRTC calls. You can now start/stop transcription using `HMSTranscriptionController` methods. HMSSDK provides also provides callbacks for transcription start/stop events. Learn more about it [here](https://www.100ms.live/docs/flutter/v2/how-to-guides/extend-capabilities/live-captions) -- Applications no longer need to request permissions for camera, microphone etc. HMSSDK handles the permissions internally. Checkout the [permissions guide](https://www.100ms.live/docs/flutter/v2/quickstart/quickstart#add-permissions) +- Applications no longer need to request permissions for camera, microphone etc. HMSSDK handles the permissions internally. Checkout the [permissions guide](https://www.100ms.live/docs/flutter/v2/quickstart/quickstart#add-permissions) ### hms_room_kit -- Introducing live transcription options in prebuilt +- Introducing live transcription options in prebuilt - Prebuilt now supports live transcription for better accessibility. Users can enable or disable live transcription from the prebuilt interface. + Prebuilt now supports live transcription for better accessibility. Users can enable or disable live transcription from the prebuilt interface. Uses Android SDK 2.9.59 & iOS SDK 1.12.0 @@ -101,25 +162,24 @@ Uses Android SDK 2.9.59 & iOS SDK 1.12.0 ## 1.10.3 - 2024-06-12 -| Package | Version | -| -------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | -| hms_room_kit | 1.1.3 | -| hmssdk_flutter | 1.10.3 | -| hms_video_plugin | 0.0.1 | - +| Package | Version | +| ---------------- | ------- | +| hms_room_kit | 1.1.3 | +| hmssdk_flutter | 1.10.3 | +| hms_video_plugin | 0.0.1 | ### hms_room_kit -- Hand Raise can now be controlled from dashboard +- Hand Raise can now be controlled from dashboard - Hand Raise feature can now be enabled or disabled from the dashboard prebuilt customiser. + Hand Raise feature can now be enabled or disabled from the dashboard prebuilt customiser. ### hms_video_plugin -- Introducing support for Virtual Background and Blur +- Introducing support for Virtual Background and Blur - Users can now use virtual background and blur features in their video calls using the `hms_video_plugin`. - Learn more about the feature [here](https://www.100ms.live/docs/flutter/v2/how-to-guides/extend-capabilities/virtual-background) + Users can now use virtual background and blur features in their video calls using the `hms_video_plugin`. + Learn more about the feature [here](https://www.100ms.live/docs/flutter/v2/how-to-guides/extend-capabilities/virtual-background) Uses Android SDK 2.9.59 & iOS SDK 1.12.0 @@ -127,32 +187,32 @@ Uses Android SDK 2.9.59 & iOS SDK 1.12.0 ## 1.10.2 - 2024-05-15 -| Package | Version | -| -------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | -| hms_room_kit | 1.1.2 | -| hmssdk_flutter | 1.10.2 | +| Package | Version | +| -------------- | ------- | +| hms_room_kit | 1.1.2 | +| hmssdk_flutter | 1.10.2 | ### hmssdk_flutter -- Introducing Whiteboard support in HMSSDK +- Introducing Whiteboard support in HMSSDK HMSSDK now provides support for Whiteboard. You can now start/stop a whiteboard using `HMSWhiteboardController` methods. HMSSDK provides also provides callbacks for whiteboard start/stop events. Learn more about it [here](https://www.100ms.live/docs/flutter/v2/how-to-guides/extend-capabilities/whiteboard) -- HLS Layer methods +- HLS Layer methods HLS Stream Layers can be controlled using the HMSHLSPlayerController's `getHLSLayers` and `setHLSLayer` methods. Learn more about the methods [here](https://www.100ms.live/docs/flutter/v2/how-to-guides/record-and-live-stream/hls-player) -- `onPeerListUpdate` event on `HMSPreviewListener` +- `onPeerListUpdate` event on `HMSPreviewListener` The `onPeerListUpdate` event is now available on `HMSPreviewListener` to get updates on the peer list. Learn more about it [here](https://www.100ms.live/docs/flutter/v2/how-to-guides/set-up-video-conferencing/preview#supplementary-bytes) ### hms_room_kit -- Whiteboard support in Prebuilt +- Whiteboard support in Prebuilt Prebuilt now supports whiteboard for better collaboration. Users can create, manage, and stop whiteboards directly from the prebuilt interface. -- Introducing option to select layers in HLS Player +- Introducing option to select layers in HLS Player HLS Player now supports layer selection from HLS Player Settings. @@ -162,27 +222,27 @@ Uses Android SDK 2.9.56 & iOS SDK 1.10.0 ## 1.10.1 - 2024-04-26 -| Package | Version | -| -------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | -| hms_room_kit | 1.1.1 | -| hmssdk_flutter | 1.10.1 | +| Package | Version | +| -------------- | ------- | +| hms_room_kit | 1.1.1 | +| hmssdk_flutter | 1.10.1 | ### hmssdk_flutter -- Support for captions in HLS Player +- Support for captions in HLS Player - HMSSDK now provides support for captions in HLS Player. You can now `enable` or `disable` captions in the HLS Player using the - `HMSHLSPlayerController` methods. Moreover HMSSDK provides a new `onCues` callback to get captions. Learn more about it [here](https://www.100ms.live/docs/flutter/v2/how-to-guides/record-and-live-stream/hls-player#how-to-enabledisable-captions) + HMSSDK now provides support for captions in HLS Player. You can now `enable` or `disable` captions in the HLS Player using the + `HMSHLSPlayerController` methods. Moreover HMSSDK provides a new `onCues` callback to get captions. Learn more about it [here](https://www.100ms.live/docs/flutter/v2/how-to-guides/record-and-live-stream/hls-player#how-to-enabledisable-captions) ### hms_room_kit -- Support for captions in HLS Player UI +- Support for captions in HLS Player UI - HLS Player now supports captions for better accessibility. This can be enabled or disabled from the player settings. + HLS Player now supports captions for better accessibility. This can be enabled or disabled from the player settings. -- Introducing Landscape Mode for HLS Player +- Introducing Landscape Mode for HLS Player - HLS Player now supports landscape mode for better viewing experience. + HLS Player now supports landscape mode for better viewing experience. Uses Android SDK 2.9.54 & iOS SDK 1.9.0 @@ -190,44 +250,44 @@ Uses Android SDK 2.9.54 & iOS SDK 1.9.0 ## 1.10.0 - 2024-04-22 -| Package | Version | -| -------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | -| hms_room_kit | 1.1.0 | -| hmssdk_flutter | 1.10.0 | +| Package | Version | +| -------------- | ------- | +| hms_room_kit | 1.1.0 | +| hmssdk_flutter | 1.10.0 | ### hmssdk_flutter -- Noise Cancellation Integration +- Noise Cancellation Integration + + You can enhance your app's audio quality with the newly integrated Noise Cancellation feature in HMSSDK. With this addition, control Noise Cancellation settings through the `HMSNoiseCancellationController` - You can enhance your app's audio quality with the newly integrated Noise Cancellation feature in HMSSDK. With this addition, control Noise Cancellation settings through the `HMSNoiseCancellationController` + Learn more about leveraging this capability in your app by checking the documentation [here](https://www.100ms.live/docs/flutter/v2/how-to-guides/extend-capabilities/noise-cancellation). - Learn more about leveraging this capability in your app by checking the documentation [here](https://www.100ms.live/docs/flutter/v2/how-to-guides/extend-capabilities/noise-cancellation). - -- [SIP](https://www.100ms.live/docs/server-side/v2/how-to-guides/Session%20Initiation%20Protocol%20(SIP)/SIP-Interconnect) Capability +- [SIP]() Capability - HMSSDK now offers a way to differentiate between SIP and non-SIP users in the Room. You can use the `type` property in the `HMSPeer` class to check if a peer is a SIP user. + HMSSDK now offers a way to differentiate between SIP and non-SIP users in the Room. You can use the `type` property in the `HMSPeer` class to check if a peer is a SIP user. - Learn more about SIP Capabilities [here](https://www.100ms.live/docs/flutter/v2/how-to-guides/extend-capabilities/sip). + Learn more about SIP Capabilities [here](https://www.100ms.live/docs/flutter/v2/how-to-guides/extend-capabilities/sip). -- `HMSHLSPlayer` now uses Hybrid Composition on Android for better performance. +- `HMSHLSPlayer` now uses Hybrid Composition on Android for better performance. ### hms_room_kit -- Newly designed UI for SIP Peers - - SIP peers will now have a newly designed UI to match the overall theme of the application. +- Newly designed UI for SIP Peers -- Enhanced Prebuilt with Noise Cancellation + SIP peers will now have a newly designed UI to match the overall theme of the application. - Prebuilt supports noise cancellation out of the box. Users can enable or disable noise cancellation from the prebuilt interface. +- Enhanced Prebuilt with Noise Cancellation -- All-New HLS Player Interface + Prebuilt supports noise cancellation out of the box. Users can enable or disable noise cancellation from the prebuilt interface. - HLS Player now has a new look and feel to enhance the overall user experience. +- All-New HLS Player Interface -- Removed `flutter_foreground_task` dependency from prebuilt + HLS Player now has a new look and feel to enhance the overall user experience. - Prebuilt no longer uses `flutter_foreground_task` package. For apps that require foreground service, the package can be added on the application level. +- Removed `flutter_foreground_task` dependency from prebuilt + + Prebuilt no longer uses `flutter_foreground_task` package. For apps that require foreground service, the package can be added on the application level. Uses Android SDK 2.9.54 & iOS SDK 1.8.0 @@ -235,14 +295,14 @@ Uses Android SDK 2.9.54 & iOS SDK 1.8.0 ## 1.9.14 - 2024-04-01 -| Package | Version | -| -------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | -| hms_room_kit | 1.0.17 | -| hmssdk_flutter | 1.9.14 | +| Package | Version | +| -------------- | ------- | +| hms_room_kit | 1.0.17 | +| hmssdk_flutter | 1.9.14 | ### hmssdk_flutter -- Resolved an issue on iOS where video appears stretched in landscape mode +- Resolved an issue on iOS where video appears stretched in landscape mode Uses Android SDK 2.9.51 & iOS SDK 1.8.0 @@ -250,22 +310,22 @@ Uses Android SDK 2.9.51 & iOS SDK 1.8.0 ## 1.9.13 - 2024-03-15 -| Package | Version | -| -------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | -| hms_room_kit | 1.0.16 | -| hmssdk_flutter | 1.9.13 | +| Package | Version | +| -------------- | ------- | +| hms_room_kit | 1.0.16 | +| hmssdk_flutter | 1.9.13 | ### hmssdk_flutter -- Leave Room Immediately if the app is killed(iOS only) +- Leave Room Immediately if the app is killed(iOS only) - HMSSDK automatically triggers the `leave` method call when the iOS application is terminated. + HMSSDK automatically triggers the `leave` method call when the iOS application is terminated. ### hms_room_kit -- Ability to join rooms directly without a preview +- Ability to join rooms directly without a preview - Prebuilt now allows direct room joining without preview, customizable via the dashboard's `Customize Prebuilt` section. + Prebuilt now allows direct room joining without preview, customizable via the dashboard's `Customize Prebuilt` section. Updated to Android SDK 2.9.51 & iOS SDK 1.6.0 @@ -273,28 +333,28 @@ Updated to Android SDK 2.9.51 & iOS SDK 1.6.0 ## 1.9.12 - 2024-03-04 -| Package | Version | -| -------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------- | -| hms_room_kit | 1.0.15 | -| hmssdk_flutter | 1.9.12 | +| Package | Version | +| -------------- | ------- | +| hms_room_kit | 1.0.15 | +| hmssdk_flutter | 1.9.12 | ### hmssdk_flutter -- Introducing methods to fetch polls, questions, leaderboards and results +- Introducing methods to fetch polls, questions, leaderboards and results - Users can now fetch polls based on the poll state, questions for a poll and poll results - using the `fetchPollList`, `fetchPollQuestions` and `getPollResults` methods. - Checkout the docs [here](https://www.100ms.live/docs/flutter/v2/how-to-guides/interact-with-room/room/polls#fetchpolllist) + Users can now fetch polls based on the poll state, questions for a poll and poll results + using the `fetchPollList`, `fetchPollQuestions` and `getPollResults` methods. + Checkout the docs [here](https://www.100ms.live/docs/flutter/v2/how-to-guides/interact-with-room/room/polls#fetchpolllist) ### hms_room_kit -- Ability to fetch concluded and draft polls +- Ability to fetch concluded and draft polls - Prebuilt now fetches all the polls happened during the session. Additionally, users can now retrieve draft polls from other platforms and launch them. + Prebuilt now fetches all the polls happened during the session. Additionally, users can now retrieve draft polls from other platforms and launch them. -- Ability to join Room using Auth Token +- Ability to join Room using Auth Token - Prebuilt now supports joining rooms using `Auth Token` along with `Room codes` + Prebuilt now supports joining rooms using `Auth Token` along with `Room codes` Updated to Android SDK 2.9.4 & iOS SDK 1.6.0 @@ -312,12 +372,12 @@ Updated to Android SDK 2.9.4 & iOS SDK 1.6.0 - Introducing Leaderboard APIs Users can now fetch Rankings and Quiz Summary using the `fetchLeaderboard` method. More information about the Leaderboard can be found [here](https://www.100ms.live/docs/flutter/v2/how-to-guides/interact-with-room/room/polls#quiz-leaderboard) - + ### hms_room_kit - Introducing Leaderboards to our Quiz experience - Adding Leaderboard to our Quizzes with Leaderboard Summary and Rankings. + Adding Leaderboard to our Quizzes with Leaderboard Summary and Rankings. Updated to Android SDK 2.9.4 & iOS SDK 1.5.1 From 70137bb5e5aacbf07fc032440aed44b0454e1597 Mon Sep 17 00:00:00 2001 From: Yogesh Singh Date: Thu, 30 Oct 2025 00:44:50 +0530 Subject: [PATCH 10/28] removed Beta tags from docs --- .../how-to-guides/captions/live-captions.mdx | 10 +-- .../extend-capabilities/live-captions.mdx | 27 ++++---- .../set-up-video-conferencing/captions.mdx | 15 ++--- .../set-up-video-conferencing/captions.mdx | 39 ++++++------ .../extend-capabilities/live-captions.mdx | 61 ++++++++----------- 5 files changed, 72 insertions(+), 80 deletions(-) diff --git a/docs/android/v2/how-to-guides/captions/live-captions.mdx b/docs/android/v2/how-to-guides/captions/live-captions.mdx index ed7807172..070c981f7 100644 --- a/docs/android/v2/how-to-guides/captions/live-captions.mdx +++ b/docs/android/v2/how-to-guides/captions/live-captions.mdx @@ -1,5 +1,5 @@ --- -title: Live Transcription for Conferencing (Closed Captions - Beta) +title: Live Transcription for Conferencing (Closed Captions) nav: 15.1 --- @@ -10,6 +10,7 @@ nav: 15.1 - Minimum 100ms SDK version required is `2.9.54` ## Checking if captions are enabled in a room. + To check if WebRTC (not hls) captions are enabled in a room. Look for any transcriptions being in a started state in the room data. `val captionsEnabled = hmsSDK.getRoom()?.transcriptions?.find { it.state == TranscriptionState.STARTED } != null` @@ -20,12 +21,13 @@ Implement `fun onTranscripts(transcripts: HmsTranscripts)` in the `HMSUpdateList For an example implementation look at [`TranscriptionUseCase.kt`](https://github.com/100mslive/100ms-android/blob/ac66fa76503ec990322c293f8ce6a504c0c3c444/room-kit/src/main/java/live/hms/roomkit/ui/meeting/TranscriptionUseCase.kt#L44) in the 100ms-android [sample app](https://github.com/100mslive/100ms-android/blob/ac66fa76503ec990322c293f8ce6a504c0c3c444/room-kit/src/main/java/live/hms/roomkit/ui/meeting/TranscriptionUseCase.kt#L44) repository. ## Toggling Live Transcripts + To save on cost, live transcriptions can be disabled for everyone at runtime and toggled on again when required. ```kotlin // Start Real Time Transcription hmsSDK.startRealTimeTranscription( - + TranscriptionsMode.CAPTION, object : HMSActionResultListener { @@ -40,9 +42,9 @@ hmsSDK.startRealTimeTranscription( hmsSDK.stopRealTimeTranscription( TranscriptionsMode.CAPTION, - + object : HMSActionResultListener { override fun onError(error: HMSException) {} override fun onSuccess() {} }) -``` \ No newline at end of file +``` diff --git a/docs/flutter/v2/how-to-guides/extend-capabilities/live-captions.mdx b/docs/flutter/v2/how-to-guides/extend-capabilities/live-captions.mdx index 5a88c1452..94ff36526 100644 --- a/docs/flutter/v2/how-to-guides/extend-capabilities/live-captions.mdx +++ b/docs/flutter/v2/how-to-guides/extend-capabilities/live-captions.mdx @@ -1,5 +1,5 @@ --- -title: Live Transcription for Conferencing (Closed Captions - Beta) +title: Live Transcription for Conferencing (Closed Captions) nav: 13.5 --- @@ -7,12 +7,12 @@ nav: 13.5 ## Minimum Requirements -- Minimum [`hmssdk_flutter`](https://pub.dev/packages/hmssdk_flutter) version required is `1.10.4` -- Minimum [`hms_room_kit`](https://pub.dev/packages/hms_room_kit) version required is `1.1.4` +- Minimum [`hmssdk_flutter`](https://pub.dev/packages/hmssdk_flutter) version required is `1.10.4` +- Minimum [`hms_room_kit`](https://pub.dev/packages/hms_room_kit) version required is `1.1.4` ## How to check if captions are enabled in a room -To check if WebRTC (not hls) captions are enabled in a room. We can look at the `transcriptions` property in the room data. If any transcriptions +To check if WebRTC (not hls) captions are enabled in a room. We can look at the `transcriptions` property in the room data. If any transcriptions with mode as `caption` and are in a `started` state, it means captions are enabled. ```dart @@ -51,7 +51,7 @@ class Meeting implements HMSUpdateListener { HMSTranscriptionState.started) { ///Captions are enabled in the room isTranscriptionEnabled = true; - } + } else if(room.transcriptions?[index].state == HMSTranscriptionState.stopped){ ///Captions are disabled in the room @@ -73,7 +73,7 @@ class Meeting implements HMSUpdateListener { ## How to get transcripts To get the transcripts, we can implement the `onTranscripts` method of `HMSTranscriptListener`. To start getting the transcripts, -we need to call HMSTranscriptionController's `startTranscription` method. +we need to call HMSTranscriptionController's `startTranscription` method.
@@ -158,7 +158,7 @@ class HMSTranscription { final String? peerName; final bool isFinal; -} +} ``` ### Step 3: To stop getting transcriptions, remove HMSTranscriptListener @@ -180,7 +180,7 @@ class Meeting implements HMSUpdateListener,HMSTranscriptListener { ## How to start/stop transcriptions -Transcriptions can only be started or stopped by the peer having admin permissions. Transcription permissions can be changed from [100ms dashboard](https://dashboard.100ms.live/). +Transcriptions can only be started or stopped by the peer having admin permissions. Transcription permissions can be changed from [100ms dashboard](https://dashboard.100ms.live/). HMSSDK provides `HMSTranscriptionController` to control transcription. ### Start Transcription @@ -203,7 +203,7 @@ class Meeting implements HMSUpdateListener,HMSTranscriptListener { HMSTranscriptionState.started) { ///Captions are enabled in the room isTranscriptionEnabled = true; - } + } else if(room.transcriptions?[index].state == HMSTranscriptionState.stopped){ ///Captions are disabled in the room @@ -243,8 +243,7 @@ class Meeting implements HMSUpdateListener,HMSTranscriptListener { ``` After calling `startTranscription` method, `onRoomUpdate` will be fired with `HMSRoomUpdate.transcriptionsUpdated` event. -First update will be with `HMSTranscriptionState.initialized` and then `HMSTranscriptionState.started` state. - +First update will be with `HMSTranscriptionState.initialized` and then `HMSTranscriptionState.started` state. ### Stop Transcription @@ -268,7 +267,7 @@ class Meeting implements HMSUpdateListener,HMSTranscriptListener { HMSTranscriptionState.started) { ///Captions are enabled in the room isTranscriptionEnabled = true; - } + } else if(room.transcriptions?[index].state == HMSTranscriptionState.stopped){ ///Captions are disabled in the room @@ -305,5 +304,5 @@ class Meeting implements HMSUpdateListener,HMSTranscriptListener { } ``` -After calling `stopTranscription` method, `onRoomUpdate` will be fired with `HMSRoomUpdate.transcriptionsUpdated` event. -Update will be fired with `HMSTranscriptionState.stopped` state. \ No newline at end of file +After calling `stopTranscription` method, `onRoomUpdate` will be fired with `HMSRoomUpdate.transcriptionsUpdated` event. +Update will be fired with `HMSTranscriptionState.stopped` state. diff --git a/docs/ios/v2/how-to-guides/set-up-video-conferencing/captions.mdx b/docs/ios/v2/how-to-guides/set-up-video-conferencing/captions.mdx index 6543dbdd6..91d86e6a0 100644 --- a/docs/ios/v2/how-to-guides/set-up-video-conferencing/captions.mdx +++ b/docs/ios/v2/how-to-guides/set-up-video-conferencing/captions.mdx @@ -1,14 +1,14 @@ --- -title: Live Transcription for Conferencing (Closed Captions - Beta) +title: Live Transcription for Conferencing (Closed Captions) nav: 4.99 --- -100ms real-time transcription engine generates a live transcript (closed captions) during a conferencing session. +100ms real-time transcription engine generates a live transcript (closed captions) during a conferencing session. The SDK provides a callback with the transcript for each peer when they speak. ## Minimum Requirements -- Minimum 100ms SDK version required is 1.12.0 +- Minimum 100ms SDK version required is 1.12.0 ## How to check if captions are started in a room? @@ -36,11 +36,11 @@ Here is an example implemenation: public func on(transcripts: HMSTranscripts) { transcripts.transcripts.forEach { transcript in let peerModel = transcript.peer - + if !(lastTranscript?.isFinal ?? false) { _ = self.transcriptArray.popLast() } - + if peerModel == lastTranscript?.peer { self.transcriptArray += [" " + transcript.transcript] } @@ -54,14 +54,16 @@ Here is an example implemenation: self.transcriptArray += ["\n**\(peerModel.name.trimmingCharacters(in: .whitespacesAndNewlines)):** "] self.transcriptArray += ["\(transcript.transcript)"] } - + lastTranscript = transcript } } ``` ## How to toggle Live Transcriptions on/off + You can toggle live transcriptions on/off at runtime that can help save costs. Use startTranscription() method to start the transcription and stopTranscription() method to stop transcription like below: + ```swift // Start Real Time Transcription sdk.startTranscription() { success, error in @@ -81,4 +83,3 @@ You can toggle live transcriptions on/off at runtime that can help save costs. U } } ``` - diff --git a/docs/javascript/v2/how-to-guides/set-up-video-conferencing/captions.mdx b/docs/javascript/v2/how-to-guides/set-up-video-conferencing/captions.mdx index 14f5c1ec3..8b9b3389d 100644 --- a/docs/javascript/v2/how-to-guides/set-up-video-conferencing/captions.mdx +++ b/docs/javascript/v2/how-to-guides/set-up-video-conferencing/captions.mdx @@ -1,5 +1,5 @@ --- -title: Live Transcription for Conferencing (Closed Captions - Beta) +title: Live Transcription for Conferencing (Closed Captions) nav: 1.24 --- @@ -39,11 +39,9 @@ The `useTranscript` hook is implemented with the `onTranscript` callback as show ## How can you check if closed captions are enabled in a room? ```ts - - import { selectIsTranscriptionEnabled, useHMSStore } from '@100mslive/react-sdk'; - // use this to check if caption is enabled for your room. - const isCaptionPresent: boolean = useHMSStore(selectIsTranscriptionEnabled); - +import { selectIsTranscriptionEnabled, useHMSStore } from '@100mslive/react-sdk'; +// use this to check if caption is enabled for your room. +const isCaptionPresent: boolean = useHMSStore(selectIsTranscriptionEnabled); ``` ## How to toggle closed captions on or off? @@ -51,24 +49,23 @@ The `useTranscript` hook is implemented with the `onTranscript` callback as show Closed captions can be dynamically enabled or disabled at runtime within a given room, depending on user requirements. This capability helps minimize unnecessary usage costs by ensuring that captions are enabled only when explicitly needed by the user(s). ```ts - - // Currently 100ms supports closed captions type mode - export declare enum HMSTranscriptionMode { - CAPTION = "caption" - } - - export interface TranscriptionConfig { - mode: HMSTranscriptionMode; - } - - // admin/host role need to startTranscription if he had the access, here is how you will check if you had access to start transcription - const isTranscriptionAllowed = useHMSStore(selectIsTranscriptionAllowedByMode(HMSTranscriptionMode.CAPTION)); - +// Currently 100ms supports closed captions type mode +export declare enum HMSTranscriptionMode { + CAPTION = 'caption' +} + +export interface TranscriptionConfig { + mode: HMSTranscriptionMode; +} + +// admin/host role need to startTranscription if he had the access, here is how you will check if you had access to start transcription +const isTranscriptionAllowed = useHMSStore( + selectIsTranscriptionAllowedByMode(HMSTranscriptionMode.CAPTION) +); ``` Use `hmsActions.startTranscription()` method to start the closed captions. - ```ts async startCaption() { try { @@ -94,4 +91,4 @@ Use `hmsActions.stopTranscription()` method to stop closed captions. console.log(err); } } -``` \ No newline at end of file +``` diff --git a/docs/react-native/v2/how-to-guides/extend-capabilities/live-captions.mdx b/docs/react-native/v2/how-to-guides/extend-capabilities/live-captions.mdx index 6ffd884f7..d94eb5551 100644 --- a/docs/react-native/v2/how-to-guides/extend-capabilities/live-captions.mdx +++ b/docs/react-native/v2/how-to-guides/extend-capabilities/live-captions.mdx @@ -1,55 +1,49 @@ --- -title: Live Transcription for Conferencing (Closed Captions - Beta) +title: Live Transcription for Conferencing (Closed Captions) nav: 13.4 --- 100ms' real-time transcription engine generates a live transcript (closed captions) during a conferencing session. The SDK provides a callback with transcript for each peer when they speak. - ## Minimum Requirements - Minimum `react-native-hms` version required is `1.10.7` - Minimum `react-native-room-kit` version required is `1.2.0` - ## Checking if captions are enabled in a room To check if WebRTC (not hls) captions are enabled in a room. Look for any transcriptions being in a started state in the room data. ```js -const captionsEnabled = ( - hmsInstance.getRoom() - ?.transcriptions - ?.some((transcription) => { - return transcription.state === TranscriptionState.STARTED; - }) - ) || false; // Using `false` as default +const captionsEnabled = + hmsInstance.getRoom()?.transcriptions?.some((transcription) => { + return transcription.state === TranscriptionState.STARTED; + }) || false; // Using `false` as default ``` - ## How to implement captions? Implement `fun onTranscripts(transcripts: HmsTranscripts)` in the `HMSUpdateListener` callback. - ## Toggling Live Transcripts + To save on cost, live transcriptions can be disabled for everyone at runtime and toggled on again when required. ```js // Start Real Time Transcription try { - await hmsInstance.startRealTimeTranscription() + await hmsInstance.startRealTimeTranscription(); } catch (error) { - // Handle error occurred while starting Transcription + // Handle error occurred while starting Transcription } ``` ```js // Stop Real Time Transcription try { - await hmsInstance.stopRealTimeTranscription() + await hmsInstance.stopRealTimeTranscription(); } catch (error) { - // Handle error occurred while starting Transcription + // Handle error occurred while starting Transcription } ``` @@ -71,24 +65,23 @@ When Live Transcripts are toggled for room, you get `TRANSCRIPTIONS_UPDATED` upd ```js hmsInstance.addEventListener( - HMSUpdateListenerActions.ON_ROOM_UPDATE, - (data: { room: HMSRoom; type: HMSRoomUpdate; }) => { - - if (data.type === HMSRoomUpdate.TRANSCRIPTIONS_UPDATED) { - // Handle Transcriptions Update like you may update UI if transcriptions were started or stopped - - const captionTranscription = data.room.transcriptions?.find( - (transcription) => transcription.mode === TranscriptionsMode.CAPTION - ); - - if (captionTranscription?.state === TranscriptionState.STARTED) { - // Transcriptions Started in Room - } else if (captionTranscription?.state === TranscriptionState.STOPPED) { - // Transcriptions Stopped in Room - } else if (captionTranscription?.state === TranscriptionState.FAILED) { - // Transcriptions failed to Start or Stop - } + HMSUpdateListenerActions.ON_ROOM_UPDATE, + (data: { room: HMSRoom, type: HMSRoomUpdate }) => { + if (data.type === HMSRoomUpdate.TRANSCRIPTIONS_UPDATED) { + // Handle Transcriptions Update like you may update UI if transcriptions were started or stopped + + const captionTranscription = data.room.transcriptions?.find( + (transcription) => transcription.mode === TranscriptionsMode.CAPTION + ); + + if (captionTranscription?.state === TranscriptionState.STARTED) { + // Transcriptions Started in Room + } else if (captionTranscription?.state === TranscriptionState.STOPPED) { + // Transcriptions Stopped in Room + } else if (captionTranscription?.state === TranscriptionState.FAILED) { + // Transcriptions failed to Start or Stop + } + } } - } ); ``` From c3adf0f65d349b2184530c5c7298a760c9742942 Mon Sep 17 00:00:00 2001 From: Yogesh Singh Date: Thu, 30 Oct 2025 00:48:17 +0530 Subject: [PATCH 11/28] updated version numbers --- docs/flutter/v2/release-notes/release-notes.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/flutter/v2/release-notes/release-notes.mdx b/docs/flutter/v2/release-notes/release-notes.mdx index 693c55060..657819adc 100644 --- a/docs/flutter/v2/release-notes/release-notes.mdx +++ b/docs/flutter/v2/release-notes/release-notes.mdx @@ -69,7 +69,7 @@ This change ensures your application will: - Updated all sample applications with consistent build configurations - Updated dependencies across all packages and examples to ensure compatibility -Uses Android SDK 2.9.68 & iOS SDK 1.17.0 +Uses Android SDK 2.9.78 & iOS SDK 1.17.0 **Full Changelog**: [1.10.6...1.11.0](https://github.com/100mslive/100ms-flutter/compare/1.10.6...1.11.0) From 5d10c92c451033ae04197fd16a0fe7ade9a55d61 Mon Sep 17 00:00:00 2001 From: Dmitry Fedoseyev Date: Mon, 17 Nov 2025 14:07:09 +0200 Subject: [PATCH 12/28] 1.17.1 iOS Release (#2496) --- docs/ios/v2/release-notes/release-notes.mdx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/docs/ios/v2/release-notes/release-notes.mdx b/docs/ios/v2/release-notes/release-notes.mdx index c002dbbff..f9eefe407 100644 --- a/docs/ios/v2/release-notes/release-notes.mdx +++ b/docs/ios/v2/release-notes/release-notes.mdx @@ -4,6 +4,12 @@ nav: 6.1 description: Release Notes for 100ms iOS SDK --- +## 1.17.1 - 2025-11-17 +### Fixed + +- Enum conflicts with other WebRTC integrations + + ## 1.17.0 - 2025-01-27 ### Changed From 876145f351bb8b844095099b18c70c214df4fcb3 Mon Sep 17 00:00:00 2001 From: Saptarshi Das Date: Tue, 25 Nov 2025 15:05:07 +0530 Subject: [PATCH 13/28] Added release notes for version 2.9.79, including a bug fix for NPE during room leave. --- docs/android/v2/release-notes/release-notes.mdx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/android/v2/release-notes/release-notes.mdx b/docs/android/v2/release-notes/release-notes.mdx index bc5a852a6..046f2213c 100644 --- a/docs/android/v2/release-notes/release-notes.mdx +++ b/docs/android/v2/release-notes/release-notes.mdx @@ -19,6 +19,10 @@ import AndroidPrebuiltVersionShield from '@/common/android-prebuilt-version-shie | live.100ms:virtual-background: || | live.100ms:hms-noise-cancellation-android: | | +## v2.9.79 - 2025-11-24 +### Fixed +* Bug fix to handle NPE at room leave. + ## v2.9.78 - 2025-10-15 ### Fixed * Fix for memory leak issue From 99230e9a9e5de29956df4642dc8d72359d67fec6 Mon Sep 17 00:00:00 2001 From: Ravi theja Date: Fri, 12 Dec 2025 14:25:42 +0530 Subject: [PATCH 14/28] Added release notes for Web SDK version 0.13.0 (#2498) --- .../v2/release-notes/release-notes.mdx | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/docs/javascript/v2/release-notes/release-notes.mdx b/docs/javascript/v2/release-notes/release-notes.mdx index cd52710ea..c4b7c2365 100644 --- a/docs/javascript/v2/release-notes/release-notes.mdx +++ b/docs/javascript/v2/release-notes/release-notes.mdx @@ -14,6 +14,23 @@ description: Release Notes for 100ms.live JavaScript SDK | @100mslive/hms-noise-cancellation | [![npm version](https://badge.fury.io/js/%40100mslive%2Fhms-noise-cancellation.svg)](https://badge.fury.io/js/%40100mslive%2Fhms-noise-cancellation) | | @100mslive/hms-virtual-background | [![npm version](https://badge.fury.io/js/%40100mslive%2Fhms-virtual-background.svg)](https://badge.fury.io/js/%40100mslive%2Fhms-virtual-background) | +## 2025-12-04 + +Released: `@100mslive/hms-video-store@0.13.0`, `@100mslive/react-sdk@0.11.0`, `@100mslive/hls-player@0.4.0`, `@100mslive/roomkit-react@0.4.0` + +### Added: + +- Upgraded UA Parser JS library for improved user agent detection +- CPU state capture in publish analytics +- Upgraded Effects (Virtual Background) plugin with improved CPU performance + +### Fixed: + +- Audio output device selection issues on macOS Safari 26 +- Stored devices not being removed when they become unavailable, causing constraints failure error on join +- Error handling when no device is available during device changes +- Audio not being published when Noise Cancellation is enabled on low network conditions + ## 2025-08-26 Released: `@100mslive/hms-video-store@0.12.38`, `@100mslive/react-sdk@0.10.38`, `@100mslive/hls-player@0.3.38`, `@100mslive/roomkit-react@0.3.38` From 58f539fe572e261f6afef7cf00659284eff14beb Mon Sep 17 00:00:00 2001 From: Ravi theja Date: Fri, 12 Dec 2025 15:11:40 +0530 Subject: [PATCH 15/28] docs: update faq for speaker label logging --- .../how-to-guides/enable-transcription-and-summary.mdx | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/docs/server-side/v2/how-to-guides/enable-transcription-and-summary.mdx b/docs/server-side/v2/how-to-guides/enable-transcription-and-summary.mdx index eb8807afe..7f2ac7157 100644 --- a/docs/server-side/v2/how-to-guides/enable-transcription-and-summary.mdx +++ b/docs/server-side/v2/how-to-guides/enable-transcription-and-summary.mdx @@ -322,22 +322,18 @@ You can always use 100ms’ Recording Assets API to access the transcripts and s ```jsx import { useEffect } from "react"; import { useHMSActions } from "@100mslive/react-sdk"; - import { useIsHeadless } from "../AppData/useUISettings"; export function BeamSpeakerLabelsLogging() { const hmsActions = useHMSActions(); - const isHeadless = useIsHeadless(); useEffect(() => { - if (isHeadless) { + // to be called if you are passing custom url for beam recording, preferably before join. hmsActions.enableBeamSpeakerLabelsLogging(); - } - }, [hmsActions, isHeadless]); + }, [hmsActions]); return null; } ``` - - Register `` in Approutes along with import statement
- `import { BeamSpeakerLabelsLogging } from "./components/AudioLevel/BeamSpeakerLabelsLogging";` + From 6fa025ff0c31b4b612b561a6bb963298a49394ae Mon Sep 17 00:00:00 2001 From: Saptarshi Das Date: Fri, 12 Dec 2025 16:22:02 +0530 Subject: [PATCH 16/28] docs: add customization options for foreground notification in prebuilt Android SDK --- .../v2/quickstart/prebuilt-android.mdx | 53 +++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/docs/android/v2/quickstart/prebuilt-android.mdx b/docs/android/v2/quickstart/prebuilt-android.mdx index 46ec583d6..e5827291e 100644 --- a/docs/android/v2/quickstart/prebuilt-android.mdx +++ b/docs/android/v2/quickstart/prebuilt-android.mdx @@ -76,5 +76,58 @@ class HMSPrebuiltOptions { } ``` + + +## Customizing Foreground Notification + + +When your app goes to the background during an active call, a foreground service notification is displayed to keep the call alive. You can customize this notification to match your app's branding using `CallNotificationConfig`. + +### Available Options + +| Parameter | Type | Default | Description | +|-----------|------|---------|-------------| +| `smallIcon` | `@DrawableRes Int?` | Default icon | Small icon shown in status bar and notification header. Should be monochrome for best results. | +| `largeIcon` | `@DrawableRes Int?` | Default icon | Large icon shown on the right side of the notification. Can be full-color. | +| `title` | `String?` | "Call in progress" | Notification title text. | +| `text` | `String?` | "Tap to return to the call" | Notification body text. | +| `channelName` | `String?` | "Ongoing Call" | Name for the notification channel (visible in system settings). | +| `channelDescription` | `String?` | Default description | Description for the notification channel. | + +### Example Usage + +```kotlin +import live.hms.roomkit.ui.HMSRoomKit +import live.hms.roomkit.ui.HMSPrebuiltOptions +import live.hms.roomkit.ui.notification.CallNotificationConfig + +class MainActivity : AppCompatActivity() { + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + + val roomCode = "" + + val notificationConfig = CallNotificationConfig( + smallIcon = R.drawable.my_app_logo, // Your app's notification icon + largeIcon = R.drawable.my_app_icon, // Optional larger icon + title = "MyApp - Call Active", + text = "Tap to return to your call", + channelName = "MyApp Calls", + channelDescription = "Notifications for ongoing calls" + ) + + val options = HMSPrebuiltOptions( + userName = "", + callNotificationConfig = notificationConfig + ) + + HMSRoomKit.launchPrebuilt(roomCode, this, options) + } +} +``` + +All parameters are optional. If not provided, default values will be used. + + ## Sample Code The sample project for the library is at https://github.com/100mslive/AndroidPrebuiltDemo#readme you can download the app for it [here](https://github.com/100mslive/AndroidPrebuiltDemo/suites/14604646490/artifacts/827757135). From 536312b0fbf5e0fd04fbc8678422d24f840277ae Mon Sep 17 00:00:00 2001 From: bhavesh100ms <89893870+bhavesh100ms@users.noreply.github.com> Date: Tue, 30 Dec 2025 21:46:15 +0530 Subject: [PATCH 17/28] feat: add prod-us7 IP address (#2500) feat: add IP address Co-authored-by: Bhavesh --- docs/server-side/v2/how-to-guides/firewall-and-ports.mdx | 3 +++ docs/server-side/v2/release-notes/release-notes.mdx | 3 +++ 2 files changed, 6 insertions(+) diff --git a/docs/server-side/v2/how-to-guides/firewall-and-ports.mdx b/docs/server-side/v2/how-to-guides/firewall-and-ports.mdx index 08ca47de2..aac022ed5 100644 --- a/docs/server-side/v2/how-to-guides/firewall-and-ports.mdx +++ b/docs/server-side/v2/how-to-guides/firewall-and-ports.mdx @@ -43,6 +43,9 @@ For smooth call experience add following domains and ports to your firewall whit 35.207.209.133/32 35.244.46.211/32 34.74.251.112/32 +34.169.128.194/32 +34.105.5.246/32 +34.169.40.88/32 ``` ### NAT gateway IP address whitelisting for webhooks diff --git a/docs/server-side/v2/release-notes/release-notes.mdx b/docs/server-side/v2/release-notes/release-notes.mdx index cc63ae3c7..fa100396e 100644 --- a/docs/server-side/v2/release-notes/release-notes.mdx +++ b/docs/server-side/v2/release-notes/release-notes.mdx @@ -4,6 +4,9 @@ nav: 5.1 --- This Changelog highlights notable changes to the 100ms server-side API, such as API additions, improvements, and deprecations. Also, we've included developer experience improvements to this page to keep you on track with items that will enhance your integration journey. +## 2025-12-30 +### Additions +- updated reserved IP addresses for TURN servers in EU|US|IN. These IP addresses can be whitelisted in firewall configuration to solve scenarios where a user is unable to join the room due to a restricted network firewall. ## 2024-02-28 From fdde9a3446f1766f4cb2c8797795837097931194 Mon Sep 17 00:00:00 2001 From: cyril-k-031225 Date: Fri, 2 Jan 2026 17:18:29 +0530 Subject: [PATCH 18/28] fixing api endpoint for update settings (#2503) --- docs/server-side/v2/api-reference/policy/update-settings.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/server-side/v2/api-reference/policy/update-settings.mdx b/docs/server-side/v2/api-reference/policy/update-settings.mdx index 43a63372d..93d10203f 100644 --- a/docs/server-side/v2/api-reference/policy/update-settings.mdx +++ b/docs/server-side/v2/api-reference/policy/update-settings.mdx @@ -12,7 +12,7 @@ This endpoint is used to update [settings](/server-side/v2/api-reference/policy/ ```bash -curl --location --request POST 'https://api.100ms.live/v2//settings' \ +curl --location --request POST 'https://api.100ms.live/v2/templates//settings' \ --header 'Authorization: Bearer ' \ --header 'Content-Type: application/json' \ --data-raw '{ From 13c40d7ba1b1f937a64eecb170cc66e796bfdd23 Mon Sep 17 00:00:00 2001 From: cyril-k-031225 Date: Mon, 5 Jan 2026 11:31:34 +0530 Subject: [PATCH 19/28] Update docs for azure support (#2501) --- .../storage-configuration.mdx | 11 +++++----- .../v2/api-reference/Rooms/create-via-api.mdx | 22 +++++++++---------- .../v2/api-reference/Rooms/update-a-room.mdx | 2 +- .../legacy-api-v1/destinations/recording.mdx | 14 ++++++------ .../policy/create-template-via-api.mdx | 6 ++--- .../v2/how-to-guides/recordings/overview.mdx | 2 +- 6 files changed, 29 insertions(+), 28 deletions(-) diff --git a/docs/get-started/v2/get-started/features/recordings/recording-assets/storage-configuration.mdx b/docs/get-started/v2/get-started/features/recordings/recording-assets/storage-configuration.mdx index d69e3183d..a1f547dad 100644 --- a/docs/get-started/v2/get-started/features/recordings/recording-assets/storage-configuration.mdx +++ b/docs/get-started/v2/get-started/features/recordings/recording-assets/storage-configuration.mdx @@ -8,6 +8,7 @@ nav: 3.6 - Amazon Simple Storage Service (AWS S3) - Google Cloud Storage (GCP) - Alibaba Object Storage (OSS) +- Azure Blob Storage By default, recordings will be stored temporarily (for 15 days) in a storage location managed by 100ms if nothing is configured. Post a successful recording, the recording assets can be accessed on the [100ms dashboard](https://dashboard.100ms.live/sessions) or [through the REST API](/server-side/v2/api-reference/recording-assets/get-asset). @@ -59,12 +60,12 @@ You can configure storage in your template's `Recording` tab on the 100ms Dashbo Use the [Policy API](https://www.100ms.live/docs/server-side/v2/api-reference/policy/create-template-via-api) to programmatically configure your storage location. -You can configure the **`type`** field of recording object to `s3` for AWS, `oss` for Alibaba Object Storage Service and `gs` for Google Cloud Storage with the following details: +You can configure the **`type`** field of recording object to `s3` for AWS, `oss` for Alibaba Object Storage Service, `gs` for Google Cloud Storage, and `azure` for Azure Blob Storage with the following details: -- Access Key: Access Key for your OSS/GCP Bucket -- Secret Key: Secret Key for your OSS/GCP Bucket -- Bucket: Name of the bucket -- Region: Name of the region where your bucket is located in +- Access Key: Access Key for your storage bucket (for Azure, use the Storage Account Name) +- Secret Key: Secret Key for your storage bucket (for Azure, use the Storage Account Key) +- Bucket: Name of the bucket (for Azure, use the Container Name) +- Region: Name of the region where your bucket is located in (for Azure, this field is not required) - Prefix for Upload Path: Define the directory name (optional) diff --git a/docs/server-side/v2/api-reference/Rooms/create-via-api.mdx b/docs/server-side/v2/api-reference/Rooms/create-via-api.mdx index b06cf8f5a..a02c16376 100644 --- a/docs/server-side/v2/api-reference/Rooms/create-via-api.mdx +++ b/docs/server-side/v2/api-reference/Rooms/create-via-api.mdx @@ -72,10 +72,10 @@ curl --location --request POST 'https://api.100ms.live/v2/rooms' \ > **Note**: This object enables recording and configuring storage during room creation. But we recommend configuring it at a template level through the [Dashboard](https://dashboard.100ms.live/dashboard), where the config validator can help with validating inputs proactively. -| Name | Type | Description | Required | -| :---------- | :-------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------- | -| enabled | `boolean` | Enable SFU recording. Disabled by default.

**Note:** This argument is only applicable to enable/disable [SFU recording](/server-side/v2/Destinations/recording). Refer to [RTMP Streaming & Browser Recording](/server-side/v2/api-reference/external-streams/overview) guide for other options. | No | -| upload_info | `object` | Object of type `upload_info`. This object contains information on recordings storage location.

If you want to store recording with 100ms, and not use your own storage (s3/gs/oss), don't add this to the object.

Check the [upload_info object](#upload-info-arguments) below for more information. | No | +| Name | Type | Description | Required | +| :---------- | :-------- | :----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------- | +| enabled | `boolean` | Enable SFU recording. Disabled by default.

**Note:** This argument is only applicable to enable/disable [SFU recording](/server-side/v2/Destinations/recording). Refer to [RTMP Streaming & Browser Recording](/server-side/v2/api-reference/external-streams/overview) guide for other options. | No | +| upload_info | `object` | Object of type `upload_info`. This object contains information on recordings storage location.

If you want to store recording with 100ms, and not use your own storage (s3/gs/oss/azure), don't add this to the object.

Check the [upload_info object](#upload-info-arguments) below for more information. | No | | polls | `array` | Array of poll ids that this room will have. | No | @@ -88,13 +88,13 @@ To know more about recording please visit [Recording](/server-side/v2/Destinatio ### upload_info arguments -| Name | Type | Description | Required | -| :---------- | :------- | :-------------------------------------------------------------------------------------------------------------------------------------- | :------- | -| type | `string` | Upload destination type. Currently, `s3` (AWS), `gs` (Google Cloud Storage), `oss` (Alibaba Cloud) are supported. | Yes | -| location | `string` | Name of the storage bucket in which you want to store all recordings | Yes | -| prefix | `string` | Upload prefix path | No | -| options | `object` | Additional configurations of type `Options` to be used for uploading.

Check the options arguments below for more information. | No | -| credentials | `object` | Object of type `credentials`. This is used to share the credentials to access the storage bucket specified. | No | +| Name | Type | Description | Required | +| :---------- | :------- | :---------------------------------------------------------------------------------------------------------------------------------------------- | :------- | +| type | `string` | Upload destination type. Currently, `s3` (AWS), `gs` (Google Cloud Storage), `oss` (Alibaba Cloud), `azure` (Azure Blob Storage) are supported. | Yes | +| location | `string` | Name of the storage bucket in which you want to store all recordings | Yes | +| prefix | `string` | Upload prefix path | No | +| options | `object` | Additional configurations of type `Options` to be used for uploading.

Check the options arguments below for more information. | No | +| credentials | `object` | Object of type `credentials`. This is used to share the credentials to access the storage bucket specified. | No | #### Options arguments diff --git a/docs/server-side/v2/api-reference/Rooms/update-a-room.mdx b/docs/server-side/v2/api-reference/Rooms/update-a-room.mdx index bd3a324d2..5f3368f1d 100644 --- a/docs/server-side/v2/api-reference/Rooms/update-a-room.mdx +++ b/docs/server-side/v2/api-reference/Rooms/update-a-room.mdx @@ -20,7 +20,7 @@ curl --location --request POST 'https://api.100ms.live/v2/rooms/' \ "recording_info": { "enabled": true, "upload_info": { - "type": "", + "type": "", "location": "", "prefix": "", "options": { diff --git a/docs/server-side/v2/api-reference/legacy-api-v1/destinations/recording.mdx b/docs/server-side/v2/api-reference/legacy-api-v1/destinations/recording.mdx index f96e6446d..ea8104b0e 100644 --- a/docs/server-side/v2/api-reference/legacy-api-v1/destinations/recording.mdx +++ b/docs/server-side/v2/api-reference/legacy-api-v1/destinations/recording.mdx @@ -62,13 +62,13 @@ Another way to enable SFU recording for a room is to choose `Enabled` for record By default recordings will be uploaded to 100ms storage and a pre-signed URL for the same will be provided to customers via a webhook. The pre-signed URL will expire in 12 hours. Customers can also configure the recordings to be stored in their cloud storage. Following are the configurations for the same. -| Name | Type | Description | Required | -| :---------- | :------- | :---------------------------------------------------------------------------------------------------------------- | :------- | -| type | `string` | Upload destination type. Currently, `s3` (AWS), `gs` (Google Cloud Storage), `oss` (Alibaba Cloud) are supported. | Yes | -| location | `string` | Name of the storage bucket in which you want to store all recordings | Yes | -| prefix | `string` | Upload prefix path | No | -| options | `object` | Additional configurations of type `Options` to be used for uploading | No | -| credentials | `object` | Object of type `Credentials`. This is used to share credentials to access the storage bucket specified | No | +| Name | Type | Description | Required | +| :---------- | :------- | :---------------------------------------------------------------------------------------------------------------------------------------------- | :------- | +| type | `string` | Upload destination type. Currently, `s3` (AWS), `gs` (Google Cloud Storage), `oss` (Alibaba Cloud), `azure` (Azure Blob Storage) are supported. | Yes | +| location | `string` | Name of the storage bucket in which you want to store all recordings | Yes | +| prefix | `string` | Upload prefix path | No | +| options | `object` | Additional configurations of type `Options` to be used for uploading | No | +| credentials | `object` | Object of type `Credentials`. This is used to share credentials to access the storage bucket specified | No | Where `Options` is diff --git a/docs/server-side/v2/api-reference/policy/create-template-via-api.mdx b/docs/server-side/v2/api-reference/policy/create-template-via-api.mdx index e01a77817..1e97e7001 100644 --- a/docs/server-side/v2/api-reference/policy/create-template-via-api.mdx +++ b/docs/server-side/v2/api-reference/policy/create-template-via-api.mdx @@ -160,7 +160,7 @@ curl --location --request POST 'https://api.100ms.live/v2/templates' \ "region": "in", "recording": { "upload": { - "type": "", + "type": "", "location": "", "prefix": "", "options": { @@ -441,7 +441,7 @@ curl --location --request POST 'https://api.100ms.live/v2/templates' \ "recording": { "upload": { "location": "", - "type": "", + "type": "", "prefix": "", "credentials": { "key": "", @@ -695,7 +695,7 @@ curl --location --request POST 'https://api.100ms.live/v2/templates' \ | Name | Type | Description | Required | | :---------- | :------- | :---------------------------------------------------------------------------------------------------------------- | :------- | -| type | `string` | Upload destination type. Currently, `s3` (AWS), `gs` (Google Cloud Storage), `oss` (Alibaba Cloud) are supported. | Yes | +| type | `string` | Upload destination type. Currently, `s3` (AWS), `gs` (Google Cloud Storage), `oss` (Alibaba Cloud), `azure` (Azure Blob Storage) are supported. | Yes | | location | `string` | Name of the storage bucket in which you want to store all recordings | Yes | | prefix | `string` | Upload prefix path | Yes | | options | `object` | Additional configurations of type Options to be used for uploading | No | diff --git a/docs/server-side/v2/how-to-guides/recordings/overview.mdx b/docs/server-side/v2/how-to-guides/recordings/overview.mdx index 797ab9a1a..68728f232 100644 --- a/docs/server-side/v2/how-to-guides/recordings/overview.mdx +++ b/docs/server-side/v2/how-to-guides/recordings/overview.mdx @@ -116,7 +116,7 @@ If you are relying on the 100ms storage bucket, we recommend downloading the ass #### Configure your own storage -100ms supports AWS S3, Google Cloud Storage and Alibaba OSS as storage buckets. These can be configured on [the 100ms dashboard](../../../../concepts/v2/concepts/recordings#configure-storage). +100ms supports AWS S3, Google Cloud Storage, Alibaba OSS, and Azure Blob Storage as storage buckets. These can be configured on [the 100ms dashboard](../../../../concepts/v2/concepts/recordings#configure-storage). #### Download assets from dashboard From 3d4e005c8f07ae5a7e9abb42941a77ef8c8c4c41 Mon Sep 17 00:00:00 2001 From: cyril-k-031225 Date: Mon, 5 Jan 2026 11:58:14 +0530 Subject: [PATCH 20/28] Added release note for Azure support (#2502) --- docs/server-side/v2/release-notes/release-notes.mdx | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/docs/server-side/v2/release-notes/release-notes.mdx b/docs/server-side/v2/release-notes/release-notes.mdx index fa100396e..f6c059bc0 100644 --- a/docs/server-side/v2/release-notes/release-notes.mdx +++ b/docs/server-side/v2/release-notes/release-notes.mdx @@ -4,6 +4,11 @@ nav: 5.1 --- This Changelog highlights notable changes to the 100ms server-side API, such as API additions, improvements, and deprecations. Also, we've included developer experience improvements to this page to keep you on track with items that will enhance your integration journey. + +## 2026-01-02 +### Additions +- Added support to [Azure Blob Storage](https://azure.microsoft.com/en-us/products/storage/blobs) - `azure`. Check recording config for [Create a room API](../Rooms/create-via-api#recording_info-arguments) and [Create a template API](../policy/create-template-via-api#recording-object) for more information. + ## 2025-12-30 ### Additions - updated reserved IP addresses for TURN servers in EU|US|IN. These IP addresses can be whitelisted in firewall configuration to solve scenarios where a user is unable to join the room due to a restricted network firewall. From 2b019fc3df69146aadba4b4373c49dabf21f516d Mon Sep 17 00:00:00 2001 From: Aarthi Thirumalai Date: Wed, 14 Jan 2026 11:23:06 +0530 Subject: [PATCH 21/28] add docs for webhook events PI (#2504) * add docs for webhook events PI * Edits --------- Co-authored-by: Aarthi Thirumalai --- CLAUDE.md | 224 ++++++++++++++++++ .../analytics/list-webhook-events.mdx | 112 +++++++++ .../v2/api-reference/analytics/overview.mdx | 7 + .../analytics/replay-webhook-events.mdx | 220 +++++++++++++++++ releases.js | 2 +- 5 files changed, 564 insertions(+), 1 deletion(-) create mode 100644 CLAUDE.md create mode 100644 docs/server-side/v2/api-reference/analytics/list-webhook-events.mdx create mode 100644 docs/server-side/v2/api-reference/analytics/replay-webhook-events.mdx diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 000000000..dd98ef416 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,224 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Project Overview + +This is the documentation site for 100ms.live, built as a Next.js application that renders MDX files into interactive documentation. The site runs on port 4000 by default and uses a file-based routing system where MDX files in the `/docs` directory automatically generate pages. + +**Base Path:** All routes are served under `/docs` prefix (configured in [next.config.js:10](next.config.js#L10)) + +## Development Commands + +**Local Development:** +```bash +yarn dev # Start dev server on port 4000 +yarn id # Shortcut for yarn && yarn dev +``` + +**Building:** +```bash +yarn build # Updates releases, builds Next.js, and generates search index +yarn updatereleases # Must run before viewing local release version changes +``` + +**Code Quality:** +```bash +yarn lint # Lint components and lib files +yarn format # Format code with Prettier +``` + +**Documentation Linting (Vale):** +```bash +brew install vale +vale sync +vale docs/* +``` + +Add whitelisted tokens to [.github/workflows/styles/Vocab/HMSVocab/accept.txt](.github/workflows/styles/Vocab/HMSVocab/accept.txt) + +**Build Artifacts:** +- Post-build generates sitemap via `next-sitemap` (configured in [next-sitemap.js](next-sitemap.js)) +- Search index is generated by [searchIndex.js](searchIndex.js) which calls `updateIndex()` from [lib/algolia/getRecords.ts](lib/algolia/getRecords.ts) + +## Architecture + +### Documentation Structure + +**File System Routing:** +- All docs are MDX files in `/docs` directory, organized by platform: + - `/docs/android/` - Android SDK docs + - `/docs/ios/` - iOS SDK docs + - `/docs/javascript/` - JavaScript SDK docs + - `/docs/flutter/` - Flutter SDK docs + - `/docs/react-native/` - React Native SDK docs + - `/docs/server-side/` - Server-side API docs + - `/docs/prebuilt/` - Prebuilt UI docs + - `/docs/get-started/` - Getting started guides + - `/docs/api-reference/` - API reference docs + +**MDX Processing Pipeline:** +The main routing is handled by [pages/[...slug].tsx](pages/[...slug].tsx): +1. **Static Generation:** Uses `getStaticPaths()` to find all MDX files via [lib/mdxUtils.ts](lib/mdxUtils.ts) +2. **Content Bundling:** Uses `mdx-bundler` to compile MDX with plugins +3. **Rendering:** MDX components defined in [components/MDXComponents.tsx](components/MDXComponents.tsx) + +**Remark/Rehype Plugin Chain:** +- `imagePlugin` - Custom image handling +- `remarkGfm` - GitHub Flavored Markdown +- `remarkA11yEmoji` - Accessible emoji +- `remarkCodeHeader` - Code block headers +- `withTableofContents` - TOC generation +- `rehypeRaw` - Raw HTML support +- `mdxPrism` - Syntax highlighting + +### FrontMatter Requirements + +Every MDX file must include: +```yaml +--- +title: Page Title # Used for SEO and page heading +nav: 14 # Sidebar ordering (can be decimal for insertion) +--- +``` + +**Note:** If no `nav` value is specified, it defaults to `Infinity` (appears at the end) + +### Navigation System + +Navigation is auto-generated from the file system: +- [lib/mdxUtils.ts](lib/mdxUtils.ts) scans all MDX files +- `getAllDocs()` extracts frontmatter (title, nav, description) +- `getNavfromDocs()` builds nested navigation structure using dot notation +- Sidebar ordering controlled by `nav` frontmatter value + +### Custom Components + +MDX files have access to auto-imported components from [components/MDXComponents.tsx](components/MDXComponents.tsx): + +**Note Components:** +```mdx +> Default note (uses blockquote) + +Success message +Error message +Warning message +``` + +**Tabs:** +```mdx + + +Java code here + + +Kotlin code here + +``` +**Important:** Tab IDs must match the Tabs `id` with index suffix + +**Other Components:** +- `` - Embed CodeSandbox +- `` - Automatic code wrapper with copy button +- API request components: ``, ``, ``, ``, `` +- Layout components: ``, ``, ``, ``, ``, `` + +### Content Reuse + +To avoid duplicating common content: +1. Create a file in `/common` directory (`.md` or `.mdx`) + - Use `.md` for plain Markdown + - Use `.mdx` if embedding JSX (escape `<>{}` with backslash or use backticks) +2. Import as PascalCase: `import Test from '@/common/test.md'` +3. Use in MDX: `` + +### Version Management + +Release versions are tracked in [releases.js](releases.js) and automatically updated: +- `yarn updatereleases` scans `/docs` for latest version numbers +- Uses [lib/getNewReleases.js](lib/getNewReleases.js) to extract versions from release note files +- Updates `releases.js` with platform versions and dates + +### Redirects + +Extensive redirect configuration in [next.config.js](next.config.js): +- **Rewrites** (lines 33-56): URL normalization for case-sensitive paths +- **Redirects** (lines 57-1550): Legacy URL redirects, doc reorganization redirects +- Pattern: Old doc structure redirected to new `how-to-guides` organization + +**Key redirect patterns:** +- `/concepts/` → `/get-started/` +- Platform-specific `/:platform/v2/guides:path` → `/:platform/v2/get-started:path` +- Feature docs reorganized under `how-to-guides` with categorization + +### Algolia Search + +Search powered by Algolia: +- Index built during `yarn build` via [searchIndex.js](searchIndex.js) +- Implementation in [lib/algolia/](lib/algolia/) +- Search UI components in [components/](components/) + +## File Naming Conventions + +**DO:** +- Use kebab-case for filenames: `my-feature.mdx` +- Keep titles in frontmatter, not filename + +**DON'T:** +- Use decimal numbers in filenames: ~~`v-1.3.2.mdx`~~ (use frontmatter `title` instead) +- Use ampersands: ~~`tips-&-tricks.mdx`~~ (breaks sitemap generation) +- Use bold in headers: ~~`## **Don't**~~ +- Use emojis in filenames (but DO use them in content!) + +## Adding New Documentation + +### To Existing Section +1. Create MDX file in appropriate `/docs/[platform]/` subdirectory +2. Add frontmatter with `title` and `nav` value +3. Folder names become section headers (capitalized, hyphens → spaces) + +### New Documentation Version +To add a new version (e.g., `v3`): +1. Create `/docs/v3` folder +2. Create `/pages/v3/index.tsx` with redirect: + ```tsx + import redirect from '@/lib/redirect'; + export default redirect('/v3/100ms-v3/basics'); + ``` +3. Add MDX files following existing structure + +## Build Configuration + +**Node Version:** `^22` (specified in [package.json:36](package.json#L36)) + +**Key Dependencies:** +- `next@12.3.4` - Next.js framework +- `mdx-bundler@^9.2.1` - MDX compilation +- `@100mslive/react-ui` & `@100mslive/react-icons` - 100ms UI library +- `algoliasearch` - Search functionality +- `shiki` - Syntax highlighting + +**Webpack Config:** +- Raw loader for `.md` files (allows importing as strings) +- ESM externals set to 'loose' for compatibility + +## Styling + +All styles use CSS variables (tokens) defined in [styles/theme.css](styles/theme.css): +- Tokens prefixed with `token` control syntax highlighting +- Fully customizable theme via CSS variables +- No CSS-in-JS, plain CSS with variables + +## Content Guidelines + +From [README.md](README.md): + +**DO:** +- Use emojis in content +- Maintain header hierarchy (H1 → H2 → H3) +- Add language attributes to code blocks for syntax highlighting +- Use https://tableconvert.com/ for Markdown tables + +**DON'T:** +- Use bold in headers +- Use decimal numbers in filenames diff --git a/docs/server-side/v2/api-reference/analytics/list-webhook-events.mdx b/docs/server-side/v2/api-reference/analytics/list-webhook-events.mdx new file mode 100644 index 000000000..a386c2194 --- /dev/null +++ b/docs/server-side/v2/api-reference/analytics/list-webhook-events.mdx @@ -0,0 +1,112 @@ +--- +title: List Webhook Events +nav: 3.64 +--- + +This API retrieves webhook delivery history including successful and failed webhook events. It can be used to identify failed webhook deliveries and monitor webhook health. + + + + +```bash +curl --location --request GET \ + 'https://api.100ms.live/v2/analytics/webhooks?start_time=2025-12-28T00:00:00Z&status=failed&limit=20' \ + --header 'Authorization: Bearer ' +``` + + + +### Allowed Filters +To be specified as query parameters + +| Name | Type | Description | Required | +| ----------- | -------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------- | +| start_time | `string` | Start of time range in RFC3339 format (Default: 24 hours ago). Must be within the last 30 days. | no | +| end_time | `string` | End of time range in RFC3339 format (Default: Now). Must be within 14 days after `start_time`. | no | +| room_id | `string` | Unique identifier of the room you wish to fetch webhook events for | no | +| status | `string` | Filter by delivery status: `all`, `failed`, `success` (Default: `all`) | no | +| event_names | `string` | Filter by original event types (e.g., `session.open.success`).

Can be specified multiple times to include more than one event (for example `event_names=session.open.success&` `event_names=peer.join.success`). (Default: all events) | no | +| limit | `int` | Items per page (Default: `50`, Min: `1`, Max: `100`) | no | +| page | `int` | Page number (Default: `1`) | no | + +### Response + + + +```json +{ + "events": [ + { + "event_id": "abc123-def456", + "event_name": "reporter.webhook.delivery.failed", + "room_id": "room-123", + "event_timestamp": "2025-12-29T10:30:00Z", + "payload": { + "event_data": { + "session_id": "63f73bf05223403c9671c5c9", + "peer_id": "c8e85ab4-d533-4de0-ba7c-4c58a4de6c74", + "user_id": "187a1a92-150f-4506-83b7-d8a1cd716fb0" + }, + "webhook_url": "https://example.com/webhook", + "original_event_name": "session.open.success", + "error_reason": "timeout" + } + } + ], + "pagination": { + "current_page": 1, + "page_size": 50, + "total_pages": 10, + "total_items": 500, + "has_next": true, + "has_prev": false + }, + "summary": { + "total_events": 500 + } +} +``` + + + +> **Note:** The `error_reason` field is only present for failed webhook events. + +### Supported Event Types + +You can filter webhooks by the following event types: + +| Event Type | Description | +| -------------------------- | ------------------------------ | +| `session.open.success` | Session started | +| `session.close.success` | Session ended | +| `peer.join.success` | Peer joined the room | +| `peer.leave.success` | Peer left the room | +| `recording.success` | Recording completed | +| `recording.failed` | Recording failed | +| `transcription.success` | Transcription completed | +| `beam.started.success` | RTMP/HLS streaming started | +| `beam.stopped.success` | RTMP/HLS streaming stopped | +| `beam.recording.success` | Browser recording completed | +| `hls.recording.success` | HLS recording completed | +| `stream.recording.success` | Stream recording completed | + +### Error Responses + +| Error Code | Message | Description | +|------------|----------------------------------------------|-------------------------------------------------| +| 400 | start_time must be within the last 30 days | Invalid time range parameters | +| 400 | end_time must be within 14 days after start_time | Invalid time range parameters | +| 403 | insufficient permissions | Unauthorized access or invalid management token | +| 429 | rate limit exceeded, retry after 45 seconds | Too many requests, rate limit exceeded | + +### Why would you use this API? + +- **Debug webhook issues:** Retrieve delivery history to analyze failures, identify patterns, and determine when issues occurred + +### Postman collection + +You can use our Postman collection to start exploring 100ms APIs. + +[![Run in Postman](https://run.pstmn.io/button.svg)](https://god.gw.postman.com/run-collection/22726679-47dcd974-29d5-4965-a35b-bf9b74a8b25a?action=collection%2Ffork&collection-url=entityId%3D22726679-47dcd974-29d5-4965-a35b-bf9b74a8b25a%26entityType%3Dcollection%26workspaceId%3Dd9145dd6-337b-4761-81d6-21a30b4147a2) + +Refer to the [Postman guide](/server-side/v2/introduction/postman-guide) to get started with 100ms API collection. diff --git a/docs/server-side/v2/api-reference/analytics/overview.mdx b/docs/server-side/v2/api-reference/analytics/overview.mdx index be6b89d8d..6044e7e5a 100644 --- a/docs/server-side/v2/api-reference/analytics/overview.mdx +++ b/docs/server-side/v2/api-reference/analytics/overview.mdx @@ -24,12 +24,19 @@ Analytics APIs can be utilized to retrieve events via an HTTP request. By using - `client.disconnected` - `client.connect.failed` +- [List Webhook Events](/server-side/v2/api-reference/analytics/list-webhook-events) + - Retrieve webhook delivery history + +- [Replay Webhook Events](/server-side/v2/api-reference/analytics/replay-webhook-events) + - Replay failed or successful webhooks + Event data can be queried up to **last 30 days**. ### What can I build? - You can use track events to get a better understanding of user activity and build tools around it as explained in [use cases](/server-side/v2/api-reference/analytics/track-events#why-would-you-use-this-api) - You can use error events to dig deeper into the issues which your users are facing. +- You can use webhook events to monitor webhook delivery health and replay failed webhooks after recovering from downtime. diff --git a/docs/server-side/v2/api-reference/analytics/replay-webhook-events.mdx b/docs/server-side/v2/api-reference/analytics/replay-webhook-events.mdx new file mode 100644 index 000000000..7dfc13ff4 --- /dev/null +++ b/docs/server-side/v2/api-reference/analytics/replay-webhook-events.mdx @@ -0,0 +1,220 @@ +--- +title: Replay Webhook Events +nav: 3.65 +--- + +Initiates a replay of webhooks that failed to deliver. This is particularly useful when recovering from server downtime or when you need to reprocess events with updated logic. + + + + +```bash +curl --location --request POST \ + 'https://api.100ms.live/v2/analytics/webhooks/replay' \ + --header 'Authorization: Bearer ' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "start_time": "2025-12-28T00:00:00Z", + "end_time": "2025-12-29T00:00:00Z", + "event_names": ["peer.join.success"] + }' +``` + + + +### Allowed Filters +To be specified as query parameters + +| Name | Type | Description | Required | +| ----------- | ---------- | ------------------------------------------------------------------------------------------------------------------ | -------- | +| start_time | `string` | Start of time range to replay in RFC3339 format (Default: 24 hours ago). Must be within the last 30 days. | no | +| end_time | `string` | End of time range to replay in RFC3339 format (Default: Now). Must be after `start_time` but within 14 days of start time. | no | +| room_id | `string` | Unique identifier of the room you wish to replay webhooks for | no | +| event_names | `string[]` | Filter by original event types (e.g., `peer.join.success`) | no | +| limit | `int` | Max webhooks to replay (Default: `50000`, Max: `50000`) | no | +| offset | `int` | Skip first N webhooks for pagination (Default: `0`) | no | +| status | `string` | Filter by delivery status: `all`, `failed`, `success` (Default: `failed`) | no | + +### Response + + + +```json +{ + "workflow_id": "webhook-replay-customer123-a1b2c3d4", + "status": "started", + "message": "Webhook replay has been queued for processing", + "filters": { + "start_time": "2025-12-28T00:00:00Z", + "end_time": "2025-12-29T00:00:00Z", + "room_id": "", + "event_types": ["peer.join.success", "peer.leave.success"] + } +} +``` + + + +**Status Values:** + +| Status | Description | +| ----------------- | ----------------------------------------- | +| `started` | Workflow has been started | +| `already_running` | Identical replay is already in progress | + + +### Supported Event Types + +You can filter specific webhooks to replay by the following event types: + +| Event Type | Description | +| -------------------------- | ------------------------------ | +| `session.open.success` | Session started | +| `session.close.success` | Session ended | +| `peer.join.success` | Peer joined the room | +| `peer.leave.success` | Peer left the room | +| `recording.success` | Recording completed | +| `recording.failed` | Recording failed | +| `transcription.success` | Transcription completed | +| `beam.started.success` | RTMP/HLS streaming started | +| `beam.stopped.success` | RTMP/HLS streaming stopped | +| `beam.recording.success` | Browser recording completed | +| `hls.recording.success` | HLS recording completed | +| `stream.recording.success` | Stream recording completed | + +### How Replay Works + +Once a replay is triggered, the system: + +1. Starts a workflow that fetches webhooks from the database in batches +2. Each webhook is sent to your configured webhook URL with an `is_replay: true` flag +3. Webhook replay events are sent at a rate of 10 events per second to your endpoint +4. Maximum 50,000 webhooks are supported per replay request +5. Duplicate replay requests with identical filters will automatically reuse the existing workflow + +> **Note:** Ensure your webhook endpoints are scaled appropriately before triggering the replay API to handle the incoming event rate. + + +### Pagination for Large Replays + +For replays with more than 50,000 webhooks, use pagination by making multiple requests with different offsets: + +```bash +# First batch (0-50,000) +curl --location --request POST \ + 'https://api.100ms.live/v2/analytics/webhooks/replay' \ + --header 'Authorization: Bearer ' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "start_time": "2025-12-28T00:00:00Z", + "limit": 50000, + "offset": 0 + }' + +# Second batch (50,000-100,000) - Run after first completes +curl --location --request POST \ + 'https://api.100ms.live/v2/analytics/events/webhooks/replay' \ + --header 'Authorization: Bearer ' \ + --header 'Content-Type: application/json' \ + --data-raw '{ + "start_time": "2025-12-28T00:00:00Z", + "limit": 50000, + "offset": 50000 + }' +``` + +### Error Responses + +| Error Code | Message | Description | +|------------|---------------------------------------------------|-------------------------------------------------| +| 400 | start_time must be within the last 30 days | Invalid time range parameters | +| 400 | end_time must be within 14 days after start_time | Invalid time range parameters | +| 403 | insufficient permissions | Unauthorized access or invalid management token | +| 404 | workflow not found | The specified workflow ID does not exist | +| 429 | rate limit exceeded, retry after 45 seconds | Too many requests, rate limit exceeded | +| 503 | webhook replay service unavailable | Service is temporarily unavailable | + +### Why would you use this API? + +- **Recover from downtime:** Replay failed webhooks after your server recovers from an outage or maintenance period +- **Reprocess events:** Replay specific event types following bug fixes, data corrections, or logic updates in your webhook handler + +## Check Replay Results + +Monitor the status and progress of a webhook replay workflow. + + + + +```bash +curl --location --request GET \ + 'https://api.100ms.live/v2/analytics/webhooks/replay/webhook-replay-customer123-a1b2c3d4' \ + --header 'Authorization: Bearer ' +``` + + + +### Allowed Filters +To be specified as query parameters + +| Name | Type | Description | Required | +| ----------- | -------- | ------------------------------------------------------- | -------- | +| workflow_id | `string` | The workflow ID returned from POST /webhooks/replay | yes | + +### Response + + + +```json +{ + "workflow_id": "webhook-replay-customer123-a1b2c3d4", + "status": "completed", + "started_at": "2025-12-29T10:00:00Z", + "completed_at": "2025-12-29T10:15:00Z", + "filters": { + "start_time": "2025-12-28T00:00:00Z", + "end_time": "2025-12-29T00:00:00Z", + "room_id": "", + "event_types": ["peer.join.success"], + "limit": 50000, + "offset": 0 + }, + "progress": { + "total": 150, + "completed": 148, + "failed": 2 + }, + "result": { + "total": 150, + "completed": 148, + "failed": 2, + "failed_events": ["event-id-1", "event-id-2"] + } +} +``` + + + +**Status Values:** + +| Status | Description | +| --------------------------- | -------------------------------------------- | +| `Running` | Workflow is currently processing webhooks | +| `completed` | All webhooks replayed successfully | +| `completed_with_failures` | Replay finished but some webhooks failed | +| `failed` | All webhooks failed to replay | +| `Canceled` | Workflow was canceled | +| `Terminated` | Workflow was terminated | + +### Why would you use this API? + +- **Track workflow progress:** Monitor the total number of events queued for replay, completion counts, and failure rates in real-time +- **Analyze failure statistics:** Retrieve a detailed list of webhook events that failed to replay within the current workflow for troubleshooting + +### Postman collection + +You can use our Postman collection to start exploring 100ms APIs. + +[![Run in Postman](https://run.pstmn.io/button.svg)](https://god.gw.postman.com/run-collection/22726679-47dcd974-29d5-4965-a35b-bf9b74a8b25a?action=collection%2Ffork&collection-url=entityId%3D22726679-47dcd974-29d5-4965-a35b-bf9b74a8b25a%26entityType%3Dcollection%26workspaceId%3Dd9145dd6-337b-4761-81d6-21a30b4147a2) + +Refer to the [Postman guide](/server-side/v2/introduction/postman-guide) to get started with 100ms API collection. diff --git a/releases.js b/releases.js index 2833f85d4..6f76bfd59 100644 --- a/releases.js +++ b/releases.js @@ -1 +1 @@ -exports.releases = releases = {"Android":{"version":"v2.9.65","date":"August 13, 2024"},"iOS":{"version":"1.16.0","date":"August 13, 2024"},"React Native":{"version":"1.10.9","date":"July 31, 2024"},"Web":{"version":"2024-08-16","date":"August 16, 2024"},"Flutter":{"version":"1.10.5","date":"July 25, 2024"},"Server-side":{"version":"2024-02-28","date":"February 28, 2024"}} \ No newline at end of file +exports.releases = releases = {"Android":{"version":"v2.9.79","date":"November 24, 2025"},"iOS":{"version":"1.17.1","date":"November 17, 2025"},"React Native":{"version":"1.12.0","date":"October 28, 2025"},"Web":{"version":"2025-12-04","date":"December 04, 2025"},"Flutter":{"version":"1.11.0","date":"October 29, 2025"},"Server-side":{"version":"2026-01-02","date":"January 02, 2026"}} \ No newline at end of file From 1e75ea166dd6cb9f0019ab7a3232ceb29c1efffa Mon Sep 17 00:00:00 2001 From: Ravi theja Date: Tue, 20 Jan 2026 17:29:19 +0530 Subject: [PATCH 22/28] docs: add release notes for web (#2505) --- .../v2/release-notes/release-notes.mdx | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/docs/javascript/v2/release-notes/release-notes.mdx b/docs/javascript/v2/release-notes/release-notes.mdx index c4b7c2365..65aa0e0f9 100644 --- a/docs/javascript/v2/release-notes/release-notes.mdx +++ b/docs/javascript/v2/release-notes/release-notes.mdx @@ -14,6 +14,22 @@ description: Release Notes for 100ms.live JavaScript SDK | @100mslive/hms-noise-cancellation | [![npm version](https://badge.fury.io/js/%40100mslive%2Fhms-noise-cancellation.svg)](https://badge.fury.io/js/%40100mslive%2Fhms-noise-cancellation) | | @100mslive/hms-virtual-background | [![npm version](https://badge.fury.io/js/%40100mslive%2Fhms-virtual-background.svg)](https://badge.fury.io/js/%40100mslive%2Fhms-virtual-background) | +## 2026-01-20 + +Released: `@100mslive/hms-video-store@0.13.1`, `@100mslive/react-sdk@0.11.1`, `@100mslive/hls-player@0.4.1`, `@100mslive/roomkit-react@0.4.1` + +### Added: + +- Capture CPU pressure state per sample for better performance monitoring +- Enhanced track interruption analytics with detailed track information +- Source stats with fallback mechanism for improved reliability +- Upgraded Effects SDK to version 3.6.2 for better performance + +### Fixed: + +- macOS compatibility check in prebuilt binaries +- Computation of sourceFramesDropped metric in local track stats + ## 2025-12-04 Released: `@100mslive/hms-video-store@0.13.0`, `@100mslive/react-sdk@0.11.0`, `@100mslive/hls-player@0.4.0`, `@100mslive/roomkit-react@0.4.0` From ba939189e6b81f3a8328f26c6b4be23fcab38a15 Mon Sep 17 00:00:00 2001 From: cyril-k-031225 Date: Wed, 11 Feb 2026 10:25:29 +0530 Subject: [PATCH 23/28] doc: add release notes for web v0.13.2 (#2507) --- docs/javascript/v2/release-notes/release-notes.mdx | 14 ++++++++++++++ releases.js | 2 +- 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/docs/javascript/v2/release-notes/release-notes.mdx b/docs/javascript/v2/release-notes/release-notes.mdx index 65aa0e0f9..0ae0e850d 100644 --- a/docs/javascript/v2/release-notes/release-notes.mdx +++ b/docs/javascript/v2/release-notes/release-notes.mdx @@ -14,6 +14,20 @@ description: Release Notes for 100ms.live JavaScript SDK | @100mslive/hms-noise-cancellation | [![npm version](https://badge.fury.io/js/%40100mslive%2Fhms-noise-cancellation.svg)](https://badge.fury.io/js/%40100mslive%2Fhms-noise-cancellation) | | @100mslive/hms-virtual-background | [![npm version](https://badge.fury.io/js/%40100mslive%2Fhms-virtual-background.svg)](https://badge.fury.io/js/%40100mslive%2Fhms-virtual-background) | +## 2026-02-10 + +Released: `@100mslive/hms-video-store@0.13.2`, `@100mslive/react-sdk@0.11.2`, `@100mslive/hls-player@0.4.2`, `@100mslive/roomkit-react@0.4.2`, `@100mslive/hms-whiteboard@0.1.2` + +### Added: + +- Enhanced track analytics capturing detailed metadata for local audio and video tracks +- Online/Offline connection status indicators in whiteboard for better visibility +- Debug logging for whiteboard errors to aid in troubleshooting + +### Fixed: + +- Whiteboard connection status handling improvements with better error recovery + ## 2026-01-20 Released: `@100mslive/hms-video-store@0.13.1`, `@100mslive/react-sdk@0.11.1`, `@100mslive/hls-player@0.4.1`, `@100mslive/roomkit-react@0.4.1` diff --git a/releases.js b/releases.js index 6f76bfd59..2a481ab01 100644 --- a/releases.js +++ b/releases.js @@ -1 +1 @@ -exports.releases = releases = {"Android":{"version":"v2.9.79","date":"November 24, 2025"},"iOS":{"version":"1.17.1","date":"November 17, 2025"},"React Native":{"version":"1.12.0","date":"October 28, 2025"},"Web":{"version":"2025-12-04","date":"December 04, 2025"},"Flutter":{"version":"1.11.0","date":"October 29, 2025"},"Server-side":{"version":"2026-01-02","date":"January 02, 2026"}} \ No newline at end of file +exports.releases = releases = {"Android":{"version":"v2.9.79","date":"November 24, 2025"},"iOS":{"version":"1.17.1","date":"November 17, 2025"},"React Native":{"version":"1.12.0","date":"October 28, 2025"},"Web":{"version":"2026-02-10","date":"February 10, 2026"},"Flutter":{"version":"1.11.0","date":"October 29, 2025"},"Server-side":{"version":"2026-01-02","date":"January 02, 2026"}} \ No newline at end of file From 768e4a1860c2d2bf61eeb488ab5cb2b6202dfc35 Mon Sep 17 00:00:00 2001 From: sapta100ms Date: Wed, 11 Feb 2026 10:28:40 +0530 Subject: [PATCH 24/28] Release notes for android sdk ver 2.9.80 (#2506) update release notes for Android v2.9.80 Co-authored-by: Ravi theja --- docs/android/v2/release-notes/release-notes.mdx | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/docs/android/v2/release-notes/release-notes.mdx b/docs/android/v2/release-notes/release-notes.mdx index 046f2213c..295a96e2d 100644 --- a/docs/android/v2/release-notes/release-notes.mdx +++ b/docs/android/v2/release-notes/release-notes.mdx @@ -19,6 +19,10 @@ import AndroidPrebuiltVersionShield from '@/common/android-prebuilt-version-shie | live.100ms:virtual-background: || | live.100ms:hms-noise-cancellation-android: | | +## v2.9.80 - 2026-02-10 +### Fixed +* Bug fix for image capture callback reliability during camera operations. + ## v2.9.79 - 2025-11-24 ### Fixed * Bug fix to handle NPE at room leave. From ce6ebf1056f0a5ce560733c578d00d71cca5448a Mon Sep 17 00:00:00 2001 From: Anshul Date: Wed, 11 Feb 2026 10:58:43 +0530 Subject: [PATCH 25/28] fix: path of room apis --- .../server-side/v2/api-reference/recordings/get-recording.mdx | 4 ++-- .../v2/api-reference/recordings/pause-recording-for-room.mdx | 4 ++-- .../v2/api-reference/recordings/resume-recording-for-room.mdx | 4 ++-- .../v2/api-reference/recordings/stop-recording-by-id.mdx | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/docs/server-side/v2/api-reference/recordings/get-recording.mdx b/docs/server-side/v2/api-reference/recordings/get-recording.mdx index 8b6b8ed8b..9b4226835 100644 --- a/docs/server-side/v2/api-reference/recordings/get-recording.mdx +++ b/docs/server-side/v2/api-reference/recordings/get-recording.mdx @@ -7,11 +7,11 @@ Use this request to get the recording job object, at any point after it has been This can be used to fetch recording assets that are generated after the recording has completed. - + ```bash -curl --location --request GET 'https://api.100ms.live/v2/recordings/' \ +curl --location --request GET 'https://api.100ms.live/v2/recordings/' \ --header 'Authorization: Bearer ' ``` diff --git a/docs/server-side/v2/api-reference/recordings/pause-recording-for-room.mdx b/docs/server-side/v2/api-reference/recordings/pause-recording-for-room.mdx index 35ccfe5e1..471723f2a 100644 --- a/docs/server-side/v2/api-reference/recordings/pause-recording-for-room.mdx +++ b/docs/server-side/v2/api-reference/recordings/pause-recording-for-room.mdx @@ -7,11 +7,11 @@ Use this API to pause the recording that is running for a room. The recording can be [resumed](./resume-recording-for-room) later. - + ```bash -curl --location --request POST 'https://api.100ms.live/v2/recordings//pause' \ +curl --location --request POST 'https://api.100ms.live/v2/recordings/room//pause' \ --header 'Authorization: Bearer ' \ ``` diff --git a/docs/server-side/v2/api-reference/recordings/resume-recording-for-room.mdx b/docs/server-side/v2/api-reference/recordings/resume-recording-for-room.mdx index 0528b4cda..03ab4a55d 100644 --- a/docs/server-side/v2/api-reference/recordings/resume-recording-for-room.mdx +++ b/docs/server-side/v2/api-reference/recordings/resume-recording-for-room.mdx @@ -5,11 +5,11 @@ nav: 3.147 Use this API to resume the recording that is paused for a room. - + ```bash -curl --location --request POST 'https://api.100ms.live/v2/recordings//resume' \ +curl --location --request POST 'https://api.100ms.live/v2/recordings/room//resume' \ --header 'Authorization: Bearer ' \ ``` diff --git a/docs/server-side/v2/api-reference/recordings/stop-recording-by-id.mdx b/docs/server-side/v2/api-reference/recordings/stop-recording-by-id.mdx index 4f320a6bf..03e03dffb 100644 --- a/docs/server-side/v2/api-reference/recordings/stop-recording-by-id.mdx +++ b/docs/server-side/v2/api-reference/recordings/stop-recording-by-id.mdx @@ -5,11 +5,11 @@ nav: 3.145 Use this to stop a specific recording by its unique identifier. - + ```bash -curl --location --request POST 'https://api.100ms.live/v2/recordings//stop' \ +curl --location --request POST 'https://api.100ms.live/v2/recordings//stop' \ --header 'Authorization: Bearer ' \ ``` From 303a2e8ab814fdb2db6b7de6568ddd94165c9d08 Mon Sep 17 00:00:00 2001 From: Anshul Date: Sun, 15 Feb 2026 10:06:43 +0530 Subject: [PATCH 26/28] add peer quality api documentation (#2509) --- .../v2/api-reference/analytics/overview.mdx | 4 + .../analytics/peer-quality-stats.mdx | 210 ++++++++++++++++++ 2 files changed, 214 insertions(+) create mode 100644 docs/server-side/v2/api-reference/analytics/peer-quality-stats.mdx diff --git a/docs/server-side/v2/api-reference/analytics/overview.mdx b/docs/server-side/v2/api-reference/analytics/overview.mdx index 6044e7e5a..8a154299a 100644 --- a/docs/server-side/v2/api-reference/analytics/overview.mdx +++ b/docs/server-side/v2/api-reference/analytics/overview.mdx @@ -30,6 +30,9 @@ Analytics APIs can be utilized to retrieve events via an HTTP request. By using - [Replay Webhook Events](/server-side/v2/api-reference/analytics/replay-webhook-events) - Replay failed or successful webhooks +- [Peer Quality Stats](/server-side/v2/api-reference/analytics/peer-quality-stats) + - Time-series quality metrics (bitrate, packet loss, FPS, RTT) for a peer in a session + Event data can be queried up to **last 30 days**. ### What can I build? @@ -37,6 +40,7 @@ Event data can be queried up to **last 30 days**. - You can use track events to get a better understanding of user activity and build tools around it as explained in [use cases](/server-side/v2/api-reference/analytics/track-events#why-would-you-use-this-api) - You can use error events to dig deeper into the issues which your users are facing. - You can use webhook events to monitor webhook delivery health and replay failed webhooks after recovering from downtime. +- You can use peer quality stats to debug call quality issues, monitor network conditions, and build custom quality dashboards. diff --git a/docs/server-side/v2/api-reference/analytics/peer-quality-stats.mdx b/docs/server-side/v2/api-reference/analytics/peer-quality-stats.mdx new file mode 100644 index 000000000..37552b93b --- /dev/null +++ b/docs/server-side/v2/api-reference/analytics/peer-quality-stats.mdx @@ -0,0 +1,210 @@ +--- +title: Peer Quality Stats +nav: 3.67 +--- + +Peer Quality Stats API provides time-series quality metrics for a specific peer in a session. Use this to analyze publishing and subscribing performance, including bitrate, packet loss, FPS, round-trip time, and more. + +This is useful for debugging call quality issues, monitoring network conditions, and building custom quality dashboards. + +This API is not real-time. Quality stats data is only available after the session has ended. + + + + +```bash +curl --location --request GET \ + 'https://api.100ms.live/v2/analytics/peer-stats?peer_id=&session_id=' \ + --header 'Authorization: Bearer ' +``` + + + +## Query Parameters + +| Name | Type | Description | Required | +| ---------- | -------- | ------------------------------------------------------------------ | -------- | +| peer_id | `string` | Unique identifier of the peer/participant | yes | +| session_id | `string` | Unique identifier of the session | yes | + +## Response Object + +| Attribute | Type | Description | +| ----------- | -------- | -------------------------------------------------------------- | +| peer_id | `string` | Unique identifier of the peer | +| session_id | `string` | Unique identifier of the session | +| room_id | `string` | Unique identifier of the room | +| publisher | `object` | Contains `video` and `audio` arrays with publish-side metrics | +| subscriber | `object` | Contains `video` and `audio` arrays with subscribe-side metrics| + +### Publisher Video Object + +| Attribute | Type | Description | +| ----------- | -------- | --------------------------------------------------------------------------- | +| track_id | `string` | UUID of the track | +| type | `string` | Track type: `regular` or `screen` | +| rid | `string \| null` | Simulcast layer: `h` (high), `m` (medium), `l` (low), or `null` | +| time_series | `object` | Time-series metrics for the track | + +**Publisher video `time_series` fields:** + +| Field | Type | Description | +| ------------------- | ---------- | --------------------------------------- | +| timestamps | `number[]` | Unix timestamps in milliseconds | +| bitrate | `number[]` | Bitrate in bits per second | +| fps | `number[]` | Frames per second | +| packet_loss_percent | `number[]` | Packet loss as a percentage | +| rtt_ms | `number[]` | Round-trip time in milliseconds | + +### Publisher Audio Object + +| Attribute | Type | Description | +| ----------- | -------- | --------------------------------- | +| track_id | `string` | UUID of the track | +| time_series | `object` | Time-series metrics for the track | + +**Publisher audio `time_series` fields:** + +| Field | Type | Description | +| ------------------- | ---------- | --------------------------------------- | +| timestamps | `number[]` | Unix timestamps in milliseconds | +| bitrate | `number[]` | Bitrate in bits per second | +| packet_loss_percent | `number[]` | Packet loss as a percentage | +| rtt_ms | `number[]` | Round-trip time in milliseconds | +| jitter_ms | `number[]` | Jitter in milliseconds | + +### Subscriber Video Object + +| Attribute | Type | Description | +| ----------- | -------- | --------------------------------------- | +| track_id | `string` | UUID of the track | +| type | `string` | Track type: `regular` or `screen` | +| time_series | `object` | Time-series metrics for the track | + +**Subscriber video `time_series` fields:** + +| Field | Type | Description | +| ------------ | ---------------- | --------------------------------------- | +| timestamps | `number[]` | Unix timestamps in milliseconds | +| bitrate | `number\|null[]` | Bitrate in bits per second, or `null` | +| fps | `number[]` | Frames per second | +| freeze_count | `number[]` | Number of video freezes | + +### Subscriber Audio Object + +| Attribute | Type | Description | +| ----------- | -------- | --------------------------------- | +| track_id | `string` | UUID of the track | +| time_series | `object` | Time-series metrics for the track | + +**Subscriber audio `time_series` fields:** + +| Field | Type | Description | +| ------------------- | ---------------- | -------------------------------------------- | +| timestamps | `number[]` | Unix timestamps in milliseconds | +| bitrate | `number\|null[]` | Bitrate in bits per second, or `null` | +| concealed_samples | `number[]` | Number of concealed (interpolated) samples | +| packet_loss_percent | `number[]` | Packet loss as a percentage | + + + +```json +{ + "peer_id": "1169b4b7-68c2-4d39-8568-5618433958ac", + "session_id": "6977b3f3cdd1e423f8b2cxxx", + "room_id": "6977b3f3cdd1e423f8b2xxxx", + "publisher": { + "video": [ + { + "track_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "type": "regular", + "rid": "h", + "time_series": { + "timestamps": [1738843560000, 1738843570000], + "bitrate": [2500000, 2480000], + "fps": [30, 30], + "packet_loss_percent": [0.3, 0.2], + "rtt_ms": [45, 47] + } + }, + { + "track_id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890", + "type": "regular", + "rid": "m", + "time_series": { + "timestamps": [1738843560000], + "bitrate": [1200000], + "fps": [30], + "packet_loss_percent": [0.15], + "rtt_ms": [45] + } + }, + { + "track_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901", + "type": "screen", + "rid": null, + "time_series": { + "timestamps": [1738843560000], + "bitrate": [800000], + "fps": [5], + "packet_loss_percent": [0.1], + "rtt_ms": [46] + } + } + ], + "audio": [ + { + "track_id": "c3d4e5f6-a7b8-9012-cdef-123456789012", + "time_series": { + "timestamps": [1738843560000], + "bitrate": [64000], + "packet_loss_percent": [0.1], + "rtt_ms": [45], + "jitter_ms": [2.1] + } + } + ] + }, + "subscriber": { + "video": [ + { + "track_id": "4334da7c-1d73-4e19-9d63-4b0571f5acd4", + "type": "regular", + "time_series": { + "timestamps": [1738843560000], + "bitrate": [null], + "fps": [15], + "freeze_count": [0] + } + } + ], + "audio": [ + { + "track_id": "fbc9c8f8-70ea-4d24-9699-12bf3eba94d8", + "time_series": { + "timestamps": [1738843560000], + "bitrate": [null], + "concealed_samples": [0], + "packet_loss_percent": [0.2] + } + } + ] + } +} +``` + + + +## Notes + +- **Authentication**: Requires a management token in the `Authorization: Bearer ` header. +- **Empty Data**: Arrays will be empty `[]` if no data is available for a given metric. +- **Simulcast**: For publisher video tracks, the same `track_id` may appear multiple times with different `rid` values (`h`/`m`/`l`) representing different simulcast quality layers. + +## Postman collection + +You can use our Postman collection to start exploring 100ms APIs. + +[![Run in Postman](https://run.pstmn.io/button.svg)](https://god.gw.postman.com/run-collection/22726679-47dcd974-29d5-4965-a35b-bf9b74a8b25a?action=collection%2Ffork&collection-url=entityId%3D22726679-47dcd974-29d5-4965-a35b-bf9b74a8b25a%26entityType%3Dcollection%26workspaceId%3Dd9145dd6-337b-4761-81d6-21a30b4147a2) + +Refer to the [Postman guide](/server-side/v2/introduction/postman-guide) to get started with 100ms API collection. From 95338b3538fefd198445fbfe3590d5cb9f9b571e Mon Sep 17 00:00:00 2001 From: Ravi theja Date: Tue, 24 Feb 2026 14:11:23 +0530 Subject: [PATCH 27/28] docs: add JavaScript implementation to captions page (#2510) Add JS/React tabs to the captions documentation showing both the vanilla JS approach (hmsNotifications.onNotification) and the React hook approach (useTranscript) for receiving transcript messages. --- .../set-up-video-conferencing/captions.mdx | 197 +++++++++++++----- 1 file changed, 146 insertions(+), 51 deletions(-) diff --git a/docs/javascript/v2/how-to-guides/set-up-video-conferencing/captions.mdx b/docs/javascript/v2/how-to-guides/set-up-video-conferencing/captions.mdx index 8b9b3389d..406fb93e1 100644 --- a/docs/javascript/v2/how-to-guides/set-up-video-conferencing/captions.mdx +++ b/docs/javascript/v2/how-to-guides/set-up-video-conferencing/captions.mdx @@ -11,84 +11,179 @@ nav: 1.24 ## How to implement closed captioning? -The `useTranscript` hook is implemented with the `onTranscript` callback as shown below: +Each transcript entry has the following structure: ```ts - export interface HMSTranscript { - // start time in second - start: number; - // end time in seconds - end: number; - // peer_id of the speaker - peer_id: string; - // transcription will continue to update the transcript until you receive final keyword - final: boolean; - // closed caption - transcript: string; - } +interface HMSTranscript { + start: number; // start time in seconds + end: number; // end time in seconds + peer_id: string; // peer_id of the speaker + final: boolean; // true when the transcript segment is finalized + transcript: string; // the caption text +} +``` + +The transcription engine sends interim results as the speaker talks, then a final result once the segment is complete. Interim results update the same segment in place, while final results indicate that a new segment will follow. + + + + + +In plain JavaScript, transcript data arrives as `NEW_MESSAGE` notifications of type `hms_transcript`. Subscribe via `hmsNotifications.onNotification`: + +```js +import { HMSNotificationTypes } from '@100mslive/hms-video-store'; - export interface useHMSTranscriptInput { - onTranscript?: (data: HMSTranscript[]) => void; - handleError?: hooksErrHandler; +const unsubscribe = hmsNotifications.onNotification((notification) => { + const msg = notification.data; + if (msg && msg.type === 'hms_transcript') { + const parsed = JSON.parse(msg.message); + const transcripts = parsed.results; // HMSTranscript[] + + transcripts.forEach((entry) => { + console.log( + `${entry.peer_id}: ${entry.transcript} (final: ${entry.final})` + ); + }); } +}, HMSNotificationTypes.NEW_MESSAGE); + +// call unsubscribe() when you no longer need transcript updates +``` + +To resolve the `peer_id` to a display name, use the store: - export const useTranscript = ({ onTranscript, handleError = logErrorHandler }: useHMSTranscriptInput); +```js +import { selectPeerNameByID } from '@100mslive/hms-video-store'; +const peerName = hmsStore.getState(selectPeerNameByID(entry.peer_id)); ``` + + + + +Use the `useTranscript` hook with the `onTranscript` callback: + +```jsx +import { useTranscript } from '@100mslive/react-sdk'; + +function CaptionsViewer() { + useTranscript({ + onTranscript: (transcripts) => { + // transcripts is HMSTranscript[] + transcripts.forEach((entry) => { + console.log( + `${entry.peer_id}: ${entry.transcript} (final: ${entry.final})` + ); + }); + }, + }); + + return null; +} +``` + + + ## How can you check if closed captions are enabled in a room? -```ts + + + + +```js +import { selectIsTranscriptionEnabled } from '@100mslive/hms-video-store'; + +// read once +const isCaptionEnabled = hmsStore.getState(selectIsTranscriptionEnabled); + +// or subscribe to changes +hmsStore.subscribe((enabled) => { + console.log('Captions enabled:', enabled); +}, selectIsTranscriptionEnabled); +``` + + + + + +```jsx import { selectIsTranscriptionEnabled, useHMSStore } from '@100mslive/react-sdk'; -// use this to check if caption is enabled for your room. -const isCaptionPresent: boolean = useHMSStore(selectIsTranscriptionEnabled); + +function CaptionStatus() { + const isCaptionEnabled = useHMSStore(selectIsTranscriptionEnabled); + return {isCaptionEnabled ? 'Captions ON' : 'Captions OFF'}; +} ``` + + ## How to toggle closed captions on or off? Closed captions can be dynamically enabled or disabled at runtime within a given room, depending on user requirements. This capability helps minimize unnecessary usage costs by ensuring that captions are enabled only when explicitly needed by the user(s). -```ts -// Currently 100ms supports closed captions type mode -export declare enum HMSTranscriptionMode { - CAPTION = 'caption' -} +### Check permission -export interface TranscriptionConfig { - mode: HMSTranscriptionMode; -} +Before starting or stopping transcription, verify that the local peer has the required permission: + + + + + +```js +import { + HMSTranscriptionMode, + selectIsTranscriptionAllowedByMode +} from '@100mslive/hms-video-store'; + +const isTranscriptionAllowed = hmsStore.getState( + selectIsTranscriptionAllowedByMode(HMSTranscriptionMode.CAPTION) +); +``` + + + + + +```jsx +import { + HMSTranscriptionMode, + selectIsTranscriptionAllowedByMode, + useHMSStore +} from '@100mslive/react-sdk'; -// admin/host role need to startTranscription if he had the access, here is how you will check if you had access to start transcription const isTranscriptionAllowed = useHMSStore( selectIsTranscriptionAllowedByMode(HMSTranscriptionMode.CAPTION) ); ``` -Use `hmsActions.startTranscription()` method to start the closed captions. + -```ts - async startCaption() { - try { - await hmsActions.startTranscription({ - mode: HMSTranscriptionMode.CAPTION, - }); - } catch(err) { - console.log(err); - } - } +### Start captions +Use `hmsActions.startTranscription()` to enable closed captions for the room: + +```js +try { + await hmsActions.startTranscription({ + mode: HMSTranscriptionMode.CAPTION, + }); +} catch (err) { + console.error('Failed to start captions:', err); +} ``` -Use `hmsActions.stopTranscription()` method to stop closed captions. +### Stop captions -```ts - async stopCaption() { - try { - await hmsActions.stopTranscription({ - mode: HMSTranscriptionMode.CAPTION, - }); - } catch(err) { - console.log(err); - } - } +Use `hmsActions.stopTranscription()` to disable closed captions: + +```js +try { + await hmsActions.stopTranscription({ + mode: HMSTranscriptionMode.CAPTION, + }); +} catch (err) { + console.error('Failed to stop captions:', err); +} ``` From 0529c28995107fed7f55362e93c0652a3fea9027 Mon Sep 17 00:00:00 2001 From: Ravi theja Date: Thu, 5 Mar 2026 10:46:40 +0530 Subject: [PATCH 28/28] Fix formatting in stop-recording-by-id documentation --- .../v2/api-reference/recordings/stop-recording-by-id.mdx | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/server-side/v2/api-reference/recordings/stop-recording-by-id.mdx b/docs/server-side/v2/api-reference/recordings/stop-recording-by-id.mdx index 03e03dffb..c73b7086d 100644 --- a/docs/server-side/v2/api-reference/recordings/stop-recording-by-id.mdx +++ b/docs/server-side/v2/api-reference/recordings/stop-recording-by-id.mdx @@ -40,3 +40,4 @@ curl --location --request POST 'https://api.100ms.live/v2/recordings/ +