Android (CatchDev)

Collect user feedback from your Android app with shake-to-report — screenshot, annotation, and a note, straight to your dashboard.

CatchDev is the Android SDK for catch.dev. Its v1 focuses on user feedback: your users shake their device, see a screenshot of the current screen, annotate it, add a note, and submit — and it lands in your dashboard under App → Feedback. It's the Android sibling of the iOS / Apple and Web feedback SDKs — every platform speaks the same wire contract.

Requires Android 7 (API 24)+. This SDK captures user feedback, not crashes — for error tracking, use the @catch.dev/* error SDKs. Kotlin + Android Views (no Jetpack Compose), no third-party HTTP library.

1. Install

Early access: the package is on GitHub Packages (Maven Central publishing lands at public launch), so resolution needs a GitHub token with read:packagescontact us if you need access.

Add the repository and the dependency:

// settings.gradle.kts
dependencyResolutionManagement {
    repositories {
        google()
        mavenCentral()
        maven {
            url = uri("https://maven.pkg.github.com/catchdotdev/catchdev-android")
            credentials {
                username = System.getenv("GITHUB_ACTOR")
                password = System.getenv("GITHUB_TOKEN")
            }
        }
    }
}
// app/build.gradle.kts
dependencies {
    implementation("dev.catch:catchdev-android:0.1.0")
}

2. Get your access key

In the dashboard, open your app and go to API Keys. Create a key and copy it.

3. Start the SDK

Kotlin (ideally in your Application):

import dev.catchdev.CatchDev

class MyApp : Application() {
    override fun onCreate() {
        super.onCreate()
        CatchDev.start(this, "ck_your_key")
    }
}

Java

import dev.catchdev.CatchDev;

CatchDev.start(this, "ck_your_key");

Note: the Maven coordinates (dev.catch:catchdev-android) differ from the Java package (dev.catchdev) — import from dev.catchdev.

Shake-to-report is enabled by default. On an emulator, trigger a shake from Extended controls → Virtual sensors, or call CatchDev.presentReporter() from a button.

4. Options

CatchDev.setUser("123", "user@example.com")             // attach an identity
CatchDev.setMetadata(mapOf("screen" to "Checkout"))     // custom key/values
CatchDev.setEnvironment("production")                   // tag the environment
CatchDev.isShakeToReportEnabled = false                 // disable the shake trigger
CatchDev.setOnFeedbackSentListener { ok, id, error -> } // delivery callback
CatchDev.isDebugLoggingEnabled = true                   // logcat diagnostics
CatchDev.presentReporter()                              // open the reporter manually

5. View feedback

Submitted reports appear in the dashboard under App → Feedback, with the annotated screenshot, the message, and device context.

Privacy

Screenshots are captured on-device and may contain personal data. Nothing is sent until the user taps Send, and the SDK skips secure (FLAG_SECURE) screens. In Play Console → Data safety, declare User-generated content (and Device or other IDs if you set a user id).