{"adoption": {"forks": 1112, "observed_at": "2026-08-28T04:10:52.599066+00:00", "stars": 12397}, "canonical_url": "https://ross.abutalabs.com/products/snabbdom", "card": {"archived": false, "artifact_type": "library", "description": "A virtual DOM library with focus on simplicity, modularity, powerful features and performance.", "domain": ["web-development", "frontend"], "enriched": true, "function": ["frontend-framework", "ui-components", "templating"], "health_score": 92, "homepage": null, "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "stable", "member_repos": ["snabbdom/snabbdom"], "name": "snabbdom/snabbdom", "platform": ["browser", "cross-platform"], "pushed_at": "2026-06-17T11:11:26+00:00", "repo": "snabbdom/snabbdom", "stars": 12397, "tags": ["virtual-dom", "vdom", "diffing", "patching", "typescript", "modular", "nodejs"], "topics": ["virtual-dom-library", "snabbdom", "hacktoberfest"], "urls": [], "use_cases": ["build a custom frontend framework with a fast virtual DOM", "efficiently patch the DOM from application state changes", "add reactive view rendering to an existing app without a full framework", "implement a component library with fine-grained DOM update control", "integrate virtual DOM rendering with an FRP or state management library", "render SVG elements declaratively"], "what_it_is": "Snabbdom is a virtual DOM library for JavaScript/TypeScript with a tiny (~200 SLOC) modular core and extensible module system. It provides fast diffing and patching of virtual nodes with hooks, SVG support, event listeners, and animation modules.", "when_to_avoid": ["you want a batteries-included framework with routing, state, and components out of the box", "you prefer declarative templates/JSX tooling maintained for you", "your team needs a large ecosystem and community tooling"], "when_to_choose": ["you want a minimal, performant virtual DOM core you can build on", "you need modular extensibility via hooks and custom modules", "bundle size and patch performance are critical", "you're building your own framework or rendering layer"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/snabbdom", "repo": "snabbdom/snabbdom", "role": "main", "score": 80}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:10:52.599066+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T17:14:07.014245+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a1dd1f2c7d034dd90a514a3ce5b01d8c8e5f96be5092ce11dbde185031db2e85", "fetched_at": "2026-08-28T04:10:52.599066+00:00", "kind": "readme", "missing": false, "url": "https://github.com/snabbdom/snabbdom"}, {"content_hash": "c72dd6f6c61975a99605be49b07ede0847bbef356c61625c753482f02db86460", "fetched_at": "2026-08-29T08:11:22.455419+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/snabbdom"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:10:52.599066+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T17:14:07.014245+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a1dd1f2c7d034dd90a514a3ce5b01d8c8e5f96be5092ce11dbde185031db2e85", "fetched_at": "2026-08-28T04:10:52.599066+00:00", "kind": "readme", "missing": false, "url": "https://github.com/snabbdom/snabbdom"}, {"content_hash": "c72dd6f6c61975a99605be49b07ede0847bbef356c61625c753482f02db86460", "fetched_at": "2026-08-29T08:11:22.455419+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/snabbdom"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T17:14:07.014245+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a1dd1f2c7d034dd90a514a3ce5b01d8c8e5f96be5092ce11dbde185031db2e85", "fetched_at": "2026-08-28T04:10:52.599066+00:00", "kind": "readme", "missing": false, "url": "https://github.com/snabbdom/snabbdom"}, {"content_hash": "c72dd6f6c61975a99605be49b07ede0847bbef356c61625c753482f02db86460", "fetched_at": "2026-08-29T08:11:22.455419+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/snabbdom"}], "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:10:52.599066+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:10:52.599066+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:10:52.599066+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T17:14:07.014245+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a1dd1f2c7d034dd90a514a3ce5b01d8c8e5f96be5092ce11dbde185031db2e85", "fetched_at": "2026-08-28T04:10:52.599066+00:00", "kind": "readme", "missing": false, "url": "https://github.com/snabbdom/snabbdom"}, {"content_hash": "c72dd6f6c61975a99605be49b07ede0847bbef356c61625c753482f02db86460", "fetched_at": "2026-08-29T08:11:22.455419+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/snabbdom"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:10:52.599066+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:10:52.599066+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T17:14:07.014245+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a1dd1f2c7d034dd90a514a3ce5b01d8c8e5f96be5092ce11dbde185031db2e85", "fetched_at": "2026-08-28T04:10:52.599066+00:00", "kind": "readme", "missing": false, "url": "https://github.com/snabbdom/snabbdom"}, {"content_hash": "c72dd6f6c61975a99605be49b07ede0847bbef356c61625c753482f02db86460", "fetched_at": "2026-08-29T08:11:22.455419+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/snabbdom"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:10:52.599066+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:10:52.599066+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:10:52.599066+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T17:14:07.014245+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a1dd1f2c7d034dd90a514a3ce5b01d8c8e5f96be5092ce11dbde185031db2e85", "fetched_at": "2026-08-28T04:10:52.599066+00:00", "kind": "readme", "missing": false, "url": "https://github.com/snabbdom/snabbdom"}, {"content_hash": "c72dd6f6c61975a99605be49b07ede0847bbef356c61625c753482f02db86460", "fetched_at": "2026-08-29T08:11:22.455419+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/snabbdom"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:10:52.599066+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:10:52.599066+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T17:14:07.014245+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a1dd1f2c7d034dd90a514a3ce5b01d8c8e5f96be5092ce11dbde185031db2e85", "fetched_at": "2026-08-28T04:10:52.599066+00:00", "kind": "readme", "missing": false, "url": "https://github.com/snabbdom/snabbdom"}, {"content_hash": "c72dd6f6c61975a99605be49b07ede0847bbef356c61625c753482f02db86460", "fetched_at": "2026-08-29T08:11:22.455419+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/snabbdom"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T17:14:07.014245+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a1dd1f2c7d034dd90a514a3ce5b01d8c8e5f96be5092ce11dbde185031db2e85", "fetched_at": "2026-08-28T04:10:52.599066+00:00", "kind": "readme", "missing": false, "url": "https://github.com/snabbdom/snabbdom"}, {"content_hash": "c72dd6f6c61975a99605be49b07ede0847bbef356c61625c753482f02db86460", "fetched_at": "2026-08-29T08:11:22.455419+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/snabbdom"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T17:14:07.014245+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a1dd1f2c7d034dd90a514a3ce5b01d8c8e5f96be5092ce11dbde185031db2e85", "fetched_at": "2026-08-28T04:10:52.599066+00:00", "kind": "readme", "missing": false, "url": "https://github.com/snabbdom/snabbdom"}, {"content_hash": "c72dd6f6c61975a99605be49b07ede0847bbef356c61625c753482f02db86460", "fetched_at": "2026-08-29T08:11:22.455419+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/snabbdom"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T17:14:07.014245+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "a1dd1f2c7d034dd90a514a3ce5b01d8c8e5f96be5092ce11dbde185031db2e85", "fetched_at": "2026-08-28T04:10:52.599066+00:00", "kind": "readme", "missing": false, "url": "https://github.com/snabbdom/snabbdom"}, {"content_hash": "c72dd6f6c61975a99605be49b07ede0847bbef356c61625c753482f02db86460", "fetched_at": "2026-08-29T08:11:22.455419+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/snabbdom"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 88, "longevity": 100, "rhythm": 57}, "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": 4134, "days_push": 77, "days_rel": 77, "gap_med": 259, "n_releases_24m": 2}, "score": 80, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}