cometchat-android-v6-production — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited cometchat-android-v6-production (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Ground truth:com.cometchat:chatuikit-{compose,kotlin}-android:6.x(+calls-sdk-android:5.x) — resolved AAR (javap) +ui-kit/android/v6. Official docs: https://www.cometchat.com/docs/fundamentals/user-auth · 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.
Companion skills: cometchat-android-v6-core (init/login), cometchat-android-v6-builder-settings (UIKitSettings), cometchat-android-v6-push (FCM)
Prepare a CometChat v6 Android app for production release — switch to token-based auth, configure ProGuard/R8, apply security best practices, and optimize the release build.
cometchat-android-v6-core)cometchat-android-v6-troubleshooting)// ❌ NEVER in production
val settings = UIKitSettings.UIKitSettingsBuilder()
.setAppId("APP_ID")
.setRegion("us")
.setAuthKey("AUTH_KEY") // REMOVE THIS
.build()
CometChatUIKit.login("uid", callback) // Uses authKey internally
// ✅ Production pattern
val settings = UIKitSettings.UIKitSettingsBuilder()
.setAppId("APP_ID")
.setRegion("us")
// No authKey
.build()
// Get token from your backend server
val authToken = yourServer.getAuthToken(userId)
CometChatUIKit.loginWithAuthToken(authToken, callback)Your backend generates auth tokens using the CometChat REST API:
POST https://{appId}.api-{region}.cometchat.io/v3/users/{uid}/auth_tokensapiKey: YOUR_API_KEY (server-side only)The auth token is then passed to the client for loginWithAuthToken().
CometChat UIKit modules include consumer-rules.pro that are automatically applied. Check that your app's build.gradle.kts has:
android {
buildTypes {
release {
isMinifyEnabled = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
}If you encounter issues with minification, add these rules:
# CometChat SDK
-keep class com.cometchat.chat.** { *; }
-keep class com.cometchat.calls.** { *; }
# CometChat UIKit
-keep class com.cometchat.uikit.** { *; }
# Gson (used for FCM DTO parsing)
-keep class com.google.gson.** { *; }
-keepattributes Signature
-keepattributes *Annotation*
# Firebase
-keep class com.google.firebase.** { *; }| Item | Status | Notes |
|---|---|---|
Remove authKey from client code | Required | Use loginWithAuthToken() |
Store appId securely | Recommended | Use BuildConfig or encrypted prefs |
| Use HTTPS for all custom endpoints | Required | overrideAdminHost / overrideClientHost |
| Validate auth tokens server-side | Required | Tokens should expire |
| Do not log sensitive data | Required | Remove debug logs in release |
| Enable R8/ProGuard | Recommended | Obfuscates code |
| Pin SSL certificates | Optional | For high-security apps |
android {
compileSdk = 36
defaultConfig {
minSdk = 28
targetSdk = 36
}
buildTypes {
release {
isMinifyEnabled = true
isShrinkResources = true
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
compileOptions {
sourceCompatibility = JavaVersion.VERSION_11
targetCompatibility = JavaVersion.VERSION_11
}
kotlinOptions {
jvmTarget = "11"
}
}For Compose stack, use the BOM to align Compose library versions:
implementation(platform("androidx.compose:compose-bom:2024.x.x"))
implementation("androidx.compose.ui:ui")
implementation("androidx.compose.material3:material3")Pin CometChat SDK versions explicitly:
implementation("com.cometchat:chatuikit-compose-android:6.0.+")
// or
implementation("com.cometchat:chatuikit-kotlin-android:6.0.+")Never pin6.0.0-beta2(or any-betapreview) in a production build — V6 went GA on 2026-05-25. The6.0.+dynamic pin tracks GA patches forward (ENG-35701). Pin an exact GA patch (e.g.6.0.1) if your release process requires reproducible builds.
v6 requires minSdk = 28 (Android 9.0 Pie). This means:
authKey in production builds — it allows anyone to create users and loginloginWithAuthToken() with server-generated tokens in productionminSdk must be 28 — do NOT lower it, v6 APIs depend on API 28+ featuresLog.d() / debug logging in release builds — use BuildConfig.DEBUG guards~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.