cometchat-react-v7-migration
SkillDev toolsLets your agent upgrade a React app from CometChat UI Kit v6 to v7 by applying the breaking-change fixes.
Available today. Use it from your connected AI after setup.
No other account needed.
Add ahel to your AI once: Claude, ChatGPT, Cursor, Claude Code or Codex. Then ask it to use this.
Then ask your AI: use the cometchat-react-v7-migration skill
About this skill
Upgrade a React app from CometChat UI Kit v6 → v7 (`@cometchat/chat-uikit-react` ^6 → ^7). Reads the repo's CometChat usage, applies the breaking-change map (deps, symbol renames, RxJS events → `useCometChatEvents`, DataSource → plugins, templates → plugins, theme prop, calling), fetches the prop-by
What this skill tells your AI
The instructions your AI receives, as published by cometchat/cometchat-skills in skills/cometchat-react-v7-migration/SKILL.md and read by ahel’s review.
Ground truth: migrates a React app FROM
@cometchat/chat-uikit-react@6TO@7. v7 target symbols are catalog-verified vs installed 7.1.0; the v6→v7 breaking-change map is BAKED inreferences/migration-guide.md(distilled from the official migration docs + a real v6.5.4→v7.1.0 export diff). The exhaustive prop-by-prop table is FETCHED from the docs migration.mdtwins. APPEND/transform the user's code — never wipe it; work on a branch and confirm before bulk edits (RULES.md).
Companion skills (read first)
cometchat-react-v7-core— the v7 init/login/render +CometChatProviderthe migrated app lands on. This skill ASSUMES it.cometchat-react-v7-components— the v7 component catalog (the target names).
Use this skill when
"upgrade my v6 UI Kit to v7", "migrate CometChat React v6→v7", "bump @cometchat/chat-uikit-react to v7". Precondition: the project currently has @cometchat/chat-uikit-react@6.
Migration workflow (BAKED)
- Detect the starting point. Confirm
package.jsonhas@cometchat/chat-uikit-react@6(already@7→ STOP, nothing to migrate). Note the bundler (Vite/Next/CRA/React-Router/Astro → env prefix, percometchat-react-v7-patterns) and whether the app uses calls /rxjsevents /DataSource/ message templates. Work on a branch; transform in place, never delete the user's code. - Update dependencies.
npm install @cometchat/chat-uikit-react@7 @cometchat/chat-sdk-javascript@^4.1.13 dompurify@^3.3.1thennpm uninstall rxjs(v7 drops rxjs;dompurifyis required — the kit imports it at runtime; install it explicitly per the official docs, even though it's in the kit'sdependencies). If the app uses calling, bump the Calls SDK to the v7 major:npm install @cometchat/calls-sdk-javascript@5(v7 pins^5.x— verified; it is NOT the same major as the v6-era build). Enabling calling also moves: on the mandatedinitFromSettingspath useuiKit:{callsSDK:{}}(not the classicsetCallingEnabled(true)). - Scan the repo for v6 usage. Grep for the removed/renamed symbols + patterns from
references/migration-guide.md:CometChatDocumentBubble,CometChatCompactMessageComposer,CometChatUrlsFormatter,CometChatTextHighlightFormatter, any*Events(CometChatMessageEvents/CometChatGroupEvents/CometChatCallEvents/CometChatUserEvents/CometChatConversationEvents/CometChatUIEvents),DataSource/DataSourceDecorator/ChatConfigurator,CometChatMessageTemplate/templatesprop,textFormattersprop onCometChatMessageList/CometChatConversations(gone from the lists in v7 —textFormattersitself is NOT removed; see pitfalls),hideError/disableLoadingStateprops,data-themeattribute, localization (getLocalizedString(...),CometChatLocalize, unprefixed i18n keys likegroup_infothat v7 moved undersample_— §7),CometChatUIKitLoginListener, and the removed standalone components (CometChatEmojiKeyboard/CometChatMediaRecorder/CometChatToast/CometChatListItem/CometChatNotificationBadge). Produce the concrete change list. - Apply the breaking-change map (
references/migration-guide.md): symbol renames, RxJS*Events→ theuseCometChatEventshook,DataSource/ChatConfigurator→CometChatMessagePlugin+ thepluginsprop,templatesprop → plugins (textFormattersis NOT removed — relocate it, see pitfalls),data-theme→ thethemeprop, calling →uiKit:{callsSDK:{}}oninitFromSettings(step 2), localization → the v7 method + map v6 keys to the bundledsample_*keys (or register via the INSTANCE methodCometChatLocalize.getSharedInstance()?.addTranslation(...)— NOT a static) — seemigration-guide.md§7; look up the EXACT key in the uikit source (resources/<lang>/translation.json) / docs / GitHub, never guess. For any component's exact prop change NOT in the baked map, FETCH the prop-by-prop table viacometchat-react-v7-core/references/docs-map.md→migration-property-changes. - Wrap the chat tree in
CometChatProviderif it isn't already (v7 requires it above the components; init/login stay imperative and unchanged). - Verify. Build/typecheck passes; NO v6 symbols remain (grep the removed names); the app renders inside
CometChatProvider; migrated events/plugins/calling work. Reusecometchat-react-v7-core"Verify it works".
Common pitfalls (BAKED)
- Leftover
rxjsevent subscriptions — v6*Events.<x>.subscribe()do NOT fire in v7; convert every one touseCometChatEvents((event) => …)(SDK + UI events share one bus). Publish viausePublishEvent(). - Forgetting
CometChatProvider— v7 components read it; symptom = context/"not initialized" errors even though init ran. CometChatMessageTemplate/templatesprops — removed from components; move custom message rendering to aCometChatMessagePluginpassed viaplugins.textFormattersis NOT removed — it stays a prop in v7 (verified vs 7.1.0) onCometChatMessageComposer, the bubble components (Text/Image/Video/Audio/File/…),CometChatSearchandCometChatMessageInformation, but it is GONE fromCometChatMessageList/CometChatConversations. Keep it as a prop on those components. The list's bubbles take formatters from the text plugin'sgetTextFormatters(), so to keep a v6 list-level formatter, override that one method —plugins={[{ ...CometChatTextPlugin, getTextFormatters: () => [/* defaults + yours */] }]}(provider plugins precede the defaults, so it wins).- Dependency drift — missing the new
dompurifypeer dep, or leftoverrxjs, breaks the build; do both halves of step 2. - Calling silently off — v7 needs calling turned on in the init settings (
uiKit: { callsSDK: {} }viaCometChatUIKit.initFromSettings; or the classic.setCallingEnabled(true)onUIKitSettingsBuilder) — not a provider prop; without it, call buttons hide and the Calls SDK never loads. - Bubble routing — the message list now defaults to the multi-attachment bubbles (
CometChatImageBubble→CometChatImagesBubble, singularCometChatFileBubblestill ships); code that imported singular bubble names for the list default may need the plural. - Don't mass-remove
hideError— it's removed from list components but retained onCometChatMessageComposer;textFormatterslikewise still exists on the message-bubble components. Scope the removals; don't blanket-strip.
Verify it works
Build/typecheck is green; a repo-wide grep finds NO removed v6 symbols (CometChatDocumentBubble, CometChatCompactMessageComposer, *Events, DataSource, DataSourceDecorator, ChatConfigurator, CometChatMessageTemplate, CometChatUIKitLoginListener); the app renders inside CometChatProvider; and any migrated events / plugins / calling work. Full prop-by-prop reference: fetch migration-property-changes via cometchat-react-v7-core/references/docs-map.md.
Signals
- GitHub stars
- 114
- Forks
- 2
- Last commit
- Sep 2026
ahel review
K1binfo
installs-packagesK1binfo
installs-packages (in references/migration-guide.md)
Automated review, not a security audit. Ruleset v1+k2.
Advanced
- Catalog kind
- skill
- Key
cometchat-react-v7-migration- Source
- github.com/cometchat/cometchat-skills