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