The fastest deep comparator for JS/TS.
- ✅ Handles ES6+ structures like
Map
,Set
,TypedArray
,DataView
, andArrayBuffer
. - ✅ Supports
Date
,RegExp
, andNaN
. - ✅ Safe handling of React and Preact objects (no stack overflow).
- ✅ Works seamlessly with objects created via
Object.create(null)
. ⚠️ Circular reference handling:- Supported: React and Preact objects.
- Not supported: Other objects (causes stack overflow).
It's as simple as:
npm install @react-hookz/deep-equal
# or
yarn add @react-hookz/deep-equal
This package is distributed using the ESNext language level and ES module system. Depending on your target environment, you might need to transpile the package. Check your bundler's documentation for instructions on transpiling node_modules
.
import { isEqual } from '@react-hookz/deep-equal';
isEqual({ a: 1 }, { a: 1 }); // true
Note: Benchmarks were conducted on specific datasets (available in the src/fixtures
directory). Your results may vary depending on your data and use case. Running benchmarks on your dataset is recommended.
name hz min max mean p75 p99 p995 p999 rme samples · @react-hookz/deep-equal 1,780,770.64 0.0005 0.7278 0.0006 0.0006 0.0010 0.0011 0.0013 ±0.18% 1780771 fastest · react-fast-compare 1,690,244.66 0.0005 3.2804 0.0006 0.0006 0.0010 0.0012 0.0013 ±0.65% 1690245 · fast-deep-equal 1,663,437.00 0.0005 3.5417 0.0006 0.0006 0.0010 0.0011 0.0012 ±0.70% 1663438 slowest · dequal 1,693,113.15 0.0005 3.2976 0.0006 0.0006 0.0007 0.0010 0.0012 ±0.65% 1693114
name hz min max mean p75 p99 p995 p999 rme samples · @react-hookz/deep-equal 1,725,589.83 0.0005 0.2565 0.0006 0.0006 0.0009 0.0010 0.0012 ±0.20% 1725590 fastest · react-fast-compare 1,406,227.02 0.0006 0.1635 0.0007 0.0007 0.0011 0.0014 0.0016 ±0.21% 1406228 · fast-deep-equal 1,553,848.07 0.0005 2.7540 0.0006 0.0007 0.0008 0.0011 0.0013 ±0.57% 1553849 · dequal 1,026,213.59 0.0008 0.1810 0.0010 0.0010 0.0011 0.0012 0.0019 ±0.16% 1026214 slowest
To get more detailed benchmarks for different data types, run the tests directly on your own machine:
- Clone the repository:
git clone https://github.com/react-hookz/deep-equal cd deep-equal
- Install dependencies:
corepack enable yarn
- Run benchmarks:
yarn benchmark
Anton Zinovyev |
Kyle Holmberg |
Pasecinic Nichita |
- @react-hookz/web - React hooks done right, for browser and SSR.