{"adoption": {"forks": 121, "observed_at": "2026-08-28T04:05:57.859806+00:00", "stars": 1946}, "canonical_url": "https://ross.abutalabs.com/products/peekpop", "card": {"archived": false, "artifact_type": "library", "description": "Peek and Pop with backwards-compatibility ", "domain": ["mobile-development", "cross-platform"], "enriched": true, "function": ["ui-components", "animation"], "health_score": 20, "homepage": null, "language": "Swift", "license": "MIT", "license_family": "permissive", "maturity": "abandoned", "member_repos": ["marmelroy/PeekPop"], "name": "marmelroy/PeekPop", "platform": [], "pushed_at": "2018-06-19T10:28:56+00:00", "repo": "marmelroy/PeekPop", "stars": 1946, "tags": ["3d-touch", "peek-and-pop", "backwards-compatibility", "pressure-sensitivity", "uikit", "ios", "swift", "mobile"], "topics": [], "urls": [], "use_cases": ["add peek and pop previews to an iOS app on devices without 3D touch", "implement pressure-sensitive tap recognition in Swift", "recreate Apple's peek and pop animation on older iPhones", "preview view controllers with a long-press-like gesture on iOS 8", "make a collection view support force-touch-style content previews"], "what_it_is": "PeekPop is a Swift framework that brings the iOS Peek and Pop 3D Touch interaction to older devices without 3D Touch hardware. It uses UITouch majorRadius changes to simulate pressure sensitivity and recreates Apple's peek and pop animations on iOS 8+ devices.", "when_to_avoid": ["your app targets only 3D Touch or newer haptic devices where UIKit's native APIs suffice", "you need peek and pop preview actions on non-3D-touch devices (unsupported)", "you need an actively maintained library - the last release was in 2018"], "when_to_choose": ["you need Peek and Pop behavior on iOS devices lacking 3D touch hardware", "you want an API nearly identical to Apple's previewing APIs", "your app still supports iOS 8 or older devices"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/peekpop", "repo": "marmelroy/PeekPop", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.859806+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:07:20.880536+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9d3286f8168def5aa6cda9d2ba692a71cf679009a144743a774c10f92de9a9d3", "fetched_at": "2026-08-28T04:05:57.859806+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marmelroy/PeekPop"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.859806+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:07:20.880536+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9d3286f8168def5aa6cda9d2ba692a71cf679009a144743a774c10f92de9a9d3", "fetched_at": "2026-08-28T04:05:57.859806+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marmelroy/PeekPop"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:07:20.880536+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9d3286f8168def5aa6cda9d2ba692a71cf679009a144743a774c10f92de9a9d3", "fetched_at": "2026-08-28T04:05:57.859806+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marmelroy/PeekPop"}], "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.859806+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.859806+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.859806+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:07:20.880536+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9d3286f8168def5aa6cda9d2ba692a71cf679009a144743a774c10f92de9a9d3", "fetched_at": "2026-08-28T04:05:57.859806+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marmelroy/PeekPop"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.859806+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.859806+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:07:20.880536+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9d3286f8168def5aa6cda9d2ba692a71cf679009a144743a774c10f92de9a9d3", "fetched_at": "2026-08-28T04:05:57.859806+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marmelroy/PeekPop"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.859806+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.859806+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.859806+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:07:20.880536+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9d3286f8168def5aa6cda9d2ba692a71cf679009a144743a774c10f92de9a9d3", "fetched_at": "2026-08-28T04:05:57.859806+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marmelroy/PeekPop"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.859806+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:57.859806+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:07:20.880536+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9d3286f8168def5aa6cda9d2ba692a71cf679009a144743a774c10f92de9a9d3", "fetched_at": "2026-08-28T04:05:57.859806+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marmelroy/PeekPop"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:07:20.880536+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9d3286f8168def5aa6cda9d2ba692a71cf679009a144743a774c10f92de9a9d3", "fetched_at": "2026-08-28T04:05:57.859806+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marmelroy/PeekPop"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:07:20.880536+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9d3286f8168def5aa6cda9d2ba692a71cf679009a144743a774c10f92de9a9d3", "fetched_at": "2026-08-28T04:05:57.859806+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marmelroy/PeekPop"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:07:20.880536+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9d3286f8168def5aa6cda9d2ba692a71cf679009a144743a774c10f92de9a9d3", "fetched_at": "2026-08-28T04:05:57.859806+00:00", "kind": "readme", "missing": false, "url": "https://github.com/marmelroy/PeekPop"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3844, "days_push": 2997, "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}}