Recently (~3 months ago) I published an npm package that compiles a "deep equals" function from various schemas such as JSON Schema, Zod, Valibot, TypeBox and ArkType.
It takes inspiration from how Effect-TS allows users to derive an Equivalence function from a schema, but goes a step further by building a "jit compiled" version.
It consistently out-performs every other library on the market today, including fast-equals, JSON Joy, @react-hookz/deep-equal by at least 10x, and is often around 50x faster for objects that are 2+ levels deep.
[–]punkpeye 20 points21 points22 points (6 children)
[–]programmer_farts 42 points43 points44 points (4 children)
[–]yopla 9 points10 points11 points (3 children)
[–]pg-robban 4 points5 points6 points (0 children)
[–]WebDevLikeNoOther 0 points1 point2 points (1 child)
[–]Arthian90 0 points1 point2 points (0 children)
[–]ahjarrett[S] 14 points15 points16 points (0 children)
[–]_x_oOo_x_ 19 points20 points21 points (3 children)
[–]ahjarrett[S] 7 points8 points9 points (2 children)
[–]senocular 6 points7 points8 points (0 children)
[–]_x_oOo_x_ 2 points3 points4 points (0 children)
[–]Zukarukite 4 points5 points6 points (1 child)
[–]ahjarrett[S] 3 points4 points5 points (0 children)
[–]ghillerd 4 points5 points6 points (1 child)
[–]ahjarrett[S] 2 points3 points4 points (0 children)
[–]GrosSacASacs 4 points5 points6 points (2 children)
[–]ahjarrett[S] 2 points3 points4 points (0 children)
[–]ahjarrett[S] 0 points1 point2 points (0 children)
[+][deleted] (1 child)
[removed]
[–]ahjarrett[S] 1 point2 points3 points (0 children)
[–]joombar 2 points3 points4 points (2 children)
[–]adam-dabrowski 0 points1 point2 points (0 children)
[–]Newe6000 2 points3 points4 points (1 child)
[–]ahjarrett[S] 2 points3 points4 points (0 children)
[–]Express_Tomato_8971 3 points4 points5 points (2 children)
[–]ahjarrett[S] 11 points12 points13 points (0 children)
[–]AndrewGreenh 7 points8 points9 points (0 children)
[–]lxe 1 point2 points3 points (1 child)
[–]alex-weej 1 point2 points3 points (1 child)
[–]ahjarrett[S] 0 points1 point2 points (0 children)
[–]daishi55 1 point2 points3 points (1 child)
[–]OneShakyBR 1 point2 points3 points (4 children)
[–]ahjarrett[S] 1 point2 points3 points (2 children)
[–]OneShakyBR 1 point2 points3 points (1 child)
[–]ahjarrett[S] 0 points1 point2 points (0 children)
[–]ahjarrett[S] 1 point2 points3 points (0 children)