{"adoption": {"forks": 327, "observed_at": "2026-08-28T04:06:43.892572+00:00", "stars": 2402}, "canonical_url": "https://ross.abutalabs.com/products/sketch", "card": {"archived": false, "artifact_type": "library", "description": "Image loading library designed for Compose Multiplatform and Android View. Supports loading Image, GIF, SVG, Video thumbnails from the network, local, resources, and photo albums.", "domain": ["mobile-development", "frontend", "cross-platform", "web-development"], "enriched": true, "function": ["image-processing", "caching", "http-client"], "health_score": 98, "homepage": "https://panpf.github.io/sketch/", "language": "Kotlin", "license": "Apache-2.0", "license_family": "permissive", "maturity": "active", "member_repos": ["panpf/sketch"], "name": "panpf/sketch", "platform": ["cross-platform", "jvm"], "pushed_at": "2026-08-08T08:33:06+00:00", "repo": "panpf/sketch", "stars": 2402, "tags": ["image-loader", "compose-multiplatform", "jetpack-compose", "gif", "svg", "exif-orientation", "video-thumbnails", "okhttp", "kotlin-coroutines", "android", "ios", "desktop"], "topics": ["android", "gif", "image", "image-orientation", "image-loader", "base64-image", "video-thumbnail", "apk-icon", "exif", "jetpack-compose", "okhttp", "svg", "compose", "compose-multiplatform", "heif", "webp"], "urls": [], "use_cases": ["load images from network in a Jetpack Compose Android app", "display animated GIFs in Compose Multiplatform", "load SVG and Base64 images on Android", "show video thumbnails or APK icons in a list", "cache images with memory and disk caching on Android and iOS", "automatically resize and rotate images according to EXIF orientation", "pause image loading during list scrolling or on cellular data"], "what_it_is": "Sketch is an image loading library designed for Compose Multiplatform and Android View, supporting loading images, GIFs, SVGs, and video thumbnails from network, local files, resources, and photo albums. It provides three-level caching, automatic request cancellation, Exif-based rotation, and extensible decoding, caching, and transformation pipelines built on Kotlin coroutines.", "when_to_avoid": ["building non-Kotlin or non-Android/iOS/desktop/web applications", "you only need simple one-off image decoding without caching or async loading", "your project is locked into another image loader ecosystem with heavy customization"], "when_to_choose": ["building Compose Multiplatform or Android View apps that need rich image loading", "you need GIF, SVG, video frame, or HEIF/WebP support out of the box", "you want Kotlin coroutine-based image loading with caching and request management", "migrating from Glide/Coil with a need for multiplatform support"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/sketch", "repo": "panpf/sketch", "role": "main", "score": 97}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.892572+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:34:13.527777+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8c4df686d96ffe0c62f427b29599c161a733733701f3511208c550997e17b388", "fetched_at": "2026-08-28T04:06:43.892572+00:00", "kind": "readme", "missing": false, "url": "https://github.com/panpf/sketch"}, {"content_hash": "399f228853994e23b313fbc1ba5eba940ee38dd23260c67907b7a1a0c9a8a68c", "fetched_at": "2026-08-29T10:14:37.050696+00:00", "kind": "homepage", "missing": false, "url": "https://panpf.github.io/sketch/"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.892572+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:34:13.527777+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8c4df686d96ffe0c62f427b29599c161a733733701f3511208c550997e17b388", "fetched_at": "2026-08-28T04:06:43.892572+00:00", "kind": "readme", "missing": false, "url": "https://github.com/panpf/sketch"}, {"content_hash": "399f228853994e23b313fbc1ba5eba940ee38dd23260c67907b7a1a0c9a8a68c", "fetched_at": "2026-08-29T10:14:37.050696+00:00", "kind": "homepage", "missing": false, "url": "https://panpf.github.io/sketch/"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:34:13.527777+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8c4df686d96ffe0c62f427b29599c161a733733701f3511208c550997e17b388", "fetched_at": "2026-08-28T04:06:43.892572+00:00", "kind": "readme", "missing": false, "url": "https://github.com/panpf/sketch"}, {"content_hash": "399f228853994e23b313fbc1ba5eba940ee38dd23260c67907b7a1a0c9a8a68c", "fetched_at": "2026-08-29T10:14:37.050696+00:00", "kind": "homepage", "missing": false, "url": "https://panpf.github.io/sketch/"}], "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:06:43.892572+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.892572+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.892572+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:34:13.527777+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8c4df686d96ffe0c62f427b29599c161a733733701f3511208c550997e17b388", "fetched_at": "2026-08-28T04:06:43.892572+00:00", "kind": "readme", "missing": false, "url": "https://github.com/panpf/sketch"}, {"content_hash": "399f228853994e23b313fbc1ba5eba940ee38dd23260c67907b7a1a0c9a8a68c", "fetched_at": "2026-08-29T10:14:37.050696+00:00", "kind": "homepage", "missing": false, "url": "https://panpf.github.io/sketch/"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.892572+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.892572+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:34:13.527777+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8c4df686d96ffe0c62f427b29599c161a733733701f3511208c550997e17b388", "fetched_at": "2026-08-28T04:06:43.892572+00:00", "kind": "readme", "missing": false, "url": "https://github.com/panpf/sketch"}, {"content_hash": "399f228853994e23b313fbc1ba5eba940ee38dd23260c67907b7a1a0c9a8a68c", "fetched_at": "2026-08-29T10:14:37.050696+00:00", "kind": "homepage", "missing": false, "url": "https://panpf.github.io/sketch/"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.892572+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.892572+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.892572+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:34:13.527777+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8c4df686d96ffe0c62f427b29599c161a733733701f3511208c550997e17b388", "fetched_at": "2026-08-28T04:06:43.892572+00:00", "kind": "readme", "missing": false, "url": "https://github.com/panpf/sketch"}, {"content_hash": "399f228853994e23b313fbc1ba5eba940ee38dd23260c67907b7a1a0c9a8a68c", "fetched_at": "2026-08-29T10:14:37.050696+00:00", "kind": "homepage", "missing": false, "url": "https://panpf.github.io/sketch/"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.892572+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.892572+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:34:13.527777+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8c4df686d96ffe0c62f427b29599c161a733733701f3511208c550997e17b388", "fetched_at": "2026-08-28T04:06:43.892572+00:00", "kind": "readme", "missing": false, "url": "https://github.com/panpf/sketch"}, {"content_hash": "399f228853994e23b313fbc1ba5eba940ee38dd23260c67907b7a1a0c9a8a68c", "fetched_at": "2026-08-29T10:14:37.050696+00:00", "kind": "homepage", "missing": false, "url": "https://panpf.github.io/sketch/"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:34:13.527777+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8c4df686d96ffe0c62f427b29599c161a733733701f3511208c550997e17b388", "fetched_at": "2026-08-28T04:06:43.892572+00:00", "kind": "readme", "missing": false, "url": "https://github.com/panpf/sketch"}, {"content_hash": "399f228853994e23b313fbc1ba5eba940ee38dd23260c67907b7a1a0c9a8a68c", "fetched_at": "2026-08-29T10:14:37.050696+00:00", "kind": "homepage", "missing": false, "url": "https://panpf.github.io/sketch/"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:34:13.527777+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8c4df686d96ffe0c62f427b29599c161a733733701f3511208c550997e17b388", "fetched_at": "2026-08-28T04:06:43.892572+00:00", "kind": "readme", "missing": false, "url": "https://github.com/panpf/sketch"}, {"content_hash": "399f228853994e23b313fbc1ba5eba940ee38dd23260c67907b7a1a0c9a8a68c", "fetched_at": "2026-08-29T10:14:37.050696+00:00", "kind": "homepage", "missing": false, "url": "https://panpf.github.io/sketch/"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:34:13.527777+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "8c4df686d96ffe0c62f427b29599c161a733733701f3511208c550997e17b388", "fetched_at": "2026-08-28T04:06:43.892572+00:00", "kind": "readme", "missing": false, "url": "https://github.com/panpf/sketch"}, {"content_hash": "399f228853994e23b313fbc1ba5eba940ee38dd23260c67907b7a1a0c9a8a68c", "fetched_at": "2026-08-29T10:14:37.050696+00:00", "kind": "homepage", "missing": false, "url": "https://panpf.github.io/sketch/"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 96, "longevity": 100, "rhythm": 96}, "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": 4660, "days_push": 25, "days_rel": 28, "gap_med": 11, "n_releases_24m": 36}, "score": 97, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}