{"adoption": {"forks": 93, "observed_at": "2026-08-28T04:05:40.102141+00:00", "stars": 1815}, "canonical_url": "https://ross.abutalabs.com/products/popups", "card": {"archived": false, "artifact_type": "library", "description": "Popups, popovers, sheets, alerts, toasts, banners, (...) presentation made simple. Written with and for SwiftUI.", "domain": ["mobile-development", "frontend", "cross-platform"], "enriched": true, "function": ["ui-components", "animation", "state-management"], "health_score": 64, "homepage": null, "language": "Swift", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["Mijick/Popups"], "name": "Mijick/Popups", "platform": [], "pushed_at": "2025-10-22T18:52:37+00:00", "repo": "Mijick/Popups", "stars": 1815, "tags": ["swiftui", "popups", "toasts", "alerts", "sheets", "banners", "popovers", "swift-package-manager", "cocoapods", "ios", "swift", "mobile"], "topics": ["popup", "swift", "swift-package-manager", "swiftui", "swiftui-components", "swiftui-framework", "alert", "toast", "ios", "ios-swift", "swift-library", "swift-package", "cocoapods", "ios-sdk", "mobile", "swift6", "popupview", "popupwindow", "popup-window", "popover"], "urls": [], "use_cases": ["show toast notifications in a SwiftUI app", "present custom alerts and popups on iOS", "create resizable bottom sheets in SwiftUI", "display banners and popovers without boilerplate", "manage popup stacking and presentation state in SwiftUI", "replace UIKit alert controllers with SwiftUI-native popups"], "what_it_is": "A SwiftUI library that simplifies presenting popups, alerts, sheets, toasts, banners, and popovers in iOS apps. It provides a clean, declarative API for managing popup presentation with support for multiple positions and resizable sheets.", "when_to_avoid": ["your app targets UIKit rather than SwiftUI", "you need popups on Android or cross-platform frameworks", "you only need a single simple alert and prefer system-provided APIs"], "when_to_choose": ["you are building an iOS app with SwiftUI and need flexible popup presentation", "you want a clean declarative API for alerts, toasts, and sheets", "you need popup stacking, multiple positions, or resizable sheets out of the box"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/popups", "repo": "Mijick/Popups", "role": "main", "score": 59}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:40.102141+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:20:37.495167+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "012f46fc90693139c8bb00686185fba65d4c1d19dc9a894f56059349c6828b15", "fetched_at": "2026-08-28T04:05:40.102141+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Mijick/Popups"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:40.102141+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:20:37.495167+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "012f46fc90693139c8bb00686185fba65d4c1d19dc9a894f56059349c6828b15", "fetched_at": "2026-08-28T04:05:40.102141+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Mijick/Popups"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:20:37.495167+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "012f46fc90693139c8bb00686185fba65d4c1d19dc9a894f56059349c6828b15", "fetched_at": "2026-08-28T04:05:40.102141+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Mijick/Popups"}], "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:40.102141+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:40.102141+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:40.102141+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:20:37.495167+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "012f46fc90693139c8bb00686185fba65d4c1d19dc9a894f56059349c6828b15", "fetched_at": "2026-08-28T04:05:40.102141+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Mijick/Popups"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:40.102141+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:40.102141+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:20:37.495167+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "012f46fc90693139c8bb00686185fba65d4c1d19dc9a894f56059349c6828b15", "fetched_at": "2026-08-28T04:05:40.102141+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Mijick/Popups"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:40.102141+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:40.102141+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:40.102141+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:20:37.495167+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "012f46fc90693139c8bb00686185fba65d4c1d19dc9a894f56059349c6828b15", "fetched_at": "2026-08-28T04:05:40.102141+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Mijick/Popups"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:40.102141+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:40.102141+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:20:37.495167+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "012f46fc90693139c8bb00686185fba65d4c1d19dc9a894f56059349c6828b15", "fetched_at": "2026-08-28T04:05:40.102141+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Mijick/Popups"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:20:37.495167+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "012f46fc90693139c8bb00686185fba65d4c1d19dc9a894f56059349c6828b15", "fetched_at": "2026-08-28T04:05:40.102141+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Mijick/Popups"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:20:37.495167+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "012f46fc90693139c8bb00686185fba65d4c1d19dc9a894f56059349c6828b15", "fetched_at": "2026-08-28T04:05:40.102141+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Mijick/Popups"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:20:37.495167+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "012f46fc90693139c8bb00686185fba65d4c1d19dc9a894f56059349c6828b15", "fetched_at": "2026-08-28T04:05:40.102141+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Mijick/Popups"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 48, "longevity": 92, "rhythm": 53}, "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": 1300, "days_push": 315, "days_rel": 315, "gap_med": 18, "n_releases_24m": 10}, "score": 59, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}