{"adoption": {"forks": 91, "observed_at": "2026-08-28T04:05:47.167881+00:00", "stars": 1873}, "canonical_url": "https://ross.abutalabs.com/products/wojteklu-watchdog", "card": {"archived": false, "artifact_type": "library", "description": "Class for logging excessive blocking on the main thread", "domain": ["developer-tools", "mobile-development", "performance"], "enriched": true, "function": ["logging", "monitoring"], "health_score": 20, "homepage": null, "language": "Swift", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["wojteklu/Watchdog"], "name": "wojteklu/Watchdog", "platform": [], "pushed_at": "2024-06-14T22:54:44+00:00", "repo": "wojteklu/Watchdog", "stars": 1873, "tags": ["main-thread", "ui-debugging", "swift-library", "cocoapods", "carthage", "debugging", "ios", "macos", "swift"], "topics": ["swift", "mainthread", "debugging", "ios", "macos"], "urls": [], "use_cases": ["detect main thread hangs in an iOS app", "log when the UI thread is blocked for too long", "find which code is blocking the main thread during development", "debug janky or unresponsive interfaces on iOS or macOS", "enforce main thread responsiveness thresholds in strict mode"], "what_it_is": "Watchdog is a small Swift library that monitors the main thread and logs when it is blocked longer than a configurable threshold. It supports a strict mode that pauses execution so developers can inspect which code is blocking the main thread.", "when_to_avoid": ["you need production-grade performance monitoring or crash reporting rather than a development-time debugger", "your project is not on the Apple/Swift platform"], "when_to_choose": ["you are building an iOS, tvOS, or macOS app in Swift and want lightweight main-thread hang detection during development", "you need a tiny drop-in debugging aid rather than a full profiling suite"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/wojteklu-watchdog", "repo": "wojteklu/Watchdog", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:47.167881+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:14:55.741134+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9f77433c97dac821b42ed630dc3fec93c5cdd06fa86602939fe35a3dd19fcd0d", "fetched_at": "2026-08-28T04:05:47.167881+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wojteklu/Watchdog"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:47.167881+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:14:55.741134+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9f77433c97dac821b42ed630dc3fec93c5cdd06fa86602939fe35a3dd19fcd0d", "fetched_at": "2026-08-28T04:05:47.167881+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wojteklu/Watchdog"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:14:55.741134+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9f77433c97dac821b42ed630dc3fec93c5cdd06fa86602939fe35a3dd19fcd0d", "fetched_at": "2026-08-28T04:05:47.167881+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wojteklu/Watchdog"}], "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:05:47.167881+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:47.167881+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:47.167881+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:14:55.741134+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9f77433c97dac821b42ed630dc3fec93c5cdd06fa86602939fe35a3dd19fcd0d", "fetched_at": "2026-08-28T04:05:47.167881+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wojteklu/Watchdog"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:47.167881+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:47.167881+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:14:55.741134+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9f77433c97dac821b42ed630dc3fec93c5cdd06fa86602939fe35a3dd19fcd0d", "fetched_at": "2026-08-28T04:05:47.167881+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wojteklu/Watchdog"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:47.167881+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:47.167881+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:47.167881+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:14:55.741134+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9f77433c97dac821b42ed630dc3fec93c5cdd06fa86602939fe35a3dd19fcd0d", "fetched_at": "2026-08-28T04:05:47.167881+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wojteklu/Watchdog"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:47.167881+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:47.167881+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:14:55.741134+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9f77433c97dac821b42ed630dc3fec93c5cdd06fa86602939fe35a3dd19fcd0d", "fetched_at": "2026-08-28T04:05:47.167881+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wojteklu/Watchdog"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:14:55.741134+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9f77433c97dac821b42ed630dc3fec93c5cdd06fa86602939fe35a3dd19fcd0d", "fetched_at": "2026-08-28T04:05:47.167881+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wojteklu/Watchdog"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:14:55.741134+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9f77433c97dac821b42ed630dc3fec93c5cdd06fa86602939fe35a3dd19fcd0d", "fetched_at": "2026-08-28T04:05:47.167881+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wojteklu/Watchdog"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:14:55.741134+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9f77433c97dac821b42ed630dc3fec93c5cdd06fa86602939fe35a3dd19fcd0d", "fetched_at": "2026-08-28T04:05:47.167881+00:00", "kind": "readme", "missing": false, "url": "https://github.com/wojteklu/Watchdog"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_releases"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4009, "days_push": 810, "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}}