| Hey HN! After years of wrestling with Lodash's quirks and bundle size issues, I decided to build something better. SuperUtilsPlus is my attempt at creating the utility library I wish existed. What makes it different? TypeScript-first approach: Unlike Lodash's retrofitted types, I built this from the ground up with TypeScript. The type inference actually works the way you'd expect it to. Sensible defaults: Some of Lodash's decisions always bugged me. Like isObject([]) returning true - arrays aren't objects in my mental model. Or isNumber(NaN) being true when NaN literally stands for "Not a Number". I fixed these footguns. Modern JavaScript: Built for ES2020+ with proper ESM support. No more weird CommonJS/ESM dance.
Actually tree-shakable: You can import from specific modules (super-utils/array, super-utils/object) for optimal bundling. Your users will thank you. The best parts IMO: compactNil() - removes only null/undefined, leaves falsy values like 0 and false alone differenceDeep() - array difference with deep equality (surprisingly useful) Better random utilities with randomUUID() and randomString() debounce() that actually works how you expect with proper leading/trailing options Also genuinely curious - what are your biggest pain points with utility libraries? Did I miss any must-have functions? |
Correct me if I am wrong, but Array factually are JS objects and "[] instanceof Object" is true.
Fair enough if that does not fit your mental model, but I would not use any library that treats facts like opinions.