{"adoption": {"forks": 464, "observed_at": "2026-08-28T04:08:57.641385+00:00", "stars": 4728}, "canonical_url": "https://ross.abutalabs.com/products/devicekit", "card": {"archived": false, "artifact_type": "library", "description": "DeviceKit is a value-type replacement of UIDevice.", "domain": ["mobile-development", "developer-tools"], "enriched": true, "function": ["sdk", "developer-tools"], "health_score": 87, "homepage": null, "language": "Swift", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["devicekit/DeviceKit"], "name": "devicekit/DeviceKit", "platform": [], "pushed_at": "2026-05-22T14:39:34+00:00", "repo": "devicekit/DeviceKit", "stars": 4728, "tags": ["uidevice", "device-identification", "simulator-detection", "battery", "value-type", "tvos", "watchos", "ios", "swift", "mobile"], "topics": ["swift", "ios", "tvos", "device", "device-family", "simulator", "battery-level", "battery-state", "swiftpm", "hacktoberfest"], "urls": [], "use_cases": ["detect which iPhone or iPad model the app is running on", "check battery level and battery state in an iOS app", "determine if code is running on a simulator", "detect available biometric sensors like Touch ID or Face ID", "get screen size, PPI, and display metrics", "check available disk space at runtime", "detect Low Power Mode or Guided Access sessions", "identify Apple Pencil support"], "what_it_is": "DeviceKit is a Swift library providing a value-type replacement for Apple's UIDevice class. It offers device identification, family detection, simulator detection, battery metrics, and various hardware capabilities for iOS, tvOS, and watchOS apps.", "when_to_avoid": ["you only need basic UIDevice information and don't mind the class-based API", "you target platforms outside Apple's ecosystem", "you need runtime hardware queries not covered by DeviceKit's feature list"], "when_to_choose": ["you need device model identification beyond what UIDevice exposes", "you want a Swifty, value-type API instead of UIDevice's singleton", "you need simulator detection for testing or analytics", "you support iOS, tvOS, or watchOS and need unified device info"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/devicekit", "repo": "devicekit/DeviceKit", "role": "main", "score": 74}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:57.641385+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:19:02.886855+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "72dc04eeeaa0c0570599a922b2de5c2a7d2b97b086b7fb26ff833f7730e0975b", "fetched_at": "2026-08-28T04:08:57.641385+00:00", "kind": "readme", "missing": false, "url": "https://github.com/devicekit/DeviceKit"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:57.641385+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:19:02.886855+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "72dc04eeeaa0c0570599a922b2de5c2a7d2b97b086b7fb26ff833f7730e0975b", "fetched_at": "2026-08-28T04:08:57.641385+00:00", "kind": "readme", "missing": false, "url": "https://github.com/devicekit/DeviceKit"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:19:02.886855+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "72dc04eeeaa0c0570599a922b2de5c2a7d2b97b086b7fb26ff833f7730e0975b", "fetched_at": "2026-08-28T04:08:57.641385+00:00", "kind": "readme", "missing": false, "url": "https://github.com/devicekit/DeviceKit"}], "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:08:57.641385+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:57.641385+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:57.641385+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:19:02.886855+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "72dc04eeeaa0c0570599a922b2de5c2a7d2b97b086b7fb26ff833f7730e0975b", "fetched_at": "2026-08-28T04:08:57.641385+00:00", "kind": "readme", "missing": false, "url": "https://github.com/devicekit/DeviceKit"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:57.641385+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:57.641385+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:19:02.886855+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "72dc04eeeaa0c0570599a922b2de5c2a7d2b97b086b7fb26ff833f7730e0975b", "fetched_at": "2026-08-28T04:08:57.641385+00:00", "kind": "readme", "missing": false, "url": "https://github.com/devicekit/DeviceKit"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:57.641385+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:57.641385+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:57.641385+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:19:02.886855+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "72dc04eeeaa0c0570599a922b2de5c2a7d2b97b086b7fb26ff833f7730e0975b", "fetched_at": "2026-08-28T04:08:57.641385+00:00", "kind": "readme", "missing": false, "url": "https://github.com/devicekit/DeviceKit"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:57.641385+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:57.641385+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:19:02.886855+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "72dc04eeeaa0c0570599a922b2de5c2a7d2b97b086b7fb26ff833f7730e0975b", "fetched_at": "2026-08-28T04:08:57.641385+00:00", "kind": "readme", "missing": false, "url": "https://github.com/devicekit/DeviceKit"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:19:02.886855+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "72dc04eeeaa0c0570599a922b2de5c2a7d2b97b086b7fb26ff833f7730e0975b", "fetched_at": "2026-08-28T04:08:57.641385+00:00", "kind": "readme", "missing": false, "url": "https://github.com/devicekit/DeviceKit"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:19:02.886855+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "72dc04eeeaa0c0570599a922b2de5c2a7d2b97b086b7fb26ff833f7730e0975b", "fetched_at": "2026-08-28T04:08:57.641385+00:00", "kind": "readme", "missing": false, "url": "https://github.com/devicekit/DeviceKit"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:19:02.886855+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "72dc04eeeaa0c0570599a922b2de5c2a7d2b97b086b7fb26ff833f7730e0975b", "fetched_at": "2026-08-28T04:08:57.641385+00:00", "kind": "readme", "missing": false, "url": "https://github.com/devicekit/DeviceKit"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 83, "longevity": 100, "rhythm": 49}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4210, "days_push": 103, "days_rel": 183, "gap_med": 172, "n_releases_24m": 4}, "score": 74, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}