ShopperCove
Menu
All writingBlogTopicsCategoriesAboutRSS
Blog
Categories
Observability & SRE62All categories
About

Plate 39

  1. Blog

radash vs remeda: 772 B vs 1.6 KB Gzip

Aditya Challa·5 October 2026·5 min read

Hands-on
On this page
  1. What I tested
  2. How much smaller is radash?
  3. Which ops were faster?
  4. Do the APIs match?
  5. Which one should you pick?
  6. Sources
  7. Related

I bundled ten overlapping helpers from each library on this box: radash 12.1.1 came out at 772 bytes gzip, while remeda 2.51.0 came out at 1,560 bytes. On the same fixtures, pick/omit/group/unique/clone favored radash; isDeepEqual favored remeda by about 3×.

Short answer: pick radash when you want a smaller data-first toolkit with dotted-path get. Keep remeda when you want pipe/data-last composition and a faster deep-equal. No affiliate links in this post.

What I tested

  • Machine: 8 vCPU Intel Xeon / 15 GB RAM shared Linux cloud box, tested 6 Oct 2026 about 02:20 IST.
  • Versions: radash 12.1.1, remeda 2.51.0, Node 22.20.0, esbuild 0.28.2 browser ESM minify + gzip -9.
  • Inputs: nested object, 50-row group fixture, 100-int unique list. Speed: 30k–300k calls per op, median of 9 rounds, two runs with library order reversed. Scripts in /workspace/bench-radash-remeda/.
  • Findings: core ten-export gzip 772 B vs 1,560 B; full namespace 4,915 B vs 9,203 B. ns/op (run1/run2): pick 102/95 vs 123/118; omit 280/271 vs 363/359; group 558/546 vs 783/794; unique 558/846 vs 2,631/2,629; isEqual same 554/606 vs 188/206; clone 182/182 vs 3,238/3,280.
  • One surprise: remeda.prop is single-key only (no "a.b.c" path). My deep-get timing used prop(obj,"a").b.c, which is not the same job as radash.get(obj,"a.b.c").
  • Not tested: remeda.pipe pipelines under tree-shaking, Lodash migration parity matrices, or non-JSON values in clone (functions, Map, Date).

How much smaller is radash?

Build (esbuild browser minify)Minifiedgzip -9
radash (10 helpers)1,599 B772 B
remeda (10 helpers)4,143 B1,560 B
radash full namespace12,299 B4,915 B
remeda full namespace28,460 B9,203 B
radash get only189 B168 B
remeda prop only206 B156 B

About 2× smaller gzip for a comparable named-export set. Track client cost the same way as size-limit vs bundlesize. Broader Lodash swaps sit in es-toolkit vs lodash. Merge helpers in the same lane show up in defu vs lodash.merge.

Which ops were faster?

Call cost (median of 9, 2 order-reversed runs, ns/op)radashremeda
pick102 / 95123 / 118
omit280 / 271363 / 359
group / groupBy558 / 546783 / 794
unique558 / 8462,631 / 2,629
isEqual / isDeepEqual (same)554 / 606188 / 206
clone182 / 1823,238 / 3,280
mapValues77 / 7792 / 92

radash won pick, omit, group, unique, clone, and mapValues on this box. remeda won deep-equal by roughly 3×. Debounce utilities next door are covered in perfect-debounce vs lodash. Cloning tradeoffs also appear in klona vs structuredClone.

Do the APIs match?

Topicradash 12.1.1remeda 2.51.0
Call stylemostly data-firstdata-first and data-last
Deep path readget(obj, "a.b.c", fb)prop is one key; chain or pipe
Drop empty-ish object keysshake (default drops undefined only)filter + isTruthy on arrays
Groupgroup(arr, fn)groupBy(arr, fn)
EqualityisEqualisDeepEqual

pick/omit/group/unique matched on my fixtures. shake({ a:0, b:null, c:undefined }) kept 0 and null; only undefined left. String-case helpers often pair with these toolkits in scule vs change-case. Path helpers sit next to pathe vs node:path.

Which one should you pick?

SituationMy pick
Smallest named-export util setradash
Need dotted-path get with fallbackradash
Pipe / data-last compositionremeda
Hot deep-equal in checksremeda
Lodash-style kitchen sink already elsewherecompare es-toolkit vs lodash first

Bottom line: radash 12.1.1 was 772 B gzip versus 1,560 B for remeda 2.51.0 on ten helpers, and it won most of the mutator/group timings on this box. Who should not switch: teams standardized on remeda.pipe and data-last imports, or code that needs remeda's faster isDeepEqual in a hot path. Hashing keys instead of reshaping objects pairs with ohash vs object-hash.

How this was made: I installed both packages on the ShopperCove box, measured esbuild browser bundles for core and full imports, timed nine overlapping operations in two order-reversed runs, and compared get/prop, shake, pick, omit, and group outputs. The JSON results sit next to the scripts. The write-up was drafted with AI help and checked against that output.

Sources

  • https://github.com/sodiray/radash
  • https://github.com/remeda/remeda
  • https://www.npmjs.com/package/radash
  • https://www.npmjs.com/package/remeda

Related

  • https://www.shoppercove.com/blog/es-toolkit-vs-lodash
  • https://www.shoppercove.com/blog/size-limit-vs-bundlesize
  • https://www.shoppercove.com/blog/defu-vs-lodash-merge
  • https://www.shoppercove.com/blog/perfect-debounce-vs-lodash
  • https://www.shoppercove.com/blog/klona-vs-structuredclone
  • https://www.shoppercove.com/blog/scule-vs-change-case
  • https://www.shoppercove.com/blog/pathe-vs-node-path
  • https://www.shoppercove.com/blog/ohash-vs-object-hash
radashremedabundle sizejavascript performanceutility libraryisdeepequaldata-firstdata-last

Lab evidence

What I found running this

Hands-on on ShopperCove box 6 Oct 2026 ~02:20 IST (8 vCPU Intel Xeon / 15 GB shared Linux, Node 22.20.0). radash 12.1.1 vs remeda 2.51.0, esbuild 0.28.2 browser ESM minify + gzip -9. Size: core ten 1,599/772 B vs 4,143/1,560 B; full 12,299/4,915 vs 28,460/9,203. Speed (9-round median, order-reversed, ns/op): pick 102/95 vs 123/118; omit 280/271 vs 363/359; group 558/546 vs 783/794; unique 558/846 vs 2,631/2,629; isEqual 554/606 vs 188/206; clone 182/182 vs 3,238/3,280. Behavior: radash.get("a.b.c") vs remeda.prop single-key; shake default drops undefined only. Not tested: remeda.pipe tree-shake matrices, Map/Date clone, Lodash parity. No affiliate.

Notes when a lab post goes up

Occasional email for new hands-on reviews. No sequence and no sponsors.

Related links

  • Plate 96

    es-toolkit vs lodash-es: 2.5 KB vs 9.6 KB Gzip

    5 Oct 2026

  • Plate 27

    undici vs node-fetch: 31k vs 7.4k Req/s on Node 22

    5 Oct 2026

  • Plate 64

    Shiki vs Prism.js: 72 KB vs 8 KB, 36 ms vs 3 ms

    5 Oct 2026

On this page

  1. What I tested
  2. How much smaller is radash?
  3. Which ops were faster?
  4. Do the APIs match?
  5. Which one should you pick?
  6. Sources
  7. Related
All writingBlogCategoriesTopicsAboutPrivacyRSS

© 2026 ShopperCove