@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,758 +0,0 @@
1
- ---
2
- name: cometchat-react-router-patterns
3
- description: "Framework-specific patterns for integrating CometChat React UI Kit v6 into React Router projects (v6 library mode and v7 framework mode). Covers SSR prevention, routing patterns, outlet nesting, and common pitfalls."
4
- license: "MIT"
5
- compatibility: "Node.js >=18; React >=18; react-router-dom ^6 or react-router ^7; @cometchat/chat-uikit-react ^6; @cometchat/chat-sdk-javascript ^4"
6
- metadata:
7
- author: "CometChat"
8
- version: "3.0.0"
9
- tags: "chat cometchat react-router remix routing ssr patterns"
10
- ---
11
-
12
- > **Ground truth:** `@cometchat/chat-uikit-react@^6` (+ `@cometchat/calls-sdk-javascript@^5`) — installed package types + `ui-kit/react`. **Official docs:** https://www.cometchat.com/docs/ui-kit/react/overview · **Docs MCP:** `claude mcp add --transport http cometchat-docs https://www.cometchat.com/docs/mcp` (or fetch the URL directly without MCP). Verify symbols against the installed package/source before relying on them.
13
-
14
- ## Purpose
15
-
16
- This skill teaches Claude how to integrate CometChat into React Router projects. React Router exists in two distinct modes with very different integration patterns:
17
-
18
- - **v6 library mode:** React Router is used as a routing library in a Vite/CRA app. No SSR. Simple.
19
- - **v7 framework mode:** React Router is a full framework (successor to Remix) with file-system routing, loaders, actions, and SSR. Complex -- similar SSR concerns as Next.js.
20
-
21
- **Read these companion skills first:**
22
- - `cometchat-core` -- initialization, login, CSS, provider pattern, anti-patterns
23
- - `cometchat-components` -- component catalog and composition patterns
24
- - `cometchat-placement` -- WHERE to put chat (route, modal, drawer, embedded)
25
-
26
- ---
27
-
28
- ## 1. Project detection
29
-
30
- ### Identifying React Router
31
-
32
- ```bash
33
- # Check package.json for React Router
34
- grep -E '"react-router-dom"|"react-router"' package.json
35
- ```
36
-
37
- ### Distinguishing v6 library mode from v7 framework mode
38
-
39
- ```bash
40
- # v7 framework mode: has a config file
41
- ls react-router.config.ts react-router.config.js 2>/dev/null
42
-
43
- # v6 library mode: uses createBrowserRouter or <BrowserRouter> in source
44
- grep -rn "createBrowserRouter\|BrowserRouter\|<Routes" src/ --include="*.tsx" --include="*.jsx" 2>/dev/null | head -5
45
- ```
46
-
47
- **Decision:**
48
- - If `react-router.config.ts` or `react-router.config.js` exists: **v7 framework mode**
49
- - If `react-router-dom` is in `package.json` with `createBrowserRouter` or `<BrowserRouter>` in source: **v6 library mode**
50
- - If `react-router` (not `react-router-dom`) is in `package.json` without a config file: likely v7 in library mode -- treat as v6 library mode
51
-
52
- ---
53
-
54
- ## 2. v6 library mode patterns
55
-
56
- v6 library mode is essentially a plain React app with routing. There are no SSR concerns. CometChat integration follows the same patterns as the `cometchat-react-patterns` skill, with routing-specific additions.
57
-
58
- ### CometChatProvider placement
59
-
60
- Mount the provider at the router level, wrapping the entire router or a specific route subtree:
61
-
62
- ```tsx
63
- // src/main.tsx
64
- import React from "react";
65
- import ReactDOM from "react-dom/client";
66
- import { RouterProvider } from "react-router-dom";
67
- import { CometChatProvider } from "./providers/CometChatProvider";
68
- import { router } from "./router";
69
- import "@cometchat/chat-uikit-react/css-variables.css";
70
- import "./index.css";
71
-
72
- ReactDOM.createRoot(document.getElementById("root")!).render(
73
- <React.StrictMode>
74
- <CometChatProvider>
75
- <RouterProvider router={router} />
76
- </CometChatProvider>
77
- </React.StrictMode>
78
- );
79
- ```
80
-
81
- The provider implementation is the same as in `cometchat-react-patterns` section 2 -- uses `import.meta.env.VITE_COMETCHAT_*` for env vars.
82
-
83
- ### Adding a route with createBrowserRouter
84
-
85
- Find the router configuration and add a new route:
86
-
87
- ```tsx
88
- // src/router.tsx
89
- import { createBrowserRouter } from "react-router-dom";
90
- import Layout from "./components/Layout";
91
- import HomePage from "./pages/HomePage";
92
- import ChatPage from "./pages/ChatPage";
93
-
94
- export const router = createBrowserRouter([
95
- {
96
- path: "/",
97
- element: <Layout />,
98
- children: [
99
- { index: true, element: <HomePage /> },
100
- { path: "messages", element: <ChatPage /> },
101
- // ... existing routes
102
- ],
103
- },
104
- ]);
105
- ```
106
-
107
- ### Adding a route with JSX Routes
108
-
109
- ```tsx
110
- // In App.tsx
111
- import { Routes, Route } from "react-router-dom";
112
- import Layout from "./components/Layout";
113
- import ChatPage from "./pages/ChatPage";
114
-
115
- function App() {
116
- return (
117
- <Routes>
118
- <Route path="/" element={<Layout />}>
119
- <Route index element={<HomePage />} />
120
- <Route path="messages" element={<ChatPage />} />
121
- </Route>
122
- </Routes>
123
- );
124
- }
125
- ```
126
-
127
- ### Nested conversation routes with Outlet
128
-
129
- A powerful pattern for React Router: use nested routes to show conversation details alongside the conversation list.
130
-
131
- ```tsx
132
- // Router config
133
- export const router = createBrowserRouter([
134
- {
135
- path: "/",
136
- element: <Layout />,
137
- children: [
138
- {
139
- path: "messages",
140
- element: <ChatLayout />,
141
- children: [
142
- { index: true, element: <EmptyState /> },
143
- { path: ":conversationId", element: <ConversationView /> },
144
- ],
145
- },
146
- ],
147
- },
148
- ]);
149
- ```
150
-
151
- ```tsx
152
- // ChatLayout.tsx -- renders conversation list + Outlet for message view
153
- import { Outlet } from "react-router-dom";
154
- import { CometChatConversations } from "@cometchat/chat-uikit-react";
155
- import { useNavigate } from "react-router-dom";
156
-
157
- export default function ChatLayout() {
158
- const navigate = useNavigate();
159
-
160
- return (
161
- <div style={{ display: "flex", height: "100vh" }}>
162
- <div style={{ width: "360px", borderRight: "1px solid #eee" }}>
163
- <CometChatConversations
164
- onItemClick={(conversation) => {
165
- const id = conversation.getConversationId();
166
- navigate(`/messages/${id}`);
167
- }}
168
- />
169
- </div>
170
- <div style={{ flex: 1, display: "flex", flexDirection: "column" }}>
171
- <Outlet />
172
- </div>
173
- </div>
174
- );
175
- }
176
- ```
177
-
178
- ```tsx
179
- // ConversationView.tsx -- renders messages for the selected conversation
180
- import { useEffect, useState } from "react";
181
- import { useParams } from "react-router-dom";
182
- import {
183
- CometChatMessageHeader,
184
- CometChatMessageList,
185
- CometChatMessageComposer,
186
- } from "@cometchat/chat-uikit-react";
187
- import { CometChat } from "@cometchat/chat-sdk-javascript";
188
-
189
- export default function ConversationView() {
190
- const { conversationId } = useParams();
191
- const [user, setUser] = useState<CometChat.User>();
192
- const [group, setGroup] = useState<CometChat.Group>();
193
-
194
- useEffect(() => {
195
- if (!conversationId) return;
196
-
197
- // NOTE: this `:conversationId` param is OUR custom URL scheme — the prefix is
198
- // chosen by the navigate() in ConversationsList below ("user_<uid>" / "group_<guid>").
199
- // Do NOT confuse it with CometChat's raw Conversation.getConversationId(), which
200
- // for a 1:1 is "<loggedInUid>_user_<peerUid>" (the "_user_" sits in the MIDDLE,
201
- // so startsWith("user_") would never match it). Both ends must agree on the
202
- // custom scheme; branch only on that prefix here.
203
- if (conversationId.startsWith("user_")) {
204
- const uid = conversationId.slice("user_".length);
205
- CometChat.getUser(uid).then((u) => {
206
- setUser(u);
207
- setGroup(undefined);
208
- });
209
- } else if (conversationId.startsWith("group_")) {
210
- const guid = conversationId.slice("group_".length);
211
- CometChat.getGroup(guid).then((g) => {
212
- setUser(undefined);
213
- setGroup(g);
214
- });
215
- }
216
- }, [conversationId]);
217
-
218
- if (!user && !group) return null;
219
-
220
- return (
221
- <>
222
- {user && <CometChatMessageHeader user={user} />}
223
- {group && <CometChatMessageHeader group={group} />}
224
- {user && <CometChatMessageList user={user} hideReplyInThreadOption={true} />}
225
- {group && <CometChatMessageList group={group} hideReplyInThreadOption={true} />}
226
- {user && <CometChatMessageComposer user={user} />}
227
- {group && <CometChatMessageComposer group={group} />}
228
- </>
229
- );
230
- }
231
- ```
232
-
233
- ### useNavigate inside CometChat callbacks
234
-
235
- CometChat's `onItemClick` callbacks can use React Router's `useNavigate` to drive URL changes:
236
-
237
- ```tsx
238
- import { useNavigate } from "react-router-dom";
239
-
240
- function ConversationsList() {
241
- const navigate = useNavigate();
242
-
243
- return (
244
- <CometChatConversations
245
- onItemClick={(conversation) => {
246
- const entity = conversation.getConversationWith();
247
- if (entity instanceof CometChat.User) {
248
- navigate(`/messages/user_${entity.getUid()}`);
249
- } else if (entity instanceof CometChat.Group) {
250
- navigate(`/messages/group_${entity.getGuid()}`);
251
- }
252
- }}
253
- />
254
- );
255
- }
256
- ```
257
-
258
- This works because `useNavigate` returns a stable function that CometChat's callback invokes in the browser.
259
-
260
- ---
261
-
262
- ## 3. v7 framework mode patterns
263
-
264
- React Router v7 in framework mode is a full meta-framework with SSR, file-system routing, loaders, and actions. It has the same SSR concerns as Next.js: CometChat components cannot run on the server.
265
-
266
- > **Visual Builder support on RR v7**: as of v4.3.0 (F19 fix), `cometchat builder export --platform react` post-extract codemod patches the canonical's type-as-value imports so Rolldown (Vite 7+ / RR v7's bundler) builds clean. Previously this combo failed with `[MISSING_EXPORT] "CometChatSettingsInterface" is not exported`. The patched canonical drops into `app/CometChat/` and builds in <1s (691ms client + 59ms server). No additional config required.
267
-
268
- ### SSR prevention
269
-
270
- v7 renders components on the server by default. CometChat components will crash during server rendering. Use a `ClientOnly` wrapper:
271
-
272
- ```tsx
273
- // app/components/ClientOnly.tsx
274
- import { useState, useEffect, type ReactNode } from "react";
275
-
276
- interface ClientOnlyProps {
277
- children: ReactNode;
278
- fallback?: ReactNode;
279
- }
280
-
281
- export function ClientOnly({ children, fallback = null }: ClientOnlyProps) {
282
- const [mounted, setMounted] = useState(false);
283
-
284
- useEffect(() => {
285
- setMounted(true);
286
- }, []);
287
-
288
- return mounted ? <>{children}</> : <>{fallback}</>;
289
- }
290
- ```
291
-
292
- Or use `React.lazy` + `Suspense`:
293
-
294
- ```tsx
295
- import { lazy, Suspense } from "react";
296
-
297
- const ChatView = lazy(() => import("../components/ChatView"));
298
-
299
- export default function MessagesRoute() {
300
- return (
301
- <ClientOnly fallback={<div>Loading chat...</div>}>
302
- <Suspense fallback={<div>Loading chat...</div>}>
303
- <ChatView />
304
- </Suspense>
305
- </ClientOnly>
306
- );
307
- }
308
- ```
309
-
310
- ### CometChatProvider for v7 framework mode
311
-
312
- The provider needs `ClientOnly` wrapping because `useEffect` runs on the client but the module import of `@cometchat/chat-uikit-react` happens on the server too:
313
-
314
- ```tsx
315
- // app/providers/CometChatProvider.tsx
316
- import React, { useEffect, useState, createContext, useContext } from "react";
317
-
318
- interface CometChatContextValue {
319
- isReady: boolean;
320
- error: string | null;
321
- }
322
-
323
- const CometChatContext = createContext<CometChatContextValue>({
324
- isReady: false,
325
- error: null,
326
- });
327
-
328
- export const useCometChat = () => useContext(CometChatContext);
329
-
330
- // Module-level state prevents both double-init AND double-login in React
331
- // StrictMode. Without the loginInFlight guard, a second mount calls
332
- // login() while the first is still pending and the SDK throws
333
- // "Please wait until the previous login request ends."
334
- let initialized = false;
335
- let loginInFlight: Promise<unknown> | null = null;
336
-
337
- // `ensureLoggedIn` is defined inside `setup()` below so it can close over
338
- // the dynamically-imported `CometChatUIKit`. Hoisting it to module scope
339
- // would `ReferenceError` because the static import is intentionally
340
- // removed (SSR safety) — `CometChatUIKit` only exists inside the await.
341
-
342
- export function CometChatProvider({ children }: { children: React.ReactNode }) {
343
- const [isReady, setIsReady] = useState(false);
344
- const [error, setError] = useState<string | null>(null);
345
-
346
- useEffect(() => {
347
- async function setup() {
348
- try {
349
- // Dynamic import to prevent server-side module resolution
350
- const { CometChatUIKit, UIKitSettingsBuilder } = await import(
351
- "@cometchat/chat-uikit-react"
352
- );
353
-
354
- async function ensureLoggedIn(uid: string, authToken?: string): Promise<void> {
355
- const existing = await CometChatUIKit.getLoggedinUser();
356
- if (existing) return;
357
- if (loginInFlight) {
358
- await loginInFlight;
359
- return;
360
- }
361
- loginInFlight = authToken
362
- ? CometChatUIKit.loginWithAuthToken(authToken)
363
- : CometChatUIKit.login(uid);
364
- try {
365
- await loginInFlight;
366
- } finally {
367
- loginInFlight = null;
368
- }
369
- }
370
-
371
- if (!initialized) {
372
- initialized = true;
373
-
374
- const settings = new UIKitSettingsBuilder()
375
- .setAppId(import.meta.env.VITE_COMETCHAT_APP_ID)
376
- .setRegion(import.meta.env.VITE_COMETCHAT_REGION)
377
- .setAuthKey(import.meta.env.VITE_COMETCHAT_AUTH_KEY)
378
- .subscribePresenceForAllUsers()
379
- .build();
380
-
381
- await CometChatUIKit.init(settings);
382
- }
383
-
384
- await ensureLoggedIn("cometchat-uid-1"); // DEVELOPMENT ONLY — see cometchat-production skill
385
-
386
- setIsReady(true);
387
- } catch (e) {
388
- setError(String(e));
389
- }
390
- }
391
-
392
- setup();
393
- }, []);
394
-
395
- if (error) {
396
- return (
397
- <div style={{ color: "red", padding: 16, fontFamily: "monospace" }}>
398
- CometChat Error: {error}
399
- </div>
400
- );
401
- }
402
-
403
- if (!isReady) return null;
404
-
405
- return (
406
- <CometChatContext.Provider value={{ isReady, error }}>
407
- {children}
408
- </CometChatContext.Provider>
409
- );
410
- }
411
- ```
412
-
413
- **Key difference from the plain React provider:** The `import("@cometchat/chat-uikit-react")` is done dynamically inside `useEffect`, NOT at the top level. This prevents the server from trying to resolve the module.
414
-
415
- ### Mount the provider
416
-
417
- **Option A — Chat-only app (all routes use CometChat):**
418
-
419
- Wrap the entire app. This disables SSR for all routes since `ClientOnly` renders nothing on the server.
420
-
421
- ```tsx
422
- // app/root.tsx
423
- import { Outlet } from "react-router";
424
- import { ClientOnly } from "./components/ClientOnly";
425
- import { CometChatProvider } from "./providers/CometChatProvider";
426
-
427
- export default function Root() {
428
- return (
429
- <html lang="en">
430
- <body>
431
- <ClientOnly>
432
- <CometChatProvider>
433
- <Outlet />
434
- </CometChatProvider>
435
- </ClientOnly>
436
- </body>
437
- </html>
438
- );
439
- }
440
- ```
441
-
442
- **Option B — Mixed app (some routes need SSR):**
443
-
444
- Keep the root clean and scope CometChat to a layout route. Non-chat routes keep full SSR.
445
-
446
- ```tsx
447
- // app/root.tsx — no CometChat here, SSR works normally
448
- import { Outlet } from "react-router";
449
-
450
- export default function Root() {
451
- return (
452
- <html lang="en">
453
- <body>
454
- <Outlet />
455
- </body>
456
- </html>
457
- );
458
- }
459
- ```
460
-
461
- ```tsx
462
- // app/routes/chat.tsx — layout route for all /chat/* paths
463
- import { Outlet } from "react-router";
464
- import { ClientOnly } from "../components/ClientOnly";
465
- import { CometChatProvider } from "../providers/CometChatProvider";
466
-
467
- export default function ChatLayout() {
468
- return (
469
- <ClientOnly fallback={<div>Loading chat...</div>}>
470
- <CometChatProvider>
471
- <Outlet />
472
- </CometChatProvider>
473
- </ClientOnly>
474
- );
475
- }
476
- ```
477
-
478
- Then nest chat routes under this layout (e.g. `app/routes/chat.messages.tsx`). Marketing pages, dashboards, and other non-chat routes render server-side as normal.
479
-
480
- **Use Option A** for apps where every page involves chat (messaging apps, social platforms). **Use Option B** for apps that add chat to an existing product (SaaS, marketplaces, support).
481
-
482
- ### File-system routing
483
-
484
- v7 framework mode uses file-based routing. Create a route file:
485
-
486
- ```tsx
487
- // app/routes/messages.tsx
488
- import { lazy, Suspense } from "react";
489
- import { ClientOnly } from "../components/ClientOnly";
490
-
491
- const ChatView = lazy(() => import("../components/ChatView"));
492
-
493
- export default function MessagesRoute() {
494
- return (
495
- <ClientOnly fallback={<div>Loading chat...</div>}>
496
- <Suspense fallback={<div>Loading chat...</div>}>
497
- <ChatView />
498
- </Suspense>
499
- </ClientOnly>
500
- );
501
- }
502
- ```
503
-
504
- ### Loaders and actions
505
-
506
- **NEVER put CometChat initialization or SDK calls in a `loader` or `action`.** Loaders and actions run on the server in v7 framework mode. CometChat requires browser APIs.
507
-
508
- ```tsx
509
- // WRONG -- loader runs on the server
510
- export async function loader() {
511
- const { CometChat } = await import("@cometchat/chat-sdk-javascript");
512
- const user = await CometChat.getUser("uid"); // crashes on server
513
- return { user };
514
- }
515
-
516
- // CORRECT -- use clientLoader if you need chat data at route entry
517
- export async function clientLoader() {
518
- const { CometChat } = await import("@cometchat/chat-sdk-javascript");
519
- const user = await CometChat.getUser("uid");
520
- return { user };
521
- }
522
- ```
523
-
524
- `clientLoader` runs only in the browser. It is the right place for CometChat data fetching at the route level. However, most CometChat integrations do not need loaders at all -- the components handle their own data fetching.
525
-
526
- ---
527
-
528
- ## 4. Outlet patterns for nested conversations
529
-
530
- This pattern works in both v6 and v7. Chat as a parent route with nested child routes:
531
-
532
- ```
533
- /messages → Conversation list (left pane), empty state (right pane)
534
- /messages/:conversationId → Conversation list (left pane), messages (right pane)
535
- ```
536
-
537
- ### v6 route config
538
-
539
- ```tsx
540
- {
541
- path: "messages",
542
- element: <ChatLayout />,
543
- children: [
544
- { index: true, element: <div style={{ flex: 1, display: "flex", alignItems: "center", justifyContent: "center", color: "#999" }}>Select a conversation</div> },
545
- { path: ":conversationId", element: <ConversationView /> },
546
- ],
547
- }
548
- ```
549
-
550
- ### v7 file-system routes
551
-
552
- ```
553
- app/routes/
554
- messages.tsx → ChatLayout (renders <Outlet />)
555
- messages._index.tsx → Empty state
556
- messages.$conversationId.tsx → ConversationView
557
- ```
558
-
559
- ```tsx
560
- // app/routes/messages.tsx
561
- import { Outlet } from "react-router";
562
- import { ClientOnly } from "../components/ClientOnly";
563
- import { lazy, Suspense } from "react";
564
-
565
- const ConversationList = lazy(() => import("../components/ConversationList"));
566
-
567
- export default function MessagesLayout() {
568
- return (
569
- <div style={{ display: "flex", height: "100vh" }}>
570
- <div style={{ width: "360px", borderRight: "1px solid #eee" }}>
571
- <ClientOnly>
572
- <Suspense fallback={<div>Loading...</div>}>
573
- <ConversationList />
574
- </Suspense>
575
- </ClientOnly>
576
- </div>
577
- <div style={{ flex: 1, display: "flex", flexDirection: "column" }}>
578
- <Outlet />
579
- </div>
580
- </div>
581
- );
582
- }
583
- ```
584
-
585
- ---
586
-
587
- ## 5. Environment variables
588
-
589
- ### v6 library mode (Vite-based)
590
-
591
- Same as `cometchat-react-patterns` -- uses `VITE_` prefix:
592
-
593
- ```env
594
- VITE_COMETCHAT_APP_ID=your_app_id
595
- VITE_COMETCHAT_REGION=us
596
- VITE_COMETCHAT_AUTH_KEY=your_auth_key
597
- ```
598
-
599
- Access: `import.meta.env.VITE_COMETCHAT_APP_ID`
600
-
601
- ### v7 framework mode
602
-
603
- Also uses Vite under the hood, so the same `VITE_` prefix applies:
604
-
605
- ```env
606
- VITE_COMETCHAT_APP_ID=your_app_id
607
- VITE_COMETCHAT_REGION=us
608
- VITE_COMETCHAT_AUTH_KEY=your_auth_key
609
- ```
610
-
611
- Server-only variables (for auth token generation in actions) can omit the `VITE_` prefix so they are never exposed to the client bundle:
612
-
613
- ```env
614
- COMETCHAT_AUTH_TOKEN=your_server_secret
615
- ```
616
-
617
- Access server-only vars in loaders/actions via `process.env`:
618
-
619
- ```tsx
620
- // app/routes/api.cometchat-token.tsx (runs server-side only)
621
- export async function action({ request }: ActionFunctionArgs) {
622
- const secret = process.env.COMETCHAT_AUTH_TOKEN;
623
- // ...
624
- }
625
- ```
626
-
627
- > **Note:** `process.env` is available in loaders/actions when using the
628
- > default Node adapter (`@react-router/node`). Other adapters (Cloudflare,
629
- > Deno) expose env differently — check your adapter's docs.
630
-
631
- ---
632
-
633
- ## 6. CSS import
634
-
635
- ### v6 library mode
636
-
637
- Import in `src/main.tsx`:
638
-
639
- ```tsx
640
- import "@cometchat/chat-uikit-react/css-variables.css";
641
- ```
642
-
643
- ### v7 framework mode
644
-
645
- Import in `app/root.tsx`:
646
-
647
- ```tsx
648
- import "@cometchat/chat-uikit-react/css-variables.css";
649
- ```
650
-
651
- Or use the `links` export:
652
-
653
- ```tsx
654
- // app/root.tsx
655
- import cometchatStyles from "@cometchat/chat-uikit-react/css-variables.css?url";
656
-
657
- export function links() {
658
- return [{ rel: "stylesheet", href: cometchatStyles }];
659
- }
660
- ```
661
-
662
- The `?url` suffix tells Vite to return a URL instead of injecting the CSS, which works with React Router's `links` convention.
663
-
664
- ---
665
-
666
- ## 7. Common pitfalls
667
-
668
- ### Loaders are server-side in v7
669
-
670
- The most common mistake in v7 framework mode. Loaders and actions run on the server. Any CometChat code in a loader crashes with `window is not defined`. Use `clientLoader` instead, or handle data fetching in the component.
671
-
672
- ### v7's unstable_middleware
673
-
674
- React Router v7's `unstable_middleware` feature does NOT affect CometChat. CometChat has no middleware requirements. Do not add CometChat-related middleware.
675
-
676
- ### useNavigate in CometChat callbacks
677
-
678
- `useNavigate` works inside CometChat's event callbacks (`onItemClick`, etc.) because these callbacks execute in the browser within the React tree. This is safe:
679
-
680
- ```tsx
681
- const navigate = useNavigate();
682
-
683
- <CometChatConversations
684
- onItemClick={(conv) => navigate(`/messages/${conv.getConversationId()}`)}
685
- />
686
- ```
687
-
688
- ### Don't init in loaders
689
-
690
- Even `clientLoader` is not the right place for CometChat initialization. Init should happen once in the provider (app root), not per-route. `clientLoader` is only appropriate for CometChat data queries (like `CometChat.getUser()`) that need to complete before the route renders.
691
-
692
- ### v6 to v7 migration
693
-
694
- If a project is migrating from v6 library mode to v7 framework mode, the CometChat integration must change:
695
- - Add `ClientOnly` wrapper
696
- - Move from static imports to dynamic imports for CometChat modules
697
- - Move from `createBrowserRouter` routes to file-system routes
698
- - Add SSR guards
699
-
700
- Do not mix v6 and v7 patterns. Detect the mode (section 1) and use the correct pattern.
701
-
702
- ---
703
-
704
- ## 8. Complete integration checklist (v6 library mode)
705
-
706
- 1. Install packages: `npm install @cometchat/chat-uikit-react@^6 @cometchat/chat-sdk-javascript@^4` — **⚠️ keep the `@^6` major pin; never install bare.** v7 is on npm — a bare `npm install @cometchat/chat-uikit-react` pulls it once it's tagged `latest`, and these v6 skills break against the v7 API.
707
- 2. Create `.env` with `VITE_COMETCHAT_APP_ID`, `VITE_COMETCHAT_REGION`, `VITE_COMETCHAT_AUTH_KEY`
708
- 3. Add `.env` to `.gitignore`
709
- 4. Import `@cometchat/chat-uikit-react/css-variables.css` in `src/main.tsx`
710
- 5. Create `src/providers/CometChatProvider.tsx` (uses `import.meta.env.VITE_*`)
711
- 6. Mount `CometChatProvider` in `src/main.tsx` wrapping `<RouterProvider>`
712
- 7. Create `src/pages/ChatPage.tsx` (see `cometchat-placement` for patterns)
713
- 8. Add `{ path: "messages", element: <ChatPage /> }` to the router config
714
- 9. Add a "Messages" link to the layout's nav
715
-
716
- ## 9. Complete integration checklist (v7 framework mode)
717
-
718
- 1. Install packages: `npm install @cometchat/chat-uikit-react@^6 @cometchat/chat-sdk-javascript@^4` — **⚠️ keep the `@^6` major pin; never install bare.** v7 is on npm — a bare `npm install @cometchat/chat-uikit-react` pulls it once it's tagged `latest`, and these v6 skills break against the v7 API.
719
- 2. Create `.env` with `VITE_COMETCHAT_APP_ID`, `VITE_COMETCHAT_REGION`, `VITE_COMETCHAT_AUTH_KEY`
720
- 3. Add `.env` to `.gitignore`
721
- 4. Import `@cometchat/chat-uikit-react/css-variables.css` in `app/root.tsx`
722
- 5. Create `app/components/ClientOnly.tsx` (section 3)
723
- 6. Create `app/providers/CometChatProvider.tsx` with dynamic imports (section 3)
724
- 7. Mount `ClientOnly` + `CometChatProvider` in `app/root.tsx`
725
- 8. Create `app/routes/messages.tsx` with `ClientOnly` + lazy import (section 3)
726
- 9. Add a "Messages" link to the layout's nav
727
- 10. Verify: loaders/actions contain NO CometChat imports
728
-
729
- ## 10. Visual Builder integration (v4.3)
730
-
731
- If the customer picks **Visually** in dispatcher Step 3.1, skills runs `cometchat builder export --platform react --output <target>` to download the canonical `src/CometChat/` + patch settings in one step.
732
-
733
- **Full recipe lives in `cometchat-core` §11 "Visual Builder integration".** This section is a pointer + React Router-specific gotchas:
734
-
735
- ### Framework mode (v7 default)
736
-
737
- - Run `cometchat builder export --platform react --output app/CometChat --json`.
738
- - Create the chat route as `app/routes/chat.client.tsx` — the `.client.tsx` suffix skips SSR for this file.
739
- - Register the route in `app/routes.ts` via `route("chat", "routes/chat.client.tsx")`.
740
-
741
- ### Data mode (library, v6/v7)
742
-
743
- - Run `cometchat builder export --platform react --output src/CometChat --json` (default).
744
- - Same Vite-based init pattern as plain Vite + React (see `cometchat-react-patterns` §9).
745
-
746
- ### ✓ Rolldown handled (Finding F19, fixed in v4.3.0)
747
-
748
- React Router v7's Vite 7+ build uses **Rolldown**, which rejects the canonical CometChat/'s type-as-value imports (e.g. `import { CometChatSettingsInterface } from "../context/CometChatContext"` used in type-only positions) with `[MISSING_EXPORT] "CometChatSettingsInterface" is not exported`. Webpack-based bundlers (CRA, Next.js classic) and rollup (Astro, older Vite) tolerate it as a warning.
749
-
750
- **This is fixed in v4.3.0.** After `cometchat builder export --platform react`, the CLI runs a post-extract codemod (`applyReactRolldownFix`) that rewrites the affected imports with the inline `type` modifier so Rolldown builds clean (verified <1s: 691ms client + 59ms server). No customer action or config required — RR v7 + Visual Builder builds out of the box.
751
-
752
- ### Both modes
753
-
754
- - Pin `@cometchat/chat-uikit-react@6.4.3` + `@cometchat/calls-sdk-javascript@4.2.5`.
755
- - `package.json` needs `cometChatCustomConfig` block (Finding F2).
756
- - Vite 7+ `tsconfig.app.json` requires the relaxation set from `cometchat-core` §11.2.
757
-
758
- If the customer picks **In code**, ignore this section.