Start here
Pick your platform. Each quick start takes about five minutes.
Android, Flutter, web, React and the server SDKs (Python, Node.js, Go, Java and PHP) are generally available. Kotlin Multiplatform (and iOS, which is built on the same SDK) are in early access beta.
What Codeskop captures
Codeskop is a small SDK you add to your app. Once it's initialized, most capture happens on its own; you don't annotate endpoints or wrap screens.
On mobile (Android and Flutter)
- Crashes: uncaught JVM exceptions and native crashes, with the stack trace, thread, and device context.
- ANRs: Application Not Responding freezes, reported by Android itself.
- Network failures and latency: failing requests, status codes and timing from OkHttp and Retrofit, with the optional OkHttp adapter.
- Handled exceptions: errors your app catches and reports with
recordException.
On the web
- JavaScript errors: uncaught errors and unhandled promise rejections.
- Network failures and latency: every
fetchandXMLHttpRequestcall, automatically. - React render errors, with the error boundary from
@codeskop/tracker-react. - Handled exceptions: errors you report with
recordException.
Kotlin Multiplatform and iOS share the mobile SDK's core; see Kotlin Multiplatform & iOS for what the beta captures. The SDKs also send a lightweight presence heartbeat while your app is in the foreground, so the dashboard can show how many users are active.
How it fits together
Every event takes the same path from your user's device to your dashboard:
- Step 1
SDK in your app
Captures crashes, ANRs, errors and network calls, and redacts them on the device.
- Step 2
On-device queue
Events are stored locally first, so nothing is lost when the network drops.
- Step 3
Codeskop ingest
Batches are compressed and sent when there's a connection, then retried until accepted.
- Step 4
Your dashboard
Issues are grouped, counted and tied to the users, devices and releases they hit.
The SDK is built to stay out of your app's way. Setup runs off the main thread, public methods never throw, and calls made before initialization are safely ignored. Read more in Core concepts.
Privacy by default
Request and response bodies, query strings, and credential headers such asAuthorization and Cookie never leave the device. See Privacy & Security for the full list.Explore the docs
From the blog
- AlternativesSentry vs Codeskop for mobile teamsSentry is broader and more mature: tracing, replay, self-hosting. Codeskop is narrower: mobile crashes, API failures, offline queueing, WhatsApp alerts.
- AlternativesFirebase Crashlytics vs Codeskop: use them together on Android and FlutterCrashlytics is free and excellent at crashes. Codeskop adds API failure monitoring, WhatsApp alerts and web errors. An honest comparison and setup.
- GuidesFlutter error handling: FlutterError.onError vs PlatformDispatcher.onErrorHow Flutter error handling works: FlutterError.onError, PlatformDispatcher.onError, isolates, zones, ErrorWidget, obfuscation and a complete main().