@cometchat/skills 4.4.2 → 5.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (518) hide show
  1. package/.claude-plugin/marketplace.json +55 -0
  2. package/.claude-plugin/plugin.json +14 -0
  3. package/CHANGELOG.md +44 -0
  4. package/LICENSE +21 -0
  5. package/MIGRATING.md +187 -0
  6. package/README.md +52 -156
  7. package/RULES.md +125 -0
  8. package/bin/cometchat-skills.mjs +1280 -0
  9. package/bin/legacy-skills.json +95 -0
  10. package/catalogs/android-v6.json +1646 -0
  11. package/catalogs/flutter-v6.json +651 -0
  12. package/catalogs/ios-v5.json +1383 -0
  13. package/catalogs/rn-calls-v5.json +134 -0
  14. package/catalogs/rn-calls-v5.symbols.txt +58 -0
  15. package/catalogs/rn-sdk-v4.json +672 -0
  16. package/catalogs/rn-v5.json +449 -0
  17. package/catalogs/rn-v5.symbols.txt +216 -0
  18. package/catalogs/sdk-android-v5.json +514 -0
  19. package/contracts.android-calls-v5.json +122 -0
  20. package/contracts.android-v6.json +135 -0
  21. package/contracts.angular-v5.json +694 -0
  22. package/contracts.flutter-calls-v5.json +77 -0
  23. package/contracts.flutter-v6.json +126 -0
  24. package/contracts.ios-calls-v5.json +67 -0
  25. package/contracts.ios-v5.json +436 -0
  26. package/contracts.json +82 -0
  27. package/contracts.rn-calls-v5.json +77 -0
  28. package/contracts.rn-v5.json +727 -0
  29. package/contracts.sdk-android-v5.json +15 -0
  30. package/contracts.web-calls-v5.json +45 -0
  31. package/features.android-calls-v5.json +246 -0
  32. package/features.android-v6.json +65 -0
  33. package/features.angular-v5.json +521 -0
  34. package/features.flutter-calls-v5.json +286 -0
  35. package/features.flutter-v6.json +484 -0
  36. package/features.ios-calls-v5.json +236 -0
  37. package/features.ios-v5.json +573 -0
  38. package/features.json +61 -0
  39. package/features.rn-calls-v5.json +187 -0
  40. package/features.rn-v5.json +614 -0
  41. package/features.sdk-android-v5.json +40 -0
  42. package/features.sdk-jsv4.json +24 -0
  43. package/features.web-calls-v5.json +108 -0
  44. package/package.json +156 -74
  45. package/peers.yaml +355 -0
  46. package/registry/README.md +31 -0
  47. package/registry/android-calls-v5.json +94 -0
  48. package/registry/android-v6.json +177 -0
  49. package/registry/angular-v5.json +154 -0
  50. package/registry/flutter-calls-v5.json +94 -0
  51. package/registry/flutter-v6.json +159 -0
  52. package/registry/ios-calls-v5.json +99 -0
  53. package/registry/ios-v5.json +152 -0
  54. package/registry/rn-calls-v5.json +99 -0
  55. package/registry/rn-v5.json +169 -0
  56. package/registry/sdk-android-v5.json +93 -0
  57. package/registry/sdk-jsv4.json +93 -0
  58. package/registry/web-calls-v5.json +94 -0
  59. package/registry/web-v7.json +154 -0
  60. package/skills/cometchat/SKILL.md +47 -2096
  61. package/skills/cometchat-a11y/SKILL.md +44 -472
  62. package/skills/cometchat-analytics/SKILL.md +61 -0
  63. package/skills/cometchat-android-v5-calls-sdk/SKILL.md +206 -0
  64. package/skills/cometchat-android-v5-calls-sdk/references/build-truth.md +63 -0
  65. package/skills/cometchat-android-v5-calls-sdk/references/docs-map.md +119 -0
  66. package/skills/cometchat-android-v5-calls-sdk/references/method-map.md +53 -0
  67. package/skills/cometchat-android-v5-calls-sdk/references/pitfalls.md +72 -0
  68. package/skills/cometchat-android-v5-calls-sdk/references/ringing.md +92 -0
  69. package/skills/cometchat-android-v5-calls-sdk/references/user-switch.md +90 -0
  70. package/skills/cometchat-android-v5-sdk/SKILL.md +127 -0
  71. package/skills/cometchat-android-v5-sdk/references/app-surface.md +88 -0
  72. package/skills/cometchat-android-v5-sdk/references/docs-map.md +91 -0
  73. package/skills/cometchat-android-v6-builder-settings/SKILL.md +51 -137
  74. package/skills/cometchat-android-v6-calls/SKILL.md +128 -413
  75. package/skills/cometchat-android-v6-compose-components/SKILL.md +84 -194
  76. package/skills/cometchat-android-v6-compose-customization/SKILL.md +66 -411
  77. package/skills/cometchat-android-v6-compose-placement/SKILL.md +154 -237
  78. package/skills/cometchat-android-v6-core/SKILL.md +236 -672
  79. package/skills/cometchat-android-v6-core/references/anti-patterns.md +31 -0
  80. package/skills/cometchat-android-v6-core/references/component-props.md +168 -0
  81. package/skills/cometchat-android-v6-core/references/docs-map.md +153 -0
  82. package/skills/cometchat-android-v6-core/references/layout.md +112 -0
  83. package/skills/cometchat-android-v6-core/references/lifecycle.md +75 -0
  84. package/skills/cometchat-android-v6-core/references/setup-credentials.md +105 -0
  85. package/skills/cometchat-android-v6-core/references/troubleshooting.md +36 -0
  86. package/skills/cometchat-android-v6-events/SKILL.md +46 -184
  87. package/skills/cometchat-android-v6-extensions/SKILL.md +39 -179
  88. package/skills/cometchat-android-v6-features/SKILL.md +74 -143
  89. package/skills/cometchat-android-v6-kotlin-components/SKILL.md +75 -193
  90. package/skills/cometchat-android-v6-kotlin-customization/SKILL.md +67 -419
  91. package/skills/cometchat-android-v6-kotlin-placement/SKILL.md +77 -223
  92. package/skills/cometchat-android-v6-migration/SKILL.md +67 -378
  93. package/skills/cometchat-android-v6-production/SKILL.md +41 -179
  94. package/skills/cometchat-android-v6-push/SKILL.md +39 -289
  95. package/skills/cometchat-android-v6-testing/SKILL.md +50 -265
  96. package/skills/cometchat-android-v6-troubleshooting/SKILL.md +70 -254
  97. package/skills/cometchat-angular-v5-calls/SKILL.md +193 -0
  98. package/skills/cometchat-angular-v5-components/SKILL.md +131 -0
  99. package/skills/cometchat-angular-v5-components/references/catalog.md +111 -0
  100. package/skills/cometchat-angular-v5-components/references/host-composed.md +46 -0
  101. package/skills/cometchat-angular-v5-core/SKILL.md +300 -0
  102. package/skills/cometchat-angular-v5-core/references/anti-patterns.md +49 -0
  103. package/skills/cometchat-angular-v5-core/references/component-props.md +55 -0
  104. package/skills/cometchat-angular-v5-core/references/dependencies.md +66 -0
  105. package/skills/cometchat-angular-v5-core/references/docs-map.md +132 -0
  106. package/skills/cometchat-angular-v5-core/references/layout.md +64 -0
  107. package/skills/cometchat-angular-v5-core/references/lifecycle.md +202 -0
  108. package/skills/cometchat-angular-v5-core/references/setup-credentials.md +137 -0
  109. package/skills/cometchat-angular-v5-core/references/theming.md +70 -0
  110. package/skills/cometchat-angular-v5-core/references/troubleshooting.md +27 -0
  111. package/skills/cometchat-angular-v5-customization/SKILL.md +94 -0
  112. package/skills/cometchat-angular-v5-features/SKILL.md +107 -0
  113. package/skills/cometchat-angular-v5-features/references/custom-messages.md +133 -0
  114. package/skills/cometchat-angular-v5-features/references/formatters.md +28 -0
  115. package/skills/cometchat-angular-v5-features/references/host-composed-extensions.md +85 -0
  116. package/skills/cometchat-angular-v5-migration/SKILL.md +40 -0
  117. package/skills/cometchat-angular-v5-migration/references/migration-guide.md +165 -0
  118. package/skills/cometchat-angular-v5-patterns/SKILL.md +107 -0
  119. package/skills/cometchat-angular-v5-placement/SKILL.md +133 -0
  120. package/skills/cometchat-angular-v5-placement/references/combined-app.md +174 -0
  121. package/skills/cometchat-angular-v5-placement/references/core-surface.md +199 -0
  122. package/skills/cometchat-angular-v5-production/SKILL.md +102 -0
  123. package/skills/cometchat-angular-v5-push/SKILL.md +61 -0
  124. package/skills/cometchat-angular-v5-testing/SKILL.md +112 -0
  125. package/skills/cometchat-angular-v5-troubleshooting/SKILL.md +96 -0
  126. package/skills/cometchat-audit/SKILL.md +61 -0
  127. package/skills/cometchat-compliance/SKILL.md +63 -0
  128. package/skills/cometchat-flutter-v5-sdk/SKILL.md +188 -0
  129. package/skills/cometchat-flutter-v5-sdk/references/doc-corrections.md +55 -0
  130. package/skills/cometchat-flutter-v5-sdk/references/docs-map.md +211 -0
  131. package/skills/cometchat-flutter-v5-sdk/references/platform-notes.md +48 -0
  132. package/skills/cometchat-flutter-v5-sdk/references/transcription.md +87 -0
  133. package/skills/cometchat-flutter-v6-calls/SKILL.md +75 -389
  134. package/skills/cometchat-flutter-v6-components/SKILL.md +88 -361
  135. package/skills/cometchat-flutter-v6-core/SKILL.md +154 -593
  136. package/skills/cometchat-flutter-v6-core/references/anti-patterns.md +55 -0
  137. package/skills/cometchat-flutter-v6-core/references/docs-map.md +143 -0
  138. package/skills/cometchat-flutter-v6-core/references/layout.md +45 -0
  139. package/skills/cometchat-flutter-v6-core/references/lifecycle.md +87 -0
  140. package/skills/cometchat-flutter-v6-core/references/setup-credentials.md +84 -0
  141. package/skills/cometchat-flutter-v6-core/references/troubleshooting.md +26 -0
  142. package/skills/cometchat-flutter-v6-customization/SKILL.md +70 -712
  143. package/skills/cometchat-flutter-v6-events/SKILL.md +79 -174
  144. package/skills/cometchat-flutter-v6-features/SKILL.md +55 -394
  145. package/skills/cometchat-flutter-v6-migration/SKILL.md +68 -367
  146. package/skills/cometchat-flutter-v6-migration/references/migration-guide.md +132 -0
  147. package/skills/cometchat-flutter-v6-patterns/SKILL.md +61 -0
  148. package/skills/cometchat-flutter-v6-placement/SKILL.md +94 -381
  149. package/skills/cometchat-flutter-v6-production/SKILL.md +59 -615
  150. package/skills/cometchat-flutter-v6-push/SKILL.md +46 -455
  151. package/skills/cometchat-flutter-v6-testing/SKILL.md +68 -299
  152. package/skills/cometchat-flutter-v6-troubleshooting/SKILL.md +54 -878
  153. package/skills/cometchat-i18n/SKILL.md +35 -404
  154. package/skills/cometchat-ios-calls/SKILL.md +112 -563
  155. package/skills/cometchat-ios-components/SKILL.md +44 -834
  156. package/skills/cometchat-ios-core/SKILL.md +182 -1068
  157. package/skills/cometchat-ios-core/references/anti-patterns.md +113 -0
  158. package/skills/cometchat-ios-core/references/docs-map.md +124 -0
  159. package/skills/cometchat-ios-core/references/install.md +23 -0
  160. package/skills/cometchat-ios-core/references/layout.md +219 -0
  161. package/skills/cometchat-ios-core/references/setup-credentials.md +197 -0
  162. package/skills/cometchat-ios-core/references/swiftui.md +91 -0
  163. package/skills/cometchat-ios-core/references/troubleshooting.md +100 -0
  164. package/skills/cometchat-ios-customization/SKILL.md +33 -968
  165. package/skills/cometchat-ios-features/SKILL.md +29 -738
  166. package/skills/cometchat-ios-migration/SKILL.md +39 -0
  167. package/skills/cometchat-ios-placement/SKILL.md +51 -729
  168. package/skills/cometchat-ios-production/SKILL.md +67 -723
  169. package/skills/cometchat-ios-push/SKILL.md +24 -602
  170. package/skills/cometchat-ios-testing/SKILL.md +36 -355
  171. package/skills/cometchat-ios-troubleshooting/SKILL.md +31 -989
  172. package/skills/cometchat-ios-v5-sdk/SKILL.md +161 -0
  173. package/skills/cometchat-ios-v5-sdk/references/docs-map.md +326 -0
  174. package/skills/cometchat-js-v5-sdk/SKILL.md +95 -0
  175. package/skills/cometchat-js-v5-sdk/references/docs-map.md +114 -0
  176. package/skills/cometchat-migrate-from-getstream/SKILL.md +65 -0
  177. package/skills/cometchat-migrate-from-getstream/references/concept-map.md +98 -0
  178. package/skills/cometchat-migrate-from-getstream/references/data-migration.md +74 -0
  179. package/skills/cometchat-migrate-from-getstream/references/feature-map.md +108 -0
  180. package/skills/cometchat-migrate-from-getstream/references/inventory.md +82 -0
  181. package/skills/cometchat-migrate-from-getstream/references/native-build.md +9 -0
  182. package/skills/cometchat-migrate-from-getstream/references/report-template.md +59 -0
  183. package/skills/cometchat-migrate-from-sendbird/SKILL.md +64 -0
  184. package/skills/cometchat-migrate-from-sendbird/references/concept-map.md +99 -0
  185. package/skills/cometchat-migrate-from-sendbird/references/data-migration.md +74 -0
  186. package/skills/cometchat-migrate-from-sendbird/references/feature-map.md +104 -0
  187. package/skills/cometchat-migrate-from-sendbird/references/inventory.md +86 -0
  188. package/skills/cometchat-migrate-from-sendbird/references/native-build.md +10 -0
  189. package/skills/cometchat-migrate-from-sendbird/references/report-template.md +59 -0
  190. package/skills/cometchat-migrate-from-twilio/SKILL.md +52 -0
  191. package/skills/cometchat-migrate-from-twilio/references/concept-map.md +49 -0
  192. package/skills/cometchat-migrate-from-twilio/references/data-migration.md +50 -0
  193. package/skills/cometchat-migrate-from-twilio/references/feature-map.md +27 -0
  194. package/skills/cometchat-migrate-from-twilio/references/inventory.md +53 -0
  195. package/skills/cometchat-migrate-from-twilio/references/report-template.md +52 -0
  196. package/skills/cometchat-moderation/SKILL.md +58 -0
  197. package/skills/cometchat-onboarding/SKILL.md +92 -0
  198. package/skills/cometchat-onboarding/references/archetypes.md +51 -0
  199. package/skills/cometchat-onboarding/references/calling-first.md +77 -0
  200. package/skills/cometchat-onboarding/references/not-in-this-pack.md +8 -0
  201. package/skills/cometchat-onboarding/references/plan-artifact.md +133 -0
  202. package/skills/cometchat-onboarding/references/platforms.md +105 -0
  203. package/skills/cometchat-react-native-bare-patterns/SKILL.md +120 -0
  204. package/skills/cometchat-react-native-calls/SKILL.md +200 -0
  205. package/skills/cometchat-react-native-components/SKILL.md +142 -0
  206. package/skills/cometchat-react-native-core/SKILL.md +335 -0
  207. package/skills/cometchat-react-native-core/references/anti-patterns.md +79 -0
  208. package/skills/cometchat-react-native-core/references/component-props.md +105 -0
  209. package/skills/cometchat-react-native-core/references/dependencies.md +62 -0
  210. package/skills/cometchat-react-native-core/references/docs-map.md +127 -0
  211. package/skills/cometchat-react-native-core/references/layout.md +61 -0
  212. package/skills/cometchat-react-native-core/references/lifecycle.md +64 -0
  213. package/skills/cometchat-react-native-core/references/setup-credentials.md +39 -0
  214. package/skills/cometchat-react-native-customization/SKILL.md +198 -0
  215. package/skills/cometchat-react-native-expo-patterns/SKILL.md +116 -0
  216. package/skills/cometchat-react-native-features/SKILL.md +122 -0
  217. package/skills/cometchat-react-native-migration/SKILL.md +103 -0
  218. package/skills/cometchat-react-native-placement/SKILL.md +158 -0
  219. package/skills/cometchat-react-native-production/SKILL.md +79 -0
  220. package/skills/cometchat-react-native-push/SKILL.md +88 -0
  221. package/skills/cometchat-react-native-sdk/SKILL.md +133 -0
  222. package/skills/cometchat-react-native-sdk/references/method-map.md +239 -0
  223. package/skills/cometchat-react-native-sdk/references/page-map.md +96 -0
  224. package/skills/cometchat-react-native-testing/SKILL.md +94 -0
  225. package/skills/cometchat-react-native-troubleshooting/SKILL.md +174 -0
  226. package/skills/cometchat-react-native-v5-sdk/SKILL.md +150 -0
  227. package/skills/cometchat-react-native-v5-sdk/references/docs-map.md +127 -0
  228. package/skills/cometchat-react-native-v5-sdk/references/ringing-voip.md +369 -0
  229. package/skills/cometchat-react-v7-calls/SKILL.md +75 -0
  230. package/skills/cometchat-react-v7-components/SKILL.md +72 -0
  231. package/skills/cometchat-react-v7-core/SKILL.md +101 -0
  232. package/skills/cometchat-react-v7-core/references/anti-patterns.md +19 -0
  233. package/skills/cometchat-react-v7-core/references/component-props.md +82 -0
  234. package/skills/cometchat-react-v7-core/references/dependencies.md +23 -0
  235. package/skills/cometchat-react-v7-core/references/docs-map.md +117 -0
  236. package/skills/cometchat-react-v7-core/references/layout.md +150 -0
  237. package/skills/cometchat-react-v7-core/references/lifecycle.md +74 -0
  238. package/skills/cometchat-react-v7-core/references/setup-credentials.md +58 -0
  239. package/skills/cometchat-react-v7-core/references/ssr.md +11 -0
  240. package/skills/cometchat-react-v7-core/references/theming.md +52 -0
  241. package/skills/cometchat-react-v7-customization/SKILL.md +84 -0
  242. package/skills/cometchat-react-v7-features/SKILL.md +92 -0
  243. package/skills/cometchat-react-v7-migration/SKILL.md +39 -0
  244. package/skills/cometchat-react-v7-migration/references/migration-guide.md +119 -0
  245. package/skills/cometchat-react-v7-patterns/SKILL.md +43 -0
  246. package/skills/cometchat-react-v7-placement/SKILL.md +106 -0
  247. package/skills/cometchat-react-v7-placement/references/recipes.md +354 -0
  248. package/skills/cometchat-react-v7-production/SKILL.md +84 -0
  249. package/skills/cometchat-react-v7-push/SKILL.md +53 -0
  250. package/skills/cometchat-react-v7-testing/SKILL.md +60 -0
  251. package/skills/cometchat-react-v7-troubleshooting/SKILL.md +47 -0
  252. package/skills/cometchat-security/SKILL.md +80 -0
  253. package/skills/cometchat-self-host/SKILL.md +56 -0
  254. package/test-suite/README.md +70 -0
  255. package/test-suite/catalogs/android-calls-v5.json +830 -0
  256. package/test-suite/catalogs/android-calls-v5.symbols.txt +499 -0
  257. package/test-suite/catalogs/android-v6.json +1646 -0
  258. package/test-suite/catalogs/android-v6.symbols.txt +298 -0
  259. package/test-suite/catalogs/angular-v5.json +7587 -0
  260. package/test-suite/catalogs/flutter-calls-v5.json +196 -0
  261. package/test-suite/catalogs/flutter-calls-v5.symbols.txt +59 -0
  262. package/test-suite/catalogs/flutter-v6.json +651 -0
  263. package/test-suite/catalogs/ios-calls-v5.json +158 -0
  264. package/test-suite/catalogs/ios-calls-v5.symbols.txt +70 -0
  265. package/test-suite/catalogs/ios-v5.json +1383 -0
  266. package/test-suite/catalogs/ios-v5.symbols.txt +699 -0
  267. package/test-suite/catalogs/rn-calls-v5.json +134 -0
  268. package/test-suite/catalogs/rn-sdk-v4.json +672 -0
  269. package/test-suite/catalogs/rn-v5.json +449 -0
  270. package/test-suite/catalogs/sdk-android-v5.json +514 -0
  271. package/test-suite/catalogs/sdk-android-v5.symbols.txt +254 -0
  272. package/test-suite/catalogs/sdk-jsv4.json +800 -0
  273. package/test-suite/catalogs/web-calls-v5.json +195 -0
  274. package/test-suite/catalogs/web-v7.json +1243 -0
  275. package/test-suite/scripts/build-registry.mjs +113 -0
  276. package/test-suite/scripts/catalog-refresh-dart.mjs +151 -0
  277. package/test-suite/scripts/catalog-refresh.mjs +100 -0
  278. package/test-suite/scripts/lint-skills.mjs +932 -0
  279. package/test-suite/scripts/measure-tokens.mjs +169 -0
  280. package/test-suite/scripts/typecheck-fences-dart.mjs +437 -0
  281. package/test-suite/scripts/typecheck-fences-kotlin.mjs +269 -0
  282. package/test-suite/scripts/typecheck-fences.mjs +206 -0
  283. package/test-suite/scripts/verify-catalog.mjs +242 -0
  284. package/test-suite/scripts/verify-contract-fences.mjs +94 -0
  285. package/test-suite/scripts/verify-detection.mjs +178 -0
  286. package/test-suite/scripts/verify-docs-base.mjs +91 -0
  287. package/test-suite/scripts/verify-family-agnostic.mjs +134 -0
  288. package/test-suite/scripts/verify-golden-path.mjs +138 -0
  289. package/test-suite/scripts/verify-oracle-components.mjs +133 -0
  290. package/test-suite/scripts/verify-template-bindings.mjs +148 -0
  291. package/test-suite/typecheck/angular-v5/package.json +21 -0
  292. package/test-suite/typecheck/angular-v5/tsconfig.json +21 -0
  293. package/test-suite/typecheck/flutter-v6/analysis_options.yaml +25 -0
  294. package/test-suite/typecheck/flutter-v6/pubspec.yaml +21 -0
  295. package/test-suite/typecheck/web-v7/package.json +18 -0
  296. package/test-suite/typecheck/web-v7/tsconfig.json +19 -0
  297. package/bin/install.js +0 -1003
  298. package/skills/.claude-plugin/marketplace.json +0 -86
  299. package/skills/cometchat/references/asking-questions.md +0 -48
  300. package/skills/cometchat-android-v5/SKILL.md +0 -121
  301. package/skills/cometchat-android-v5-calls/SKILL.md +0 -429
  302. package/skills/cometchat-android-v5-calls/references/README.md +0 -53
  303. package/skills/cometchat-android-v5-calls/references/add-calls-to-existing-chat.md +0 -197
  304. package/skills/cometchat-android-v5-calls/references/audio-controls.md +0 -91
  305. package/skills/cometchat-android-v5-calls/references/background-handling.md +0 -168
  306. package/skills/cometchat-android-v5-calls/references/call-layouts.md +0 -131
  307. package/skills/cometchat-android-v5-calls/references/call-logs.md +0 -113
  308. package/skills/cometchat-android-v5-calls/references/call-session.md +0 -274
  309. package/skills/cometchat-android-v5-calls/references/custom-ui.md +0 -150
  310. package/skills/cometchat-android-v5-calls/references/event-listeners.md +0 -123
  311. package/skills/cometchat-android-v5-calls/references/group-calls.md +0 -205
  312. package/skills/cometchat-android-v5-calls/references/idle-timeout.md +0 -117
  313. package/skills/cometchat-android-v5-calls/references/in-call-chat.md +0 -134
  314. package/skills/cometchat-android-v5-calls/references/join-session.md +0 -120
  315. package/skills/cometchat-android-v5-calls/references/migration-v4-to-v5.md +0 -222
  316. package/skills/cometchat-android-v5-calls/references/participant-management.md +0 -110
  317. package/skills/cometchat-android-v5-calls/references/picture-in-picture.md +0 -106
  318. package/skills/cometchat-android-v5-calls/references/raise-hand.md +0 -248
  319. package/skills/cometchat-android-v5-calls/references/recording.md +0 -101
  320. package/skills/cometchat-android-v5-calls/references/ringing-integration.md +0 -152
  321. package/skills/cometchat-android-v5-calls/references/screen-sharing.md +0 -78
  322. package/skills/cometchat-android-v5-calls/references/server-fcm-voip.md +0 -215
  323. package/skills/cometchat-android-v5-calls/references/session-settings.md +0 -121
  324. package/skills/cometchat-android-v5-calls/references/setup.md +0 -137
  325. package/skills/cometchat-android-v5-calls/references/share-invite.md +0 -156
  326. package/skills/cometchat-android-v5-calls/references/video-controls.md +0 -87
  327. package/skills/cometchat-android-v5-calls/references/voip-calling.md +0 -526
  328. package/skills/cometchat-android-v5-components/SKILL.md +0 -431
  329. package/skills/cometchat-android-v5-core/SKILL.md +0 -486
  330. package/skills/cometchat-android-v5-customization/SKILL.md +0 -469
  331. package/skills/cometchat-android-v5-extensions/SKILL.md +0 -127
  332. package/skills/cometchat-android-v5-features/SKILL.md +0 -131
  333. package/skills/cometchat-android-v5-placement/SKILL.md +0 -277
  334. package/skills/cometchat-android-v5-production/SKILL.md +0 -95
  335. package/skills/cometchat-android-v5-push/SKILL.md +0 -619
  336. package/skills/cometchat-android-v5-testing/SKILL.md +0 -188
  337. package/skills/cometchat-android-v5-theming/SKILL.md +0 -167
  338. package/skills/cometchat-android-v5-troubleshooting/SKILL.md +0 -74
  339. package/skills/cometchat-android-v6/SKILL.md +0 -108
  340. package/skills/cometchat-android-v6-calls/references/add-calls-to-existing-chat.md +0 -97
  341. package/skills/cometchat-android-v6-calls/references/advanced-features.md +0 -87
  342. package/skills/cometchat-android-v6-calls/references/call-layouts.md +0 -100
  343. package/skills/cometchat-android-v6-calls/references/call-session.md +0 -163
  344. package/skills/cometchat-android-v6-calls/references/device-management.md +0 -172
  345. package/skills/cometchat-android-v6-calls/references/group-calls.md +0 -191
  346. package/skills/cometchat-android-v6-calls/references/idle-timeout.md +0 -110
  347. package/skills/cometchat-android-v6-calls/references/in-call-chat.md +0 -141
  348. package/skills/cometchat-android-v6-calls/references/raise-hand.md +0 -188
  349. package/skills/cometchat-android-v6-calls/references/ringing-integration.md +0 -176
  350. package/skills/cometchat-android-v6-calls/references/server-fcm-voip.md +0 -127
  351. package/skills/cometchat-android-v6-calls/references/share-invite.md +0 -105
  352. package/skills/cometchat-android-v6-compose-theming/SKILL.md +0 -250
  353. package/skills/cometchat-android-v6-kotlin-theming/SKILL.md +0 -233
  354. package/skills/cometchat-angular-calls/SKILL.md +0 -380
  355. package/skills/cometchat-angular-calls/references/add-calls-to-existing-chat.md +0 -96
  356. package/skills/cometchat-angular-calls/references/call-layouts.md +0 -123
  357. package/skills/cometchat-angular-calls/references/call-session.md +0 -167
  358. package/skills/cometchat-angular-calls/references/custom-ui.md +0 -239
  359. package/skills/cometchat-angular-calls/references/device-management.md +0 -154
  360. package/skills/cometchat-angular-calls/references/group-calls.md +0 -433
  361. package/skills/cometchat-angular-calls/references/idle-timeout.md +0 -161
  362. package/skills/cometchat-angular-calls/references/in-call-chat.md +0 -148
  363. package/skills/cometchat-angular-calls/references/lazy-loading-pitfalls.md +0 -205
  364. package/skills/cometchat-angular-calls/references/migration-v4-to-v5.md +0 -53
  365. package/skills/cometchat-angular-calls/references/ngzone-and-async-callbacks.md +0 -184
  366. package/skills/cometchat-angular-calls/references/picture-in-picture.md +0 -285
  367. package/skills/cometchat-angular-calls/references/raise-hand.md +0 -172
  368. package/skills/cometchat-angular-calls/references/recording-screen-share.md +0 -260
  369. package/skills/cometchat-angular-calls/references/ringing-integration.md +0 -133
  370. package/skills/cometchat-angular-calls/references/server-web-push-vapid.md +0 -100
  371. package/skills/cometchat-angular-calls/references/share-invite.md +0 -122
  372. package/skills/cometchat-angular-calls/references/virtual-background.md +0 -29
  373. package/skills/cometchat-angular-components/SKILL.md +0 -235
  374. package/skills/cometchat-angular-core/SKILL.md +0 -386
  375. package/skills/cometchat-angular-customization/SKILL.md +0 -616
  376. package/skills/cometchat-angular-features/SKILL.md +0 -329
  377. package/skills/cometchat-angular-patterns/SKILL.md +0 -256
  378. package/skills/cometchat-angular-placement/SKILL.md +0 -314
  379. package/skills/cometchat-angular-production/SKILL.md +0 -564
  380. package/skills/cometchat-angular-push/SKILL.md +0 -389
  381. package/skills/cometchat-angular-testing/SKILL.md +0 -605
  382. package/skills/cometchat-angular-theming/SKILL.md +0 -290
  383. package/skills/cometchat-angular-troubleshooting/SKILL.md +0 -364
  384. package/skills/cometchat-astro-patterns/SKILL.md +0 -708
  385. package/skills/cometchat-calls/SKILL.md +0 -364
  386. package/skills/cometchat-calls/references/use-case-broadcast.md +0 -199
  387. package/skills/cometchat-calls/references/use-case-marketplace.md +0 -157
  388. package/skills/cometchat-calls/references/use-case-support.md +0 -189
  389. package/skills/cometchat-calls/references/use-case-team.md +0 -180
  390. package/skills/cometchat-calls/references/use-case-telehealth.md +0 -153
  391. package/skills/cometchat-components/SKILL.md +0 -1142
  392. package/skills/cometchat-core/SKILL.md +0 -1048
  393. package/skills/cometchat-customization/SKILL.md +0 -580
  394. package/skills/cometchat-customization/references/component-catalog.md +0 -236
  395. package/skills/cometchat-features/SKILL.md +0 -861
  396. package/skills/cometchat-flutter-v5/SKILL.md +0 -173
  397. package/skills/cometchat-flutter-v5-calls/SKILL.md +0 -455
  398. package/skills/cometchat-flutter-v5-calls/references/add-calls-to-existing-chat.md +0 -193
  399. package/skills/cometchat-flutter-v5-calls/references/call-layouts.md +0 -103
  400. package/skills/cometchat-flutter-v5-calls/references/call-session.md +0 -285
  401. package/skills/cometchat-flutter-v5-calls/references/device-management.md +0 -124
  402. package/skills/cometchat-flutter-v5-calls/references/group-calls.md +0 -181
  403. package/skills/cometchat-flutter-v5-calls/references/idle-timeout.md +0 -99
  404. package/skills/cometchat-flutter-v5-calls/references/in-call-chat.md +0 -135
  405. package/skills/cometchat-flutter-v5-calls/references/migration-v4-to-v5.md +0 -210
  406. package/skills/cometchat-flutter-v5-calls/references/raise-hand.md +0 -255
  407. package/skills/cometchat-flutter-v5-calls/references/ringing-integration.md +0 -196
  408. package/skills/cometchat-flutter-v5-calls/references/server-push-bridge.md +0 -101
  409. package/skills/cometchat-flutter-v5-calls/references/share-invite.md +0 -148
  410. package/skills/cometchat-flutter-v5-conversations/SKILL.md +0 -118
  411. package/skills/cometchat-flutter-v5-core/SKILL.md +0 -239
  412. package/skills/cometchat-flutter-v5-customization/SKILL.md +0 -358
  413. package/skills/cometchat-flutter-v5-events/SKILL.md +0 -156
  414. package/skills/cometchat-flutter-v5-messages/SKILL.md +0 -259
  415. package/skills/cometchat-flutter-v5-production/SKILL.md +0 -216
  416. package/skills/cometchat-flutter-v5-push/SKILL.md +0 -285
  417. package/skills/cometchat-flutter-v5-testing/SKILL.md +0 -401
  418. package/skills/cometchat-flutter-v5-theming/SKILL.md +0 -161
  419. package/skills/cometchat-flutter-v5-troubleshooting/SKILL.md +0 -130
  420. package/skills/cometchat-flutter-v5-users-groups/SKILL.md +0 -152
  421. package/skills/cometchat-flutter-v6/SKILL.md +0 -446
  422. package/skills/cometchat-flutter-v6-calls/references/add-calls-to-existing-chat.md +0 -136
  423. package/skills/cometchat-flutter-v6-calls/references/advanced-features.md +0 -89
  424. package/skills/cometchat-flutter-v6-calls/references/call-layouts.md +0 -105
  425. package/skills/cometchat-flutter-v6-calls/references/call-session.md +0 -229
  426. package/skills/cometchat-flutter-v6-calls/references/device-management.md +0 -105
  427. package/skills/cometchat-flutter-v6-calls/references/group-calls.md +0 -190
  428. package/skills/cometchat-flutter-v6-calls/references/idle-timeout.md +0 -88
  429. package/skills/cometchat-flutter-v6-calls/references/in-call-chat.md +0 -125
  430. package/skills/cometchat-flutter-v6-calls/references/raise-hand.md +0 -275
  431. package/skills/cometchat-flutter-v6-calls/references/ringing-integration.md +0 -171
  432. package/skills/cometchat-flutter-v6-calls/references/server-push-bridge.md +0 -93
  433. package/skills/cometchat-flutter-v6-calls/references/share-invite.md +0 -102
  434. package/skills/cometchat-flutter-v6-conversations/SKILL.md +0 -238
  435. package/skills/cometchat-flutter-v6-messages/SKILL.md +0 -384
  436. package/skills/cometchat-flutter-v6-theming/SKILL.md +0 -293
  437. package/skills/cometchat-flutter-v6-users-groups/SKILL.md +0 -224
  438. package/skills/cometchat-ios/SKILL.md +0 -325
  439. package/skills/cometchat-ios-calls/references/add-calls-to-existing-chat.md +0 -181
  440. package/skills/cometchat-ios-calls/references/audio-modes-and-controls.md +0 -45
  441. package/skills/cometchat-ios-calls/references/avaudiosession-routing.md +0 -188
  442. package/skills/cometchat-ios-calls/references/call-layouts.md +0 -76
  443. package/skills/cometchat-ios-calls/references/call-session.md +0 -218
  444. package/skills/cometchat-ios-calls/references/callkit-and-pushkit.md +0 -357
  445. package/skills/cometchat-ios-calls/references/custom-ui.md +0 -322
  446. package/skills/cometchat-ios-calls/references/device-management.md +0 -171
  447. package/skills/cometchat-ios-calls/references/group-calls.md +0 -359
  448. package/skills/cometchat-ios-calls/references/idle-timeout.md +0 -184
  449. package/skills/cometchat-ios-calls/references/in-call-chat.md +0 -179
  450. package/skills/cometchat-ios-calls/references/migration-v4-to-v5.md +0 -196
  451. package/skills/cometchat-ios-calls/references/picture-in-picture.md +0 -246
  452. package/skills/cometchat-ios-calls/references/raise-hand.md +0 -26
  453. package/skills/cometchat-ios-calls/references/recording-screen-share.md +0 -252
  454. package/skills/cometchat-ios-calls/references/ringing-integration.md +0 -143
  455. package/skills/cometchat-ios-calls/references/server-apns-pushkit.md +0 -267
  456. package/skills/cometchat-ios-calls/references/share-invite.md +0 -148
  457. package/skills/cometchat-ios-calls/references/swiftui-uikit-hosting.md +0 -246
  458. package/skills/cometchat-ios-calls/references/voip-cert-setup.md +0 -166
  459. package/skills/cometchat-ios-theming/SKILL.md +0 -667
  460. package/skills/cometchat-native-bare-patterns/SKILL.md +0 -550
  461. package/skills/cometchat-native-calls/SKILL.md +0 -671
  462. package/skills/cometchat-native-calls/references/add-calls-to-existing-chat.md +0 -203
  463. package/skills/cometchat-native-calls/references/call-layouts.md +0 -125
  464. package/skills/cometchat-native-calls/references/call-session.md +0 -182
  465. package/skills/cometchat-native-calls/references/custom-ui.md +0 -254
  466. package/skills/cometchat-native-calls/references/device-management.md +0 -158
  467. package/skills/cometchat-native-calls/references/expo-vs-bare.md +0 -179
  468. package/skills/cometchat-native-calls/references/group-calls.md +0 -296
  469. package/skills/cometchat-native-calls/references/idle-timeout.md +0 -128
  470. package/skills/cometchat-native-calls/references/in-call-chat.md +0 -145
  471. package/skills/cometchat-native-calls/references/migration-v4-to-v5.md +0 -72
  472. package/skills/cometchat-native-calls/references/picture-in-picture.md +0 -276
  473. package/skills/cometchat-native-calls/references/raise-hand.md +0 -205
  474. package/skills/cometchat-native-calls/references/recording-screen-share.md +0 -169
  475. package/skills/cometchat-native-calls/references/ringing-integration.md +0 -118
  476. package/skills/cometchat-native-calls/references/server-push-bridge.md +0 -135
  477. package/skills/cometchat-native-calls/references/server-push-payloads.md +0 -193
  478. package/skills/cometchat-native-calls/references/share-invite.md +0 -146
  479. package/skills/cometchat-native-calls/references/voip-push-end-to-end.md +0 -319
  480. package/skills/cometchat-native-components/SKILL.md +0 -628
  481. package/skills/cometchat-native-core/SKILL.md +0 -679
  482. package/skills/cometchat-native-customization/SKILL.md +0 -716
  483. package/skills/cometchat-native-expo-patterns/SKILL.md +0 -552
  484. package/skills/cometchat-native-features/SKILL.md +0 -638
  485. package/skills/cometchat-native-placement/SKILL.md +0 -509
  486. package/skills/cometchat-native-production/SKILL.md +0 -700
  487. package/skills/cometchat-native-push/SKILL.md +0 -594
  488. package/skills/cometchat-native-testing/SKILL.md +0 -582
  489. package/skills/cometchat-native-theming/SKILL.md +0 -681
  490. package/skills/cometchat-native-troubleshooting/SKILL.md +0 -501
  491. package/skills/cometchat-nextjs-patterns/SKILL.md +0 -899
  492. package/skills/cometchat-placement/SKILL.md +0 -1360
  493. package/skills/cometchat-production/SKILL.md +0 -1027
  494. package/skills/cometchat-react-calls/SKILL.md +0 -752
  495. package/skills/cometchat-react-calls/references/add-calls-to-existing-chat.md +0 -146
  496. package/skills/cometchat-react-calls/references/call-layouts.md +0 -160
  497. package/skills/cometchat-react-calls/references/call-session.md +0 -235
  498. package/skills/cometchat-react-calls/references/custom-ui.md +0 -247
  499. package/skills/cometchat-react-calls/references/device-management.md +0 -210
  500. package/skills/cometchat-react-calls/references/group-calls.md +0 -257
  501. package/skills/cometchat-react-calls/references/idle-timeout.md +0 -188
  502. package/skills/cometchat-react-calls/references/in-call-chat.md +0 -212
  503. package/skills/cometchat-react-calls/references/migration-v4-to-v5.md +0 -170
  504. package/skills/cometchat-react-calls/references/picture-in-picture.md +0 -245
  505. package/skills/cometchat-react-calls/references/raise-hand.md +0 -238
  506. package/skills/cometchat-react-calls/references/recording-screen-share.md +0 -144
  507. package/skills/cometchat-react-calls/references/ringing-integration.md +0 -255
  508. package/skills/cometchat-react-calls/references/server-web-push-vapid.md +0 -241
  509. package/skills/cometchat-react-calls/references/share-invite.md +0 -175
  510. package/skills/cometchat-react-calls/references/testing-calls-on-web.md +0 -216
  511. package/skills/cometchat-react-calls/references/virtual-background.md +0 -32
  512. package/skills/cometchat-react-calls/references/voip-and-web-push.md +0 -165
  513. package/skills/cometchat-react-patterns/SKILL.md +0 -628
  514. package/skills/cometchat-react-push/SKILL.md +0 -634
  515. package/skills/cometchat-react-router-patterns/SKILL.md +0 -758
  516. package/skills/cometchat-react-testing/SKILL.md +0 -413
  517. package/skills/cometchat-theming/SKILL.md +0 -498
  518. package/skills/cometchat-troubleshooting/SKILL.md +0 -294
