NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #3426 most downloaded on npm
A utility library for JavaScript and Typescript.
Last release 3 days ago
14 Sep 2026
Release timing varies
gaps range from 8 days to 2 months
Nearly every release is documented
notes for 60 of the last 60 stable releases
Nothing withdrawn
no release was ever pulled
8 years old
279 releases · first in 2018
One column per quarter.
Migrate the whole project to a monorepo (#1031) (70db649).
hasSubObject: support interfaces
remove exported types from pipe + version bumps (#1024) (236416a), closes #997
floor, ceil, round: do not divide and multiply by a floating point number (#1004) (03d4213), closes #1003
uniqueWith: return items that are not equal to themselves (#1001) (5042ccf), closes #999
add funnel, an execution timing utility (#848) (fc2fd7e), closes #822
countBy: Add countBy (#937) (3ff9c7b), closes #885
prop: Support headless prop without explicit type params
toCamelCase, toSnakeCase, toKebabCase: Support iOS 16.3- (#929) (3f088bb), closes #928
pick: support optional keys (#923) (3fc28da), closes #911
toSnakeCase, toKebabCase: literal types for literal strings
split: split on literal unions with separator as a prefix (#922) (3b1ef83), closes #921
mergeDeep: Support interfaces (#910) (1c0d487), closes #522
isEmpty: support interfaces (#890) (5d63bfc), closes #879
pick: better inference of picked keys (#891) (e1bdd72), closes #886
mean: Add mean (#878) (c9f966c), closes #874
sumBy: add bigint support for sumBy
# 2.13.0 (2024-09-17) ### Features * when: add the when utility
updated lint rules -> nits to multiple utils (#851) (a68a77d), closes #801
# 2.12.0 (2024-09-02) ### Features * add randomBigInt
randomInt: add randomInt (#793) (8b6d8a0), closes #783
drop: an even more accurate return type for literal Ns (#816) (4d2100c), closes #795
drop: refined return type for literal Ns (#795) (a82e107), closes #794
takeXXX,dropXXX: Support unions of arrays/tuples
Add toUpperCase, toLowerCase, capitalize, uncapitalize, toCamelCase, startsWith, endsWith (#790) (57a6825), closes #509
unique, uniqueWith, uniqueBy: Use input shape to improve return type.
build: remove test files from package (#807) (a858984), closes #774
dropLast, takeLast: handle overflows (#812) (90a6674), closes #796
chunk: literal chunk sizes (#785) (785b885), closes #784
# 2.6.0 (2024-07-16) ### Features * shuffle: Maintain input shape
isStrictEqual, isShallowEqual: add more equality tools
times: Refined typing and improved perf
forEach: pass complex array shapes thru the pipe
sum,product: Function overloading doesn't work in dataLast invocations
conditional: improve type narrowing
# 2.2.0 (2024-06-18) ### Features * hasSubObject: improve typing
# 2.1.0 (2024-06-18) ### Features * split: Add split
pullObject,fromKeys: Don't partialize unbound records
key and value typing of unions of object types. (#728) (e3a8214), closes #727
Don't return partial for branded or template keys (#721) (9be11d0), closes #719
hasSubObject: use Simplify type to show better type information (#726) (931c52e), closes /github.com/remeda/remeda/pull/683#discussion_r1630022640
Simplify type to show better type information (#726) (931c52e), closes /github.com/remeda/remeda/pull/683#discussion_r1630022640hasSubObject: incorrect type narrowing in negate condition (#683) (a7d081e), closes #678
## 2.0.6 (2024-06-08) ### Bug Fixes * pipe: early exit on hasMany
join: Remove Joined type export
set: prevent setting undefined on optional props
## 2.0.3 (2024-06-03) ### Bug Fixes * takeLast: fix index export
intersection,difference: add to index file (#711) (b541a0b), closes #710
pickBy,omitBy: Don't partialize simple records (#706) (fdeb3e2), closes #696
🎉 We are excited to announce the release of Remeda v2! 🎉
🎉 We are excited to announce the release of Remeda v2! 🎉
It's been nearly two years since our last major update, and this version is packed with the improvements and changes you've been waiting for. This release focuses on modernization and simplification, gathering many important updates into one comprehensive release.
To make the transition as easy as possible we've prepared a thorough migration guide, which can be found on our documentation site.
indexed and strict variants are now merged into the base functions, with indexed parameters and improved typing as defaults, respectively.keys and identity should now be called with no parameters to get their dataLast implementation; only type-guards remain headless.toPairs is now entries), and removed redundant functions that can be replaced with combinations of other functions (e.g., compact replaced with filter(isTruthy)).symbol and number keys.clone, difference, and intersect, have had their runtime implementations and semantics adjusted to handle edge cases more consistently.We believe these changes will enhance your development experience, making Remeda more powerful and easier to use. Thank you for being a part of the Remeda community. If you encounter any issues or have questions, please reach out on our GitHub Issues page. Happy coding!
npm install remeda@latest
yarn add remeda@latest
pnpm add remeda@latest
bun add remeda@latest
The Remeda Team
# 2.0.0-beta.29 (2024-05-10) ### Bug Fixes * v2: rewrite clone
v2: reduceLazy -> purryFromLazy, +takeLast, lazy zip, built-in flat, and more...
# 2.0.0-beta.27 (2024-04-22) ### Features * isDeepEqual: cherry-pick #640
"no-dangle-underscore", and other nits.
# 2.0.0-beta.25 (2024-04-17) ### Features * merge v1 into v2
# 2.0.0-beta.24 (2024-04-10) ### Features * Merge v1 into v2 and refactor
Your coding agent can read these notes before it upgrades. Set up the MCP server →