{"adoption": {"forks": 88, "observed_at": "2026-08-28T04:05:53.813763+00:00", "stars": 1916}, "canonical_url": "https://ross.abutalabs.com/products/use-deep-compare-effect", "card": {"archived": false, "artifact_type": "library", "description": "🐋 It's react's useEffect hook, except using deep comparison on the inputs, not reference equality", "domain": ["frontend", "web-development", "developer-tools"], "enriched": true, "function": ["state-management", "developer-tools"], "health_score": 20, "homepage": "https://npm.im/use-deep-compare-effect", "language": "TypeScript", "license": "MIT", "license_family": "permissive", "maturity": "maintenance", "member_repos": ["kentcdodds/use-deep-compare-effect"], "name": "kentcdodds/use-deep-compare-effect", "platform": ["browser"], "pushed_at": "2024-08-21T08:09:36+00:00", "repo": "kentcdodds/use-deep-compare-effect", "stars": 1916, "tags": ["react-hooks", "useeffect", "deep-comparison", "react", "nodejs", "web-server"], "topics": [], "urls": [], "use_cases": ["run an effect only when object dependencies actually change in react", "avoid useEffect firing every render because a dependency object is recreated", "deep compare arrays in react hook dependencies", "replace useEffect with deep equality check for query variables", "stop unnecessary http requests triggered by reference-equal props"], "what_it_is": "A small React hook library that provides a drop-in replacement for useEffect which compares dependencies with deep equality instead of reference equality. It prevents effect callbacks from re-running when object or array dependencies are recreated each render without meaningful changes.", "when_to_avoid": ["your dependencies are primitives like numbers, strings, or booleans", "you can solve the problem with useMemo, useCallback, or better data flow", "your dependency objects contain functions defined during render, which still trigger every render"], "when_to_choose": ["your useEffect dependencies are objects or arrays that are new on every render", "you cannot restructure props or memoize dependencies to use plain useEffect", "you want a tiny, focused drop-in hook with no extra dependencies"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/use-deep-compare-effect", "repo": "kentcdodds/use-deep-compare-effect", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:05:53.813763+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T03:10:17.959096+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1a0606ca4f5b40dee840bba5a14b22cab3a16b7505d376bd7d08dc249b8aca60", "fetched_at": "2026-08-28T04:05:53.813763+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kentcdodds/use-deep-compare-effect"}, {"content_hash": "94b39b9da90ed76dc468985dae4bc383647ad966eb6ea6e791af997b54d5ea87", "fetched_at": "2026-08-29T10:49:47.719339+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/use-deep-compare-effect"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:05:53.813763+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T03:10:17.959096+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1a0606ca4f5b40dee840bba5a14b22cab3a16b7505d376bd7d08dc249b8aca60", "fetched_at": "2026-08-28T04:05:53.813763+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kentcdodds/use-deep-compare-effect"}, {"content_hash": "94b39b9da90ed76dc468985dae4bc383647ad966eb6ea6e791af997b54d5ea87", "fetched_at": "2026-08-29T10:49:47.719339+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/use-deep-compare-effect"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T03:10:17.959096+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1a0606ca4f5b40dee840bba5a14b22cab3a16b7505d376bd7d08dc249b8aca60", "fetched_at": "2026-08-28T04:05:53.813763+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kentcdodds/use-deep-compare-effect"}, {"content_hash": "94b39b9da90ed76dc468985dae4bc383647ad966eb6ea6e791af997b54d5ea87", "fetched_at": "2026-08-29T10:49:47.719339+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/use-deep-compare-effect"}], "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:53.813763+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:05:53.813763+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:05:53.813763+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T03:10:17.959096+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1a0606ca4f5b40dee840bba5a14b22cab3a16b7505d376bd7d08dc249b8aca60", "fetched_at": "2026-08-28T04:05:53.813763+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kentcdodds/use-deep-compare-effect"}, {"content_hash": "94b39b9da90ed76dc468985dae4bc383647ad966eb6ea6e791af997b54d5ea87", "fetched_at": "2026-08-29T10:49:47.719339+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/use-deep-compare-effect"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:05:53.813763+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:05:53.813763+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T03:10:17.959096+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1a0606ca4f5b40dee840bba5a14b22cab3a16b7505d376bd7d08dc249b8aca60", "fetched_at": "2026-08-28T04:05:53.813763+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kentcdodds/use-deep-compare-effect"}, {"content_hash": "94b39b9da90ed76dc468985dae4bc383647ad966eb6ea6e791af997b54d5ea87", "fetched_at": "2026-08-29T10:49:47.719339+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/use-deep-compare-effect"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:05:53.813763+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:05:53.813763+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:05:53.813763+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T03:10:17.959096+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1a0606ca4f5b40dee840bba5a14b22cab3a16b7505d376bd7d08dc249b8aca60", "fetched_at": "2026-08-28T04:05:53.813763+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kentcdodds/use-deep-compare-effect"}, {"content_hash": "94b39b9da90ed76dc468985dae4bc383647ad966eb6ea6e791af997b54d5ea87", "fetched_at": "2026-08-29T10:49:47.719339+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/use-deep-compare-effect"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:05:53.813763+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:05:53.813763+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T03:10:17.959096+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1a0606ca4f5b40dee840bba5a14b22cab3a16b7505d376bd7d08dc249b8aca60", "fetched_at": "2026-08-28T04:05:53.813763+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kentcdodds/use-deep-compare-effect"}, {"content_hash": "94b39b9da90ed76dc468985dae4bc383647ad966eb6ea6e791af997b54d5ea87", "fetched_at": "2026-08-29T10:49:47.719339+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/use-deep-compare-effect"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T03:10:17.959096+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1a0606ca4f5b40dee840bba5a14b22cab3a16b7505d376bd7d08dc249b8aca60", "fetched_at": "2026-08-28T04:05:53.813763+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kentcdodds/use-deep-compare-effect"}, {"content_hash": "94b39b9da90ed76dc468985dae4bc383647ad966eb6ea6e791af997b54d5ea87", "fetched_at": "2026-08-29T10:49:47.719339+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/use-deep-compare-effect"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T03:10:17.959096+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1a0606ca4f5b40dee840bba5a14b22cab3a16b7505d376bd7d08dc249b8aca60", "fetched_at": "2026-08-28T04:05:53.813763+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kentcdodds/use-deep-compare-effect"}, {"content_hash": "94b39b9da90ed76dc468985dae4bc383647ad966eb6ea6e791af997b54d5ea87", "fetched_at": "2026-08-29T10:49:47.719339+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/use-deep-compare-effect"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T03:10:17.959096+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "1a0606ca4f5b40dee840bba5a14b22cab3a16b7505d376bd7d08dc249b8aca60", "fetched_at": "2026-08-28T04:05:53.813763+00:00", "kind": "readme", "missing": false, "url": "https://github.com/kentcdodds/use-deep-compare-effect"}, {"content_hash": "94b39b9da90ed76dc468985dae4bc383647ad966eb6ea6e791af997b54d5ea87", "fetched_at": "2026-08-29T10:49:47.719339+00:00", "kind": "registry_npm", "missing": false, "url": "https://registry.npmjs.org/use-deep-compare-effect"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-02T17:46:02.011165+00:00", "flags": [], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 2736, "days_push": 742, "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}}