{"adoption": {"forks": 255, "observed_at": "2026-08-28T04:05:57.834028+00:00", "stars": 1946}, "canonical_url": "https://ross.abutalabs.com/products/reactiveviewmodel", "card": {"archived": true, "artifact_type": "library", "description": "Model-View-ViewModel, using ReactiveCocoa", "domain": ["apple-ecosystem", "mobile-development", "desktop-applications", "developer-tools"], "enriched": true, "function": ["state-management", "ui-components"], "health_score": 10, "homepage": null, "language": "Objective-C", "license": "MIT", "license_family": "permissive", "maturity": "abandoned", "member_repos": ["ReactiveCocoa/ReactiveViewModel"], "name": "ReactiveCocoa/ReactiveViewModel", "platform": ["cpp"], "pushed_at": "2018-06-02T12:32:48+00:00", "repo": "ReactiveCocoa/ReactiveViewModel", "stars": 1946, "tags": ["mvvm", "reactivecocoa", "objective-c", "reactive-programming", "data-binding", "cocoa", "ios", "macos", "swift"], "topics": [], "urls": [], "use_cases": ["apply mvvm architecture to ios apps with reactivecocoa", "make view controller logic testable without ui automation", "share presentation logic between iphone, ipad, and mac", "implement ui state restoration using serializable view models", "move formatting and visibility logic out of view controllers"], "what_it_is": "ReactiveViewModel is an Objective-C library and documentation project for building Cocoa applications with the Model-View-ViewModel (MVVM) pattern on top of ReactiveCocoa. It provides reusable view model base classes and best-practice guidance for testable, platform-agnostic presentation logic.", "when_to_avoid": ["starting a new Swift project — use Combine, RxSwift, or SwiftUI instead", "you need actively maintained dependencies — the project has had no releases since 2018"], "when_to_choose": ["you are maintaining a legacy Objective-C codebase already using ReactiveCocoa", "you want MVVM guidance and base classes for Cocoa apps"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/reactiveviewmodel", "repo": "ReactiveCocoa/ReactiveViewModel", "role": "main", "score": 10}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.834028+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:07:10.936605+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ba9c21f37db6631cef359f5a3ae98393b3939078c7a9eb717a0a8b130b0886b", "fetched_at": "2026-08-28T04:05:57.834028+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ReactiveCocoa/ReactiveViewModel"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.834028+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:07:10.936605+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ba9c21f37db6631cef359f5a3ae98393b3939078c7a9eb717a0a8b130b0886b", "fetched_at": "2026-08-28T04:05:57.834028+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ReactiveCocoa/ReactiveViewModel"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:07:10.936605+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ba9c21f37db6631cef359f5a3ae98393b3939078c7a9eb717a0a8b130b0886b", "fetched_at": "2026-08-28T04:05:57.834028+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ReactiveCocoa/ReactiveViewModel"}], "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:57.834028+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.834028+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.834028+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:07:10.936605+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ba9c21f37db6631cef359f5a3ae98393b3939078c7a9eb717a0a8b130b0886b", "fetched_at": "2026-08-28T04:05:57.834028+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ReactiveCocoa/ReactiveViewModel"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.834028+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.834028+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:07:10.936605+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ba9c21f37db6631cef359f5a3ae98393b3939078c7a9eb717a0a8b130b0886b", "fetched_at": "2026-08-28T04:05:57.834028+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ReactiveCocoa/ReactiveViewModel"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.834028+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.834028+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.834028+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:07:10.936605+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ba9c21f37db6631cef359f5a3ae98393b3939078c7a9eb717a0a8b130b0886b", "fetched_at": "2026-08-28T04:05:57.834028+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ReactiveCocoa/ReactiveViewModel"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.834028+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.834028+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:07:10.936605+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ba9c21f37db6631cef359f5a3ae98393b3939078c7a9eb717a0a8b130b0886b", "fetched_at": "2026-08-28T04:05:57.834028+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ReactiveCocoa/ReactiveViewModel"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:07:10.936605+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ba9c21f37db6631cef359f5a3ae98393b3939078c7a9eb717a0a8b130b0886b", "fetched_at": "2026-08-28T04:05:57.834028+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ReactiveCocoa/ReactiveViewModel"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:07:10.936605+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ba9c21f37db6631cef359f5a3ae98393b3939078c7a9eb717a0a8b130b0886b", "fetched_at": "2026-08-28T04:05:57.834028+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ReactiveCocoa/ReactiveViewModel"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:07:10.936605+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5ba9c21f37db6631cef359f5a3ae98393b3939078c7a9eb717a0a8b130b0886b", "fetched_at": "2026-08-28T04:05:57.834028+00:00", "kind": "readme", "missing": false, "url": "https://github.com/ReactiveCocoa/ReactiveViewModel"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["archived"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 4827, "days_push": 3014, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 10, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}