Product features
Everything you need to understand and improve your software.
Codeskop connects errors, network activity, user journeys, releases and analytics across mobile, web and backend, so you find issues faster and build better experiences.
- No credit card required
- Set up in minutes
- Works across your stack
Crash reporting
Crash reporting for Android, Flutter and web apps
Every crash with its full stack trace, the device and release it hit, and the users it affected, so you can fix the ones that matter first. Included on every plan, free plan too.
Plan: Every plan, including Free · See pricing
java.lang.NullPointerException at com.example.app.ui.UserProfileFrag... at android.app.Fragment.performCre... at android.app.FragmentStateManager...- Pixel 7
- Android 14
- 1.2.0 (324)
- Apr 16, 10:24 AM
Crash Reporting details
What you get
Every uncaught crash
Uncaught Kotlin and Java exceptions on any thread, Dart errors in Flutter, and uncaught errors and unhandled promise rejections in the browser.
Native crashes
Crashes in native (C/C++) code, recorded by Android itself on Android 11 and higher and reported on the next launch.
Handled exceptions
Report errors you recover from with recordException(), so you can see how often they really happen.
Context on every crash
Device model, OS version, app version and build, and the user you identified (or an anonymous install ID).
Grouped, with user impact
Crashes are grouped into issues with the number of users affected, so the worst problems rise to the top.
Never sampled or lost
A crash is written to the device before the app dies and uploaded at the next sync. Crashes are never sampled away or dropped for space.
How it works
- 1
Add the SDK
One Gradle dependency on Android, codeskop_tracker on pub.dev for Flutter, or @codeskop/tracker on npm for the web.
- 2
Initialize it
On Android, add your public key to AndroidManifest.xml and the SDK starts itself; or call init in a line of code.
- 3
See crashes as issues
Crashes appear in the dashboard grouped as issues, with the stack trace, device, release and users affected.
Platform support
| Android | Crashes, native crashes (Android 11+), handled exceptions |
|---|---|
| Flutter | Dart errors and native crashes |
| Web & React | Uncaught errors, promise rejections, React render errors |
| Kotlin Multiplatform & iOSEarly access beta | Crashes and handled exceptions |
| Server (Python, Node.js, Go, Java, PHP) | Unhandled and handled exceptions in requests, jobs and threads |
Questions about crash reporting
Is Codeskop crash reporting free?
Yes. The Free plan includes crash and exception capture for 10,000 events a month with 7-day retention (as of October 2026). Free also sends email alerts for its project; paid plans add ANRs, network capture and Slack, WhatsApp and webhook alerts.
Does Codeskop work alongside Firebase Crashlytics?
Yes. Codeskop chains onto whatever crash handler was installed before it and always passes the crash along, so Crashlytics keeps working. Codeskop never swallows a crash.
Does it capture native (NDK) crashes on Android?
Yes, on Android 11 (API 30) and higher. Android records why the process ended, and the SDK reports it on the next launch with Android's description of the exit.
Are crashes ever sampled?
No. Sampling settings never apply to crashes, and when the on-device queue fills up, older low-priority events are removed first. Crashes stay.
Do exception messages leave the device?
Not by default on Android and web. Messages often contain user input, so they're redacted before sending. You still get the exception class and the full stack trace.
ANR monitoring
ANR monitoring for Android apps
Find the freezes that make Android offer to close your app. Codeskop reports every ANR with the app version and device it hit, with nothing to set up beyond the SDK.
Plan: Starter and above
Type ANRExit reason Input dispatching timed outSource ApplicationExitInfo (Android 11+)App version 2.4.1 (324)Device Pixel 7 · Android 14What you get
Recorded by Android itself
On Android 11 and higher the SDK reads Android's own exit records, so you see the same ANRs your users saw, each reported once.
Zero runtime cost
On modern devices nothing runs while your app is in use. The records are read once, in the background, at startup.
Covers Android 7 to 10
Older versions get a small, low-priority watchdog that flags the main thread when it stays blocked for about five seconds.
The context to find the cause
Every ANR carries the exit reason, app version, device and user, so you can spot the releases and devices that freeze.
Flutter apps too
ANR detection also runs for Flutter and Kotlin Multiplatform apps on Android.
Never sampled
ANRs are never sampled away or dropped for space. Turn detection off per project from the dashboard if you ever need to.
How it works
- 1
Add the Android SDK
ANR monitoring starts with the SDK. There is no extra dependency or code.
- 2
Ship your release
On Android 11+, ANRs are reported the next time the user opens the app; older versions report from the watchdog.
- 3
Group and fix
Group ANRs by app version, device and screen, and move the blocking disk, database or network work off the main thread.
Platform support
| Android | Android 11+: OS exit records · Android 7–10: watchdog |
|---|---|
| Flutter | On Android |
| Kotlin MultiplatformEarly access beta | On Android |
| Web & React | Not applicable |
Questions about anr monitoring
What is an ANR?
An ANR (Application Not Responding) happens when an Android app's main thread is blocked long enough that Android offers to close it. Users see an "app isn't responding" dialog.
What ANR rate does Google Play consider bad?
Android vitals flags a user-perceived ANR rate above 0.47% across all devices, or above 8% on any single device model.
Which Android versions are covered?
Android 7 (API 24) and higher. Android 11+ uses Android's own exit records; Android 7 to 10 use a lightweight main-thread watchdog.
Do ANR reports include a stack trace?
Not yet: in Android SDK 0.3.0, ANR reports include the exit reason, app version, device and user, but no main-thread stack trace.
Which plan includes ANR monitoring?
Starter and above. Upgrading turns it on from the next app launch, with no new release.
Core features
Powerful tools for a more reliable product.
Everything you need to find, understand and fix issues, with the context to make the fix last.
Platforms
One SDK. Every platform.
Codeskop works across your stack, from mobile and web to backend services. What each SDK captures
- AndroidNative SDK on Maven CentralAvailable
- Fluttercodeskop_tracker on pub.devAvailable
- Web@codeskop/tracker on npmAvailable
- ReactProvider, error boundary and hookAvailable
- ServerPython, Node.js, Go, Java and PHPAvailable
- Kotlin MultiplatformShared Kotlin SDKEarly access beta
- iOSSwift package, built on the KMP SDKEarly access beta
Security & reliability
Built for teams that care about their users.
Your data stays yours. Codeskop is designed with privacy and reliability at its core.
It all connects
From issue to insight, in one production story.
Errors, user journeys, network activity and releases are linked, so you go from symptom to root cause in minutes.
An issue occurs
A crash or error is captured with its full context.
See who it hit
How many users, which devices and which release.
Check the requests
The failing and slow API calls around it.
Check the release
Whether the latest release made it worse.
Investigate and fix
Assign it, ticket it, or get a proposed fix.
Ready to improve your software?
Start building more reliable experiences today.
Free plan, no credit card. Your first crash report can arrive in minutes.