Skip to content

The-LukeZ/fast-deep-equal

 
 

Repository files navigation

fast-deep-equal

The fastest deep equal with ES6 Map, Set and Typed arrays support — now rewritten in TypeScript with dual ESM/CJS output.

npm License: MIT

Warning

Since this is a modern rewrite, it may not be compatible with older environments. It could not support Node.js versions below 20, and it may not work in older browsers without polyfills. If you need support for older environments, consider using the original fast-deep-equal package.

It is also not a 100% drop-in replacement for the original, as you the default exports have been changed to named exports (equal and reactEqual). This was done to improve tree-shaking and ESM compatibility, but it may require some changes to your import statements.

Install

npm install @lukez/fast-deep-equal

Features

  • Written in TypeScript with type definitions included
  • Dual ESM + CJS output via tsdown
  • Requires Node.js 20+
  • Checks equality of Date and RegExp objects by value
  • Supports Map, Set, typed arrays (Int32Array, BigUint64Array, …)
  • React variant skips _owner circular references (ported from react-fast-compare)

Usage

import { equal } from "@lukez/fast-deep-equal";

equal({ foo: "bar" }, { foo: "bar" }); // true
equal(new Int32Array(), new Int32Array()); // true
equal(new Map([["a", 1]]), new Map([["a", 1]])); // true

React

Use the /react entry when comparing React elements. It avoids traversing _owner, which contains circular references and is irrelevant for element comparison:

import { reactEqual } from "@lukez/fast-deep-equal/react";

CJS

const equal = require("@lukez/fast-deep-equal");
const reactEqual = require("@lukez/fast-deep-equal/react");

Performance benchmark

Run it yourself against your own data — the only benchmark that matters is yours:

pnpm run benchmark # bun can also be used if installed globally

Note: the bundled benchmark compares against other popular libraries using the included test fixtures. Results vary by data shape and Node.js version.

Building from source

pnpm install
pnpm run build   # outputs to dist/
pnpm test        # runs vitest

License

MIT — © Evgeny Poberezkin (original), © 2026 LukeZ (this fork)

About

The fastest deep equality check with Date, RegExp and ES6 Map, Set and typed arrays support

Resources

License

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages

  • TypeScript 93.6%
  • JavaScript 6.4%