{"adoption": {"forks": 490, "observed_at": "2026-08-28T04:06:05.588047+00:00", "stars": 2016}, "canonical_url": "https://ross.abutalabs.com/products/mscrashprotector", "card": {"archived": false, "artifact_type": "library", "description": "An Global protection scheme..", "domain": ["mobile-development", "developer-tools"], "enriched": true, "function": ["error-handling", "developer-tools"], "health_score": 20, "homepage": null, "language": "Objective-C", "license": null, "license_family": "other", "maturity": "maintenance", "member_repos": ["sureJiang/MSCrashProtector"], "name": "sureJiang/MSCrashProtector", "platform": [], "pushed_at": "2023-06-28T19:28:50+00:00", "repo": "sureJiang/MSCrashProtector", "stars": 2016, "tags": ["crash-protection", "ios", "objective-c", "cocoapods", "runtime-safety", "foundation-classes", "apple-ecosystem"], "topics": [], "urls": [], "use_cases": ["prevent iOS app crashes from out-of-bounds array access", "avoid crashes from nil objects inserted into NSMutableArray", "protect NSDictionary from nil keys or objects", "add runtime safety guards to Foundation collection classes", "reduce crash rate in production iOS apps"], "what_it_is": "An Objective-C library for iOS that provides global crash protection by adding safe variants of common Foundation collection methods (NSArray, NSDictionary, etc.) to prevent out-of-bounds and nil-argument crashes. It is distributed via CocoaPods and supports iOS 5.0+ with ARC/MRC.", "when_to_avoid": ["you are building a Swift-only project", "you want actively maintained crash reporting rather than protection", "you prefer explicit error handling over swizzled safe methods"], "when_to_choose": ["you maintain a legacy Objective-C iOS app prone to collection-related crashes", "you want a drop-in CocoaPods library for global crash protection", "you need ARC/MRC compatibility on older iOS versions"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/mscrashprotector", "repo": "sureJiang/MSCrashProtector", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.588047+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:00:42.807836+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e67f85a57f82efa92fca8de5da28c73abcf52f256b0e92986f21be7864ba5549", "fetched_at": "2026-08-28T04:06:05.588047+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sureJiang/MSCrashProtector"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.588047+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:00:42.807836+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e67f85a57f82efa92fca8de5da28c73abcf52f256b0e92986f21be7864ba5549", "fetched_at": "2026-08-28T04:06:05.588047+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sureJiang/MSCrashProtector"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:00:42.807836+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e67f85a57f82efa92fca8de5da28c73abcf52f256b0e92986f21be7864ba5549", "fetched_at": "2026-08-28T04:06:05.588047+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sureJiang/MSCrashProtector"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.588047+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.588047+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.588047+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:00:42.807836+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e67f85a57f82efa92fca8de5da28c73abcf52f256b0e92986f21be7864ba5549", "fetched_at": "2026-08-28T04:06:05.588047+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sureJiang/MSCrashProtector"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.588047+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.588047+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:00:42.807836+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e67f85a57f82efa92fca8de5da28c73abcf52f256b0e92986f21be7864ba5549", "fetched_at": "2026-08-28T04:06:05.588047+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sureJiang/MSCrashProtector"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.588047+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.588047+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.588047+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:00:42.807836+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e67f85a57f82efa92fca8de5da28c73abcf52f256b0e92986f21be7864ba5549", "fetched_at": "2026-08-28T04:06:05.588047+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sureJiang/MSCrashProtector"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.588047+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:05.588047+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:00:42.807836+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e67f85a57f82efa92fca8de5da28c73abcf52f256b0e92986f21be7864ba5549", "fetched_at": "2026-08-28T04:06:05.588047+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sureJiang/MSCrashProtector"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:00:42.807836+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e67f85a57f82efa92fca8de5da28c73abcf52f256b0e92986f21be7864ba5549", "fetched_at": "2026-08-28T04:06:05.588047+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sureJiang/MSCrashProtector"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:00:42.807836+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e67f85a57f82efa92fca8de5da28c73abcf52f256b0e92986f21be7864ba5549", "fetched_at": "2026-08-28T04:06:05.588047+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sureJiang/MSCrashProtector"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:00:42.807836+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "e67f85a57f82efa92fca8de5da28c73abcf52f256b0e92986f21be7864ba5549", "fetched_at": "2026-08-28T04:06:05.588047+00:00", "kind": "readme", "missing": false, "url": "https://github.com/sureJiang/MSCrashProtector"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2474, "days_push": 1162, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}