All Projects → ChimeHQ → Impact

ChimeHQ / Impact

Licence: bsd-3-clause
Crash capturing library for Apple platforms

Programming Languages

c
50402 projects - #5 most used programming language

Projects that are alternatives of or similar to Impact

Wells
A lightweight diagnostics report submission system
Stars: ✭ 26 (-93.42%)
Mutual labels:  crash-reporting, tvos, watchos
Ios Crash Dump Analysis Book
iOS Crash Dump Analysis Book
Stars: ✭ 158 (-60%)
Mutual labels:  tvos, watchos, crash
Countly Sdk Ios
Countly Product Analytics iOS SDK with macOS, watchOS and tvOS support.
Stars: ✭ 585 (+48.1%)
Mutual labels:  tvos, watchos, crash-reporting
Sentry Cocoa
The official Sentry SDK for iOS, tvOS, macOS, watchOS
Stars: ✭ 370 (-6.33%)
Mutual labels:  tvos, watchos, crash-reporting
Xestimonitors
An extensible monitoring framework written in Swift
Stars: ✭ 269 (-31.9%)
Mutual labels:  tvos, watchos
Crypto
Swift CommonCrypto wrapper
Stars: ✭ 328 (-16.96%)
Mutual labels:  tvos, watchos
Bugsnag React Native
Error monitoring and reporting tool for native exceptions and JS errors in React Native apps
Stars: ✭ 374 (-5.32%)
Mutual labels:  crash-reporting, crash
Nshipster.com
A journal of the overlooked bits in Objective-C, Swift, and Cocoa. Updated weekly.
Stars: ✭ 280 (-29.11%)
Mutual labels:  tvos, watchos
SwiftVer
Easily Manage Versioning in MacOS, iOS, watchOS, and tvOS projects.
Stars: ✭ 23 (-94.18%)
Mutual labels:  tvos, watchos
Swiftui Charts
🚀 SwiftUI Charts with custom styles
Stars: ✭ 272 (-31.14%)
Mutual labels:  tvos, watchos
Xcglogger
A debug log framework for use in Swift projects. Allows you to log details to the console (and optionally a file), just like you would have with NSLog() or print(), but with additional information, such as the date, function name, filename and line number.
Stars: ✭ 3,710 (+839.24%)
Mutual labels:  tvos, watchos
Datez
📆 Breeze through Date, DateComponents, and TimeInterval with Swift!
Stars: ✭ 254 (-35.7%)
Mutual labels:  tvos, watchos
SwiftGenStrings
genstrings replacement for Swift that actually works
Stars: ✭ 29 (-92.66%)
Mutual labels:  tvos, watchos
Wikipediakit
Wikipedia API Client Framework for Swift on macOS, iOS, watchOS, and tvOS
Stars: ✭ 270 (-31.65%)
Mutual labels:  tvos, watchos
clevertap-ios-sdk
CleverTap iOS SDK
Stars: ✭ 39 (-90.13%)
Mutual labels:  tvos, watchos
X
Easier cross platform Mac & iOS development with Swift
Stars: ✭ 270 (-31.65%)
Mutual labels:  tvos, watchos
Web3.swift
A pure swift Ethereum Web3 library
Stars: ✭ 295 (-25.32%)
Mutual labels:  tvos, watchos
Attributedstring
基于Swift插值方式优雅的构建富文本, 支持点击长按事件, 支持不同类型过滤, 支持自定义视图等.
Stars: ✭ 294 (-25.57%)
Mutual labels:  tvos, watchos
Valet
Valet lets you securely store data in the iOS, tvOS, or macOS Keychain without knowing a thing about how the Keychain works. It’s easy. We promise.
Stars: ✭ 3,712 (+839.75%)
Mutual labels:  tvos, watchos
SMJJSONPath
JSONPath implementation in Objective-C
Stars: ✭ 28 (-92.91%)
Mutual labels:  tvos, watchos

Github CI

Impact

Impact is a crash detection and recording library for Apple platforms. It is not a full crash reporting system. But, it could be the core of one. Its design goals are:

  • Improve understanding of crash reporting systems
  • Support for all Apple platforms
  • Reliablity
  • Accuracy
  • Simplicity
  • Fun

Current feature set:

  • Mach Exceptions
  • UNIX signals
  • NSExceptions (including from within AppKit)
  • Frame pointer-based stack unwinding
  • Partial compact unwind support for x86_64 and arm64
  • Partial DWARF CFI support for x86_64 and arm64

Impact uses a text-based log format. While the format itself is stable, the contents are still unstable. It is designed to be simple, while still making both debugging and parsing possible in the face of crash-time failure.

Isn't Crash Reporting a Solved Problem?

In-process crash reporting is just terrible. The mechanisms available for crash event detection, UNIX signals and Mach exceptions, are complex, buggy, and are not capable of capturing all kinds of failures. On top of that, the enviroment in which a crash reporter needs to run is extraordinarily hostile. It's just messy business.

Apple has had all of the device-side pieces in place to produce a world-class crash reporting system for a long time. While they have the reporting side down, the developer experience (analysis, presentation, investigative tools) leaves a lot to be desired. This has kept 3rd-party reporting services essential for the vast majority of app developers. Apple's system also doesn't work for macOS apps outside the App Store, which is disappointing.

My sincere hope is that Apple addresses these limitations so we can all stop this foolishness once and for all.

But, for now, in-process reporting is a necessary component for most developers. There are many trade-offs and design decisions that dramatically affect the qualities of a reporting system. Understanding those trade-offs, and being explicit about choices that affect them is one of the goals of this project.

Also, crash reporting is just a fun and fascinating problem. It tends to be very commonly used and very poorly understood. I think the Apple development community could benefit a lot from a more in-depth understanding of the area.

Can I Use Impact in my App?

You must keep in mind that Impact only captures information about crash events. It does not have any facilities for transmitting those events back to you or translating them into human-readable versions. A full reporting system requires a little more work. Here are a few options:

  • Impact on its own, with full control over how you produce and consume reports
  • Integrate with Wells for report transmission and management
  • MetricKit crash reporting with graceful fallback via Meter and ImpactMeterAdapter

Relationship to Crashlytics

I worked at Crashlytics for many years. During my time there, I briefly worked with PLCrashReporter before starting from scratch and building a completely custom system. I spent a considerable amount of time there analyzing and understanding the failure modes of in-process crash reporting. That work shaped most of the design of the Crashlytics SDK, though things might have changed since I left.

Impact does share many of those design philosophies. It's hard to unsee solutions, sometimes. But, it's primarily because I believe those core design concepts are the best approach.

Incorporating Impact

If you want to use the project as part of a crash reporting service (i.e. accept data from apps you do not write yourself), you are more than welcome. However, you must let the maintainers of this project know before you ship. If you just want to use Impact for your own app, go for it! You don't have to get in touch. But, it would be cool :)

Contributing

It would be wonderful to see contributions. If you'd like to work on something, the safest bet is to open an issue or PR first. That way, we can discuss the changes before you spend too much time working.

There is absolutely no experience/knowledge requirement. Interest is all you need, I am happy to help.

Suggestions or Feedback

We'd love to hear from you! Get in touch via twitter, an issue, or a pull request.

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].