{"adoption": {"forks": 539, "observed_at": "2026-08-28T04:09:47.935816+00:00", "stars": 6707}, "canonical_url": "https://ross.abutalabs.com/products/swinject", "card": {"archived": false, "artifact_type": "library", "description": "Dependency injection framework for Swift with iOS/macOS/Linux", "domain": ["mobile-development", "developer-tools", "cross-platform"], "enriched": true, "function": ["middleware", "developer-tools"], "health_score": 58, "homepage": null, "language": "Swift", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["Swinject/Swinject"], "name": "Swinject/Swinject", "platform": [], "pushed_at": "2025-09-01T20:09:08+00:00", "repo": "Swinject/Swinject", "stars": 6707, "tags": ["dependency-injection", "di-container", "ioc-container", "swift", "ios", "macos", "linux"], "topics": ["dependency-injection", "di-container", "swift", "ios", "ioc-container", "inversion-of-control"], "urls": [], "use_cases": ["resolve dependencies in a Swift iOS app with a DI container", "inject dependencies into view controllers via initializer or property injection", "manage singleton and transient object scopes in Swift", "break circular dependencies between Swift services", "make Swift code more testable with mock dependency injection", "organize app modules with assembler and container hierarchy"], "what_it_is": "Swinject is a lightweight dependency injection framework for Swift, implementing inversion of control via a DI container. It helps split apps into loosely-coupled components that are easier to develop, test, and maintain.", "when_to_avoid": ["your project is small enough that manual initializer injection is sufficient", "you're not using Swift or the Apple/Linux Swift ecosystem"], "when_to_choose": ["you're building an iOS/macOS/tvOS/watchOS or server-side Swift app and want loosely-coupled, testable components", "you need a mature, actively maintained Swift DI framework with object scopes and circular dependency support"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/swinject", "repo": "Swinject/Swinject", "role": "main", "score": 42}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:09:47.935816+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:42:57.369921+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f645d44619895eac553e683649ae29ebcaee0356ff1e922ac2209a305da509b2", "fetched_at": "2026-08-28T04:09:47.935816+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Swinject/Swinject"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:09:47.935816+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:42:57.369921+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f645d44619895eac553e683649ae29ebcaee0356ff1e922ac2209a305da509b2", "fetched_at": "2026-08-28T04:09:47.935816+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Swinject/Swinject"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:42:57.369921+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f645d44619895eac553e683649ae29ebcaee0356ff1e922ac2209a305da509b2", "fetched_at": "2026-08-28T04:09:47.935816+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Swinject/Swinject"}], "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:09:47.935816+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:09:47.935816+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:09:47.935816+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:42:57.369921+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f645d44619895eac553e683649ae29ebcaee0356ff1e922ac2209a305da509b2", "fetched_at": "2026-08-28T04:09:47.935816+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Swinject/Swinject"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:09:47.935816+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:09:47.935816+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:42:57.369921+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f645d44619895eac553e683649ae29ebcaee0356ff1e922ac2209a305da509b2", "fetched_at": "2026-08-28T04:09:47.935816+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Swinject/Swinject"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:09:47.935816+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:09:47.935816+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:09:47.935816+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:42:57.369921+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f645d44619895eac553e683649ae29ebcaee0356ff1e922ac2209a305da509b2", "fetched_at": "2026-08-28T04:09:47.935816+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Swinject/Swinject"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:09:47.935816+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:09:47.935816+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:42:57.369921+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f645d44619895eac553e683649ae29ebcaee0356ff1e922ac2209a305da509b2", "fetched_at": "2026-08-28T04:09:47.935816+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Swinject/Swinject"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:42:57.369921+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f645d44619895eac553e683649ae29ebcaee0356ff1e922ac2209a305da509b2", "fetched_at": "2026-08-28T04:09:47.935816+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Swinject/Swinject"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:42:57.369921+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f645d44619895eac553e683649ae29ebcaee0356ff1e922ac2209a305da509b2", "fetched_at": "2026-08-28T04:09:47.935816+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Swinject/Swinject"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:42:57.369921+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f645d44619895eac553e683649ae29ebcaee0356ff1e922ac2209a305da509b2", "fetched_at": "2026-08-28T04:09:47.935816+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Swinject/Swinject"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 39, "longevity": 100, "rhythm": 13}, "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": 4047, "days_push": 366, "days_rel": 366, "gap_med": null, "n_releases_24m": 1}, "score": 42, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}