Skip to main content

Reference

shallow

A utility function that performs shallow equality comparison between two values. Useful as a comparison function for useStore to prevent unnecessary re-renders when selecting object slices.
T
The first value to compare.
T
The second value to compare.

Returns

boolean
true if the values are shallowly equal, false otherwise.

Comparison Behavior

The shallow function handles various data types:
  • Reference equality: Returns true if Object.is(objA, objB)
  • Primitives/null: Returns false if either value is not an object
  • Map: Compares size and all entries using Object.is
  • Set: Compares size and all values for presence
  • Date: Compares timestamps using getTime()
  • Objects: Compares own properties (including symbols) using Object.is

Usage

With useStore

Selecting Object Slices

With Arrays

Notes

  • Only compares own properties at the first level (shallow)
  • For nested objects, only the reference is compared
  • Handles special object types: Map, Set, Date
  • Includes symbol properties in comparison
  • More efficient than deep equality for most React use cases
  • Use reference equality (default) if selecting primitive values or when you want strict reference checks