iOS / Apple (CatchDev)

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

CatchDev is the Apple 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 Apple sibling of the Android and Web feedback SDKs — every platform speaks the same wire contract.

Requires iOS / iPadOS 15+. This SDK captures user feedback, not crashes — for error tracking, use the @catch.dev/* error SDKs.

1. Install

Early access: the repository is private during early access, so SPM resolution requires repo access — contact us to get added. CocoaPods publishing lands at public launch.

In Xcode: File → Add Package Dependencies… and enter:

https://github.com/catchdotdev/catchdev-apple.git

Or in Package.swift:

.package(url: "https://github.com/catchdotdev/catchdev-apple.git", from: "0.1.0")

CocoaPods (at public launch)

pod 'CatchDev'

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

SwiftUI

import SwiftUI
import CatchDev

@main
struct MyApp: App {
    init() {
        CatchDev.start(apiKey: "ck_your_key")
    }
    var body: some Scene { WindowGroup { ContentView() } }
}

UIKit

import CatchDev

func application(_ application: UIApplication,
                 didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
    CatchDev.start(apiKey: "ck_your_key")
    return true
}

Objective-C

@import CatchDev;
[CDVCatchDev startWithApiKey:@"ck_your_key"];

Shake-to-report is enabled by default. On the Simulator, trigger a shake with Device → Shake (⌃⌘Z).

4. Options

CatchDev.setUser(id: "123", email: "user@example.com")  // attach an identity
CatchDev.setMetadata(["screen": "Checkout"])            // custom key/values
CatchDev.setEnvironment("production")                   // tag the environment
CatchDev.isShakeToReportEnabled = false                 // disable the shake trigger
CatchDev.onFeedbackSent = { result in print(result) }   // delivery callback
CatchDev.isDebugLoggingEnabled = true                   // console 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. Disable automatic capture with CatchDev.isShakeToReportEnabled = false and trigger CatchDev.presentReporter() yourself if you need tighter control over when the reporter can appear.