{"adoption": {"forks": 86, "observed_at": "2026-08-28T04:05:22.195837+00:00", "stars": 1687}, "canonical_url": "https://ross.abutalabs.com/products/connectivity", "card": {"archived": false, "artifact_type": "library", "description": "🌐 Makes Internet connectivity detection more robust by detecting Wi-Fi networks without Internet access.", "domain": ["mobile-development", "apple-ecosystem", "networking"], "enriched": true, "function": ["networking", "monitoring"], "health_score": 29, "homepage": "https://medium.com/@rwbutler/solving-the-captive-portal-problem-on-ios-9a53ba2b381e", "language": "Swift", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["rwbutler/Connectivity"], "name": "rwbutler/Connectivity", "platform": [], "pushed_at": "2024-12-02T23:27:22+00:00", "repo": "rwbutler/Connectivity", "stars": 1687, "tags": ["captive-portal", "reachability", "wifi", "internet-connectivity", "swift", "ios", "apple-ecosystem"], "topics": ["captive-portals", "reachability", "wi-fi", "internet-access", "swift", "apple", "carthage", "wifi", "detecting-captive-portals", "wifi-network", "internet-connectivity", "internet-connection", "ios", "apple-reachability", "notifications"], "urls": [], "use_cases": ["detect when iOS device is on Wi-Fi without internet access", "handle captive portal login flows in my app", "replace Apple Reachability with more reliable connectivity checks", "notify users when their connection is not truly online", "check internet connectivity before making network requests", "detect public Wi-Fi networks requiring registration"], "what_it_is": "Connectivity is a Swift library that wraps Apple's Reachability to provide a reliable measure of actual Internet connectivity on iOS. It solves the captive portal problem by detecting when a device is connected to a Wi-Fi network that lacks real Internet access.", "when_to_avoid": ["you're not targeting Apple platforms", "you only need simple interface availability checks that Apple's Reachability already provides", "you need cross-platform connectivity detection"], "when_to_choose": ["you're building an iOS app that needs to distinguish real Internet access from mere interface availability", "you need to detect captive portals on public Wi-Fi networks", "you want callbacks, Combine support, and one-off connectivity checks"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/connectivity", "repo": "rwbutler/Connectivity", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:22.195837+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:38:53.616375+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac0aecd7987aa7eb47cd2380419c6faa8df0b4e3d66480b78b2be61177cd8b6e", "fetched_at": "2026-08-28T04:05:22.195837+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rwbutler/Connectivity"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:22.195837+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:38:53.616375+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac0aecd7987aa7eb47cd2380419c6faa8df0b4e3d66480b78b2be61177cd8b6e", "fetched_at": "2026-08-28T04:05:22.195837+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rwbutler/Connectivity"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:38:53.616375+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac0aecd7987aa7eb47cd2380419c6faa8df0b4e3d66480b78b2be61177cd8b6e", "fetched_at": "2026-08-28T04:05:22.195837+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rwbutler/Connectivity"}], "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:22.195837+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:22.195837+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:22.195837+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:38:53.616375+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac0aecd7987aa7eb47cd2380419c6faa8df0b4e3d66480b78b2be61177cd8b6e", "fetched_at": "2026-08-28T04:05:22.195837+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rwbutler/Connectivity"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:22.195837+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:22.195837+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:38:53.616375+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac0aecd7987aa7eb47cd2380419c6faa8df0b4e3d66480b78b2be61177cd8b6e", "fetched_at": "2026-08-28T04:05:22.195837+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rwbutler/Connectivity"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:22.195837+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:22.195837+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:22.195837+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:38:53.616375+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac0aecd7987aa7eb47cd2380419c6faa8df0b4e3d66480b78b2be61177cd8b6e", "fetched_at": "2026-08-28T04:05:22.195837+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rwbutler/Connectivity"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:22.195837+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:22.195837+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:38:53.616375+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac0aecd7987aa7eb47cd2380419c6faa8df0b4e3d66480b78b2be61177cd8b6e", "fetched_at": "2026-08-28T04:05:22.195837+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rwbutler/Connectivity"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:38:53.616375+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac0aecd7987aa7eb47cd2380419c6faa8df0b4e3d66480b78b2be61177cd8b6e", "fetched_at": "2026-08-28T04:05:22.195837+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rwbutler/Connectivity"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:38:53.616375+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac0aecd7987aa7eb47cd2380419c6faa8df0b4e3d66480b78b2be61177cd8b6e", "fetched_at": "2026-08-28T04:05:22.195837+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rwbutler/Connectivity"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:38:53.616375+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "ac0aecd7987aa7eb47cd2380419c6faa8df0b4e3d66480b78b2be61177cd8b6e", "fetched_at": "2026-08-28T04:05:22.195837+00:00", "kind": "readme", "missing": false, "url": "https://github.com/rwbutler/Connectivity"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3334, "days_push": 639, "days_rel": 687, "gap_med": null, "n_releases_24m": 1}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}