{"adoption": {"forks": 88, "observed_at": "2026-08-28T04:05:17.964360+00:00", "stars": 1656}, "canonical_url": "https://ross.abutalabs.com/products/easytransitions", "card": {"archived": false, "artifact_type": "library", "description": "A simple way to create custom interactive UIViewController transitions", "domain": ["mobile-development", "frontend", "web-design"], "enriched": true, "function": ["animation", "ui-components", "mobile-framework"], "health_score": 20, "homepage": null, "language": "Swift", "license": "MIT", "license_family": "permissive", "maturity": "experimental", "member_repos": ["marcosgriselli/EasyTransitions"], "name": "marcosgriselli/EasyTransitions", "platform": [], "pushed_at": "2022-10-06T00:15:39+00:00", "repo": "marcosgriselli/EasyTransitions", "stars": 1656, "tags": ["uikit", "view-controller-transitions", "interactive-transitions", "cocoapods", "carthage", "tvos", "ios", "swift", "mobile"], "topics": ["swift", "ios", "ui", "animations", "transition", "interaction", "ux"], "urls": [], "use_cases": ["create custom view controller transitions in ios", "add interactive swipe-to-dismiss transitions to modal screens", "implement app store style card expansion animation", "build custom navigation controller push and pop animations", "add pan gesture driven transition interactions with one line of code"], "what_it_is": "EasyTransitions is a Swift library that simplifies creating custom interactive UIViewController transitions on iOS and tvOS. It abstracts UIKit's multiple transition APIs behind simple protocol-based configurators for modal and navigation transitions.", "when_to_avoid": ["you need a battle-tested production library, since it is marked work in progress and pre-1.0", "you are not building with UIKit on iOS or tvOS", "you only need standard system transitions"], "when_to_choose": ["you need custom or interactive UIViewController transitions without wrestling with UIKit transition APIs", "you want modal, presentation controller, and navigation transitions from one library", "you are building an iOS or tvOS app in Swift and want quick transition setup"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/easytransitions", "repo": "marcosgriselli/EasyTransitions", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:17.964360+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:44:50.007095+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5c7b330440b6b1317b59e664cffa9c5d6775cd3aab5eb277bb109ec3782f798c", "fetched_at": "2026-08-28T04:05:17.964360+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marcosgriselli/EasyTransitions"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:17.964360+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:44:50.007095+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5c7b330440b6b1317b59e664cffa9c5d6775cd3aab5eb277bb109ec3782f798c", "fetched_at": "2026-08-28T04:05:17.964360+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marcosgriselli/EasyTransitions"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:44:50.007095+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5c7b330440b6b1317b59e664cffa9c5d6775cd3aab5eb277bb109ec3782f798c", "fetched_at": "2026-08-28T04:05:17.964360+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marcosgriselli/EasyTransitions"}], "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:17.964360+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:17.964360+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:17.964360+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:44:50.007095+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5c7b330440b6b1317b59e664cffa9c5d6775cd3aab5eb277bb109ec3782f798c", "fetched_at": "2026-08-28T04:05:17.964360+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marcosgriselli/EasyTransitions"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:17.964360+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:17.964360+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:44:50.007095+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5c7b330440b6b1317b59e664cffa9c5d6775cd3aab5eb277bb109ec3782f798c", "fetched_at": "2026-08-28T04:05:17.964360+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marcosgriselli/EasyTransitions"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:17.964360+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:17.964360+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:17.964360+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:44:50.007095+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5c7b330440b6b1317b59e664cffa9c5d6775cd3aab5eb277bb109ec3782f798c", "fetched_at": "2026-08-28T04:05:17.964360+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marcosgriselli/EasyTransitions"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:17.964360+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:17.964360+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:44:50.007095+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5c7b330440b6b1317b59e664cffa9c5d6775cd3aab5eb277bb109ec3782f798c", "fetched_at": "2026-08-28T04:05:17.964360+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marcosgriselli/EasyTransitions"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:44:50.007095+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5c7b330440b6b1317b59e664cffa9c5d6775cd3aab5eb277bb109ec3782f798c", "fetched_at": "2026-08-28T04:05:17.964360+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marcosgriselli/EasyTransitions"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:44:50.007095+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5c7b330440b6b1317b59e664cffa9c5d6775cd3aab5eb277bb109ec3782f798c", "fetched_at": "2026-08-28T04:05:17.964360+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marcosgriselli/EasyTransitions"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:44:50.007095+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "5c7b330440b6b1317b59e664cffa9c5d6775cd3aab5eb277bb109ec3782f798c", "fetched_at": "2026-08-28T04:05:17.964360+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marcosgriselli/EasyTransitions"}], "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": 3070, "days_push": 1428, "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}}