Important: This documentation covers Yarn 1 (Classic).
For Yarn 2+ docs and migration guide, see yarnpkg.com.

Package detail

es-toolkit

toss1.4mMIT1.31.0TypeScript support: included

A state-of-the-art, high-performance JavaScript utility library with a small bundle size and strong type annotations.

readme

es-toolkit · MIT License codecov NPM badge JSR badge Discord Badge

English | 한국어 | 简体中文 | 日本語

es-toolkit is a state-of-the-art, high-performance JavaScript utility library with a small bundle size and strong type annotations.

  • es-toolkit offers a variety of everyday utility functions with modern implementations, such as debounce, delay, chunk, sum, and pick.
  • Designed with performance in mind, es-toolkit achieves 2-3× better performance in modern JavaScript environments.
  • es-toolkit supports tree shaking out of the box, and reduces JavaScript code by up to 97% compared to other libraries.
  • es-toolkit includes built-in TypeScript support, with straightforward yet robust types. It also provides useful type guards such as isNotNil.
  • es-toolkit is utilized by several popular open-source libraries, such as Storybook and ink.
  • es-toolkit is battle-tested with 100% test coverage, ensuring reliability and robustness.

Examples

// import from '@es-toolkit/es-toolkit' in jsr.
import { chunk, debounce } from 'es-toolkit';

const debouncedLog = debounce(message => {
  console.log(message);
}, 300);

// This call will be debounced
debouncedLog('Hello, world!');

const array = [1, 2, 3, 4, 5, 6];
const chunkedArray = chunk(array, 2);

console.log(chunkedArray);
// Output: [[1, 2], [3, 4], [5, 6]]

Contributing

We welcome contribution from everyone in the community. Read below for detailed contribution guide.

CONTRIBUTING

License

MIT © Viva Republica, Inc. See LICENSE for details.

<picture> <source media="(prefers-color-scheme: dark)" srcset="https://static.toss.im/logos/png/4x/logo-toss-reverse.png"> Toss </picture>

changelog

es-toolkit Changelog

Version v1.31.0

Released on December 27th, 2024.

  • Added support for the windowed, remove and asyncNoop functions.
  • Introduced compatibility functions for pullAll, subtract, isBuffer, and methodOf.
  • Enhanced the performance of pull when working with large arrays.
  • Resolved an issue where reverse was not being exported in our compatibility library.
  • Updated groupBy to properly handle keys like toString or valueOf.
  • Fixed merge to correctly merge values when target or any of its values are null or undefined.

We sincerely thank @T3sT3ro, @D-Sketon, @tuhm1, @willmanduffy, @apeltop, @aken-you, @SaeWooKKang, and @ssi02014 for their contributions. We appreciate your great efforts!

Version v1.30.1

Released on December 14th, 2024.

  • Fixed uniqueId not being exported in our compatibility library.

We sincerely thank @redd97 for their contributions. We appreciate your great efforts!

Version v1.30.0

Released on December 13th, 2024.

We sincerely thank @healtheloper, @mass2527, @D-Sketon, @eunhyulkim, @scato3, @Na-hyunwoo, and @dasom-jo for their contributions. We appreciate your great efforts!

Version v1.29.0

Released on December 1st, 2024.

We sincerely thank @nnnnoel and @evan-moon for their contributions. We appreciate your great efforts!

Version v1.28.0

Released on November 30th, 2024.

  • Added compatibility functions for gt, gte, toArray, toUpper, add, assignIn (extend), and isElement.
  • Introduced new compatibility types for DebouncedFunc.
  • Enhanced our function types to accept PropertyKey instead of just string for property keys.
  • Corrected flatMap to accurately infer return types when the depth parameter is omitted.
  • Resolved issues with incorrect types for partial and partialRight.
  • Fixed intersectionBy, differenceBy, and differenceWith to properly calculate differences between various element types.
  • Ensured that words is now correctly exported in our compatibility library.

We sincerely thank @D-Sketon, @mass2527, @1eeminhyeong, @chhw130, @DONG-8, @filipsobol, @kim-dongho, @nnnnoel, @pbstar, and @jsparkdev for their contributions. We appreciate your great efforts!

Version v1.27.0

Released on November 10th, 2024.

We sincerely thank @scato3, @ssi02014, @filipsobol, @mass2527, @Gyumong, @D-Sketon, @dayongkr, @kyvg, @Na-hyunwoo, @kaehehehe, and @bhollis for their contributions. Special thanks to @cruelladevil for improving the documentation. We appreciate your great efforts!

Version v1.26.1

Released on October 25th, 2024.

  • Fixed a bug in isMatch that did not strictly compare null in objects.

This version includes contributions from @D-Sketon. Thank you for your valuable contributions!

Version v1.26.0

Released on October 24th, 2024.

This version includes contributions from @dayongkr, @Na-hyunwoo, @ssi02014, @kaehehehe, @jakvbs, @D-Sketon, and @seonghun0828. Thank you for your valuable contributions!

Version v1.25.2

Released on October 16th, 2024.

This version includes contributions from @D-Sketon. Thank you for your valuable contributions!

Version v1.25.1

