Skip to content

1o1-utils vs just

just pioneered the micro-module utility approach — one tiny npm package per function. 1o1-utils shares the same philosophy but ships as a single tree-shakeable package with TypeScript-first design.

1o1-utilsjust
Bundle size~2 kB total (gzip), 139–366 B per utilsimilar per-function sizes
Dependencies00 per package
TypeScriptNative, strict, full inference.d.ts files, less strict
DistributionSingle package, tree-shakeableDozens of separate packages
Named parametersYesNo (positional)
MaintenanceActiveMinimal / on pause
Install DXpnpm add 1o1-utilspnpm add just-chunk just-pick ... (many installs)

just publishes each utility as a separate npm package: just-chunk, just-pick, just-debounce-it, etc. You install each one independently. Benefit: truly minimal install. Cost: dependency management fatigue.

1o1-utils is a single package with per-utility imports. Your bundler tree-shakes what you don’t use. You get small bundles and one package to manage.

// just — many packages
import chunk from "just-chunk";
import pick from "just-pick";
import debounceIt from "just-debounce-it";
// 1o1-utils — one package, per-utility imports
import { chunk } from "1o1-utils/chunk";
import { pick } from "1o1-utils/pick";
import { debounce } from "1o1-utils/debounce";
just1o1-utilsNotes
just-split / just-chunkchunk({ array, size })Named params
just-indexarrayToHash({ array, key })
just-group-bygroupBy({ array, key })
just-sort-bysortBy({ array, key })
just-uniqueunique({ array, key? })
just-clonecloneDeep({ obj })
just-extenddeepMerge({ target, source })
just-omitomit({ obj, keys })
just-pickpick({ obj, keys })
just-capitalizecapitalize({ str })
just-truncatetruncate({ str, length, suffix })
just-camel-case / just-kebab-casetransformCase({ str, to })One function
just-debounce-itdebounce({ fn, wait })
just-throttlethrottle({ fn, wait })
// just — multiple packages, positional args
import chunk from "just-chunk";
import pick from "just-pick";
import debounceIt from "just-debounce-it";
const pages = chunk(items, 10);
const picked = pick(user, ["id", "name"]);
const search = debounceIt(300, fn);
// 1o1-utils — single package, named params
import { chunk } from "1o1-utils/chunk";
import { pick } from "1o1-utils/pick";
import { debounce } from "1o1-utils/debounce";
const pages = chunk({ array: items, size: 10 });
const picked = pick({ obj: user, keys: ["id", "name"] });
const search = debounce({ fn, wait: 300 });
  • You already have just-X packages wired up and they work
  • You want zero package overhead — each install is truly one file
  • You’re in a constrained environment where even tree-shaken dead code elimination matters more than ergonomics
  • TypeScript-first — strict types, full inference, no @types/* packages
  • Active maintenance — regular releases, benchmarks, size-limit CI
  • Named parameters — self-documenting code
  • Single installpnpm add 1o1-utils and done
  • Benchmarked performance — up to 11× faster than lodash

Is just abandoned? Not officially, but updates are infrequent. 1o1-utils is actively developed.

Can I migrate incrementally? Yes — both work side-by-side. Replace one utility at a time, remove just-* packages as you go.

just alternative, just replacement, angus-c just, micro-module utilities, single-function npm packages

I'm using 1o1-utils (npm: https://www.npmjs.com/package/1o1-utils, GitHub: https://github.com/pedrotroccoli/1o1-utils, LLM context: https://pedrotroccoli.github.io/1o1-utils/llms.txt). Migrate my project from the just-* family of packages to 1o1-utils, converting positional calls to named-parameter calls.