{"id":"73aed3e5-b7d8-41d5-a749-f18023822ad2","shortId":"PPCAAw","kind":"skill","title":"cometchat-native-troubleshooting","tagline":"Diagnose CometChat React Native UI Kit integration failures — init/login, gesture handler, pod install, iOS privacy manifest, Android Maven, Metro cache, permissions, calls, extensions, v4-to-v5 upgrade. For push-specific symptoms see cometchat-native-push § 12.","description":"## Purpose\n\nTeaches Claude how to diagnose and fix CometChat React Native integration failures. Covers every category of failure I've seen across Expo + bare RN, with an up-front triage flow so Claude asks the right questions before assuming a fix.\n\n**Read `cometchat-native-core` first** — most \"why doesn't this work\" issues trace to the init/login/wrapper chain explained there.\n\nGround truth: `docs/ui-kit/react-native/troubleshooting.mdx`, `apple-privacy-manifest-guide.mdx`, `upgrading-from-v4.mdx`, and first-hand failure modes from real integrations.\n\n---\n\n## 1. Triage — read project state before guessing\n\nWhen the user reports a problem, gather facts before proposing a fix. Ask + run these first:\n\n### 1a. Which framework?\n\n```bash\n# Expo or bare?\ngrep -E '\"expo\":|\"expo-router\":' package.json\nls -d ios android 2>/dev/null   # bare RN has these dirs at root\nls app.json app.config.js 2>/dev/null\n```\n\n- `expo` in dependencies + no `ios/android` folders → **Expo managed** → route to `cometchat-native-expo-patterns`\n- `ios/` + `android/` folders at root → **bare RN** → route to `cometchat-native-bare-patterns`\n- Both (`expo` + `ios/android`) → bare-after-prebuild. Treat as bare.\n\n### 1b. Is the wrapper chain correct?\n\n```bash\n# Confirm four wrappers in entry file\ngrep -E \"GestureHandlerRootView|SafeAreaProvider|CometChatThemeProvider|CometChatProvider\" \\\n  App.tsx index.js index.ts app/_layout.tsx 2>/dev/null\n```\n\nIf any are missing, that's almost certainly the cause. See `cometchat-native-core` § 3.\n\n### 1c. Is `react-native-gesture-handler` imported first?\n\n```bash\n# Must be line 1 (or 2 with a shebang) of entry\nhead -5 index.js index.ts App.tsx app/_layout.tsx 2>/dev/null\n```\n\nIf the import is missing or below React, swipe gestures and bottom sheets silently break — often only in release builds.\n\n### 1d. Is init complete before login?\n\n```bash\ngrep -A 10 \"CometChatUIKit.init\" src/providers/CometChatProvider.tsx 2>/dev/null\n```\n\nLook for the init-then-login sequence with an `await` or module-level `initialized` flag. Fire-and-forget init is a common cause of \"components don't render.\"\n\n### 1e. Pod install state (iOS)\n\n```bash\nls ios/Pods/ | head -5 2>/dev/null       # should list dozens of pods\ncat ios/Podfile.lock | head -3 2>/dev/null\n```\n\nIf `ios/Pods/` is missing or sparse, native modules aren't linked. `cd ios && pod install && cd ..` is the fix.\n\n### 1f. Package deps\n\n```bash\n# Check the full UI Kit peer-dep set is installed\nfor dep in \\\n  @cometchat/chat-sdk-react-native \\\n  @cometchat/chat-uikit-react-native \\\n  react-native-gesture-handler \\\n  react-native-safe-area-context \\\n  react-native-svg \\\n  @react-native-async-storage/async-storage; do\n  node -e \"try{require.resolve('$dep'); console.log('✓ $dep')}catch(e){console.log('✗ MISSING: $dep')}\"\ndone\n```\n\nMissing peer deps → install + `pod install` (bare) or `expo install` (Expo) + rebuild.\n\n---\n\n## 2. Symptom → fix lookup tables\n\nQuick-reference tables. Work through in order; if none match, drop into § 3 deep-dives.\n\n### 2a. Initialization + login\n\n| Symptom | Likely cause | Fix |\n|---|---|---|\n| `CometChatUIKit.init()` fails silently | Invalid `APP_ID` / `REGION` / `AUTH_KEY` | Re-verify from dashboard → your app → Credentials |\n| Components render nothing after login | `init()` not awaited before mount | Use the provider pattern from `cometchat-native-core` § 6 with `isReady` gating |\n| Blank screen, no errors | Component mounted before init completed | Conditionally render: `if (!isReady) return null` |\n| `getLoggedInUser()` returns `null` | Login not called or session expired | Call `CometChatUIKit.login({ uid })` after init resolves |\n| Login fails: \"UID not found\" | User doesn't exist in CometChat | Create via dashboard, SDK, or REST API. For dev, use `cometchat-uid-1` through `cometchat-uid-5` (pre-seeded) |\n| \"Please wait until the previous login request ends\" | `login()` called concurrently (React StrictMode double-mount / navigation remount) | Use the `ensureLoggedIn` module-level promise guard from `cometchat-native-core` § 2 |\n| `sendTextMessage()` fails | Not logged in or invalid receiver | Verify `getLoggedInUser()` returns a user + receiver user/group object exists |\n| Production build exposes Auth Key | Using `authKey` in production | Switch to server-minted auth tokens via `login({ authToken })`. See `cometchat-native-production` |\n\n### 2b. Gesture handler + wrapper chain\n\n| Symptom | Likely cause | Fix |\n|---|---|---|\n| Composer swipe gestures not working | `import \"react-native-gesture-handler\"` not at TOP of entry file | Move to line 1 of `index.js` / `index.ts` / Expo Router's `app/_layout.tsx` |\n| BottomSheet doesn't open on swipe | Missing `GestureHandlerRootView` wrapper | Wrap at app root with `<GestureHandlerRootView style={{ flex: 1 }}>` |\n| Content overlaps status bar / home indicator | Missing `SafeAreaProvider` | Wrap inside `GestureHandlerRootView` with `<SafeAreaProvider>` |\n| Theme tokens return undefined | Missing `CometChatThemeProvider` | Add wrapper. See `cometchat-native-core` § 3 for the full chain |\n| \"Couldn't find SafeArea context\" error | `SafeAreaView` used outside `SafeAreaProvider` | Add `SafeAreaProvider` at root, or use plain `View` inside chat screens |\n| Release build: swipe/gesture broken, dev build fine | `react-native-gesture-handler` not line 1 (some bundlers defer it) | Move to line 1 unconditionally |\n\n### 2c. iOS build failures\n\n| Symptom | Likely cause | Fix |\n|---|---|---|\n| `No such module 'RNGestureHandler'` | Pods not installed | `cd ios && pod install && cd ..` + rebuild |\n| `Undefined symbol: _OBJC_CLASS_$_RNCAsyncStorage` | Pods out of sync after `npm install` | `cd ios && pod install && cd ..` |\n| `TurboModuleRegistry.getEnforcing(...)` crash at runtime | Native module not linked | `cd ios && pod install && cd ..` + reset Metro cache (`--reset-cache`) |\n| App Store rejection `ITMS-91053` | Missing Apple Privacy Manifest | Add `ios/<App>/PrivacyInfo.xcprivacy` with 4 API types. See `cometchat-native-bare-patterns` § 2c |\n| Simulator build fails: \"arm64 excluded\" | Architecture mismatch on Apple Silicon | Add `EXCLUDED_ARCHS[sdk=iphonesimulator*]` post_install in Podfile. See `cometchat-native-features` § 3c |\n| Camera/mic permission dialog doesn't appear | Missing `NSCameraUsageDescription` / `NSMicrophoneUsageDescription` | Add to `ios/<App>/Info.plist` (bare) or `app.json` `ios.infoPlist` (Expo) |\n| iOS build fails: \"deployment target too low\" | Calls SDK needs 12+ | Set `IPHONEOS_DEPLOYMENT_TARGET = '12.0'` in Podfile post_install |\n| Expo Go crashes: \"Main module field cannot be resolved\" | Expo Go doesn't support native modules | Use dev builds: `npx expo run:ios` or `eas build --profile development` |\n\n### 2d. Android build failures\n\n| Symptom | Likely cause | Fix |\n|---|---|---|\n| `Could not find :react-native-async-storage_async-storage:` | Local Maven repo entry missing | Add to `android/build.gradle` `allprojects.repositories` — see `cometchat-native-bare-patterns` § 3b |\n| Build crashes on launch | `compileSdkVersion` too low | Set `compileSdkVersion` to 33+ and `minSdkVersion` to 24+ in `android/app/build.gradle` |\n| \"Permission denied\" when picking photos | Missing Android permissions | Add `READ_MEDIA_IMAGES` (API 33+) or `READ_EXTERNAL_STORAGE` (API ≤32) to `AndroidManifest.xml` |\n| \"Camera permission denied\" | Missing permission in manifest or runtime denial | Add `CAMERA` to `AndroidManifest.xml` + verify runtime-grant flow |\n| Gradle sync fails after `npm install` | Native module autolinking stale | `cd android && ./gradlew clean && cd ..` then rebuild |\n| `Unable to delete file: ...node_modules/...` | Metro lockfile on Windows (if cross-OS) | Restart Metro + IDE |\n\n### 2e. Metro / JS runtime\n\n| Symptom | Likely cause | Fix |\n|---|---|---|\n| \"Unable to resolve module ...\" for a dep that IS installed | Metro cache stale | Stop Metro, run with `--reset-cache`: `npx react-native start --reset-cache` or `npx expo start --clear` |\n| Fast Refresh doesn't pick up new deps | Native dep change (requires rebuild) | Restart Metro + rebuild (iOS/Android) |\n| \"Maximum update depth exceeded\" after theme change | Theme object recreated each render | Define theme at module scope or in `useMemo(() => ..., [])` |\n| App crashes on first JS load | Entry file error (syntax or import order) | Check `index.js` — `react-native-gesture-handler` should be line 1 |\n\n### 2f. Theming\n\n| Symptom | Likely cause | Fix |\n|---|---|---|\n| Theme overrides don't apply | Missing `CometChatThemeProvider` wrapper | Add at app root. See `cometchat-native-theming` § 2 |\n| Dark mode doesn't switch when system toggled | `mode` hardcoded to `\"light\"` / `\"dark\"` | Omit the `mode` field to follow system |\n| Custom color shows as fallback | Color not a hex string | Use `#RRGGBB` format. `rgb()` / named colors / `hsl()` break the extendedPrimary auto-derivation |\n| Custom font shows system default (iOS) / crashes (Android) | Font not loaded before render | Gate the provider on font loading (Expo `useFonts` or bare `react-native-asset`) |\n| Icon color not changing via `imageStyle` | Only `tintColor`, `height`, `width` work on default SVG icons | Use `tintColor`. Other props are ignored for built-in icons |\n| `useTheme()` returns undefined | Called outside `CometChatThemeProvider` | Ensure the component is a descendant of the provider |\n\n### 2g. Components\n\n| Symptom | Likely cause | Fix |\n|---|---|---|\n| Slot view (`TitleView`, `LeadingView`, etc.) renders nothing | Slot returned `null` / `undefined` | Slot must return valid JSX |\n| Empty message list despite sent messages | `user` vs `group` prop mixed up | Pass exactly one of `user` OR `group` — never both, never neither |\n| \"Reply in Thread\" option does nothing when tapped | Thread panel not wired | Set `hideReplyInThreadOption` (see `cometchat-native-components` § 11) OR wire a thread panel (§ 2b) |\n| `onItemPress` callback not firing | Wrong prop name (RN uses `Press` not `Click`) | It's `onItemPress`, not `onItemClick` — web and RN diverge here |\n| Conversations list empty but data exists | Wrong request builder | Check `conversationsRequestBuilder` filters (tags, types) |\n| List components collapse to zero height | Container has no bounded height | Wrap in `<View style={{ flex: 1 }}>` or explicit `height: N`. See `cometchat-native-placement` Hard rule #8 |\n| Component renders but data never loads | User/group passed as UID string instead of `CometChat.User`/`Group` instance | `await CometChat.getUser(uid)` first, pass the resolved object |\n\n### 2h. Calling\n\n| Symptom | Likely cause | Fix |\n|---|---|---|\n| Call buttons missing from MessageHeader | `@cometchat/calls-sdk-react-native` not installed | Install + rebuild. See `cometchat-native-features` § 3 |\n| Incoming call UI doesn't show | `CometChatIncomingCall` not mounted or listener not registered | Register `CometChat.addCallListener(...)` and mount `<CometChatIncomingCall>` at app root |\n| Call connects but no audio/video | Missing Podfile settings or Android SDK versions | Check `IPHONEOS_DEPLOYMENT_TARGET = 12.0` + Android `minSdkVersion = 24` |\n| WebRTC errors on load | Missing peer deps | Install `react-native-webrtc` + `@react-native-community/netinfo` + `react-native-background-timer` + `react-native-callstats` |\n| Call crashes on Android after accept | Permissions denied at runtime | Request `RECORD_AUDIO` + `CAMERA` runtime permissions before call |\n| `onIncomingCallReceived` silent | Listener registered before login completes | Register the listener INSIDE the `useEffect` that runs after login |\n\n### 2i. Extensions\n\n| Symptom | Likely cause | Fix |\n|---|---|---|\n| Polls option missing from composer | Extension not enabled in dashboard | `cometchat features enable polls --json` or toggle in dashboard → Features |\n| Stickers not rendering | Sticker extension not enabled | Same as above — enable via CLI |\n| Extension enabled but UI doesn't appear | Cached session — hard reload needed | Stop Metro, clear cache (`--reset-cache`), rebuild |\n| Extension says enabled but `auto_wired_in_uikit: false` | Needs `extensions` field on `CometChatUIKit.init({ ... })` | Add `extensions: [new StickersExtension(), ...]` to the init settings — see `cometchat-native-features` § 2 |\n| Message translation \"Translate\" option missing | Extension not enabled | Enable `MessageTranslation` via CLI / dashboard |\n\n### 2j. AI features\n\n| Symptom | Likely cause | Fix |\n|---|---|---|\n| AI suggestions don't appear | AI feature not enabled in dashboard | Enable via dashboard → AI → individual feature |\n| Smart Replies not showing | Smart Replies extension off | Enable via CLI: `cometchat features enable smart-replies` |\n| Conversation Starter missing | Feature off + no conversation context | Enable feature + ensure chat has at least one previous message |\n\n### 2k. Localization\n\n| Symptom | Likely cause | Fix |\n|---|---|---|\n| UI text not translated | Language code mismatch | Use full codes like `en-US`, not short `en` |\n| Auto-detection not working | `react-native-localize` missing | Install: `npm install react-native-localize` + pod install |\n| Custom translations not applied | Missing `CometChatI18nProvider` | Wrap app inside `CometChatThemeProvider` with `<CometChatI18nProvider>` |\n\n### 2l. Events\n\n| Symptom | Likely cause | Fix |\n|---|---|---|\n| Listener doesn't fire | Wrong event name | Check `docs/events.mdx` for exact event names (e.g., `ccMessageSent` not `onMessageSent`) |\n| Listener fires twice | Duplicate registration (common with hot reload / remount) | Remove in `useEffect` cleanup: `return () => CometChatUIEventHandler.removeMessageListener(id)` |\n| Listener ID collision | Hardcoded ID reused across components | Use a unique constant per component: `const LISTENER_ID = \"APP_SCREEN_LISTENER\"` |\n| Call events not received | `CometChat.addCallListener` registered before login | Move registration into `useEffect` after login completes |\n\n### 2m. Production / auth tokens\n\n| Symptom | Likely cause | Fix |\n|---|---|---|\n| `login({ authToken })` fails: \"user does not exist\" | User not created in CometChat before token mint | Create user server-side via REST API on your signup flow. See `cometchat-native-production` § 6 |\n| Token endpoint returns 401 | Backend auth check failing | Verify `Authorization: Bearer <jwt>` header is attached to the fetch |\n| 429 rate limit on token endpoint | Minting tokens too often (e.g. per screen mount) | Cache client-side, reuse until expiry. See `cometchat-native-production` § 10 |\n| SDK disconnects after a few hours | Token expired | Wire `onDisconnected` listener to re-fetch + re-login. See `cometchat-native-production` § 5c |\n| `CometChatUIKit.loginWithAuthToken` not found | Wrong API name | It's `CometChatUIKit.login({ authToken })` — same method as dev, different key |\n\n---\n\n## 3. Deep dives on common failures\n\n### 3a. \"The most common 'why is my chat blank' bug\"\n\nCometChat components fill 100% of their parent's height. If the parent has no bounded height, the components render at 0px and look empty.\n\nDiagnostic:\n\n```bash\ngrep -B5 -A5 \"CometChatMessageList\\|CometChatConversations\" src/**/*.tsx | grep -B2 -A2 \"style\"\n```\n\nLook for the message list's parent. One of these must be true:\n\n- Parent has `flex: 1`\n- Parent has an explicit `height: N`\n- Parent is a flex column with the list getting `flex: 1`\n\nBroken example:\n```tsx\n<ScrollView>\n  <CometChatMessageList user={user} />   {/* ← ScrollView doesn't constrain height */}\n</ScrollView>\n```\n\nFixed:\n```tsx\n<View style={{ flex: 1 }}>\n  <CometChatMessageList user={user} hideReplyInThreadOption />\n</View>\n```\n\n### 3b. Apple Privacy Manifest rejection (`ITMS-91053`)\n\nApple's App Store Connect rejects RN apps that use certain APIs without declaring them in `PrivacyInfo.xcprivacy`. The CometChat kit (through React Native + `react-native-video`) triggers 4 of these APIs.\n\nFull manifest content is in `cometchat-native-bare-patterns` § 2c. Required reason codes:\n\n| API | Code |\n|---|---|\n| FileTimestamp | `C617.1` |\n| UserDefaults | `CA92.1` |\n| SystemBootTime | `35F9.1` |\n| DiskSpace | `E174.1` |\n\nIf the user's rejection email lists OTHER API categories, their app uses additional Apple APIs through other SDKs (analytics, crash reporters, etc.). Add those codes too — the CometChat-specific 4 aren't exhaustive for all apps.\n\nAfter updating:\n1. `cd ios && pod install && cd ..`\n2. Rebuild the archive\n3. Resubmit\n\n### 3c. Metro cache issues (post-dep-install \"not found\" errors)\n\nHappens when you `npm install` a native module and Metro's bundler still has the old module graph cached.\n\n```bash\n# Full reset\nwatchman watch-del-all 2>/dev/null          # watchman (if installed)\nrm -rf $TMPDIR/metro-*                       # Metro cache on macOS\nrm -rf $TMPDIR/haste-map-*                   # Haste cache on macOS\nrm -rf node_modules\nnpm install\ncd ios && pod install && cd ..               # iOS only\nnpx react-native start --reset-cache         # bare\n# OR for Expo:\nnpx expo start --clear\n```\n\nIf the error persists after a clean cache + pod install, the native module isn't autolinked. Check `react-native.config.js` for exclusions.\n\n### 3d. \"App crashes on first launch\" — entry file order\n\n`index.js` MUST have `import \"react-native-gesture-handler\"` as line 1. Not line 2. Not after a `// comment`. Not after a `\"use strict\"`. Literally line 1.\n\nWrong:\n```js\nimport React from \"react\";              // ← line 1\nimport \"react-native-gesture-handler\";  // ← line 2 — TOO LATE\n```\n\nRight:\n```js\nimport \"react-native-gesture-handler\";  // ← line 1\nimport React from \"react\";\n```\n\nFor Expo Router, the same rule applies to `app/_layout.tsx`.\n\n### 3e. Push notification issues\n\nPush setup is covered end-to-end in `cometchat-native-push`. That skill\nhas:\n\n- § 3 APNs p8 setup (Apple Developer portal)\n- § 4 FCM setup (Firebase project + service account)\n- § 5 CometChat dashboard provider upload (dev + prod for iOS)\n- § 7 Client registration with `CometChatNotifications.registerPushToken(token, platform, providerId)` (the correct API — not `CometChat.registerTokenForPushNotification`)\n- § 9 Foreground display + tap-to-deep-link handlers\n- § 12 Troubleshooting table mapping symptoms to fixes (production APNs cert missing, token registered before login, Expo Go can't receive push, etc.)\n\nWhen diagnosing a push issue, route the user to `cometchat-native-push § 12`\nrather than re-triaging here.\n\n---\n\n## 4. v4 → v5 upgrade gotchas\n\nIf the user is upgrading from `@cometchat/chat-uikit-react-native@4`, these are the common breakages. Full migration guide: `docs/upgrading-from-v4.mdx`.\n\n| v4 | v5 | Notes |\n|---|---|---|\n| `CometChatContext` provider | `CometChatThemeProvider` + `CometChatI18nProvider` | Split into theme + i18n providers |\n| `<CometChatConversationsWithMessages>` composite | `<CometChatConversations>` + navigate to separate screen | Composite component removed; use two-screen navigation pattern |\n| `theme` prop on components | Theme via `CometChatThemeProvider` only | Per-component theme prop removed |\n| `Palette` object | Color tokens under `theme.color` | Renamed + restructured |\n| `onClick` callback names | `onPress` callback names | React Native convention |\n| `CometChat.login(uid, authKey)` | `CometChatUIKit.login({ uid })` | Object-form argument |\n| Native deps in `peerDependencies` | Must explicitly install peer deps | See `cometchat-native-core` § 9 |\n| Single NPM package for calls | Separate `@cometchat/calls-sdk-react-native` package | Calls broken out |\n\n### Upgrade sequence\n\n```bash\n# 1. Update the main kit\nnpm install @cometchat/chat-uikit-react-native@latest\n\n# 2. Install the full peer-dep set (v5 doesn't auto-install them like v4 did)\nnpm install @cometchat/chat-sdk-react-native \\\n  @react-native-async-storage/async-storage \\\n  @react-native-clipboard/clipboard \\\n  @react-native-community/datetimepicker \\\n  react-native-gesture-handler react-native-localize \\\n  react-native-safe-area-context react-native-svg \\\n  react-native-video dayjs punycode\n\n# 3. iOS\ncd ios && pod install && cd ..\n\n# 4. Android — add the local Maven repo for async-storage\n#    (see cometchat-native-bare-patterns § 3b)\n\n# 5. Entry file — add `import \"react-native-gesture-handler\"` as line 1\n#    (new requirement in v5)\n\n# 6. Replace `<CometChatContext>` with the 4-wrapper chain\n#    (see cometchat-native-core § 3)\n\n# 7. Split composite components — e.g. `<CometChatConversationsWithMessages>`\n#    becomes two screens with navigation\n\n# 8. Rename `onClick*` → `onPress*` throughout\n\n# 9. Replace `Palette` → theme tokens\n\n# 10. Rebuild + test\n```\n\n---\n\n## 5. Escalation — when the above doesn't solve it\n\nIf none of the lookup tables or deep dives apply:\n\n1. **Read the raw error.** RN errors are usually specific (\"Module 'X' not found in app 'Y'\" is different from \"TurboModuleRegistry.getEnforcing\").\n2. **Check the dev console + native logs.** For iOS: Xcode → View → Debug Area → Activate Console. For Android: `adb logcat | grep -E \"cometchat|CometChat|ReactNative\"`.\n3. **Search the upstream docs MCP** (`cometchat-docs` if installed).\n4. **Search the sample app** (`examples/SampleApp/` or `examples/SampleAppExpo/`) for a working version of the pattern the user is trying.\n5. **If the issue is a kit bug**, file at https://github.com/cometchat/cometchat-uikit-react-native/issues with a minimal repro.\n\n---\n\n## 6. Hard rules (diagnostic best-practice)\n\n1. **Don't assume — triage first.** § 1 gets the framework, wrapper chain, pod state, and dep list before proposing a fix. A \"I don't see messages\" could be 10 different things.\n2. **Don't suggest \"try reinstalling node_modules\" as a first step.** It's rarely the actual fix and it takes minutes; check the entry file, wrapper chain, and pod state first.\n3. **Always verify against the ground-truth doc** (`troubleshooting.mdx`). If a user's symptom matches a table row, use the doc's fix verbatim — don't paraphrase.\n4. **Never guess a fix that requires code changes without first gathering facts.** Changing code based on a wrong hypothesis wastes user time.\n5. **When recommending a rebuild, say why + what to rebuild.** \"pod install + rebuild iOS\" is more useful than \"try rebuilding.\"\n6. **If a symptom matches the Apple Privacy Manifest rejection, always paste the full 4-code XML.** Don't describe it; show it.\n\n---\n\n## Skill routing reference\n\n| Skill | When to route |\n|---|---|\n| `cometchat-native-core` | Most \"doesn't work\" bugs trace back here — init/login/wrapper chain |\n| `cometchat-native-components` | Wrong prop / slot view / request builder |\n| `cometchat-native-placement` | Blank chat / bounded-height issues |\n| `cometchat-native-expo-patterns` | Expo-specific build errors (dev client required, `expo install`) |\n| `cometchat-native-bare-patterns` | Bare RN build errors (pod install, Android Maven, privacy manifest) |\n| `cometchat-native-theming` | Theme not applying, dark mode not switching, font not loading |\n| `cometchat-native-features` | Calls don't work, extension UI missing after enable |\n| `cometchat-native-customization` | Formatter not rendering, listener not firing, template not showing |\n| `cometchat-native-production` | 401 on token fetch, user-does-not-exist on login |\n| `cometchat-native-troubleshooting` | This skill — cross-category diagnosis + v4→v5 upgrade |","tags":["cometchat","native","troubleshooting","skills","agent-skills","ai-agent","chat","claude-code","cursor","messaging","nextjs","react"],"capabilities":["skill","source-cometchat","skill-cometchat-native-troubleshooting","topic-agent-skills","topic-ai-agent","topic-chat","topic-claude-code","topic-cometchat","topic-cursor","topic-messaging","topic-nextjs","topic-react","topic-react-native","topic-ui-kit"],"categories":["cometchat-skills"],"synonyms":[],"warnings":[],"endpointUrl":"https://skills.sh/cometchat/cometchat-skills/cometchat-native-troubleshooting","protocol":"skill","transport":"skills-sh","auth":{"type":"none","details":{"cli":"npx skills add cometchat/cometchat-skills","source_repo":"https://github.com/cometchat/cometchat-skills","install_from":"skills.sh"}},"qualityScore":"0.463","qualityRationale":"deterministic score 0.46 from registry signals: · indexed on github topic:agent-skills · 27 github stars · SKILL.md body (23,387 chars)","verified":false,"liveness":"unknown","lastLivenessCheck":null,"agentReviews":{"count":0,"score_avg":null,"cost_usd_avg":null,"success_rate":null,"latency_p50_ms":null,"narrative_summary":null,"summary_updated_at":null},"enrichmentModel":"deterministic:skill-github:v1","enrichmentVersion":1,"enrichedAt":"2026-05-18T19:04:55.216Z","embedding":null,"createdAt":"2026-05-07T13:05:15.571Z","updatedAt":"2026-05-18T19:04:55.216Z","lastSeenAt":"2026-05-18T19:04:55.216Z","tsv":"'-3':369 '-5':277,358 '-91053':854,2137 '/async-storage':431,2688 '/clipboard':2693 '/cometchat/cometchat-uikit-react-native/issues':2908 '/datetimepicker':2698 '/dev/null':162,174,238,283,317,360,371,2285 '/gradlew':1069 '/info.plist':910 '/netinfo':1566 '/privacyinfo.xcprivacy':861 '0px':2059 '1':120,268,581,692,717,783,791,1192,1451,2092,2109,2126,2234,2372,2387,2395,2415,2653,2761,2821,2920,2926 '10':313,1982,2799,2949 '100':2042 '11':1392 '12':43,926,2494,2529 '12.0':931,1546 '1a':143 '1b':214 '1c':255 '1d':304 '1e':349 '1f':391 '2':161,173,237,270,282,316,359,370,458,621,1216,1697,2240,2284,2375,2403,2662,2842,2952 '24':1013,1549 '2a':480 '2b':663,1398 '2c':793,872,2180 '2d':964 '2e':1091 '2f':1193 '2g':1328 '2h':1488 '2i':1611 '2j':1711 '2k':1770 '2l':1823 '2m':1898 '3':254,476,743,1509,2023,2244,2449,2724,2778,2866,2984 '32':1035 '33':1009,1029 '35f9.1':2191 '3a':2029 '3b':998,2131,2748 '3c':897,2246 '3d':2352 '3e':2429 '4':863,2166,2225,2456,2536,2548,2731,2770,2877,3012,3069 '401':1942,3193 '429':1956 '5':586,2463,2749,2802,2896,3035 '5c':2006 '6':523,1938,2766,2913,3055 '7':2472,2779 '8':1463,2789 '9':2485,2638,2794 'a2':2074 'a5':2067 'accept':1581 'account':2462 'across':65,1869 'activ':2855 'actual':2968 'adb':2859 'add':736,758,859,883,907,988,1024,1048,1207,1684,2217,2733,2752 'addit':2207 'ai':1712,1718,1723,1732 'allprojects.repositories':991 'almost':245 'alway':2985,3065 'analyt':2213 'android':21,160,191,965,1022,1068,1267,1539,1547,1579,2732,2858,3145 'android/app/build.gradle':1015 'android/build.gradle':990 'androidmanifest.xml':1037,1051 'api':574,864,1028,1034,1928,2011,2149,2169,2184,2202,2209,2482 'apn':2450,2502 'app':491,502,711,850,1169,1209,1528,1819,1880,2140,2145,2205,2231,2353,2836,2881 'app.config.js':172 'app.json':171,913 'app.tsx':233,280 'app/_layout.tsx':236,281,699,2428 'appear':903,1656,1722 'appl':856,881,2132,2138,2208,2453,3061 'apple-privacy-manifest-guide.mdx':109 'appli':1203,1815,2426,2820,3155 'arch':885 'architectur':878 'archiv':2243 'area':420,2712,2854 'aren':380,2226 'argument':2623 'arm64':876 'ask':78,139 'asset':1286 'assum':83,2923 'async':429,978,981,2686,2740 'async-storag':980,2739 'attach':1952 'audio':1588 'audio/video':1534 'auth':494,642,653,1900,1944 'authkey':645,2617 'author':1948 'authtoken':657,1907,2016 'auto':1258,1674,1794,2674 'auto-deriv':1257 'auto-detect':1793 'auto-instal':2673 'autolink':1065,2347 'await':328,511,1480 'b2':2073 'b5':2066 'back':3095 'backend':1943 'background':1570 'bar':721 'bare':67,149,163,195,202,208,213,452,870,911,996,1282,2178,2324,2746,3137,3139 'bare-after-prebuild':207 'base':3027 'bash':146,220,264,310,354,394,2064,2276,2652 'bearer':1949 'becom':2784 'best':2918 'best-practic':2917 'blank':527,2037,3113 'bottom':295 'bottomsheet':700 'bound':1444,2053,3116 'bounded-height':3115 'break':298,1254 'breakag':2553 'broken':772,2110,2648 'bug':2038,2903,3093 'build':303,640,770,774,795,874,917,954,961,966,999,3127,3141 'builder':1429,3108 'built':1310 'built-in':1309 'bundler':785,2268 'button':1495 'c617.1':2187 'ca92.1':2189 'cach':24,846,849,1110,1118,1126,1657,1665,1668,1970,2248,2275,2293,2300,2323,2339 'call':26,547,551,599,923,1316,1489,1494,1511,1530,1576,1593,1883,2643,2647,3167 'callback':1400,2607,2610 'callstat':1575 'camera':1038,1049,1589 'camera/mic':898 'cannot':942 'cat':366 'catch':440 'categori':59,2203,3212 'caus':248,343,485,670,799,970,1097,1197,1332,1492,1615,1716,1774,1827,1904 'ccmessages':1843 'cd':383,387,808,812,826,830,839,843,1067,1071,2235,2239,2309,2313,2726,2730 'cert':2503 'certain':246,2148 'chain':103,218,667,747,2772,2931,2979,3098 'chang':1142,1155,1290,3020,3025 'chat':767,1763,2036,3114 'check':395,1182,1430,1542,1836,1945,2348,2843,2974 'class':817 'claud':46,77 'clean':1070,2338 'cleanup':1859 'clear':1131,1664,2331 'cli':1649,1709,1745 'click':1410 'client':1972,2473,3130 'client-sid':1971 'clipboard':2692 'code':1781,1785,2183,2185,2219,3019,3026,3070 'collaps':1437 'collis':1865 'color':1238,1242,1252,1288,2600 'column':2103 'cometchat':2,6,40,52,88,186,200,251,520,567,579,584,618,660,740,868,894,994,1213,1389,1458,1506,1627,1694,1746,1917,1935,1979,2003,2039,2156,2176,2223,2443,2464,2526,2635,2744,2775,2863,2864,2873,3086,3100,3110,3120,3135,3150,3164,3177,3190,3205 'cometchat-doc':2872 'cometchat-native-bare-pattern':199,867,993,2175,2743,3134 'cometchat-native-compon':1388,3099 'cometchat-native-cor':87,250,519,617,739,2634,2774,3085 'cometchat-native-custom':3176 'cometchat-native-expo-pattern':185,3119 'cometchat-native-featur':893,1505,1693,3163 'cometchat-native-plac':1457,3109 'cometchat-native-product':659,1934,1978,2002,3189 'cometchat-native-push':39,2442,2525 'cometchat-native-them':1212,3149 'cometchat-native-troubleshoot':1,3204 'cometchat-specif':2222 'cometchat-uid':578,583 'cometchat.addcalllistener':1524,1887 'cometchat.getuser':1481 'cometchat.login':2615 'cometchat.registertokenforpushnotification':2484 'cometchat.user':1477 'cometchat/calls-sdk-react-native':1499,2645 'cometchat/chat-sdk-react-native':409,2682 'cometchat/chat-uikit-react-native':410,2547,2660 'cometchatcontext':2561 'cometchatconvers':2069 'cometchati18nprovider':1817,2564 'cometchatincomingcal':1516 'cometchatmessagelist':2068,2113,2127 'cometchatnotifications.registerpushtoken':2476 'cometchatprovid':232 'cometchatthemeprovid':231,735,1205,1318,1821,2563,2590 'cometchatuieventhandler.removemessagelistener':1861 'cometchatuikit.init':314,487,1683 'cometchatuikit.login':552,2015,2618 'cometchatuikit.loginwithauthtoken':2007 'comment':2379 'common':342,1851,2027,2032,2552 'communiti':1565,2697 'compilesdkvers':1003,1007 'complet':307,535,1600,1897 'compon':345,504,531,1321,1329,1391,1436,1464,1870,1876,2040,2056,2576,2587,2594,2782,3102 'compos':672,1621 'composit':2570,2575,2781 'concurr':600 'condit':536 'confirm':221 'connect':1531,2142 'consol':2846,2856 'console.log':438,442 'const':1877 'constant':1874 'constrain':2119 'contain':1441 'content':718,2172 'context':421,752,1759,2713 'convent':2614 'convers':1421,1752,1758 'conversationsrequestbuild':1431 'core':90,253,522,620,742,2637,2777,3088 'correct':219,2481 'could':972,2947 'couldn':748 'cover':57,2436 'crash':832,938,1000,1170,1266,1577,2214,2354 'creat':568,1915,1921 'credenti':503 'cross':1086,3211 'cross-categori':3210 'cross-o':1085 'custom':1237,1260,1812,3179 'd':158 'dark':1217,1229,3156 'dashboard':500,570,1626,1635,1710,1728,1731,2465 'data':1425,1467 'dayj':2722 'debug':2853 'declar':2151 'deep':478,2024,2491,2818 'deep-div':477 'default':1264,1299 'defer':786 'defin':1161 'del':2282 'delet':1076 'deni':1017,1040,1583 'denial':1047 'dep':393,402,407,437,439,444,448,1105,1139,1141,1556,2252,2625,2632,2668,2935 'depend':177 'deploy':919,929,1544 'depth':1151 'deriv':1259 'descend':1324 'describ':3074 'despit':1353 'detect':1795 'dev':576,773,953,2020,2468,2845,3129 'develop':963,2454 'diagnos':5,49,2517 'diagnosi':3213 'diagnost':2063,2916 'dialog':900 'differ':2021,2839,2950 'dir':167 'disconnect':1984 'diskspac':2192 'display':2487 'dive':479,2025,2819 'diverg':1419 'doc':2870,2874,2992,3005 'docs/events.mdx':1837 'docs/ui-kit/react-native/troubleshooting.mdx':108 'docs/upgrading-from-v4.mdx':2557 'doesn':94,563,701,901,947,1134,1219,1513,1654,1830,2117,2671,2807,3090 'done':445 'doubl':604 'double-mount':603 'dozen':363 'drop':474 'duplic':1849 'e':151,228,434,441,2862 'e.g':1842,1966,2783 'e174.1':2193 'ea':960 'email':2199 'empti':1350,1423,2062 'en':1788,1792 'en-us':1787 'enabl':1624,1629,1643,1647,1651,1672,1705,1706,1726,1729,1743,1748,1760,3175 'end':597,2438,2440 'end-to-end':2437 'endpoint':1940,1961 'ensur':1319,1762 'ensureloggedin':610 'entri':225,275,687,986,1175,2358,2750,2976 'error':530,753,1177,1551,2256,2334,2825,2827,3128,3142 'escal':2803 'etc':1338,2216,2515 'event':1824,1834,1840,1884 'everi':58 'exact':1363,1839 'exampl':2111 'examples/sampleapp':2882 'examples/sampleappexpo':2884 'exceed':1152 'exclud':877,884 'exclus':2351 'exhaust':2228 'exist':565,638,1426,1912,3201 'expir':550,1990 'expiri':1976 'explain':104 'explicit':1453,2096,2629 'expo':66,147,152,154,175,181,188,205,454,456,696,915,936,945,956,1129,1279,2327,2329,2421,2509,3122,3125,3132 'expo-rout':153 'expo-specif':3124 'expos':641 'extendedprimari':1256 'extens':27,1612,1622,1641,1650,1670,1680,1685,1703,1741,3171 'extern':1032 'fact':134,3024 'fail':488,558,623,875,918,1059,1908,1946 'failur':12,56,61,115,796,967,2028 'fallback':1241 'fals':1678 'fast':1132 'fcm':2457 'featur':896,1508,1628,1636,1696,1713,1724,1734,1747,1755,1761,3166 'fetch':1955,1997,3196 'field':941,1233,1681 'file':226,688,1077,1176,2359,2751,2904,2977 'filetimestamp':2186 'fill':2041 'filter':1432 'find':750,974 'fine':775 'fire':336,1402,1832,1847,3185 'fire-and-forget':335 'firebas':2459 'first':91,113,142,263,1172,1483,2356,2925,2962,2983,3022 'first-hand':112 'fix':51,85,138,390,460,486,671,800,971,1098,1198,1333,1493,1616,1717,1775,1828,1905,2121,2500,2940,2969,3007,3016 'flag':334 'flex':716,1450,2091,2102,2108,2125 'flow':75,1056,1932 'folder':180,192 'follow':1235 'font':1261,1268,1277,3160 'foreground':2486 'forget':338 'form':2622 'format':1249 'formatt':3180 'found':561,2009,2255,2834 'four':222 'framework':145,2929 'front':73 'full':397,746,1784,2170,2277,2554,2665,3068 'gate':526,1273 'gather':133,3023 'gestur':14,260,293,414,664,674,681,779,1187,2368,2400,2412,2702,2757 'gesturehandlerrootview':229,707,714,728 'get':2107,2927 'getloggedinus':542,631 'github.com':2907 'github.com/cometchat/cometchat-uikit-react-native/issues':2906 'go':937,946,2510 'gotcha':2540 'gradl':1057 'grant':1055 'graph':2274 'grep':150,227,311,2065,2072,2861 'ground':106,2990 'ground-truth':2989 'group':1358,1368,1478 'guard':615 'guess':126,3014 'guid':2556 'hand':114 'handler':15,261,415,665,682,780,1188,2369,2401,2413,2493,2703,2758 'happen':2257 'hard':1461,1659,2914 'hardcod':1226,1866 'hast':2299 'head':276,357,368 'header':1950 'height':1295,1440,1445,1454,2047,2054,2097,2120,3117 'hex':1245 'hidereplyinthreadopt':1386,2130 'home':722 'hot':1853 'hour':1988 'hsl':1253 'hypothesi':3031 'i18n':2568 'icon':1287,1301,1312 'id':492,1862,1864,1867,1879 'ide':1090 'ignor':1307 'imag':1027 'imagestyl':1292 'import':262,286,677,1180,2364,2390,2396,2408,2416,2753 'incom':1510 'index.js':234,278,694,1183,2361 'index.ts':235,279,695 'indic':723 'individu':1733 'init':306,322,339,509,534,555,1690 'init-then-login':321 'init/login':13 'init/login/wrapper':102,3097 'initi':333,481 'insid':727,766,1604,1820 'instal':17,351,386,405,449,451,455,807,811,825,829,842,889,935,1062,1108,1501,1502,1557,1803,1805,1811,2238,2253,2261,2288,2308,2312,2341,2630,2659,2663,2675,2681,2729,2876,3046,3133,3144 'instanc':1479 'instead':1475 'integr':11,55,119 'invalid':490,628 'io':18,159,190,353,384,794,809,827,840,860,909,916,958,1265,2236,2310,2314,2471,2725,2727,2850,3048 'ios.infoplist':914 'ios/android':179,206,1148 'ios/podfile.lock':367 'ios/pods':356,373 'iphoneo':928,1543 'iphonesimul':887 'isn':2345 'isreadi':525,539 'issu':98,2249,2432,2520,2899,3118 'itm':853,2136 'js':1093,1173,2389,2407 'json':1631 'jsx':1349 'key':495,643,2022 'kit':10,399,2157,2657,2902 'languag':1780 'late':2405 'latest':2661 'launch':1002,2357 'leadingview':1337 'least':1766 'level':332,613 'light':1228 'like':484,669,798,969,1096,1196,1331,1491,1614,1715,1773,1786,1826,1903,2677 'limit':1958 'line':267,691,782,790,1191,2371,2374,2386,2394,2402,2414,2760 'link':382,838,2492 'list':362,1352,1422,1435,2080,2106,2200,2936 'listen':1520,1596,1603,1829,1846,1863,1878,1882,1993,3183 'liter':2385 'load':1174,1270,1278,1469,1553,3162 'local':983,1771,1801,1809,2707,2735 'lockfil':1081 'log':625,2848 'logcat':2860 'login':309,324,482,508,545,557,595,598,656,1599,1610,1890,1896,1906,2000,2508,3203 'look':318,2061,2076 'lookup':461,2815 'low':922,1005 'ls':157,170,355 'maco':2295,2302 'main':939,2656 'manag':182 'manifest':20,858,1044,2134,2171,3063,3148 'map':2497 'match':473,2999,3059 'maven':22,984,2736,3146 'maximum':1149 'mcp':2871 'media':1026 'messag':1351,1355,1698,1769,2079,2946 'messagehead':1498 'messagetransl':1707 'method':2018 'metro':23,845,1080,1089,1092,1109,1113,1146,1663,2247,2266,2292 'migrat':2555 'minim':2911 'minsdkvers':1011,1548 'mint':652,1920,1962 'minut':2973 'mismatch':879,1782 'miss':242,288,375,443,446,706,724,734,855,904,987,1021,1041,1204,1496,1535,1554,1619,1702,1754,1802,1816,2504,3173 'mix':1360 'mode':116,1218,1225,1232,3157 'modul':331,379,612,803,836,940,951,1064,1079,1102,1164,2264,2273,2306,2344,2831,2959 'module-level':330,611 'mount':513,532,605,1518,1526,1969 'move':689,788,1891 'must':265,1346,2086,2362,2628 'n':1455,2098 'name':1251,1405,1835,1841,2012,2608,2611 'nativ':3,8,41,54,89,187,201,252,259,378,413,418,424,428,521,619,661,680,741,778,835,869,895,950,977,995,1063,1122,1140,1186,1214,1285,1390,1459,1507,1560,1564,1569,1574,1695,1800,1808,1936,1980,2004,2160,2163,2177,2263,2319,2343,2367,2399,2411,2444,2527,2613,2624,2636,2685,2691,2696,2701,2706,2710,2716,2720,2745,2756,2776,2847,3087,3101,3111,3121,3136,3151,3165,3178,3191,3206 'navig':606,2571,2582,2788 'need':925,1661,1679 'neither':1372 'never':1369,1371,1468,3013 'new':1138,1686,2762 'node':433,1078,2305,2958 'none':472,2812 'note':2560 'noth':506,1340,1378 'notif':2431 'npm':824,1061,1804,2260,2307,2640,2658,2680 'npx':955,1119,1128,2316,2328 'nscamerausagedescript':905 'nsmicrophoneusagedescript':906 'null':541,544,1343 'objc':816 'object':637,1157,1487,2599,2621 'object-form':2620 'often':299,1965 'old':2272 'omit':1230 'onclick':2606,2791 'ondisconnect':1992 'one':1364,1767,2083 'onincomingcallreceiv':1594 'onitemclick':1415 'onitempress':1399,1413 'onmessages':1845 'onpress':2609,2792 'open':703 'option':1376,1618,1701 'order':470,1181,2360 'os':1087 'outsid':756,1317 'overlap':719 'overrid':1200 'p8':2451 'packag':392,2641,2646 'package.json':156 'palett':2598,2796 'panel':1382,1397 'paraphras':3011 'parent':2045,2050,2082,2089,2093,2099 'pass':1362,1471,1484 'past':3066 'pattern':189,203,517,871,997,2179,2583,2747,2891,3123,3138 'peer':401,447,1555,2631,2667 'peer-dep':400,2666 'peerdepend':2627 'per':1875,1967,2593 'per-compon':2592 'permiss':25,899,1016,1023,1039,1042,1582,1591 'persist':2335 'photo':1020 'pick':1019,1136 'placement':1460,3112 'plain':764 'platform':2478 'pleas':590 'pod':16,350,365,385,450,805,810,819,828,841,1810,2237,2311,2340,2728,2932,2981,3045,3143 'podfil':891,933,1536 'poll':1617,1630 'portal':2455 'post':888,934,2251 'post-dep-instal':2250 'practic':2919 'pre':588 'pre-seed':587 'prebuild':210 'press':1408 'previous':594,1768 'privaci':19,857,2133,3062,3147 'privacyinfo.xcprivacy':2154 'problem':132 'prod':2469 'product':639,647,662,1899,1937,1981,2005,2501,3192 'profil':962 'project':123,2460 'promis':614 'prop':1305,1359,1404,2585,2596,3104 'propos':136,2938 'provid':516,1275,1327,2466,2562,2569 'providerid':2479 'punycod':2723 'purpos':44 'push':35,42,2430,2433,2445,2514,2519,2528 'push-specif':34 'question':81 'quick':464 'quick-refer':463 'rare':2966 'rate':1957 'rather':2530 'raw':2824 're':497,1996,1999,2533 're-fetch':1995 're-login':1998 're-triag':2532 're-verifi':496 'react':7,53,258,291,412,417,423,427,601,679,777,976,1121,1185,1284,1559,1563,1568,1573,1799,1807,2159,2162,2318,2366,2391,2393,2398,2410,2417,2419,2612,2684,2690,2695,2700,2705,2709,2715,2719,2755 'react-nat':1120,2317 'react-native-asset':1283 'react-native-async-storag':426,975,2683 'react-native-background-tim':1567 'react-native-callstat':1572 'react-native-clipboard':2689 'react-native-commun':1562,2694 'react-native-gesture-handl':257,411,678,776,1184,2365,2397,2409,2699,2754 'react-native-loc':1798,1806,2704 'react-native-safe-area-context':416,2708 'react-native-svg':422,2714 'react-native-video':2161,2718 'react-native-webrtc':1558 'react-native.config.js':2349 'reactnat':2865 'read':86,122,1025,1031,2822 'real':118 'reason':2182 'rebuild':457,813,1073,1144,1147,1503,1669,2241,2800,3039,3044,3047,3054 'receiv':629,635,1886,2513 'recommend':3037 'record':1587 'recreat':1158 'refer':465,3080 'refresh':1133 'region':493 'regist':1522,1523,1597,1601,1888,2506 'registr':1850,1892,2474 'reinstal':2957 'reject':852,2135,2143,2198,3064 'releas':302,769 'reload':1660,1854 'remount':607,1855 'remov':1856,2577,2597 'renam':2604,2790 'render':348,505,537,1160,1272,1339,1465,1639,2057,3182 'replac':2767,2795 'repli':1373,1736,1740,1751 'repo':985,2737 'report':130,2215 'repro':2912 'request':596,1428,1586,3107 'requir':1143,2181,2763,3018,3131 'require.resolve':436 'reset':844,848,1117,1125,1667,2278,2322 'reset-cach':847,1116,1124,1666,2321 'resolv':556,944,1101,1486 'rest':573,1927 'restart':1088,1145 'restructur':2605 'resubmit':2245 'return':540,543,632,732,1314,1342,1347,1860,1941 'reus':1868,1974 'rf':2290,2297,2304 'rgb':1250 'right':80,2406 'rm':2289,2296,2303 'rn':68,164,196,1406,1418,2144,2826,3140 'rncasyncstorag':818 'rngesturehandl':804 'root':169,194,712,761,1210,1529 'rout':183,197,2521,3079,3084 'router':155,697,2422 'row':3002 'rrggbb':1248 'rule':1462,2425,2915 'run':140,957,1114,1608 'runtim':834,1046,1054,1094,1585,1590 'runtime-gr':1053 'safe':419,2711 'safearea':751 'safeareaprovid':230,725,757,759 'safeareaview':754 'sampl':2880 'say':1671,3040 'scope':1165 'screen':528,768,1881,1968,2574,2581,2786 'scrollview':2116 'sdk':571,886,924,1540,1983 'sdks':2212 'search':2867,2878 'see':38,249,658,738,866,892,992,1211,1387,1456,1504,1692,1933,1977,2001,2633,2742,2773,2945 'seed':589 'seen':64 'sendtextmessag':622 'sent':1354 'separ':2573,2644 'sequenc':325,2651 'server':651,1924 'server-mint':650 'server-sid':1923 'servic':2461 'session':549,1658 'set':403,927,1006,1385,1537,1691,2669 'setup':2434,2452,2458 'shebang':273 'sheet':296 'short':1791 'show':1239,1262,1515,1738,3076,3188 'side':1925,1973 'signup':1931 'silent':297,489,1595 'silicon':882 'simul':873 'singl':2639 'skill':2447,3078,3081,3209 'skill-cometchat-native-troubleshooting' 'slot':1334,1341,1345,3105 'smart':1735,1739,1750 'smart-repli':1749 'solv':2809 'source-cometchat' 'spars':377 'specif':36,2224,2830,3126 'split':2565,2780 'src':2070 'src/providers/cometchatprovider.tsx':315 'stale':1066,1111 'start':1123,1130,2320,2330 'starter':1753 'state':124,352,2933,2982 'status':720 'step':2963 'sticker':1637,1640 'stickersextens':1687 'still':2269 'stop':1112,1662 'storag':430,979,982,1033,2687,2741 'store':851,2141 'strict':2384 'strictmod':602 'string':1246,1474 'style':715,1449,2075,2124 'suggest':1719,2955 'support':949 'svg':425,1300,2717 'swipe':292,673,705 'swipe/gesture':771 'switch':648,1221,3159 'symbol':815 'symptom':37,459,483,668,797,968,1095,1195,1330,1490,1613,1714,1772,1825,1902,2498,2998,3058 'sync':822,1058 'syntax':1178 'system':1223,1236,1263 'systemboottim':2190 'tabl':462,466,2496,2816,3001 'tag':1433 'take':2972 'tap':1380,2489 'tap-to-deep-link':2488 'target':920,930,1545 'teach':45 'templat':3186 'test':2801 'text':1777 'theme':730,1154,1156,1162,1194,1199,1215,2567,2584,2588,2595,2797,3152,3153 'theme.color':2603 'thing':2951 'thread':1375,1381,1396 'throughout':2793 'time':3034 'timer':1571 'tintcolor':1294,1303 'titleview':1336 'tmpdir/haste-map-':2298 'tmpdir/metro-':2291 'toggl':1224,1633 'token':654,731,1901,1919,1939,1960,1963,1989,2477,2505,2601,2798,3195 'top':685 'topic-agent-skills' 'topic-ai-agent' 'topic-chat' 'topic-claude-code' 'topic-cometchat' 'topic-cursor' 'topic-messaging' 'topic-nextjs' 'topic-react' 'topic-react-native' 'topic-ui-kit' 'trace':99,3094 'translat':1699,1700,1779,1813 'treat':211 'tri':435,2895,2956,3053 'triag':74,121,2534,2924 'trigger':2165 'troubleshoot':4,2495,3207 'troubleshooting.mdx':2993 'true':2088 'truth':107,2991 'tsx':2071,2112,2122 'turbomoduleregistry.getenforcing':831,2841 'twice':1848 'two':2580,2785 'two-screen':2579 'type':865,1434 'ui':9,398,1512,1653,1776,3172 'uid':553,559,580,585,1473,1482,2616,2619 'uikit':1677 'unabl':1074,1099 'uncondit':792 'undefin':733,814,1315,1344 'uniqu':1873 'up-front':71 'updat':1150,2233,2654 'upgrad':32,2539,2545,2650,3216 'upgrading-from-v4.mdx':110 'upload':2467 'upstream':2869 'us':1789 'use':514,577,608,644,755,763,952,1247,1302,1407,1783,1871,2147,2206,2383,2578,3003,3051 'useeffect':1606,1858,1894 'usefont':1280 'usememo':1168 'user':129,562,634,1356,1366,1909,1913,1922,2114,2115,2128,2129,2196,2523,2543,2893,2996,3033,3198 'user-does-not-exist':3197 'user/group':636,1470 'userdefault':2188 'usethem':1313 'usual':2829 'v4':29,2537,2558,2678,3214 'v4-to-v5':28 'v5':31,2538,2559,2670,2765,3215 'valid':1348 've':63 'verbatim':3008 'verifi':498,630,1052,1947,2986 'version':1541,2888 'via':569,655,1291,1648,1708,1730,1744,1926,2589 'video':2164,2721 'view':765,1335,1448,2123,2852,3106 'vs':1357 'wait':591 'wast':3032 'watch':2281 'watch-del-al':2280 'watchman':2279,2286 'web':1416 'webrtc':1550,1561 'width':1296 'window':1083 'wire':1384,1394,1675,1991 'without':2150,3021 'work':97,467,676,1297,1797,2887,3092,3170 'wrap':709,726,1446,1818 'wrapper':217,223,666,708,737,1206,2771,2930,2978 'wrong':1403,1427,1833,2010,2388,3030,3103 'x':2832 'xcode':2851 'xml':3071 'y':2837 'zero':1439","prices":[{"id":"8c17a21c-0515-4f39-9e0b-f445f42ca128","listingId":"73aed3e5-b7d8-41d5-a749-f18023822ad2","amountUsd":"0","unit":"free","nativeCurrency":null,"nativeAmount":null,"chain":null,"payTo":null,"paymentMethod":"skill-free","isPrimary":true,"details":{"org":"cometchat","category":"cometchat-skills","install_from":"skills.sh"},"createdAt":"2026-05-07T13:05:15.571Z"}],"sources":[{"listingId":"73aed3e5-b7d8-41d5-a749-f18023822ad2","source":"github","sourceId":"cometchat/cometchat-skills/cometchat-native-troubleshooting","sourceUrl":"https://github.com/cometchat/cometchat-skills/tree/main/skills/cometchat-native-troubleshooting","isPrimary":false,"firstSeenAt":"2026-05-07T13:05:15.571Z","lastSeenAt":"2026-05-18T19:04:55.216Z"}],"details":{"listingId":"73aed3e5-b7d8-41d5-a749-f18023822ad2","quickStartSnippet":null,"exampleRequest":null,"exampleResponse":null,"schema":null,"openapiUrl":null,"agentsTxtUrl":null,"citations":[],"useCases":[],"bestFor":[],"notFor":[],"kindDetails":{"org":"cometchat","slug":"cometchat-native-troubleshooting","github":{"repo":"cometchat/cometchat-skills","stars":27,"topics":["agent-skills","ai-agent","chat","claude-code","cometchat","cursor","messaging","nextjs","react","react-native","ui-kit"],"license":null,"html_url":"https://github.com/cometchat/cometchat-skills","pushed_at":"2026-05-18T05:04:24Z","description":"Add CometChat chat to any React, Next.js, React Native, Angular, Android, iOS, or Flutter project through your AI coding agent. Works with Claude Code, Cursor, Codex, VS Code Copilot, Windsurf, Cline, Kiro, and 50+ more agents.","skill_md_sha":"ce7b8e962921f67222fd0ffb951f7e393b2710ad","skill_md_path":"skills/cometchat-native-troubleshooting/SKILL.md","default_branch":"main","skill_tree_url":"https://github.com/cometchat/cometchat-skills/tree/main/skills/cometchat-native-troubleshooting"},"layout":"multi","source":"github","category":"cometchat-skills","frontmatter":{"name":"cometchat-native-troubleshooting","license":"MIT","description":"Diagnose CometChat React Native UI Kit integration failures — init/login, gesture handler, pod install, iOS privacy manifest, Android Maven, Metro cache, permissions, calls, extensions, v4-to-v5 upgrade. For push-specific symptoms see cometchat-native-push § 12.","compatibility":"Node.js >=18; React Native >=0.70; @cometchat/chat-uikit-react-native ^5"},"skills_sh_url":"https://skills.sh/cometchat/cometchat-skills/cometchat-native-troubleshooting"},"updatedAt":"2026-05-18T19:04:55.216Z"}}