Released on October 15th, 2024.

This version includes contributions from @D-Sketon. Thank you for your valuable contributions!

Version v1.25.0

Released on October 14th, 2024.

This version includes contributions from @D-Sketon, @mass2527, @dayongkr, @lukaszkowalik2, @Gyumong, @Dohun-choi, @belgattitude, and @chhw130. Thank you for your valuable contributions!

Version v1.24.0

Released on October 7th, 2024.

Version v1.23.0

Released on October 1st, 2024.

  • Added support for isEqualWith, isArrayBuffer, curryRight, isJSONValue, isJSONObject, isJSONArray.
  • Fixed a bug in merge that copied the reference from the source object to the target object.
  • Fixed a bug in includes that returned true for inherited properties.
  • Fixed a bug in startCase and other string methods that did not correctly split the words when using accented letters.
  • Fixed a bug in filter that did not provide correct arguments to the predicate function.
  • Fixed a bug in isMatch that did not strictly compare primitive falsy values.

This version includes contributions from @D-Sketon, @wojtekmaj, @mass2527, @chhw130, and @knott11. Thank you for your valuable contributions!

Version v1.22.0

Released on September 28th, 2024.

  • Added support for flow, flowRight, isMap, and isSet.
  • Added compatibility functions for filter, includes, every, flip, and dropWhile.

  • Fixed a bug in throttle that prevented it from throttling after the initial throttleMs.

  • Fixed a bug in cloneDeep that caused it to not clone the offset and length of DataView.
  • Fixed a bug in clone that threw an error if SharedArrayBuffer is unavailable.

This version includes contributions from @dayongkr, @k-jeonghee, @D-Sketon, @iDevGon, @mass2527, @wojtekmaj, @jonganebski, @hyesungoh, and @chhw130. Thank you for your valuable contributions!

Version v1.21.0

Released on September 25th, 2024.

This version includes contributions from @hyesungoh, @D-Sketon, @mass2527, @gweesin, @VVSOGI, @coding-honey, @seonghun0828, and @jsparkdev. Thank you for your valuable contributions!

Version v1.20.0

Released on September 20th, 2024.

Version v1.19.0

Released on September 14th, 2024.

Version v1.18.0

Released on September 12th, 2024.

Version v1.17.0

Released on August 31st, 2024.

New Features

Bug Fixes

  • Updated type definitions for throttle and debounce.
  • (es-toolkit/compat) Fixed orderBy to correctly handle deep keys even when object shapes differ (#427).

Version v1.16.0

Released on August 15th, 2024.

Version v1.15.1

Released on August 10th, 2024.

  • Disabled implicit conversion of values in orderBy for performance and simplicity.

Version v1.15.0

Released on August 10th, 2024.

Version v1.14.0

Released on August 9th, 2024.

Version v1.13.1

Released on July 20th, 2024.

  • Use the compatibility layer es-toolkit/compat in legacy CDN builds.

Version v1.13.0

Released on July 20th, 2024.

es-toolkit can now be used in various CDNs, like unpkg and jsdelivr. See more in our usage docs

Features

Lodash Compatibility

Version v1.12.0

Released on July 19th, 2024.

  • Fixed a bug where es-toolkit/compat was not available in modern Node.js environments.
  • Added support for max and min in our compatibility layer es-toolkit/compat. (e1e6e38)

Version v1.11.0

Released on July 18th, 2024.

Introducing es-toolkit/compat

We're introducing es-toolkit/compat, a new module designed as a drop-in replacement for lodash. It replicates lodash's API, making it easier to switch between the two libraries.

es-toolkit/compat is undergoing rigorous testing using real lodash test cases. Initial benchmarks suggest it's typically 5% slower and increases bundle size by 10% compared to the original es-toolkit.

This module is intended to facilitate a smooth transition and should be replaced with the original es-toolkit for optimal performance once migration is complete.

For more information, see our compatibility documentation.

Features

Bug fixes

Performance Improvements

Version v1.10.1

Released on July 15th, 2024.

Version v1.10.0

Released on July 14th, 2024.

Features

Performance Improvements

Version v1.9.0

Released on July 10th, 2024.

Version v1.8.0

Released on July 5th, 2024.

Version v1.7.1

Released on July 3rd, 2024.

Version v1.6.1

Released on June 30th, 2024.

  • Publish package on JSR.

Version v1.6.0

Released on June 30th, 2024.

Features

Version v1.5.0

Released on June 28th, 2024.

Features

Bug fixes

Version v1.4.0

Released on June 15th, 2024.

Features

Performance Optimizations

Version v1.3.1

Released on June 15th, 2024.

Version v1.3.0

Released on June 14th, 2024.

Features

Performance Optimizations

Version v1.2.2

Released on June 13th, 2024.

Version v1.2.1

Released on June 13th, 2024.

Version v1.2.0

Released on June 8th, 2024.

Features

Performance Improvements

Bug fixes

Version v1.1.0

Released on June 5th, 2024.

Version v1.0.4

Released on June 4th, 2024.

Version v1.0.3

Released on June 3rd, 2024.

Version v1.0.2

Initial release. Released on May 31th, 2024.