kstenerud/KSCrash
kstenerud/KSCrash has 4,505 GitHub stars and 743 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-08 14:34 UTC. Last push 2026-11-02.
The Ultimate iOS Crash Reporter
What you can do
- Profiler: Sampling profiler for thread backtraces (KSCrashProfiler module)
- MetricKit: Apple diagnostic payload integration (KSCrashMonitors module)
- Report: Strongly-typed Swift model for crash reports (KSCrashReportModel module)
- Zombie Detection: Catches messages to deallocated objects
Measured star growth
- in 24h
- 0
- in 7 days
- Update delayed
- in 15 days
- Update delayed
- in 1 month
- Update delayed
Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.
README.md
Original[!NOTE] Branch layout (October 2026)
master: latest stable release, currently2.6.1develop: next-release work, target this for new PRsrelease/2.6.2: target this for fixes to2.6.1CocoaPods: trunk is going read-only, so 2.6.1 is the last KSCrash version on CocoaPods. Later versions ship through Swift Package Manager only.
KSCrash 2.6
The best open-source crash reporting framework for Apple platforms. Supports iOS, macOS, tvOS, watchOS, and visionOS.
KSCrash catches Mach exceptions, signals, C++/ObjC exceptions, main thread hangs, and OS-level terminations (OOM, thermal, CPU, reboot). It generates full Apple-format crash reports with every field filled in.
If you are upgrading from 2.5.x, see the migration guide. For upgrades from 1.x, see the 1.x to 2.0 migration guide.
Quick Start
Install
SPM: Add https://github.com/kstenerud/KSCrash.git in Xcode (File > Add Packages), or in
Package.swift:
dependencies: [
.package(url: "https://github.com/kstenerud/KSCrash.git", .upToNextMajor(from: "2.6.1"))
]
CocoaPods:
pod 'KSCrash', '~> 2.6'
Setup
import KSCrashRecording // KSCrash for CocoaPods
let config = KSCrashConfiguration()
try KSCrash.shared.install(with: config)
That's it. KSCrash will catch crashes and store reports on disk. To send reports to a server, use an
installation. See KSCrashInstallation.h for details.
Features
See the Architecture and Code Tour wiki pages for how these work under the hood.
Hang Detection
The Watchdog monitor detects main thread hangs (250ms+) and captures full backtraces. Enable with
.watchdog in your monitor config. See KSCrash+Hang.h for real-time hang observation.
Termination Detection
Detects OS-level terminations (OOM, thermal, CPU, reboot) by comparing previous-run state at launch.
Query the result with KSCrash.shared.previousTerminationReason.
CPU Monitoring
Tracks CPU usage with sliding-window averages mirroring Apple's enforcement thresholds. Optionally
generates non-fatal reports on warning/critical transitions via enableCPUExceptionReporting.
Custom User Data
Store per-key data that persists across crashes via KSCrash+UserInfo.h. Uses an mmap'd key-value
store with zero crash-time overhead.
Additional Features
- Profiler: Sampling profiler for thread backtraces (
KSCrashProfilermodule) - MetricKit: Apple diagnostic payload integration (
KSCrashMonitorsmodule) - Report: Strongly-typed Swift model for crash reports (
KSCrashReportModelmodule) - Zombie Detection: Catches messages to deallocated objects
- Memory Tracking: Real-time memory pressure monitoring via
AppMemoryTracker - Crash Doctor: Automatic crash cause diagnosis
- Custom Crashes: Report exceptions from scripting languages via
reportUserException - Namespacing: Embed KSCrash in your own library without symbol clashes
For configuration options, see KSCrashConfiguration.h. For the full API, see KSCrash.h.
Deprecations in 2.6
| Deprecated | Replacement |
|---|---|
userInfo property |
Per-key API in KSCrash+UserInfo.h |
deadlockWatchdogInterval |
KSCrashMonitorTypeWatchdog |
enableSigTermMonitoring |
Removed (always caught) |
KSCrashMonitorTypeMainThreadDeadlock |
KSCrashMonitorTypeWatchdog |
KSCrashMonitorTypeMemoryTermination |
KSCrashMonitorTypeTermination |
KSCrashAppStateTrackerObserving |
addObserverWithBlock: |
crashNotifyCallback / reportWrittenCallback |
isWritingReportCallback / didWriteReportCallback |
See the migration guide for details and rationale.
License
MIT License. See LICENSE for details.
Notes
This project is tested with BrowserStack.
Explore related projects
codecrafters-io/build-your-own-x
Master programming by recreating your favorite technologies from scratch.
561,201 starspublic-apis/public-apis
A collective list of free APIs
497,416 starsmorluto/rea
Reverse engineer anything with agents, from app behavior down to native binaries.
445,262 starsopenclaw/openclaw
The AI that really does things. Any OS. Any Platform. The lobster way. 🦞
394,229 stars