{"adoption": {"forks": 149, "observed_at": "2026-08-28T04:05:02.892267+00:00", "stars": 1553}, "canonical_url": "https://ross.abutalabs.com/products/ibpcollectionviewcompositionallayout", "card": {"archived": false, "artifact_type": "library", "description": "Backport of UICollectionViewCompositionalLayout to earlier iOS 12", "domain": ["mobile-development", "cross-platform"], "enriched": true, "function": ["ui-components", "developer-tools"], "health_score": 20, "homepage": null, "language": "Swift", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["kishikawakatsumi/IBPCollectionViewCompositionalLayout"], "name": "kishikawakatsumi/IBPCollectionViewCompositionalLayout", "platform": [], "pushed_at": "2022-04-25T18:42:31+00:00", "repo": "kishikawakatsumi/IBPCollectionViewCompositionalLayout", "stars": 1553, "tags": ["uikit", "uicollectionviewlayout", "compositional-layout", "backport", "cocoapods", "spm", "ios", "swift", "mobile"], "topics": ["uicollectionviewlayout", "compositional-layouts", "uikit", "backport"], "urls": [], "use_cases": ["use compositional layout on iOS 12", "backport UICollectionViewCompositionalLayout to older iOS", "create complex collection view layouts without custom UICollectionViewLayout subclasses", "avoid maintaining two codebases for iOS 12 and iOS 13", "build nested collection views with independently scrolling sections"], "what_it_is": "A Swift/Objective-C library that backports UICollectionViewCompositionalLayout from iOS 13 to iOS 12 and earlier. It lets developers use Apple's compositional collection view layout APIs without maintaining separate codebases for older iOS versions.", "when_to_avoid": ["your minimum deployment target is iOS 13 or later (use the native API)", "the project needs actively maintained dependencies (last release 2022)", "you use SwiftUI collection views instead of UIKit"], "when_to_choose": ["you must support iOS 12 or earlier but want modern compositional layout APIs", "you want declarative collection view layouts without subclassing UICollectionViewLayout", "your app targets users on older iOS versions during a transition period"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/ibpcollectionviewcompositionallayout", "repo": "kishikawakatsumi/IBPCollectionViewCompositionalLayout", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.892267+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T04:30:09.234948+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d6f1b57e46691fd98016df1c36d13c84a0ed18eedc19e3632052cfa78defe7d8", "fetched_at": "2026-08-28T04:05:02.892267+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kishikawakatsumi/IBPCollectionViewCompositionalLayout"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.892267+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T04:30:09.234948+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d6f1b57e46691fd98016df1c36d13c84a0ed18eedc19e3632052cfa78defe7d8", "fetched_at": "2026-08-28T04:05:02.892267+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kishikawakatsumi/IBPCollectionViewCompositionalLayout"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T04:30:09.234948+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d6f1b57e46691fd98016df1c36d13c84a0ed18eedc19e3632052cfa78defe7d8", "fetched_at": "2026-08-28T04:05:02.892267+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kishikawakatsumi/IBPCollectionViewCompositionalLayout"}], "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:02.892267+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.892267+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.892267+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T04:30:09.234948+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d6f1b57e46691fd98016df1c36d13c84a0ed18eedc19e3632052cfa78defe7d8", "fetched_at": "2026-08-28T04:05:02.892267+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kishikawakatsumi/IBPCollectionViewCompositionalLayout"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.892267+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.892267+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T04:30:09.234948+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d6f1b57e46691fd98016df1c36d13c84a0ed18eedc19e3632052cfa78defe7d8", "fetched_at": "2026-08-28T04:05:02.892267+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kishikawakatsumi/IBPCollectionViewCompositionalLayout"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.892267+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.892267+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.892267+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T04:30:09.234948+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d6f1b57e46691fd98016df1c36d13c84a0ed18eedc19e3632052cfa78defe7d8", "fetched_at": "2026-08-28T04:05:02.892267+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kishikawakatsumi/IBPCollectionViewCompositionalLayout"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.892267+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:02.892267+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T04:30:09.234948+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d6f1b57e46691fd98016df1c36d13c84a0ed18eedc19e3632052cfa78defe7d8", "fetched_at": "2026-08-28T04:05:02.892267+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kishikawakatsumi/IBPCollectionViewCompositionalLayout"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T04:30:09.234948+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d6f1b57e46691fd98016df1c36d13c84a0ed18eedc19e3632052cfa78defe7d8", "fetched_at": "2026-08-28T04:05:02.892267+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kishikawakatsumi/IBPCollectionViewCompositionalLayout"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T04:30:09.234948+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d6f1b57e46691fd98016df1c36d13c84a0ed18eedc19e3632052cfa78defe7d8", "fetched_at": "2026-08-28T04:05:02.892267+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kishikawakatsumi/IBPCollectionViewCompositionalLayout"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T04:30:09.234948+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "d6f1b57e46691fd98016df1c36d13c84a0ed18eedc19e3632052cfa78defe7d8", "fetched_at": "2026-08-28T04:05:02.892267+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kishikawakatsumi/IBPCollectionViewCompositionalLayout"}], "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": 2584, "days_push": 1591, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}