@@ -1,296 +0,0 @@
1
- # Group calls (meetings) on React Native
2
-
3
- 1:1 calls are most of what apps need. Group calls — multi-party meetings with 3-N participants — have a different set of failure modes: capacity limits, network bandwidth scaling, active-speaker UI, roster management, moderation (mute-all, kick), and capacity warnings. This reference covers them.
4
-
5
- The Calls SDK supports group calls natively; the kit's `CometChatOngoingCall` component handles up to ~10 participants well. Beyond that, custom UI (`references/custom-ui.md`) becomes necessary.
6
-
7
- ---
8
-
9
- ## Signaling architecture — meeting-message broadcast, NOT call ringing
10
-
11
- **Critical to read first.** Group calls do NOT use the Ringing channel (`CometChat.initiateCall` → `onIncomingCallReceived`). That channel is **1:1 user calls only**. The kit broadcasts a **custom message of type `"meeting"`** to the group; receivers see a "Join meeting" card in their `<CometChatMessageList />` (kit) or need an explicit `onCustomMessageReceived` listener (custom UI).
12
-
13
- Confirmed against kit source 2026-05-15: `node_modules/@cometchat/chat-uikit-react-native/src/calls/CometChatCallButtons/CometChatCallButtons.tsx:138-201`.
14
-
15
- ```
16
- Caller (uid-A, member of group-X) CometChat Receivers (members of group-X)
17
- │ │ │
18
- │ <CometChatCallButtons group={x}> │ │
19
- │ → CometChatUIKit.sendCustomMessage( │ │
20
- │ CustomMessage(GUID, GROUP, │ │
21
- │ "meeting", │ │
22
- │ { callType, sessionId })) │ │
23
- ├─────────────────────────────────────────>│ │
24
- │ │ onCustomMessageReceived │
25
- │ ├─────────────────────────────>│ (each receiver's
26
- │ │ │ MessageListener)
27
- │ │ │
28
- │ caller mounts <CometChatOngoingCall │ receiver taps "Join" │
29
- │ sessionID={GUID} /> │ → joinSession(GUID) │
30
- │ │ <─────────────────────────── │
31
- │ ───── WebRTC session active (sessionId = group GUID) ───── │
32
- ```
33
-
34
- | Channel | 1:1 user calls | Group calls |
35
- |---|---|---|
36
- | Signaling API | `CometChat.initiateCall(call)` | `CometChat.sendCustomMessage(meetingMessage)` |
37
- | Receiver event | `CallListener.onIncomingCallReceived` | `MessageListener.onCustomMessageReceived` (category=CATEGORY_CUSTOM + type="meeting") |
38
- | Session ID | server-generated unique per call | the group's GUID (persistent) |
39
- | Ring/decline | yes — `acceptCall` / `rejectCall` | no — receivers join or ignore |
40
- | Auto-cancel timeout | yes (45s default) | no — meeting persists in chat history |
41
-
42
- **Implication for custom-UI receivers:** if your app doesn't render `<CometChatMessageList group={g}>` (the kit auto-renders meeting cards there), you must register your OWN `MessageListener`:
43
-
44
- ```ts
45
- import { CometChat } from "@cometchat/chat-sdk-react-native";
46
-
47
- CometChat.addMessageListener(
48
- "APP_ROOT_GROUP_MEETING_LISTENER",
49
- new CometChat.MessageListener({
50
- onCustomMessageReceived: (msg: CometChat.CustomMessage) => {
51
- if (msg.getCategory() !== CometChat.CATEGORY_CUSTOM) return;
52
- if (msg.getType() !== "meeting") return;
53
- const customData = msg.getCustomData() as { callType?: "audio" | "video"; sessionId?: string };
54
- const sessionId = customData.sessionId ?? msg.getReceiverId();
55
- const callType = customData.callType ?? "video";
56
- // Show YOUR custom incoming-meeting UI (toast, badge, or full screen)
57
- },
58
- }),
59
- );
60
- ```
61
-
62
- **Implication for the `<CometChatIncomingCall />` overlay:** it does NOT fire for group meetings. It only listens on the 1:1 call channel. Custom UI for "incoming group meeting" must be built on top of `onCustomMessageReceived`.
63
-
64
- This semantic surfaced on 2026-05-15 when Pixel 3 (kit-based RN) → Angular (custom UI) was tested; Angular received nothing because it only registered `addCallListener`. By design, not a bug.
65
-
66
- ---
67
-
68
- ## Initiating a group call
69
-
70
- Group calls are tied to a CometChat group — the SDK uses the group's GUID as the session ID:
71
-
72
- ```ts
73
- import { CometChat } from "@cometchat/chat-sdk-react-native";
74
-
75
- const group = await CometChat.getGroup(guid);
76
-
77
- // initiate a video call to the group
78
- const call = new CometChat.Call(group.getGuid(), CometChat.CALL_TYPE.VIDEO, CometChat.RECEIVER_TYPE.GROUP);
79
- const initiated = await CometChat.initiateCall(call);
80
-
81
- // All currently-online group members receive an incoming-call notification
82
- ```
83
-
84
- Different from 1:1: the receiver is the GROUP, not a single user. Anyone in the group can join via `acceptCall` until the call ends.
85
-
86
- ---
87
-
88
- ## Capacity limits
89
-
90
- CometChat plan-driven. Common ceilings:
91
-
92
- | Plan | Max participants per call |
93
- |---|---|
94
- | Free | 5 |
95
- | Developer | 10 |
96
- | Production | 25 |
97
- | Enterprise | configurable up to 100 |
98
-
99
- The SDK doesn't reject calls at capacity — it just stops admitting new joiners. In v5, observe the roster via `addEventListener('onParticipantListChanged', ...)` (returns the full list, not a delta — clone `skills/event-listeners`) and surface the ceiling to the user:
100
-
101
- ```ts
102
- const MAX_PARTICIPANTS = 25; // your plan's ceiling
103
- const off = CometChatCalls.addEventListener(
104
- "onParticipantListChanged",
105
- (participants: Array<{ uid: string; name: string }>) => {
106
- if (participants.length >= MAX_PARTICIPANTS) {
107
- Alert.alert("Call is full", "This meeting has reached its participant limit.");
108
- }
109
- },
110
- );
111
- // cleanup: off();
112
- ```
113
-
114
- ---
115
-
116
- ## Roster — who's in the call
117
-
118
- ```ts
119
- // v5: addEventListener('onParticipantListChanged', ...) — the v4 OngoingCallListener.onUserListUpdated
120
- // is deprecated (clone skills/event-listeners + skills/migration-v4-to-v5 mapping).
121
- const off = CometChatCalls.addEventListener(
122
- "onParticipantListChanged",
123
- (users: Array<{ uid: string; name: string; avatar?: string }>) => {
124
- // Re-render the participant strip
125
- setParticipants(users);
126
- },
127
- );
128
- // cleanup: off();
129
- ```
130
-
131
- Fires whenever a participant joins or leaves. The roster includes the local user — filter them out of the "remote participants" UI:
132
-
133
- ```ts
134
- const localUid = CometChat.getLoggedinUser()?.getUid();
135
- const remoteParticipants = users.filter((u) => u.uid !== localUid);
136
- ```
137
-
138
- ---
139
-
140
- ## Active speaker detection
141
-
142
- The SDK fires `onDominantSpeakerChanged` when the dominant audio source changes (there is no `onActiveSpeakerUpdated` event). Prefer `addEventListener` (returns an unsubscribe fn); `OngoingCallListener` is the @deprecated v4 path:
143
-
144
- ```ts
145
- const off = CometChatCalls.addEventListener("onDominantSpeakerChanged", (uid: string) => {
146
- setActiveSpeakerUid(uid);
147
- });
148
- // cleanup: off();
149
- ```
150
-
151
- Use this to drive a "spotlight" layout — large tile for the active speaker, small thumbnails for the rest:
152
-
153
- ```tsx
154
- function SpotlightLayout({ participants, activeSpeakerUid }: Props) {
155
- const speaker = participants.find((p) => p.uid === activeSpeakerUid) ?? participants[0];
156
- const others = participants.filter((p) => p.uid !== speaker?.uid);
157
-
158
- return (
159
- <View style={styles.spotlight}>
160
- <ParticipantTile participant={speaker} large />
161
- <ScrollView horizontal>
162
- {others.map((p) => (
163
- <ParticipantTile key={p.uid} participant={p} small />
164
- ))}
165
- </ScrollView>
166
- </View>
167
- );
168
- }
169
- ```
170
-
171
- **Throttle re-layout** — `onDominantSpeakerChanged` can fire multiple times per second in a noisy room. Debounce the layout swap to ~500ms minimum, otherwise tiles jitter.
172
-
173
- ---
174
-
175
- ## Mute-all / kick / raise hand — moderator actions
176
-
177
- These require the local user to be a group **owner** or **moderator** (CometChat group scopes):
178
-
179
- ```ts
180
- import { CometChatCalls } from "@cometchat/calls-sdk-react-native";
181
-
182
- // Mute a specific participant. The method is muteParticipant(participantId) — synchronous,
183
- // returns void. There is NO muteUser()/removeUser() on the RN SDK.
184
- function muteParticipant(participantId: string) {
185
- CometChatCalls.muteParticipant(participantId);
186
- }
187
-
188
- // Mute everyone except local user
189
- function muteAll() {
190
- for (const p of participants) {
191
- if (p.uid === localUid) continue;
192
- CometChatCalls.muteParticipant(p.uid);
193
- }
194
- }
195
-
196
- // NOTE: there is NO "kick / remove participant" API on the RN Calls SDK.
197
- // Removal must be done via the Chat SDK group management (e.g. CometChat.kickGroupMember),
198
- // which removes them from the group — not a per-call eject.
199
-
200
- // Local user "raises hand" — signals to moderator (synchronous, returns void)
201
- function raiseHand() {
202
- CometChatCalls.raiseHand();
203
- }
204
- ```
205
-
206
- **Permission check** — call these only if the local user has moderator scope:
207
-
208
- ```ts
209
- const localScope = group.getScope(); // "admin" | "moderator" | "participant"
210
- const canModerate = localScope === "admin" || localScope === "moderator";
211
- ```
212
-
213
- Don't render mute-all/kick buttons for non-moderators.
214
-
215
- ---
216
-
217
- ## Bandwidth scaling — quality vs participant count
218
-
219
- WebRTC mesh topology (every peer connects to every other peer) doesn't scale. CometChat uses an SFU (Selective Forwarding Unit) for group calls — your client uploads one stream, downloads N streams.
220
-
221
- Practical bandwidth (per local user, video on):
222
-
223
- | Participants | Upload | Download |
224
- |---|---|---|
225
- | 2 | 1 Mbps | 1 Mbps |
226
- | 5 | 1 Mbps | 5 Mbps |
227
- | 10 | 1 Mbps | 10 Mbps |
228
- | 25 | 1 Mbps | 25 Mbps |
229
-
230
- Mobile networks struggle past 10. The skill recommends:
231
-
232
- - Cap default participant count at 10 for mobile-only audiences
233
- - Auto-disable video for participants beyond the spotlight + 4 most-recent speakers (custom UI)
234
- - Switch to audio-only mode if the device's battery drops below 20% (`expo-battery` or custom native module)
235
-
236
- ```ts
237
- // auto-downgrade to audio-only on low battery
238
- import * as Battery from "expo-battery";
239
-
240
- const level = await Battery.getBatteryLevelAsync();
241
- if (level < 0.2) {
242
- CometChatCalls.pauseVideo(); // no-arg; resumeVideo() to resume (synchronous, returns void)
243
- Alert.alert("Battery saver", "Video paused to save battery.");
244
- }
245
- ```
246
-
247
- ---
248
-
249
- ## Joining a group call already in progress
250
-
251
- If User A starts the call and the group has 5 members, the other 4 receive an incoming-call notification. But what about User B who logs in DURING the call?
252
-
253
- The CometChat backend stores active call state. A joining user can query:
254
-
255
- ```ts
256
- const ongoing = await CometChat.getActiveCall();
257
- if (ongoing && ongoing.getReceiverType() === CometChat.RECEIVER_TYPE.GROUP) {
258
- // Show "Join meeting" button — call is in progress
259
- }
260
- ```
261
-
262
- Use this to render a "Join meeting" button on the group screen during an active call. The kit's `CometChatMessageHeader` does this automatically when the group has an active call.
263
-
264
- ---
265
-
266
- ## Anti-patterns
267
-
268
- 1. **Rendering tiles for every participant.** At 25 people, you have 25 `<RTCView />` instances; that's where RN's bridge starts choking. Render the active speaker + max 6 thumbnails.
269
- 2. **Updating layout on every `onDominantSpeakerChanged`.** Debounce to 500ms minimum.
270
- 3. **Allowing non-moderators to call `muteParticipant`.** Only owners/moderators should see the button. (Per-call "kick" doesn't exist on the RN SDK — see above.)
271
- 4. **No bandwidth warning.** A user on cellular joining a 10-person call burns their data plan in minutes. Show a "Switch to audio-only" prompt at the threshold.
272
- 5. **Forgetting to filter local user from the roster.** "Speaking with myself" tile.
273
- 6. **Initiating group calls without group membership check.** Non-members get "ERR_NOT_GROUP_MEMBER" silently.
274
-
275
- ---
276
-
277
- ## Verification checklist
278
-
279
- - [ ] Active-speaker handler debounced (≥500ms)
280
- - [ ] Roster filters out local user
281
- - [ ] Moderator buttons hidden for non-moderator scopes
282
- - [ ] Capacity error surfaces in UI when join fails
283
- - [ ] Bandwidth warning at participant count threshold (configurable)
284
- - [ ] Battery-saver downgrade hook (optional, recommended)
285
- - [ ] `getActiveCall()` checked on group screen mount
286
- - [ ] Maximum N tiles rendered (clamp + overflow indicator: "+5 more")
287
- - [ ] Real-device smoke: 5+ participants on real cellular network for 5+ minutes
288
-
289
- ---
290
-
291
- ## Pointers
292
-
293
- - `references/custom-ui.md` — building custom multi-tile layouts on the SDK
294
- - `references/recording-screen-share.md` — recording group calls (server-side composition handles the layout)
295
- - `references/voip-push-end-to-end.md` — push for group call invitations
296
- - `cometchat-native-calls` SKILL.md — base hard rules
@@ -1,128 +0,0 @@
1
- # Idle timeout on React Native
2
-
3
- Same SDK API as web — `idleTimeoutPeriodBeforePrompt` + `idleTimeoutPeriodAfterPrompt` are SessionSettings **object fields** (ms), `onSessionTimedOut` event. RN-specific deltas are background-handling integration (call doesn't time out while the app is foregrounded; needs special handling in background) and the alert UI surface.
4
-
5
- **Canonical docs:** https://www.cometchat.com/docs/calls/react-native/idle-timeout
6
- **Read first:** `cometchat-react-calls/references/idle-timeout.md` — settings shape + recommended timeouts per archetype + custom prompt pattern.
7
-
8
- ---
9
-
10
- ## SDK API
11
-
12
- ```ts
13
- import { CometChatCalls } from "@cometchat/calls-sdk-react-native";
14
-
15
- // SessionSettings OBJECT fields (ms) — NOT builder methods:
16
- const settings = {
17
- idleTimeoutPeriodBeforePrompt: 60_000,
18
- idleTimeoutPeriodAfterPrompt: 120_000,
19
- };
20
-
21
- CometChatCalls.addEventListener("onSessionTimedOut", () => {
22
- navigation.navigate("Home");
23
- Alert.alert("Call ended", "You were inactive for too long");
24
- });
25
- ```
26
-
27
- ---
28
-
29
- ## RN-specific: app state + idle interaction
30
-
31
- **Background gotcha:** when the user backgrounds your app while the call is active, the idle timer keeps running. From the user's perspective, they backgrounded for 30s and came back to a "you've been timed out" screen. Bad UX.
32
-
33
- Pause the timer when the app backgrounds:
34
-
35
- ```ts
36
- import { AppState } from "react-native";
37
-
38
- useEffect(() => {
39
- const sub = AppState.addEventListener("change", (state) => {
40
- if (state === "active") {
41
- // App came back to foreground — reset alone-since timer
42
- // (Without SDK API to pause; reconfigure call settings is the workaround)
43
- } else if (state === "background") {
44
- // Pause your custom timer (Pattern A in the web ref)
45
- }
46
- });
47
- return () => sub.remove();
48
- }, []);
49
- ```
50
-
51
- If you're using the kit's default idle prompt UI, this is harder — kit doesn't expose a "pause timer" API. Use Pattern B from the web ref (long SDK timeouts + custom prompt + custom timer that respects AppState).
52
-
53
- ---
54
-
55
- ## Custom prompt — Alert vs Modal
56
-
57
- `Alert.alert` is OS-native but blocks the call UI fully:
58
-
59
- ```ts
60
- useEffect(() => {
61
- if (!showPrompt) return;
62
- const subscription = Alert.alert(
63
- "Still there?",
64
- "You're alone in this call. It'll end in 60 seconds.",
65
- [
66
- { text: "Stay", onPress: dismiss, style: "cancel" },
67
- { text: "End now", onPress: () => CometChatCalls.leaveSession(), style: "destructive" },
68
- ],
69
- { cancelable: false },
70
- );
71
- }, [showPrompt]);
72
- ```
73
-
74
- `Modal` lets you keep the call surface visible:
75
-
76
- ```tsx
77
- <Modal
78
- visible={showPrompt}
79
- transparent
80
- animationType="fade"
81
- onRequestClose={dismiss}
82
- >
83
- <View style={styles.overlay}>
84
- <View style={styles.dialog} accessible accessibilityRole="alert">
85
- <Text style={styles.title}>Still there?</Text>
86
- <Text>You're alone in this call. It'll end in 60 seconds.</Text>
87
- <View style={styles.row}>
88
- <TouchableOpacity onPress={dismiss}><Text>Stay</Text></TouchableOpacity>
89
- <TouchableOpacity onPress={() => CometChatCalls.leaveSession()}>
90
- <Text style={{ color: "red" }}>End now</Text>
91
- </TouchableOpacity>
92
- </View>
93
- </View>
94
- </View>
95
- </Modal>
96
- ```
97
-
98
- `accessibilityRole="alert"` is the RN equivalent of web's `role="alertdialog"`. TalkBack / VoiceOver pause to announce.
99
-
100
- ---
101
-
102
- ## Anti-patterns
103
-
104
- Web sister reference rules apply, plus RN-specific:
105
-
106
- 1. **Idle timer running during background.** User backgrounds, comes back to "timed out." Pause via AppState listener.
107
- 2. **Using `Alert.alert` inside `useEffect`.** Blocks the call surface; can stack multiple alerts on rapid state changes. Use `Modal` for in-call UI.
108
- 3. **Forgetting `Modal` `accessible accessibilityRole="alert"`.** Screen readers miss the announcement.
109
-
110
- ---
111
-
112
- ## Verification checklist
113
-
114
- - [ ] CallSettings sets both idle periods
115
- - [ ] `onSessionTimedOut` navigates user away cleanly
116
- - [ ] Custom prompt uses `Modal` with `accessibilityRole="alert"`, OR `Alert.alert` for OS-native
117
- - [ ] AppState listener pauses custom timer on `background`
118
- - [ ] Real-device smoke: backgroound app for 30s, return → call still active (timer paused correctly)
119
- - [ ] Real-device smoke: 2 devices, hangup from one → timer fires on the other after configured delay
120
-
121
- ---
122
-
123
- ## Pointers
124
-
125
- - `cometchat-react-calls/references/idle-timeout.md` — sister reference (settings, archetype timeouts, custom prompt pattern)
126
- - `cometchat-native-calls` SKILL.md
127
- - `references/voip-push-end-to-end.md` — interaction with VoIP push (background-mode call activation)
128
- - Canonical docs: https://www.cometchat.com/docs/calls/react-native/idle-timeout
@@ -1,145 +0,0 @@
1
- # In-call chat on React Native
2
-
3
- Same SDK API as web. RN-specific: BottomSheet panel UX (matches mobile patterns) + `Keyboard.dismiss()` lifecycle awareness when entering call.
4
-
5
- **Canonical docs:** https://www.cometchat.com/docs/calls/react-native/in-call-chat
6
- **Read first:** `cometchat-react-calls/references/in-call-chat.md` — group-as-session architecture + UX patterns + the four anti-patterns.
7
-
8
- ---
9
-
10
- ## SDK API
11
-
12
- ```ts
13
- import { CometChatCalls } from "@cometchat/calls-sdk-react-native";
14
-
15
- // SessionSettings OBJECT field, not a builder method:
16
- const settings = {
17
- hideChatButton: false,
18
- };
19
-
20
- // addEventListener returns the unsubscribe fn — call it on cleanup.
21
- const off = CometChatCalls.addEventListener("onChatButtonClicked", () => setOpen(true));
22
- // later: off();
23
- CometChatCalls.setChatButtonUnreadCount(5);
24
- ```
25
-
26
- Same as web. The group-as-session pattern (using a group with GUID == sessionID) carries over.
27
-
28
- ---
29
-
30
- ## BottomSheet panel — RN canonical UX
31
-
32
- ```tsx
33
- import BottomSheet, { BottomSheetView } from "@gorhom/bottom-sheet";
34
- import { useRef, useEffect, useState } from "react";
35
- import { View, TextInput, TouchableOpacity, Text } from "react-native";
36
- import { CometChat } from "@cometchat/chat-sdk-react-native";
37
- import { CometChatCalls } from "@cometchat/calls-sdk-react-native";
38
- import {
39
- CometChatMessageList,
40
- CometChatMessageComposer,
41
- } from "@cometchat/chat-uikit-react-native";
42
-
43
- interface Props { sessionId: string; }
44
-
45
- function InCallChatSheet({ sessionId }: Props) {
46
- const sheetRef = useRef<BottomSheet>(null);
47
- const [group, setGroup] = useState<CometChat.Group>();
48
- const [unread, setUnread] = useState(0);
49
-
50
- useEffect(() => {
51
- const handler = () => sheetRef.current?.snapToIndex(1);
52
- const off = CometChatCalls.addEventListener("onChatButtonClicked", handler);
53
- return () => off();
54
- }, []);
55
-
56
- useEffect(() => {
57
- CometChat.getGroup(sessionId).then(setGroup).catch(() => {});
58
- }, [sessionId]);
59
-
60
- // Track unread + clear on open (same logic as web; cite sister)
61
- // ...
62
-
63
- if (!group) return null;
64
-
65
- return (
66
- <BottomSheet
67
- ref={sheetRef}
68
- snapPoints={["10%", "75%"]}
69
- index={-1} // start closed
70
- onChange={(i) => {
71
- if (i >= 1) {
72
- setUnread(0);
73
- CometChatCalls.setChatButtonUnreadCount(0);
74
- }
75
- }}
76
- >
77
- <BottomSheetView style={{ flex: 1 }}>
78
- {/* flex-1 + minHeight:0 wrap pattern still applies on RN */}
79
- <View style={{ flex: 1, minHeight: 0 }}>
80
- <CometChatMessageList group={group} hideReplyInThreadOption />
81
- </View>
82
- <CometChatMessageComposer group={group} />
83
- </BottomSheetView>
84
- </BottomSheet>
85
- );
86
- }
87
- ```
88
-
89
- `@gorhom/bottom-sheet` is already a peer dep of the kit when RN calls are integrated (via `react-native-gesture-handler` + `react-native-reanimated`).
90
-
91
- ---
92
-
93
- ## Keyboard handling
94
-
95
- When the chat sheet opens, the user types — keyboard appears, pushes call surface up. Two options:
96
-
97
- ### A — Use `KeyboardAvoidingView`
98
-
99
- ```tsx
100
- <KeyboardAvoidingView
101
- behavior={Platform.OS === "ios" ? "padding" : "height"}
102
- style={{ flex: 1 }}
103
- >
104
- <BottomSheet ...>
105
- {/* ... */}
106
- </BottomSheet>
107
- </KeyboardAvoidingView>
108
- ```
109
-
110
- ### B — Use `keyboardVerticalOffset` from BottomSheet
111
-
112
- Most BottomSheet libs have explicit keyboard handling. `@gorhom/bottom-sheet` v4+ ships `keyboardBehavior` and `keyboardBlurBehavior` options.
113
-
114
- Critical: ensure the call's WebRTC video doesn't reflow when keyboard opens (already covered by `resizeToAvoidBottomInset: false` rule for iOS; on Android use `android:windowSoftInputMode="adjustNothing"` in the manifest for the call activity).
115
-
116
- ---
117
-
118
- ## Anti-patterns
119
-
120
- Web sister rules apply, plus RN-specific:
121
-
122
- 1. **Default `windowSoftInputMode="adjustResize"`** on Android. Keyboard appears, the entire screen resizes — call's WebRTC view squishes, looks broken.
123
- 2. **`@gorhom/bottom-sheet` outside `GestureHandlerRootView`.** Sheet doesn't respond to drag gestures. Wrap your app's root in `GestureHandlerRootView` (also a kit requirement; see `cometchat-native-calls` SKILL.md).
124
- 3. **Chat sheet fullscreen by default.** Hides the call view; participants can't see who's talking. Default to ~30% snap, expand on demand.
125
-
126
- ---
127
-
128
- ## Verification checklist
129
-
130
- - [ ] `@gorhom/bottom-sheet` in deps
131
- - [ ] `GestureHandlerRootView` wraps the app
132
- - [ ] BottomSheet has 2+ snap points (peek + expanded)
133
- - [ ] AndroidManifest: call activity has `windowSoftInputMode="adjustNothing"` or `"adjustPan"`
134
- - [ ] iOS Scaffold: `resizeToAvoidBottomInset: false` (RN's equivalent: KeyboardAvoidingView with right behavior)
135
- - [ ] Real-device smoke: keyboard opens during chat, call view doesn't reflow
136
- - [ ] Real-device smoke: 2 devices in call, send message from one → badge appears in other
137
-
138
- ---
139
-
140
- ## Pointers
141
-
142
- - `cometchat-react-calls/references/in-call-chat.md` — sister web reference (group-as-session pattern)
143
- - `cometchat-native-calls` SKILL.md — the seven hard rules
144
- - `cometchat-android-v5-calls/references/in-call-chat.md` — Android V5 sibling
145
- - Canonical docs: https://www.cometchat.com/docs/calls/react-native/in-call-chat
@@ -1,72 +0,0 @@
1
- # Calls SDK v4 → v5 migration (React Native)
2
-
3
- `@cometchat/calls-sdk-react-native@5` is a drop-in replacement for v4. Same migration shape as web; RN deltas focus on the native modules that calls SDK depends on.
4
-
5
- **Read first:** `cometchat-react-calls/references/migration-v4-to-v5.md` — canonical step-by-step (init, login, settings, events, methods).
6
-
7
- ---
8
-
9
- ## Step 1 — Bump the package + native modules
10
-
11
- ```bash
12
- npm install @cometchat/calls-sdk-react-native@5
13
- cd ios && pod install
14
- ```
15
-
16
- If you upgraded `react-native-webrtc` along with the calls SDK, run:
17
-
18
- ```bash
19
- # iOS
20
- cd ios && rm -rf Pods Podfile.lock && pod install
21
- # Android (Gradle handles it on next build)
22
- ```
23
-
24
- ---
25
-
26
- ## Step 2 — Verify native dependencies are still valid
27
-
28
- Calls SDK v5 doesn't change the native module list, but versions matter. Check `package.json`:
29
-
30
- ```json
31
- {
32
- "dependencies": {
33
- "@cometchat/calls-sdk-react-native": "^5.0.0",
34
- "react-native-webrtc": ">=124",
35
- "react-native-incall-manager": ">=4",
36
- "react-native-callstats": ">=3",
37
- "@react-native-community/netinfo": "*"
38
- }
39
- }
40
- ```
41
-
42
- If any of these are stale, calls may fail silently with WebRTC negotiation errors.
43
-
44
- ---
45
-
46
- ## Migration steps (same as web)
47
-
48
- 1. Migrate init to plain object
49
- 2. Add `CometChatCalls.login(uid, authKey)` after `CometChat.login` (UID-based; the auth-token form is `CometChatCalls.loginWithAuthToken(authToken)` — verified against calls-sdk-react-native `skills/setup` + `skills/migration-v4-to-v5`)
50
- 3. Replace `CallSettingsBuilder` with plain `sessionSettings` object — **watch inverted booleans** (`show*` → `hide*`)
51
- 4. Replace `OngoingCallListener` with `addEventListener` calls
52
- 5. Rename methods: `endSession` → `leaveSession`; `setMode('DEFAULT')` → the `sessionSettings.layout: 'SIDEBAR'` prop (DEFAULT maps to SIDEBAR). An imperative `CometChatCalls.setLayout('TILE' | 'SIDEBAR' | 'SPOTLIGHT')` does exist for runtime layout changes (calls-sdk-react-native `skills/custom-ui`). **RN has no imperative `joinSession`/`startSession`** — on RN the session is the declarative `<CometChatCalls.Component callToken={...} />` primitive (mint the token with `CometChatCalls.generateToken(sessionId)` and render the Component). There is no start/join method to call.
53
- 6. Cleanup: `addEventListener` returns an unsubscribe — call it on unmount
54
-
55
- ---
56
-
57
- ## Verification checklist
58
-
59
- - [ ] All canonical steps from `cometchat-react-calls/references/migration-v4-to-v5.md`
60
- - [ ] `pod install` re-run after upgrade
61
- - [ ] Native modules at compatible versions
62
- - [ ] Real-device test: 2 phones (iOS + Android), incoming call, mute, screen-share, end
63
- - [ ] CallKeep + VoipPushNotification still register tokens correctly
64
- - [ ] Background incoming call (recipient app killed) still rings
65
-
66
- ---
67
-
68
- ## Pointers
69
-
70
- - Canonical migration: `cometchat-react-calls/references/migration-v4-to-v5.md`
71
- - `cometchat-native-calls/SKILL.md` — RN seven hard rules
72
- - https://www.cometchat.com/docs/calls/react-native/migration-guide-v5