Released on October 24th, 2026.
-
Added
serializetoes-toolkit/util, andhashin the newes-toolkit/util/hashentrypoint. ([#2067], [#2154]) -
Added
stringifytoes-toolkit/query-string. ([#2121]) -
Added
sentenceCase. ([#2079]) -
Added
lerpandinverseLerp. ([#2078]) -
Added the
DistributiveOmittype. ([#2142]) -
es-toolkit/compatnow runs on Node.js 6 and ES2015 environments without transpilation or polyfills. ([#2097], [#2161]) -
Fixed
deepFreezeto freeze symbol and non-enumerable properties. ([#2143]) -
Fixed
Semaphoreto keepreleasefast when many tasks are waiting. ([#2149]) -
Fixed
DeepPartialandDeepReadonlyto preserve branded primitive types. ([#2074]) -
Fixed the
Mergetype to keep the input type when merging a type with itself or a narrower type, and to use the source type when a defined source replaces a nullable or primitive value. ([#2148], [#2155]) -
Fixed the
fpintersectionByto match each mapped value at most once in lazy pipes. ([#2146])
The following change results or types that v1.52.0 produced, so review them if you relied on the previous behavior.
dedentnow leaves interpolated values out of the indentation calculation ([#2099]), and throws aTypeErrorfor a malformed template literal, likeString.dedent([#2100]).deburrnow keeps letters of non-Latin scripts as they are. ([#2124])orderByandsortBynow sortNaNin a consistent position. ([#2133])oncenow calls the function with the caller'sthis. ([#2069])findKeyandmapKeysnow type keys likeObject.keys, so numeric keys are strings. ([#2077], [#2156])- The
fphead,last,maxBy, andminBynow always returnT | undefined. ([#2113])
The following bring es-toolkit/compat closer to Lodash. Behavior for the affected edge cases now matches Lodash, so results may differ if you relied on the previous output.
-
Fixed
compat/add,compat/subtract,compat/multiply, andcompat/divideto match Lodash onnulloperands. ([#2056]) -
Fixed
compat/ceil,compat/floor, andcompat/roundto coerce arguments like Lodash. ([#2064]) -
Fixed
compat/toStringto read sparse array holes asundefined. ([#2091]) -
Fixed
compat/dropWhile,compat/dropRightWhile, andcompat/someto normalize the predicate. ([#2072]) -
Fixed
compat/countByto return a plain object. ([#2090]) -
Fixed
compat/pull,compat/pullAll,compat/pullAllBy, andcompat/removeto handle nullish inputs. ([#2095]) -
Fixed
compat/xorByandcompat/xorWithto ignore the iteratee and comparator for a single array. ([#2098]) -
Fixed
compat/reduceandcompat/reduceRightto resolve the iteratee like Lodash, andcompat/forEach,compat/forEachRight,compat/forIn,compat/forInRight,compat/forOwn, andcompat/forOwnRightto treat a non-function iteratee asidentity. ([#2101], [#2158]) -
Fixed
compat/wordsto match titlecase letters, emoji sequences, and non-ASCII numerals and symbols, and to keep combining marks attached to their letter. ([#2102], [#2103], [#2110]) -
Fixed
compat/unionWithto pass comparator arguments in Lodash's order. ([#2114]) -
Fixed
compat/groupBy,compat/maxBy, andcompat/minByto call the iteratee with only the element. ([#2122]) -
Fixed
compat/deburrto only deburr Latin letters. ([#2123]) -
Fixed
compat/truncateto escape a stringseparator. ([#2130]) -
Fixed
compat/cloneDeepandcompat/cloneDeepWithto keep errors uncloned, andcompat/isMatchandcompat/matchesto compare errors like Lodash. ([#2159]) -
Fixed
compat/startCaseto only uppercase the first letter of each word. ([#2160]) -
Exported the
PropertyPathtype fromes-toolkit/compat. ([#2145]) -
Reduced the CommonJS bundle size of
compat/everyandcompat/findLastIndex. ([#2162]) -
Fixed documentation examples whose results did not match the code. ([#2071], [#2109], [#2132], [#2136], [#2138])
-
Listed the iterator docs under the es-toolkit and fp tabs. ([#2137])
-
Clarified which compat behavior fixes the contributing guide accepts. ([#2107], [#2108], [#2125])
We sincerely thank @arba-octo, @Archibald1948, @cyclomati, @D-Sketon, @dayongkr, @HyoYoonNam, @jaideeppyne, @jeonghoon11, @jeynes-log, @JonghwanWon, @mariazuheros, @MFA-G, @minseonkkim, @minsoo-web, @Patrick-SCH03, @poketopa, @raon0211, @ssi02014, @TalhaHunter101, and @Tnalxmsk for their contributions. We appreciate your great efforts!