{"adoption": {"forks": 106, "observed_at": "2026-08-28T04:06:43.905249+00:00", "stars": 2402}, "canonical_url": "https://ross.abutalabs.com/products/typesafe-actions", "card": {"archived": false, "artifact_type": "library", "description": "Typesafe utilities for \"action-creators\" in Redux / Flux Architecture", "domain": ["frontend", "web-development", "developer-tools"], "enriched": true, "function": ["state-management", "type-system", "developer-tools"], "health_score": 69, "homepage": "https://codesandbox.io/s/github/piotrwitek/typesafe-actions/tree/master/codesandbox", "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["piotrwitek/typesafe-actions"], "name": "piotrwitek/typesafe-actions", "platform": ["browser", "cross-platform"], "pushed_at": "2026-05-09T10:56:30+00:00", "repo": "piotrwitek/typesafe-actions", "stars": 2402, "tags": ["redux", "typescript", "action-creators", "flux", "static-typing", "react", "nodejs"], "topics": ["redux-actions", "typescript", "static-typing", "redux", "action-creator", "javascript"], "urls": [], "use_cases": ["create typesafe redux action creators in typescript", "reduce boilerplate in redux reducers with typescript", "type redux actions without repetitive type annotations", "write typesafe async actions in redux", "get type inference for redux action payloads", "manage redux state with full static typing"], "what_it_is": "A TypeScript utility library providing typesafe helpers for creating action creators, async actions, and reducers in Redux/Flux architecture. It reduces type verbosity and boilerplate when using Redux with TypeScript.", "when_to_avoid": ["you use Redux Toolkit, which has built-in typesafe action creation", "your project is plain JavaScript without TypeScript", "you use a state management library other than Redux/Flux"], "when_to_choose": ["you use Redux with TypeScript and want typesafe actions and reducers", "you want to cut down type verbosity in a Flux-style architecture", "you follow the React & Redux TypeScript Guide patterns"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/typesafe-actions", "repo": "piotrwitek/typesafe-actions", "role": "main", "score": 59}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.905249+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:34:13.824503+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "deff624af12ea9b6588b029c2fba69a1e1647c40fa07c0ebb530db6aed0e20a8", "fetched_at": "2026-08-28T04:06:43.905249+00:00", "kind": "readme", "missing": false, "url": "https://github.com/piotrwitek/typesafe-actions"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.905249+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:34:13.824503+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "deff624af12ea9b6588b029c2fba69a1e1647c40fa07c0ebb530db6aed0e20a8", "fetched_at": "2026-08-28T04:06:43.905249+00:00", "kind": "readme", "missing": false, "url": "https://github.com/piotrwitek/typesafe-actions"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:34:13.824503+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "deff624af12ea9b6588b029c2fba69a1e1647c40fa07c0ebb530db6aed0e20a8", "fetched_at": "2026-08-28T04:06:43.905249+00:00", "kind": "readme", "missing": false, "url": "https://github.com/piotrwitek/typesafe-actions"}], "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.905249+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.905249+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.905249+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:34:13.824503+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "deff624af12ea9b6588b029c2fba69a1e1647c40fa07c0ebb530db6aed0e20a8", "fetched_at": "2026-08-28T04:06:43.905249+00:00", "kind": "readme", "missing": false, "url": "https://github.com/piotrwitek/typesafe-actions"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.905249+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.905249+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:34:13.824503+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "deff624af12ea9b6588b029c2fba69a1e1647c40fa07c0ebb530db6aed0e20a8", "fetched_at": "2026-08-28T04:06:43.905249+00:00", "kind": "readme", "missing": false, "url": "https://github.com/piotrwitek/typesafe-actions"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.905249+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.905249+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.905249+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:34:13.824503+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "deff624af12ea9b6588b029c2fba69a1e1647c40fa07c0ebb530db6aed0e20a8", "fetched_at": "2026-08-28T04:06:43.905249+00:00", "kind": "readme", "missing": false, "url": "https://github.com/piotrwitek/typesafe-actions"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.905249+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:43.905249+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:34:13.824503+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "deff624af12ea9b6588b029c2fba69a1e1647c40fa07c0ebb530db6aed0e20a8", "fetched_at": "2026-08-28T04:06:43.905249+00:00", "kind": "readme", "missing": false, "url": "https://github.com/piotrwitek/typesafe-actions"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:34:13.824503+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "deff624af12ea9b6588b029c2fba69a1e1647c40fa07c0ebb530db6aed0e20a8", "fetched_at": "2026-08-28T04:06:43.905249+00:00", "kind": "readme", "missing": false, "url": "https://github.com/piotrwitek/typesafe-actions"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:34:13.824503+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "deff624af12ea9b6588b029c2fba69a1e1647c40fa07c0ebb530db6aed0e20a8", "fetched_at": "2026-08-28T04:06:43.905249+00:00", "kind": "readme", "missing": false, "url": "https://github.com/piotrwitek/typesafe-actions"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:34:13.824503+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "deff624af12ea9b6588b029c2fba69a1e1647c40fa07c0ebb530db6aed0e20a8", "fetched_at": "2026-08-28T04:06:43.905249+00:00", "kind": "readme", "missing": false, "url": "https://github.com/piotrwitek/typesafe-actions"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 81, "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": 3214, "days_push": 116, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 59, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}