@cometchat/skills 4.4.2 → 5.0.0

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 (490) hide show
  1. package/.claude-plugin/marketplace.json +55 -0
  2. package/.claude-plugin/plugin.json +14 -0
  3. package/CHANGELOG.md +36 -0
  4. package/LICENSE +21 -0
  5. package/README.md +41 -163
  6. package/RULES.md +114 -0
  7. package/bin/cometchat-skills.mjs +1180 -0
  8. package/bin/legacy-skills.json +95 -0
  9. package/catalogs/android-v6.json +1646 -0
  10. package/catalogs/flutter-v6.json +651 -0
  11. package/catalogs/ios-v5.json +1383 -0
  12. package/catalogs/rn-calls-v5.json +134 -0
  13. package/catalogs/rn-calls-v5.symbols.txt +58 -0
  14. package/catalogs/rn-sdk-v4.json +672 -0
  15. package/catalogs/rn-v5.json +449 -0
  16. package/catalogs/rn-v5.symbols.txt +216 -0
  17. package/catalogs/sdk-android-v5.json +514 -0
  18. package/contracts.android-calls-v5.json +122 -0
  19. package/contracts.android-v6.json +135 -0
  20. package/contracts.angular-v5.json +694 -0
  21. package/contracts.flutter-calls-v5.json +77 -0
  22. package/contracts.flutter-v6.json +126 -0
  23. package/contracts.ios-calls-v5.json +67 -0
  24. package/contracts.ios-v5.json +436 -0
  25. package/contracts.json +82 -0
  26. package/contracts.rn-calls-v5.json +77 -0
  27. package/contracts.rn-v5.json +727 -0
  28. package/contracts.sdk-android-v5.json +15 -0
  29. package/contracts.web-calls-v5.json +45 -0
  30. package/features.android-calls-v5.json +246 -0
  31. package/features.android-v6.json +65 -0
  32. package/features.angular-v5.json +521 -0
  33. package/features.flutter-calls-v5.json +286 -0
  34. package/features.flutter-v6.json +484 -0
  35. package/features.ios-calls-v5.json +236 -0
  36. package/features.ios-v5.json +573 -0
  37. package/features.json +61 -0
  38. package/features.rn-calls-v5.json +187 -0
  39. package/features.rn-v5.json +614 -0
  40. package/features.sdk-android-v5.json +40 -0
  41. package/features.sdk-jsv4.json +24 -0
  42. package/features.web-calls-v5.json +108 -0
  43. package/package.json +151 -74
  44. package/peers.yaml +312 -0
  45. package/registry/README.md +31 -0
  46. package/registry/android-calls-v5.json +54 -0
  47. package/registry/android-v6.json +137 -0
  48. package/registry/angular-v5.json +114 -0
  49. package/registry/flutter-calls-v5.json +54 -0
  50. package/registry/flutter-v6.json +119 -0
  51. package/registry/ios-calls-v5.json +59 -0
  52. package/registry/ios-v5.json +97 -0
  53. package/registry/rn-calls-v5.json +59 -0
  54. package/registry/rn-v5.json +129 -0
  55. package/registry/sdk-android-v5.json +53 -0
  56. package/registry/sdk-jsv4.json +53 -0
  57. package/registry/web-calls-v5.json +54 -0
  58. package/registry/web-v7.json +99 -0
  59. package/skills/cometchat/SKILL.md +42 -2096
  60. package/skills/cometchat-android-v5-calls-sdk/SKILL.md +206 -0
  61. package/skills/cometchat-android-v5-calls-sdk/references/build-truth.md +63 -0
  62. package/skills/cometchat-android-v5-calls-sdk/references/docs-map.md +119 -0
  63. package/skills/cometchat-android-v5-calls-sdk/references/method-map.md +53 -0
  64. package/skills/cometchat-android-v5-calls-sdk/references/pitfalls.md +72 -0
  65. package/skills/cometchat-android-v5-calls-sdk/references/ringing.md +92 -0
  66. package/skills/cometchat-android-v5-calls-sdk/references/user-switch.md +90 -0
  67. package/skills/cometchat-android-v5-sdk/SKILL.md +127 -0
  68. package/skills/cometchat-android-v5-sdk/references/app-surface.md +88 -0
  69. package/skills/cometchat-android-v5-sdk/references/docs-map.md +91 -0
  70. package/skills/cometchat-android-v6-builder-settings/SKILL.md +51 -137
  71. package/skills/cometchat-android-v6-calls/SKILL.md +128 -413
  72. package/skills/cometchat-android-v6-compose-components/SKILL.md +84 -194
  73. package/skills/cometchat-android-v6-compose-customization/SKILL.md +66 -411
  74. package/skills/cometchat-android-v6-compose-placement/SKILL.md +154 -237
  75. package/skills/cometchat-android-v6-core/SKILL.md +236 -672
  76. package/skills/cometchat-android-v6-core/references/anti-patterns.md +31 -0
  77. package/skills/cometchat-android-v6-core/references/component-props.md +168 -0
  78. package/skills/cometchat-android-v6-core/references/docs-map.md +153 -0
  79. package/skills/cometchat-android-v6-core/references/layout.md +112 -0
  80. package/skills/cometchat-android-v6-core/references/lifecycle.md +75 -0
  81. package/skills/cometchat-android-v6-core/references/setup-credentials.md +105 -0
  82. package/skills/cometchat-android-v6-core/references/troubleshooting.md +36 -0
  83. package/skills/cometchat-android-v6-events/SKILL.md +46 -184
  84. package/skills/cometchat-android-v6-extensions/SKILL.md +39 -179
  85. package/skills/cometchat-android-v6-features/SKILL.md +74 -143
  86. package/skills/cometchat-android-v6-kotlin-components/SKILL.md +75 -193
  87. package/skills/cometchat-android-v6-kotlin-customization/SKILL.md +67 -419
  88. package/skills/cometchat-android-v6-kotlin-placement/SKILL.md +77 -223
  89. package/skills/cometchat-android-v6-migration/SKILL.md +67 -378
  90. package/skills/cometchat-android-v6-production/SKILL.md +40 -179
  91. package/skills/cometchat-android-v6-push/SKILL.md +39 -289
  92. package/skills/cometchat-android-v6-testing/SKILL.md +50 -265
  93. package/skills/cometchat-android-v6-troubleshooting/SKILL.md +70 -254
  94. package/skills/cometchat-angular-v5-calls/SKILL.md +193 -0
  95. package/skills/cometchat-angular-v5-components/SKILL.md +131 -0
  96. package/skills/cometchat-angular-v5-components/references/catalog.md +111 -0
  97. package/skills/cometchat-angular-v5-components/references/host-composed.md +46 -0
  98. package/skills/cometchat-angular-v5-core/SKILL.md +300 -0
  99. package/skills/cometchat-angular-v5-core/references/anti-patterns.md +49 -0
  100. package/skills/cometchat-angular-v5-core/references/component-props.md +55 -0
  101. package/skills/cometchat-angular-v5-core/references/dependencies.md +66 -0
  102. package/skills/cometchat-angular-v5-core/references/docs-map.md +132 -0
  103. package/skills/cometchat-angular-v5-core/references/layout.md +64 -0
  104. package/skills/cometchat-angular-v5-core/references/lifecycle.md +202 -0
  105. package/skills/cometchat-angular-v5-core/references/setup-credentials.md +137 -0
  106. package/skills/cometchat-angular-v5-core/references/theming.md +70 -0
  107. package/skills/cometchat-angular-v5-core/references/troubleshooting.md +27 -0
  108. package/skills/cometchat-angular-v5-customization/SKILL.md +94 -0
  109. package/skills/cometchat-angular-v5-features/SKILL.md +107 -0
  110. package/skills/cometchat-angular-v5-features/references/custom-messages.md +133 -0
  111. package/skills/cometchat-angular-v5-features/references/formatters.md +28 -0
  112. package/skills/cometchat-angular-v5-features/references/host-composed-extensions.md +85 -0
  113. package/skills/cometchat-angular-v5-migration/SKILL.md +40 -0
  114. package/skills/cometchat-angular-v5-migration/references/migration-guide.md +165 -0
  115. package/skills/cometchat-angular-v5-patterns/SKILL.md +107 -0
  116. package/skills/cometchat-angular-v5-placement/SKILL.md +133 -0
  117. package/skills/cometchat-angular-v5-placement/references/combined-app.md +174 -0
  118. package/skills/cometchat-angular-v5-placement/references/core-surface.md +199 -0
  119. package/skills/cometchat-angular-v5-production/SKILL.md +101 -0
  120. package/skills/cometchat-angular-v5-push/SKILL.md +61 -0
  121. package/skills/cometchat-angular-v5-testing/SKILL.md +112 -0
  122. package/skills/cometchat-angular-v5-troubleshooting/SKILL.md +96 -0
  123. package/skills/cometchat-flutter-v5-sdk/SKILL.md +188 -0
  124. package/skills/cometchat-flutter-v5-sdk/references/doc-corrections.md +55 -0
  125. package/skills/cometchat-flutter-v5-sdk/references/docs-map.md +211 -0
  126. package/skills/cometchat-flutter-v5-sdk/references/platform-notes.md +48 -0
  127. package/skills/cometchat-flutter-v5-sdk/references/transcription.md +87 -0
  128. package/skills/cometchat-flutter-v6-calls/SKILL.md +75 -389
  129. package/skills/cometchat-flutter-v6-components/SKILL.md +88 -361
  130. package/skills/cometchat-flutter-v6-core/SKILL.md +154 -593
  131. package/skills/cometchat-flutter-v6-core/references/anti-patterns.md +55 -0
  132. package/skills/cometchat-flutter-v6-core/references/docs-map.md +143 -0
  133. package/skills/cometchat-flutter-v6-core/references/layout.md +45 -0
  134. package/skills/cometchat-flutter-v6-core/references/lifecycle.md +87 -0
  135. package/skills/cometchat-flutter-v6-core/references/setup-credentials.md +84 -0
  136. package/skills/cometchat-flutter-v6-core/references/troubleshooting.md +26 -0
  137. package/skills/cometchat-flutter-v6-customization/SKILL.md +70 -712
  138. package/skills/cometchat-flutter-v6-events/SKILL.md +79 -174
  139. package/skills/cometchat-flutter-v6-features/SKILL.md +55 -394
  140. package/skills/cometchat-flutter-v6-migration/SKILL.md +68 -367
  141. package/skills/cometchat-flutter-v6-migration/references/migration-guide.md +131 -0
  142. package/skills/cometchat-flutter-v6-patterns/SKILL.md +61 -0
  143. package/skills/cometchat-flutter-v6-placement/SKILL.md +94 -381
  144. package/skills/cometchat-flutter-v6-production/SKILL.md +58 -615
  145. package/skills/cometchat-flutter-v6-push/SKILL.md +46 -455
  146. package/skills/cometchat-flutter-v6-testing/SKILL.md +68 -299
  147. package/skills/cometchat-flutter-v6-troubleshooting/SKILL.md +54 -878
  148. package/skills/cometchat-ios-calls/SKILL.md +112 -563
  149. package/skills/cometchat-ios-components/SKILL.md +44 -834
  150. package/skills/cometchat-ios-core/SKILL.md +181 -1068
  151. package/skills/cometchat-ios-core/references/anti-patterns.md +80 -0
  152. package/skills/cometchat-ios-core/references/docs-map.md +123 -0
  153. package/skills/cometchat-ios-core/references/install.md +23 -0
  154. package/skills/cometchat-ios-core/references/layout.md +186 -0
  155. package/skills/cometchat-ios-core/references/setup-credentials.md +197 -0
  156. package/skills/cometchat-ios-core/references/swiftui.md +91 -0
  157. package/skills/cometchat-ios-core/references/troubleshooting.md +100 -0
  158. package/skills/cometchat-ios-customization/SKILL.md +33 -968
  159. package/skills/cometchat-ios-features/SKILL.md +29 -738
  160. package/skills/cometchat-ios-migration/SKILL.md +39 -0
  161. package/skills/cometchat-ios-placement/SKILL.md +51 -729
  162. package/skills/cometchat-ios-push/SKILL.md +24 -602
  163. package/skills/cometchat-ios-v5-sdk/SKILL.md +161 -0
  164. package/skills/cometchat-ios-v5-sdk/references/docs-map.md +326 -0
  165. package/skills/cometchat-js-v5-sdk/SKILL.md +95 -0
  166. package/skills/cometchat-js-v5-sdk/references/docs-map.md +114 -0
  167. package/skills/cometchat-onboarding/SKILL.md +89 -0
  168. package/skills/cometchat-onboarding/references/archetypes.md +51 -0
  169. package/skills/cometchat-onboarding/references/calling-first.md +77 -0
  170. package/skills/cometchat-onboarding/references/not-in-this-pack.md +8 -0
  171. package/skills/cometchat-onboarding/references/plan-artifact.md +133 -0
  172. package/skills/cometchat-onboarding/references/platforms.md +90 -0
  173. package/skills/cometchat-react-native-bare-patterns/SKILL.md +120 -0
  174. package/skills/cometchat-react-native-calls/SKILL.md +200 -0
  175. package/skills/cometchat-react-native-components/SKILL.md +142 -0
  176. package/skills/cometchat-react-native-core/SKILL.md +313 -0
  177. package/skills/cometchat-react-native-core/references/anti-patterns.md +79 -0
  178. package/skills/cometchat-react-native-core/references/component-props.md +105 -0
  179. package/skills/cometchat-react-native-core/references/dependencies.md +62 -0
  180. package/skills/cometchat-react-native-core/references/docs-map.md +126 -0
  181. package/skills/cometchat-react-native-core/references/layout.md +61 -0
  182. package/skills/cometchat-react-native-core/references/lifecycle.md +64 -0
  183. package/skills/cometchat-react-native-core/references/setup-credentials.md +39 -0
  184. package/skills/cometchat-react-native-customization/SKILL.md +198 -0
  185. package/skills/cometchat-react-native-expo-patterns/SKILL.md +116 -0
  186. package/skills/cometchat-react-native-features/SKILL.md +122 -0
  187. package/skills/cometchat-react-native-migration/SKILL.md +103 -0
  188. package/skills/cometchat-react-native-placement/SKILL.md +158 -0
  189. package/skills/cometchat-react-native-production/SKILL.md +78 -0
  190. package/skills/cometchat-react-native-push/SKILL.md +88 -0
  191. package/skills/cometchat-react-native-sdk/SKILL.md +126 -0
  192. package/skills/cometchat-react-native-sdk/references/method-map.md +239 -0
  193. package/skills/cometchat-react-native-sdk/references/page-map.md +96 -0
  194. package/skills/cometchat-react-native-testing/SKILL.md +94 -0
  195. package/skills/cometchat-react-native-troubleshooting/SKILL.md +116 -0
  196. package/skills/cometchat-react-native-v5-sdk/SKILL.md +150 -0
  197. package/skills/cometchat-react-native-v5-sdk/references/docs-map.md +127 -0
  198. package/skills/cometchat-react-native-v5-sdk/references/ringing-voip.md +369 -0
  199. package/skills/cometchat-react-v7-calls/SKILL.md +75 -0
  200. package/skills/cometchat-react-v7-components/SKILL.md +72 -0
  201. package/skills/cometchat-react-v7-core/SKILL.md +101 -0
  202. package/skills/cometchat-react-v7-core/references/anti-patterns.md +19 -0
  203. package/skills/cometchat-react-v7-core/references/component-props.md +82 -0
  204. package/skills/cometchat-react-v7-core/references/dependencies.md +23 -0
  205. package/skills/cometchat-react-v7-core/references/docs-map.md +117 -0
  206. package/skills/cometchat-react-v7-core/references/i18n-rtl-a11y.md +22 -0
  207. package/skills/cometchat-react-v7-core/references/layout.md +158 -0
  208. package/skills/cometchat-react-v7-core/references/lifecycle.md +74 -0
  209. package/skills/cometchat-react-v7-core/references/setup-credentials.md +58 -0
  210. package/skills/cometchat-react-v7-core/references/ssr.md +11 -0
  211. package/skills/cometchat-react-v7-core/references/theming.md +52 -0
  212. package/skills/cometchat-react-v7-core/references/troubleshooting.md +28 -0
  213. package/skills/cometchat-react-v7-customization/SKILL.md +84 -0
  214. package/skills/cometchat-react-v7-features/SKILL.md +92 -0
  215. package/skills/cometchat-react-v7-migration/SKILL.md +39 -0
  216. package/skills/cometchat-react-v7-migration/references/migration-guide.md +119 -0
  217. package/skills/cometchat-react-v7-patterns/SKILL.md +43 -0
  218. package/skills/cometchat-react-v7-placement/SKILL.md +106 -0
  219. package/skills/cometchat-react-v7-placement/references/recipes.md +354 -0
  220. package/skills/cometchat-react-v7-push/SKILL.md +53 -0
  221. package/test-suite/README.md +70 -0
  222. package/test-suite/catalogs/android-calls-v5.json +830 -0
  223. package/test-suite/catalogs/android-calls-v5.symbols.txt +499 -0
  224. package/test-suite/catalogs/android-v6.json +1646 -0
  225. package/test-suite/catalogs/android-v6.symbols.txt +298 -0
  226. package/test-suite/catalogs/angular-v5.json +7587 -0
  227. package/test-suite/catalogs/flutter-calls-v5.json +196 -0
  228. package/test-suite/catalogs/flutter-calls-v5.symbols.txt +59 -0
  229. package/test-suite/catalogs/flutter-v6.json +651 -0
  230. package/test-suite/catalogs/ios-calls-v5.json +158 -0
  231. package/test-suite/catalogs/ios-calls-v5.symbols.txt +70 -0
  232. package/test-suite/catalogs/ios-v5.json +1383 -0
  233. package/test-suite/catalogs/ios-v5.symbols.txt +699 -0
  234. package/test-suite/catalogs/rn-calls-v5.json +134 -0
  235. package/test-suite/catalogs/rn-sdk-v4.json +672 -0
  236. package/test-suite/catalogs/rn-v5.json +449 -0
  237. package/test-suite/catalogs/sdk-android-v5.json +514 -0
  238. package/test-suite/catalogs/sdk-android-v5.symbols.txt +254 -0
  239. package/test-suite/catalogs/sdk-jsv4.json +800 -0
  240. package/test-suite/catalogs/web-calls-v5.json +195 -0
  241. package/test-suite/catalogs/web-v7.json +1243 -0
  242. package/test-suite/scripts/build-registry.mjs +113 -0
  243. package/test-suite/scripts/catalog-refresh-dart.mjs +151 -0
  244. package/test-suite/scripts/catalog-refresh.mjs +100 -0
  245. package/test-suite/scripts/lint-skills.mjs +909 -0
  246. package/test-suite/scripts/measure-tokens.mjs +169 -0
  247. package/test-suite/scripts/typecheck-fences-dart.mjs +437 -0
  248. package/test-suite/scripts/typecheck-fences-kotlin.mjs +269 -0
  249. package/test-suite/scripts/typecheck-fences.mjs +206 -0
  250. package/test-suite/scripts/verify-catalog.mjs +242 -0
  251. package/test-suite/scripts/verify-contract-fences.mjs +94 -0
  252. package/test-suite/scripts/verify-detection.mjs +178 -0
  253. package/test-suite/scripts/verify-docs-base.mjs +91 -0
  254. package/test-suite/scripts/verify-family-agnostic.mjs +130 -0
  255. package/test-suite/scripts/verify-golden-path.mjs +138 -0
  256. package/test-suite/scripts/verify-oracle-components.mjs +133 -0
  257. package/test-suite/scripts/verify-template-bindings.mjs +148 -0
  258. package/test-suite/typecheck/angular-v5/package.json +21 -0
  259. package/test-suite/typecheck/angular-v5/tsconfig.json +21 -0
  260. package/test-suite/typecheck/flutter-v6/analysis_options.yaml +25 -0
  261. package/test-suite/typecheck/flutter-v6/pubspec.yaml +21 -0
  262. package/test-suite/typecheck/web-v7/package.json +18 -0
  263. package/test-suite/typecheck/web-v7/tsconfig.json +19 -0
  264. package/bin/install.js +0 -1003
  265. package/skills/.claude-plugin/marketplace.json +0 -86
  266. package/skills/cometchat/references/asking-questions.md +0 -48
  267. package/skills/cometchat-a11y/SKILL.md +0 -477
  268. package/skills/cometchat-android-v5/SKILL.md +0 -121
  269. package/skills/cometchat-android-v5-calls/SKILL.md +0 -429
  270. package/skills/cometchat-android-v5-calls/references/README.md +0 -53
  271. package/skills/cometchat-android-v5-calls/references/add-calls-to-existing-chat.md +0 -197
  272. package/skills/cometchat-android-v5-calls/references/audio-controls.md +0 -91
  273. package/skills/cometchat-android-v5-calls/references/background-handling.md +0 -168
  274. package/skills/cometchat-android-v5-calls/references/call-layouts.md +0 -131
  275. package/skills/cometchat-android-v5-calls/references/call-logs.md +0 -113
  276. package/skills/cometchat-android-v5-calls/references/call-session.md +0 -274
  277. package/skills/cometchat-android-v5-calls/references/custom-ui.md +0 -150
  278. package/skills/cometchat-android-v5-calls/references/event-listeners.md +0 -123
  279. package/skills/cometchat-android-v5-calls/references/group-calls.md +0 -205
  280. package/skills/cometchat-android-v5-calls/references/idle-timeout.md +0 -117
  281. package/skills/cometchat-android-v5-calls/references/in-call-chat.md +0 -134
  282. package/skills/cometchat-android-v5-calls/references/join-session.md +0 -120
  283. package/skills/cometchat-android-v5-calls/references/migration-v4-to-v5.md +0 -222
  284. package/skills/cometchat-android-v5-calls/references/participant-management.md +0 -110
  285. package/skills/cometchat-android-v5-calls/references/picture-in-picture.md +0 -106
  286. package/skills/cometchat-android-v5-calls/references/raise-hand.md +0 -248
  287. package/skills/cometchat-android-v5-calls/references/recording.md +0 -101
  288. package/skills/cometchat-android-v5-calls/references/ringing-integration.md +0 -152
  289. package/skills/cometchat-android-v5-calls/references/screen-sharing.md +0 -78
  290. package/skills/cometchat-android-v5-calls/references/server-fcm-voip.md +0 -215
  291. package/skills/cometchat-android-v5-calls/references/session-settings.md +0 -121
  292. package/skills/cometchat-android-v5-calls/references/setup.md +0 -137
  293. package/skills/cometchat-android-v5-calls/references/share-invite.md +0 -156
  294. package/skills/cometchat-android-v5-calls/references/video-controls.md +0 -87
  295. package/skills/cometchat-android-v5-calls/references/voip-calling.md +0 -526
  296. package/skills/cometchat-android-v5-components/SKILL.md +0 -431
  297. package/skills/cometchat-android-v5-core/SKILL.md +0 -486
  298. package/skills/cometchat-android-v5-customization/SKILL.md +0 -469
  299. package/skills/cometchat-android-v5-extensions/SKILL.md +0 -127
  300. package/skills/cometchat-android-v5-features/SKILL.md +0 -131
  301. package/skills/cometchat-android-v5-placement/SKILL.md +0 -277
  302. package/skills/cometchat-android-v5-production/SKILL.md +0 -95
  303. package/skills/cometchat-android-v5-push/SKILL.md +0 -619
  304. package/skills/cometchat-android-v5-testing/SKILL.md +0 -188
  305. package/skills/cometchat-android-v5-theming/SKILL.md +0 -167
  306. package/skills/cometchat-android-v5-troubleshooting/SKILL.md +0 -74
  307. package/skills/cometchat-android-v6/SKILL.md +0 -108
  308. package/skills/cometchat-android-v6-calls/references/add-calls-to-existing-chat.md +0 -97
  309. package/skills/cometchat-android-v6-calls/references/advanced-features.md +0 -87
  310. package/skills/cometchat-android-v6-calls/references/call-layouts.md +0 -100
  311. package/skills/cometchat-android-v6-calls/references/call-session.md +0 -163
  312. package/skills/cometchat-android-v6-calls/references/device-management.md +0 -172
  313. package/skills/cometchat-android-v6-calls/references/group-calls.md +0 -191
  314. package/skills/cometchat-android-v6-calls/references/idle-timeout.md +0 -110
  315. package/skills/cometchat-android-v6-calls/references/in-call-chat.md +0 -141
  316. package/skills/cometchat-android-v6-calls/references/raise-hand.md +0 -188
  317. package/skills/cometchat-android-v6-calls/references/ringing-integration.md +0 -176
  318. package/skills/cometchat-android-v6-calls/references/server-fcm-voip.md +0 -127
  319. package/skills/cometchat-android-v6-calls/references/share-invite.md +0 -105
  320. package/skills/cometchat-android-v6-compose-theming/SKILL.md +0 -250
  321. package/skills/cometchat-android-v6-kotlin-theming/SKILL.md +0 -233
  322. package/skills/cometchat-angular-calls/SKILL.md +0 -380
  323. package/skills/cometchat-angular-calls/references/add-calls-to-existing-chat.md +0 -96
  324. package/skills/cometchat-angular-calls/references/call-layouts.md +0 -123
  325. package/skills/cometchat-angular-calls/references/call-session.md +0 -167
  326. package/skills/cometchat-angular-calls/references/custom-ui.md +0 -239
  327. package/skills/cometchat-angular-calls/references/device-management.md +0 -154
  328. package/skills/cometchat-angular-calls/references/group-calls.md +0 -433
  329. package/skills/cometchat-angular-calls/references/idle-timeout.md +0 -161
  330. package/skills/cometchat-angular-calls/references/in-call-chat.md +0 -148
  331. package/skills/cometchat-angular-calls/references/lazy-loading-pitfalls.md +0 -205
  332. package/skills/cometchat-angular-calls/references/migration-v4-to-v5.md +0 -53
  333. package/skills/cometchat-angular-calls/references/ngzone-and-async-callbacks.md +0 -184
  334. package/skills/cometchat-angular-calls/references/picture-in-picture.md +0 -285
  335. package/skills/cometchat-angular-calls/references/raise-hand.md +0 -172
  336. package/skills/cometchat-angular-calls/references/recording-screen-share.md +0 -260
  337. package/skills/cometchat-angular-calls/references/ringing-integration.md +0 -133
  338. package/skills/cometchat-angular-calls/references/server-web-push-vapid.md +0 -100
  339. package/skills/cometchat-angular-calls/references/share-invite.md +0 -122
  340. package/skills/cometchat-angular-calls/references/virtual-background.md +0 -29
  341. package/skills/cometchat-angular-components/SKILL.md +0 -235
  342. package/skills/cometchat-angular-core/SKILL.md +0 -386
  343. package/skills/cometchat-angular-customization/SKILL.md +0 -616
  344. package/skills/cometchat-angular-features/SKILL.md +0 -329
  345. package/skills/cometchat-angular-patterns/SKILL.md +0 -256
  346. package/skills/cometchat-angular-placement/SKILL.md +0 -314
  347. package/skills/cometchat-angular-production/SKILL.md +0 -564
  348. package/skills/cometchat-angular-push/SKILL.md +0 -389
  349. package/skills/cometchat-angular-testing/SKILL.md +0 -605
  350. package/skills/cometchat-angular-theming/SKILL.md +0 -290
  351. package/skills/cometchat-angular-troubleshooting/SKILL.md +0 -364
  352. package/skills/cometchat-astro-patterns/SKILL.md +0 -708
  353. package/skills/cometchat-calls/SKILL.md +0 -364
  354. package/skills/cometchat-calls/references/use-case-broadcast.md +0 -199
  355. package/skills/cometchat-calls/references/use-case-marketplace.md +0 -157
  356. package/skills/cometchat-calls/references/use-case-support.md +0 -189
  357. package/skills/cometchat-calls/references/use-case-team.md +0 -180
  358. package/skills/cometchat-calls/references/use-case-telehealth.md +0 -153
  359. package/skills/cometchat-components/SKILL.md +0 -1142
  360. package/skills/cometchat-core/SKILL.md +0 -1048
  361. package/skills/cometchat-customization/SKILL.md +0 -580
  362. package/skills/cometchat-customization/references/component-catalog.md +0 -236
  363. package/skills/cometchat-features/SKILL.md +0 -861
  364. package/skills/cometchat-flutter-v5/SKILL.md +0 -173
  365. package/skills/cometchat-flutter-v5-calls/SKILL.md +0 -455
  366. package/skills/cometchat-flutter-v5-calls/references/add-calls-to-existing-chat.md +0 -193
  367. package/skills/cometchat-flutter-v5-calls/references/call-layouts.md +0 -103
  368. package/skills/cometchat-flutter-v5-calls/references/call-session.md +0 -285
  369. package/skills/cometchat-flutter-v5-calls/references/device-management.md +0 -124
  370. package/skills/cometchat-flutter-v5-calls/references/group-calls.md +0 -181
  371. package/skills/cometchat-flutter-v5-calls/references/idle-timeout.md +0 -99
  372. package/skills/cometchat-flutter-v5-calls/references/in-call-chat.md +0 -135
  373. package/skills/cometchat-flutter-v5-calls/references/migration-v4-to-v5.md +0 -210
  374. package/skills/cometchat-flutter-v5-calls/references/raise-hand.md +0 -255
  375. package/skills/cometchat-flutter-v5-calls/references/ringing-integration.md +0 -196
  376. package/skills/cometchat-flutter-v5-calls/references/server-push-bridge.md +0 -101
  377. package/skills/cometchat-flutter-v5-calls/references/share-invite.md +0 -148
  378. package/skills/cometchat-flutter-v5-conversations/SKILL.md +0 -118
  379. package/skills/cometchat-flutter-v5-core/SKILL.md +0 -239
  380. package/skills/cometchat-flutter-v5-customization/SKILL.md +0 -358
  381. package/skills/cometchat-flutter-v5-events/SKILL.md +0 -156
  382. package/skills/cometchat-flutter-v5-messages/SKILL.md +0 -259
  383. package/skills/cometchat-flutter-v5-production/SKILL.md +0 -216
  384. package/skills/cometchat-flutter-v5-push/SKILL.md +0 -285
  385. package/skills/cometchat-flutter-v5-testing/SKILL.md +0 -401
  386. package/skills/cometchat-flutter-v5-theming/SKILL.md +0 -161
  387. package/skills/cometchat-flutter-v5-troubleshooting/SKILL.md +0 -130
  388. package/skills/cometchat-flutter-v5-users-groups/SKILL.md +0 -152
  389. package/skills/cometchat-flutter-v6/SKILL.md +0 -446
  390. package/skills/cometchat-flutter-v6-calls/references/add-calls-to-existing-chat.md +0 -136
  391. package/skills/cometchat-flutter-v6-calls/references/advanced-features.md +0 -89
  392. package/skills/cometchat-flutter-v6-calls/references/call-layouts.md +0 -105
  393. package/skills/cometchat-flutter-v6-calls/references/call-session.md +0 -229
  394. package/skills/cometchat-flutter-v6-calls/references/device-management.md +0 -105
  395. package/skills/cometchat-flutter-v6-calls/references/group-calls.md +0 -190
  396. package/skills/cometchat-flutter-v6-calls/references/idle-timeout.md +0 -88
  397. package/skills/cometchat-flutter-v6-calls/references/in-call-chat.md +0 -125
  398. package/skills/cometchat-flutter-v6-calls/references/raise-hand.md +0 -275
  399. package/skills/cometchat-flutter-v6-calls/references/ringing-integration.md +0 -171
  400. package/skills/cometchat-flutter-v6-calls/references/server-push-bridge.md +0 -93
  401. package/skills/cometchat-flutter-v6-calls/references/share-invite.md +0 -102
  402. package/skills/cometchat-flutter-v6-conversations/SKILL.md +0 -238
  403. package/skills/cometchat-flutter-v6-messages/SKILL.md +0 -384
  404. package/skills/cometchat-flutter-v6-theming/SKILL.md +0 -293
  405. package/skills/cometchat-flutter-v6-users-groups/SKILL.md +0 -224
  406. package/skills/cometchat-i18n/SKILL.md +0 -419
  407. package/skills/cometchat-ios/SKILL.md +0 -325
  408. package/skills/cometchat-ios-calls/references/add-calls-to-existing-chat.md +0 -181
  409. package/skills/cometchat-ios-calls/references/audio-modes-and-controls.md +0 -45
  410. package/skills/cometchat-ios-calls/references/avaudiosession-routing.md +0 -188
  411. package/skills/cometchat-ios-calls/references/call-layouts.md +0 -76
  412. package/skills/cometchat-ios-calls/references/call-session.md +0 -218
  413. package/skills/cometchat-ios-calls/references/callkit-and-pushkit.md +0 -357
  414. package/skills/cometchat-ios-calls/references/custom-ui.md +0 -322
  415. package/skills/cometchat-ios-calls/references/device-management.md +0 -171
  416. package/skills/cometchat-ios-calls/references/group-calls.md +0 -359
  417. package/skills/cometchat-ios-calls/references/idle-timeout.md +0 -184
  418. package/skills/cometchat-ios-calls/references/in-call-chat.md +0 -179
  419. package/skills/cometchat-ios-calls/references/migration-v4-to-v5.md +0 -196
  420. package/skills/cometchat-ios-calls/references/picture-in-picture.md +0 -246
  421. package/skills/cometchat-ios-calls/references/raise-hand.md +0 -26
  422. package/skills/cometchat-ios-calls/references/recording-screen-share.md +0 -252
  423. package/skills/cometchat-ios-calls/references/ringing-integration.md +0 -143
  424. package/skills/cometchat-ios-calls/references/server-apns-pushkit.md +0 -267
  425. package/skills/cometchat-ios-calls/references/share-invite.md +0 -148
  426. package/skills/cometchat-ios-calls/references/swiftui-uikit-hosting.md +0 -246
  427. package/skills/cometchat-ios-calls/references/voip-cert-setup.md +0 -166
  428. package/skills/cometchat-ios-production/SKILL.md +0 -738
  429. package/skills/cometchat-ios-testing/SKILL.md +0 -376
  430. package/skills/cometchat-ios-theming/SKILL.md +0 -667
  431. package/skills/cometchat-ios-troubleshooting/SKILL.md +0 -1003
  432. package/skills/cometchat-native-bare-patterns/SKILL.md +0 -550
  433. package/skills/cometchat-native-calls/SKILL.md +0 -671
  434. package/skills/cometchat-native-calls/references/add-calls-to-existing-chat.md +0 -203
  435. package/skills/cometchat-native-calls/references/call-layouts.md +0 -125
  436. package/skills/cometchat-native-calls/references/call-session.md +0 -182
  437. package/skills/cometchat-native-calls/references/custom-ui.md +0 -254
  438. package/skills/cometchat-native-calls/references/device-management.md +0 -158
  439. package/skills/cometchat-native-calls/references/expo-vs-bare.md +0 -179
  440. package/skills/cometchat-native-calls/references/group-calls.md +0 -296
  441. package/skills/cometchat-native-calls/references/idle-timeout.md +0 -128
  442. package/skills/cometchat-native-calls/references/in-call-chat.md +0 -145
  443. package/skills/cometchat-native-calls/references/migration-v4-to-v5.md +0 -72
  444. package/skills/cometchat-native-calls/references/picture-in-picture.md +0 -276
  445. package/skills/cometchat-native-calls/references/raise-hand.md +0 -205
  446. package/skills/cometchat-native-calls/references/recording-screen-share.md +0 -169
  447. package/skills/cometchat-native-calls/references/ringing-integration.md +0 -118
  448. package/skills/cometchat-native-calls/references/server-push-bridge.md +0 -135
  449. package/skills/cometchat-native-calls/references/server-push-payloads.md +0 -193
  450. package/skills/cometchat-native-calls/references/share-invite.md +0 -146
  451. package/skills/cometchat-native-calls/references/voip-push-end-to-end.md +0 -319
  452. package/skills/cometchat-native-components/SKILL.md +0 -628
  453. package/skills/cometchat-native-core/SKILL.md +0 -679
  454. package/skills/cometchat-native-customization/SKILL.md +0 -716
  455. package/skills/cometchat-native-expo-patterns/SKILL.md +0 -552
  456. package/skills/cometchat-native-features/SKILL.md +0 -638
  457. package/skills/cometchat-native-placement/SKILL.md +0 -509
  458. package/skills/cometchat-native-production/SKILL.md +0 -700
  459. package/skills/cometchat-native-push/SKILL.md +0 -594
  460. package/skills/cometchat-native-testing/SKILL.md +0 -582
  461. package/skills/cometchat-native-theming/SKILL.md +0 -681
  462. package/skills/cometchat-native-troubleshooting/SKILL.md +0 -501
  463. package/skills/cometchat-nextjs-patterns/SKILL.md +0 -899
  464. package/skills/cometchat-placement/SKILL.md +0 -1360
  465. package/skills/cometchat-production/SKILL.md +0 -1027
  466. package/skills/cometchat-react-calls/SKILL.md +0 -752
  467. package/skills/cometchat-react-calls/references/add-calls-to-existing-chat.md +0 -146
  468. package/skills/cometchat-react-calls/references/call-layouts.md +0 -160
  469. package/skills/cometchat-react-calls/references/call-session.md +0 -235
  470. package/skills/cometchat-react-calls/references/custom-ui.md +0 -247
  471. package/skills/cometchat-react-calls/references/device-management.md +0 -210
  472. package/skills/cometchat-react-calls/references/group-calls.md +0 -257
  473. package/skills/cometchat-react-calls/references/idle-timeout.md +0 -188
  474. package/skills/cometchat-react-calls/references/in-call-chat.md +0 -212
  475. package/skills/cometchat-react-calls/references/migration-v4-to-v5.md +0 -170
  476. package/skills/cometchat-react-calls/references/picture-in-picture.md +0 -245
  477. package/skills/cometchat-react-calls/references/raise-hand.md +0 -238
  478. package/skills/cometchat-react-calls/references/recording-screen-share.md +0 -144
  479. package/skills/cometchat-react-calls/references/ringing-integration.md +0 -255
  480. package/skills/cometchat-react-calls/references/server-web-push-vapid.md +0 -241
  481. package/skills/cometchat-react-calls/references/share-invite.md +0 -175
  482. package/skills/cometchat-react-calls/references/testing-calls-on-web.md +0 -216
  483. package/skills/cometchat-react-calls/references/virtual-background.md +0 -32
  484. package/skills/cometchat-react-calls/references/voip-and-web-push.md +0 -165
  485. package/skills/cometchat-react-patterns/SKILL.md +0 -628
  486. package/skills/cometchat-react-push/SKILL.md +0 -634
  487. package/skills/cometchat-react-router-patterns/SKILL.md +0 -758
  488. package/skills/cometchat-react-testing/SKILL.md +0 -413
  489. package/skills/cometchat-theming/SKILL.md +0 -498
  490. 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