{"adoption": {"forks": 3411, "observed_at": "2026-08-28T04:11:29.282654+00:00", "stars": 19815}, "canonical_url": "https://ross.abutalabs.com/products/reactivecocoa", "card": {"archived": false, "artifact_type": "framework", "description": "Cocoa framework and Obj-C dynamism bindings for ReactiveSwift.", "domain": ["mobile-development", "frontend"], "enriched": true, "function": ["state-management", "ui-components", "middleware"], "health_score": 45, "homepage": null, "language": "Swift", "license": "MIT", "license_family": "permissive", "maturity": "active", "member_repos": ["ReactiveCocoa/ReactiveCocoa", "ReactiveCocoa/ReactiveSwift", "ReactiveCocoa/ReactiveObjC"], "name": "ReactiveCocoa", "platform": [], "pushed_at": "2025-09-12T03:55:10+00:00", "repo": "ReactiveCocoa/ReactiveCocoa", "stars": 19815, "tags": ["reactive-programming", "cocoa", "functional-reactive-programming", "signals", "bindings", "swift", "ios", "macos", "mobile"], "topics": ["reactiveswift", "reactivecocoa", "swift"], "urls": [], "use_cases": ["bind view model properties to UI controls in Swift", "handle button taps and control events as signal streams", "reactively update UI from streams of values over time", "replace delegate and notification patterns with declarative signals", "observe text field changes and compute derived values", "migrate an Objective-C ReactiveCocoa codebase to Swift"], "what_it_is": "ReactiveCocoa provides reactive extensions to Apple's Cocoa frameworks, built on top of ReactiveSwift's composable streams-of-values-over-time primitives. It offers declarative UI bindings, control event signals, and Objective-C dynamism interception for iOS, macOS, watchOS, and tvOS apps.", "when_to_avoid": ["you're starting a new project and prefer Apple's native Combine or Swift Concurrency", "your app targets platforms outside Apple's ecosystem", "you want a minimal dependency footprint for simple UI code", "your team has no experience with functional reactive programming"], "when_to_choose": ["you're building an iOS or macOS app with a reactive, declarative architecture", "you want composable signal primitives for UI bindings and user interactions", "you prefer streams-over-time semantics over Combine or async/await patterns", "you need Objective-C method interception and deinit signals in Swift"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/repos/ReactiveCocoa/ReactiveCocoa", "repo": "ReactiveCocoa/ReactiveCocoa", "role": "main", "score": 41}, {"path": "/repos/ReactiveCocoa/ReactiveSwift", "repo": "ReactiveCocoa/ReactiveSwift", "role": "backend", "score": 36}, {"path": "/repos/ReactiveCocoa/ReactiveObjC", "repo": "ReactiveCocoa/ReactiveObjC", "role": "mirror", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:11:29.282654+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T16:59:26.022863+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d35601facc3924e11e39cf7f0b6cd8178789df9cf325dfe4a5de2d937f8b5db7", "fetched_at": "2026-08-28T04:11:29.282654+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ReactiveCocoa/ReactiveCocoa"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:11:29.282654+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T16:59:26.022863+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d35601facc3924e11e39cf7f0b6cd8178789df9cf325dfe4a5de2d937f8b5db7", "fetched_at": "2026-08-28T04:11:29.282654+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ReactiveCocoa/ReactiveCocoa"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T16:59:26.022863+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d35601facc3924e11e39cf7f0b6cd8178789df9cf325dfe4a5de2d937f8b5db7", "fetched_at": "2026-08-28T04:11:29.282654+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ReactiveCocoa/ReactiveCocoa"}], "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:11:29.282654+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:11:29.282654+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:11:29.282654+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T16:59:26.022863+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d35601facc3924e11e39cf7f0b6cd8178789df9cf325dfe4a5de2d937f8b5db7", "fetched_at": "2026-08-28T04:11:29.282654+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ReactiveCocoa/ReactiveCocoa"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:11:29.282654+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:11:29.282654+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T16:59:26.022863+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d35601facc3924e11e39cf7f0b6cd8178789df9cf325dfe4a5de2d937f8b5db7", "fetched_at": "2026-08-28T04:11:29.282654+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ReactiveCocoa/ReactiveCocoa"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:11:29.282654+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:11:29.282654+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:11:29.282654+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T16:59:26.022863+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d35601facc3924e11e39cf7f0b6cd8178789df9cf325dfe4a5de2d937f8b5db7", "fetched_at": "2026-08-28T04:11:29.282654+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ReactiveCocoa/ReactiveCocoa"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:11:29.282654+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:11:29.282654+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T16:59:26.022863+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d35601facc3924e11e39cf7f0b6cd8178789df9cf325dfe4a5de2d937f8b5db7", "fetched_at": "2026-08-28T04:11:29.282654+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ReactiveCocoa/ReactiveCocoa"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T16:59:26.022863+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d35601facc3924e11e39cf7f0b6cd8178789df9cf325dfe4a5de2d937f8b5db7", "fetched_at": "2026-08-28T04:11:29.282654+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ReactiveCocoa/ReactiveCocoa"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T16:59:26.022863+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d35601facc3924e11e39cf7f0b6cd8178789df9cf325dfe4a5de2d937f8b5db7", "fetched_at": "2026-08-28T04:11:29.282654+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ReactiveCocoa/ReactiveCocoa"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T16:59:26.022863+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d35601facc3924e11e39cf7f0b6cd8178789df9cf325dfe4a5de2d937f8b5db7", "fetched_at": "2026-08-28T04:11:29.282654+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ReactiveCocoa/ReactiveCocoa"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 41, "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": 5297, "days_push": 355, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 41, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}