Lightweight deep equality utilities and React hooks (useDeepCompareEffect, memo) for reliable deep checks in React.
Lightweight deep equality helpers and React hooks for stable dependency management and optimization.
- deepEqual(a,b) fast structural comparison (supports cycles, Map, Set, Date, RegExp, typed arrays)
- stableHash(value) deterministic structural hash (order-independent for Set, sorted object keys)
- Hooks:
- useDeepCompareEffect(effect, deps) like useEffect but deep-compares deps
- useDeepCompareMemoize(value) returns stable ref that only changes when deep-equal changes
- useShallowStable(obj) preserves reference for shallow-equal objects across renders
- useStableHash(value) deep structural hash memoized hook
``bash`
npm install react-deep-checkor
yarn add react-deep-check
Peer dependency: react >=16.8.
`tsx
import { useDeepCompareEffect, deepEqual, useStableHash } from 'react-deep-check';
function Demo({ config }) {
const hash = useStableHash(config);
useDeepCompareEffect(() => {
// runs only when config structurally changes
console.log('config changed');
}, [config]);
return
API
$3
Options:
- strict (default true) – same semantics as === except NaN equals NaN.
- compare(a,b,path) custom comparator may return boolean to override or undefined to continue default.$3
Generates a stable base36-ish style string representing value structure (not cryptographic).$3
Drop-in replacement for useEffect` when your deps are objects/arrays built inline.