{"adoption": {"forks": 83, "observed_at": "2026-08-28T04:03:59.249720+00:00", "stars": 1205}, "canonical_url": "https://ross.abutalabs.com/products/graywater", "card": {"archived": false, "artifact_type": "library", "description": "An Android library for decomposing RecyclerView layouts to improve scroll performance.", "domain": ["mobile-development", "android-tools", "performance"], "enriched": true, "function": ["ui-components", "state-management"], "health_score": 20, "homepage": null, "language": "Java", "license": "Apache-2.0", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["tumblr/Graywater"], "name": "tumblr/Graywater", "platform": ["jvm"], "pushed_at": "2018-01-03T19:21:49+00:00", "repo": "tumblr/Graywater", "stars": 1205, "tags": ["recyclerview", "adapter", "viewholder", "scroll-performance", "java", "list-ui", "android"], "topics": ["android", "android-library", "performance", "recyclerview-adapter"], "urls": [], "use_cases": ["improve recyclerview scroll performance on android", "reduce memory usage in complex android lists", "map one data model to multiple viewholders", "build a performant news feed style list", "recycle offscreen parts of complex list items", "modular recyclerview adapter architecture"], "what_it_is": "Graywater is an Android RecyclerView adapter library that decomposes complex list items into multiple viewholders to improve scroll performance and reduce memory usage. It maps large data models to multiple binders, splitting rendering work across frames, inspired by Facebook's Components for Android.", "when_to_avoid": ["your lists are simple with few item types", "you need an actively maintained library - the last release was 2018", "you prefer modern declarative UI like Jetpack Compose or Litho"], "when_to_choose": ["your Android app has complex, varied list items causing janky scrolling", "you want to split list item rendering across multiple frames", "you need shared viewholders across different model types to cut memory pressure"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/graywater", "repo": "tumblr/Graywater", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:03:59.249720+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T06:19:37.194924+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "42b9a084f3386a7a99dbcec40f61044f17a15007fbd4209eda18c71a802e6306", "fetched_at": "2026-08-28T04:03:59.249720+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tumblr/Graywater"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:03:59.249720+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T06:19:37.194924+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "42b9a084f3386a7a99dbcec40f61044f17a15007fbd4209eda18c71a802e6306", "fetched_at": "2026-08-28T04:03:59.249720+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tumblr/Graywater"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T06:19:37.194924+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "42b9a084f3386a7a99dbcec40f61044f17a15007fbd4209eda18c71a802e6306", "fetched_at": "2026-08-28T04:03:59.249720+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tumblr/Graywater"}], "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:03:59.249720+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:03:59.249720+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:03:59.249720+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T06:19:37.194924+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "42b9a084f3386a7a99dbcec40f61044f17a15007fbd4209eda18c71a802e6306", "fetched_at": "2026-08-28T04:03:59.249720+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tumblr/Graywater"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:03:59.249720+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:03:59.249720+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T06:19:37.194924+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "42b9a084f3386a7a99dbcec40f61044f17a15007fbd4209eda18c71a802e6306", "fetched_at": "2026-08-28T04:03:59.249720+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tumblr/Graywater"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:03:59.249720+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:03:59.249720+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:03:59.249720+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T06:19:37.194924+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "42b9a084f3386a7a99dbcec40f61044f17a15007fbd4209eda18c71a802e6306", "fetched_at": "2026-08-28T04:03:59.249720+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tumblr/Graywater"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:03:59.249720+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:03:59.249720+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T06:19:37.194924+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "42b9a084f3386a7a99dbcec40f61044f17a15007fbd4209eda18c71a802e6306", "fetched_at": "2026-08-28T04:03:59.249720+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tumblr/Graywater"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T06:19:37.194924+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "42b9a084f3386a7a99dbcec40f61044f17a15007fbd4209eda18c71a802e6306", "fetched_at": "2026-08-28T04:03:59.249720+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tumblr/Graywater"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T06:19:37.194924+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "42b9a084f3386a7a99dbcec40f61044f17a15007fbd4209eda18c71a802e6306", "fetched_at": "2026-08-28T04:03:59.249720+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tumblr/Graywater"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T06:19:37.194924+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "42b9a084f3386a7a99dbcec40f61044f17a15007fbd4209eda18c71a802e6306", "fetched_at": "2026-08-28T04:03:59.249720+00:00", "kind": "readme", "missing": false, "url": "https://github.com/tumblr/Graywater"}], "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": 3402, "days_push": 3164, "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}}