fast-deep-equal
The fastest zero-dependency deep equality check for JavaScript, with Date, RegExp, Map, Set and typed-array support.
Repository Health
Technical Analysis
fast-deep-equal is a tiny, zero-dependency JavaScript library that performs the fastest possible deep equality comparison between two arbitrary values. It recursively walks objects and arrays and compares Date and RegExp instances by value, returning a simple boolean.
Beyond the default ES5-compatible build, an optional ES6 variant adds equality for Maps, Sets, and typed arrays, and a React-aware variant skips the circular _owner property on React elements. It is one of the most widely depended-on packages on npm, used internally by validators, memoization helpers, and UI libraries.
What You Get
- A single
equal(a, b)function that returns a boolean for deep structural equality. - Multiple prebuilt entry points: default (ES5),
fast-deep-equal/es6, and React-awarefast-deep-equal/react. - Correct value comparison for Date and RegExp objects, plus optional Map, Set, and typed-array support in the ES6 build.
- TypeScript type definitions with a type-guard signature (
actual is T). - Zero runtime dependencies and a footprint small enough to inline into any bundle.
Common Use Cases
- Skipping unnecessary re-renders in UI frameworks by comparing previous and next props or state.
- Deduplicating or diffing configuration and API response objects.
- Powering memoization and caching layers that key on structural equality.
- Writing assertions and equality checks inside test helpers and validators.
Under The Hood
Architecture
The entire library is a single recursive equal(a, b) function. It short-circuits on reference identity, then, for two objects sharing a constructor, branches by shape: arrays are compared element-by-element in a reverse-counting loop, RegExps by source/flags, and any object with a custom valueOf/toString by that value, before falling back to key-by-key recursion over Object.keys. NaN is treated as equal to NaN. All builds are generated from one src/index.jst doT template by build.js, which stamps out the ES5 default (index.js), the ES6 variant with Map/Set/typed-array branches, and React variants that skip the circular _owner property.
Tech Stack
Plain ES5 JavaScript with no runtime dependencies. Build tooling is minimal: the dot templating engine generates the distributable files, ESLint enforces style, and TypeScript is used only to type-check the shipped index.d.ts. Tests run on Mocha with nyc for coverage. The published package ships index.js, react.js, es6/, and .d.ts type definitions.
Code Quality
The implementation is a compact, carefully ordered set of type checks with performance-motivated idioms (reverse for loops, early returns). A data-driven spec suite (spec/tests.js, spec/es6tests.js) exercises scalars, nested structures, special objects, Maps, Sets, typed arrays, and React elements, and the project reports coverage via nyc/coveralls. Because the runtime files are template-generated, contributors edit src/index.jst rather than the .js outputs directly.
API Design
The developer experience is essentially frictionless: a single default export called with two arguments returns a boolean, and the three entry points (fast-deep-equal, fast-deep-equal/es6, fast-deep-equal/react) let consumers opt into exactly the type support they need. The TypeScript signature doubles as a type guard (actual is T), and the README documents install, usage, and benchmarks concisely. There is no configuration or setup boilerplate.
Used by 32 apps in this directory
Sanity
CMS
Open-source headless CMS with a fully customizable React Studio, real-time collaborative editing, structured content modeling, and GROQ query language
Sourcebot
AI Code Assistants · Developer Tools · Search
A self-hosted, AI-powered code search engine that indexes every repo across GitHub, GitLab, Bitbucket, Gitea, Gerrit, and Azure DevOps, so both engineers and coding agents can search, browse, and ask questions about your codebase from one place.
strapi
CMS
Open-source headless CMS that auto-generates REST and GraphQL APIs from your content models, with a fully customizable admin panel you control.
Vikunja
Project Management
Self-hosted task management with natural-language quick-add, multiple views, and a fully documented REST API — your tasks, your infrastructure, zero lock-in.
Webstudio
Design Tools · No Code Platforms
Open source visual development platform with complete CSS control, headless CMS integration, and full infrastructure ownership