unstale

npm / es-toolkit

es-toolkit

What changed in es-toolkit 1, from its official release notes, upgrade guides and advisories. Sources checked 2026-10-18.

9 breaking2 security68 new APIs and options3 performance5 behavior and defaults2 tooling136 fixes and other

See which of these apply to your code, ranked, in your agent:

npx @unstale/cli init

@unstale/cli 0.1.1 on npm

es-toolkit 1225 changes

Breaking changes 9

  • Now prioritizes nullish literal keys over paths.

    1.50.0release notes

  • Now prioritizes nullish literal keys over paths.

    1.50.0release notes

  • No longer treats an own literal dotted key as a deep path.

    1.50.0release notes

  • No longer treats boxed Number objects as numbers.

    1.47.1release notes

  • Now places null and undefined values last when sorting.

    1.47.1release notes

  • Unused generic type parameters have been removed from the pull type signature.

    1.47.1release notes

  • Now places null and undefined values last when sorting.

    1.47.1release notes

  • Reverts the overload for runtime-determined key arrays.

    1.45.0release notes

  • Browser builds use UMD format instead of IIFE.

    1.41.0release notes

Security 2

  • Blocks constructor.prototype paths to prevent prototype pollution.

    1.51.0release notes

  • The polyfill avoids Function(...), supporting CSP environments without unsafe-eval.

    1.47.1release notes

New APIs and options 68

  • Added as a lazy iterator function, also available from es-toolkit/fp/iterator.

    1.52.0release notes

  • Added as a lazy iterator function, also available from es-toolkit/fp/iterator.

    1.52.0release notes

  • Added as a lazy iterator function, also available from es-toolkit/fp/iterator.

    1.52.0release notes

  • Added to es-toolkit/util.

    1.52.0release notes

  • Added to es-toolkit/util.

    1.52.0release notes

  • Added as a lazy iterator function, also available from es-toolkit/fp/iterator.

    1.52.0release notes

  • Added the EmptyObject type.

    1.52.0release notes

  • Made the iterator functions available from the functional-programming iterator entrypoint.

    1.52.0release notes

  • Added a lazy iterator module with chunk, count, dropWhile, head, iterate, partition, range, scan, takeWhile, uniqBy, zip, and cartesianProduct.

    1.52.0release notes

  • Added to es-toolkit/fp as a promise-aware left-to-right composition function.

    1.52.0release notes

  • Added as a lazy iterator function, also available from es-toolkit/fp/iterator.

    1.52.0release notes

  • Added the IsEqual type.

    1.52.0release notes

  • Added as a lazy iterator function, also available from es-toolkit/fp/iterator.

    1.52.0release notes

  • Added the JSONValue type.

    1.52.0release notes

  • Exported the Merge type.

    1.52.0release notes

  • Exported the ObjectKeys type.

    1.52.0release notes

  • Added as a lazy iterator function, also available from es-toolkit/fp/iterator.

    1.52.0release notes

  • Added the Primitive type.

    1.52.0release notes

  • Added as a lazy iterator function, also available from es-toolkit/fp/iterator.

    1.52.0release notes

  • Added as a lazy iterator function, also available from es-toolkit/fp/iterator.

    1.52.0release notes

  • Added the SetOptional type.

    1.52.0release notes

  • Added the SetRequired type.

    1.52.0release notes

  • Added as a lazy iterator function, also available from es-toolkit/fp/iterator.

    1.52.0release notes

  • Added as a lazy iterator function, also available from es-toolkit/fp/iterator.

    1.52.0release notes

  • Added the UnknownRecord type.

    1.52.0release notes

  • Added as a lazy iterator function, also available from es-toolkit/fp/iterator.

    1.52.0release notes

  • Adds a function that removes common leading whitespace from template strings.

    1.51.0release notes

  • Adds a function for recursively freezing objects.

    1.51.0release notes

  • Adds entries to es-toolkit/compat.

    1.51.0release notes

  • Adds entriesIn to es-toolkit/compat.

    1.51.0release notes

  • Adds a separate entrypoint with bigint counterparts of the listed math functions, leaving the number implementations unchanged.

    1.51.0release notes

  • Adds the preserveArrays option.

    1.51.0release notes

  • Adds an asynchronous object-keys mapping function.

    1.51.0release notes

  • Adds an asynchronous object-values mapping function.

    1.51.0release notes

  • Exports the type for camel-case object keys.

    1.51.0release notes

  • Adds an object key casing function, completing the object key casing family.

    1.51.0release notes

  • Exports the type for constant-case object keys.

    1.51.0release notes

  • Adds an object key casing function, completing the object key casing family.

    1.51.0release notes

  • Exports the type for kebab-case object keys.

    1.51.0release notes

  • Adds an object key casing function, completing the object key casing family.

    1.51.0release notes

  • Exports the type for Pascal-case object keys.

    1.51.0release notes

  • Exports the type for snake-case object keys.

    1.51.0release notes

  • Added a declaration-only entrypoint with compile-time type utilities: ValueOf, Simplify, Writable, NonEmptyArray, DeepPartial, and DeepReadonly.

    1.50.0release notes

  • Added a reusable data-last composition to es-toolkit/fp, built on pipe.

    1.50.0release notes

  • Added array utilities to es-toolkit/fp for slicing, grouping, set operations, ordering, zipping, and collection helpers.

    1.49.0release notes

  • Added the es-toolkit/fp entrypoint with data-last, pipeable utilities.

    1.49.0release notes

  • Added AbortSignal support to timeout.

    1.48.0release notes

  • Added AbortSignal support to withTimeout.

    1.48.0release notes

  • Adds allKeyed to the promise entrypoint.

    1.47.0release notes

  • Adds cartesianProduct to the array entrypoint.

    1.47.0release notes

  • Adds combinations to the array entrypoint.

    1.47.0release notes

  • Adds a server entrypoint with a colors namespace for ANSI terminal color utilities.

    1.47.0release notes

  • Adds the exec function.

    1.47.0release notes

  • Adds percentile to the math entrypoint.

    1.47.0release notes

  • Adds sortKeys to the object entrypoint.

    1.47.0release notes

  • keyBy is now exported from the map entrypoint.

    1.46.0release notes

  • Added the isEmptyObject predicate function.

    1.44.0release notes

  • Added the isNumber predicate function.

    1.44.0release notes

  • Implemented collection methods for Maps and Sets.

    1.44.0release notes

  • Added the shouldRetry option to the retry function.

    1.44.0release notes

  • Exported the interface for better type support.

    1.42.0release notes

  • Added an async utility for handling asynchronous operations.

    1.42.0release notes

  • Added an async utility for handling asynchronous operations.

    1.42.0release notes

  • Added an async utility for handling asynchronous operations.

    1.42.0release notes

  • Added an async utility for handling asynchronous operations.

    1.42.0release notes

  • Added an async utility for handling asynchronous operations.

    1.42.0release notes

  • Added an async utility for handling asynchronous operations.

    1.42.0release notes

  • Exported the interface for better type support.

    1.42.0release notes

Performance 3

  • A browser export condition was added to avoid including a 44KB Buffer polyfill.

    1.46.0release notes

  • Improved performance by using arrays to construct the deburrMap.

    1.43.0release notes

  • Improves performance by removing intermediate array creation.

    1.41.0release notes

Behavior and default changes 5

Tooling 2

  • es-toolkit usage skills were added to the Claude Code plugin marketplace.

    1.46.0release notes

  • Adds type guard support.

    1.41.0release notes

Fixes and other changes 136

  • Skips the maxWait invocation when both leading and trailing are false, matching Lodash.

    1.52.0release notes

  • Normalizes -0 to 0, matching Lodash.

    1.52.0release notes

  • Converts fromIndex to an integer, matching Lodash.

    1.52.0release notes

  • Normalizes the -0 path key, matching Lodash.

    1.52.0release notes

  • Normalizes the -0 path key, matching Lodash.

    1.52.0release notes

  • Assigns null values in array sources, matching Lodash.

    1.52.0release notes

  • Converts objects with a custom valueOf, matching Lodash.

    1.52.0release notes

  • Normalizes -0 to 0, matching Lodash.

    1.52.0release notes

  • Matches Lodash behavior when no comparator is given.

    1.52.0release notes

  • Fixed return-type inference to infer the deep merged type.

    1.52.0release notes

  • Fixed callback key types to be strings.

    1.52.0release notes

  • Fixed callback key types to be strings.

    1.52.0release notes

  • Accepts readonly arrays.

    1.51.0release notes

  • Returns an empty array for an empty collection with an Infinity size.

    1.51.0release notes

  • Normalizes -0 to 0.

    1.51.0release notes

  • Normalizes -0 to 0.

    1.51.0release notes

  • Supports number, object, and nullish iteratee shorthands.

    1.51.0release notes

  • Handles object source patterns against primitive and non-plain-object targets like Lodash.

    1.51.0release notes

  • Handles object source patterns against primitive and non-plain-object targets like Lodash.

    1.51.0release notes

  • Treats a boolean as a property shorthand.

    1.51.0release notes

  • Returns undefined for empty array-like inputs.

    1.51.0release notes

  • Reads holes in sparse arrays as undefined.

    1.51.0release notes

  • Makes the iteratee optional with an identity default.

    1.51.0release notes

  • Skips nullish iteratee values.

    1.51.0release notes

  • Skips nullish iteratee values.

    1.51.0release notes

  • Treats a key array as a single deep path.

    1.51.0release notes

  • Returns the array as-is when values is nullish.

    1.51.0release notes

  • Supports array-like objects and arguments.

    1.51.0release notes

  • Clamps the default size to the collection length.

    1.51.0release notes

  • Counts combined Unicode symbols as single characters.

    1.51.0release notes

  • Supports string inputs.

    1.51.0release notes

  • Supports string inputs.

    1.51.0release notes

  • Converts non-array-like iterables.

    1.51.0release notes

  • Splits unquoted dotted keys inside brackets.

    1.51.0release notes

  • Renders nested nullish values like Lodash.

    1.51.0release notes

  • Normalizes -0 to 0.

    1.51.0release notes

  • Normalizes -0 to 0 and supports string inputs.

    1.51.0release notes

  • Treats null keys and values as empty arrays.

    1.51.0release notes

  • Moves from the array category to the promise category.

    1.51.0release notes

  • Handles mixed array/object types consistently with merge.

    1.51.0release notes

  • Accepts readonly arrays.

    1.51.0release notes

  • Removes the correct elements with negative indices and accepts readonly arrays.

    1.51.0release notes

  • Accepts readonly arrays.

    1.51.0release notes

  • Handles mixed array/object types consistently with merge.

    1.51.0release notes

  • Now split ordinal numbers like Lodash and count string size and padding by code points for multi-byte characters.

    1.50.0release notes

  • Now removes all combining diacritical marks, matching Lodash.

    1.50.0release notes

  • Restored the standalone entry point.

    1.50.0release notes

  • Now treats a falsy, non-nullish doesMatch as a _.property shorthand instead of identity.

    1.50.0release notes

  • Now coerces a NaN fromIndex to 0 and converts fromIndex to an integer.

    1.50.0release notes

  • Now coerces a NaN fromIndex to 0 and converts fromIndex to an integer.

    1.50.0release notes

  • Now excludes the length property when matching array-like values.

    1.50.0release notes

  • No longer throws on a lone negative bound.

    1.50.0release notes

  • Now dedupes a single array, including by the iteratee, and keeps results consistent with Lodash.

    1.50.0release notes

  • Now normalizes a string path via toPath for this binding.

    1.50.0release notes

  • Now detects deep keys with stricter patterns.

    1.50.0release notes

  • Now coerces fromIndex like Lodash.

    1.50.0release notes

  • Restored Lodash-compatible comparison.

    1.50.0release notes

  • Restored Lodash-compatible comparison.

    1.50.0release notes

  • Now supports string inputs.

    1.50.0release notes

  • Now accepts any predicate return value, like Array.prototype.filter.

    1.50.0release notes

  • Restored the standalone entry point.

    1.50.0release notes

  • Now converts Sets to arrays like Lodash.

    1.50.0release notes

  • Now returns an empty array instead of throwing on empty input.

    1.50.0release notes

  • Now treats sparse array holes as undefined.

    1.50.0release notes

  • Now handles NaN and Infinity size values consistently with Lodash.

    1.49.0release notes

  • Now prefers a literal key over a dot-notation path when the picked value is undefined.

    1.49.0release notes

  • Improved Lodash compatibility for coerced bounds and floating-point options.

    1.49.0release notes

  • Fixed validation of multi-character trim strings so trimming stops correctly.

    1.49.0release notes

  • The package-root field is restored so jsDelivr serves the UMD bundle again.

    1.48.1release notes

  • The package-root field is restored so unpkg serves the UMD bundle again.

    1.48.1release notes

  • Fixed CDN script resolution by pointing jsdelivr and unpkg to the UMD bundle and dropping the misused browser field.

    1.48.0release notes

  • Treats sparse array holes as undefined.

    1.48.0release notes

  • Aligns nested primitive matching with lodash.

    1.48.0release notes

  • Improves checks for boxed values and non-numbers.

    1.48.0release notes

  • Coerces input to a string before parsing.

    1.48.0release notes

  • Keeps empty segments for consecutive and trailing dots.

    1.48.0release notes

  • Deep-clones the target so untouched nested values stay independent.

    1.48.0release notes

  • ESM resolution is fixed for compat subpaths in package exports.

    1.47.1release notes

  • Now returns Infinity for infinite values with precision.

    1.47.1release notes

  • Now returns Infinity for infinite values with precision.

    1.47.1release notes

  • Now coerces the upper bound when max is not a number.

    1.47.1release notes

  • Now returns Infinity for infinite values with precision.

    1.47.1release notes

  • Now counts array-like objects by their length.

    1.47.1release notes

  • Now coerces non-numeric values to 0.

    1.47.1release notes

  • Now handles functions with own enumerable properties.

    1.47.1release notes

  • Now propagates NaN, matching Math.max behavior.

    1.47.1release notes

  • Now propagates NaN, matching Math.min behavior.

    1.47.1release notes

  • Now respects explicitly passed nullish accumulators.

    1.47.1release notes

  • Now respects explicitly passed nullish accumulators.

    1.47.1release notes

  • Fixes omitBy in compat so plain objects with numeric length are not treated as array-like.

    1.47.0release notes

  • Fixes uniqWith in compat to match lodash's comparator argument order.

    1.47.0release notes

  • Fixed missing countBy exports for map and set.

    1.46.1release notes

  • AbortError and TimeoutError now fall back to Error when DOMException is undefined.

    1.46.1release notes

  • Fixed missing forEach exports for map and set.

    1.46.1release notes

  • Added missing full-application overloads for 2, 3, and 4 arguments.

    1.46.0release notes

  • toCamelCaseKeys is now exported from compat for the browser bundle.

    1.46.0release notes

  • toSnakeCaseKeys is now exported from compat for the browser bundle.

    1.46.0release notes

  • Fixed the Deno install command to include the jsr: prefix.

    1.45.1release notes

  • Reverted the return type of sample so it no longer includes undefined.

    1.45.1release notes

  • Supports cloning Error objects.

    1.45.0release notes

  • Adds the missing default parameter for doesMatch.

    1.45.0release notes

  • Correctly matches the retry count with the retries option.

    1.45.0release notes

  • Includes undefined in the return union type.

    1.45.0release notes

  • Callbacks now include index and array parameters.

    1.44.0release notes

  • Enhanced type safety for the clone function.

    1.44.0release notes

  • Fixed an error when cloning an object with a null prototype.

    1.44.0release notes

  • Now clones null-prototype objects as regular objects.

    1.44.0release notes

  • Fixed to ensure consistency with lodash.

    1.44.0release notes

  • Now clones null-prototype objects as regular objects.

    1.44.0release notes

  • Now retains empty objects and arrays.

    1.44.0release notes

  • Fixed to match lodash's behavior.

    1.43.0release notes

  • Disables ES interpolation when a custom interpolate is provided.

    1.43.0release notes

  • Fixed the implementation and removed duplicates when the mapper produces the same values.

    1.43.0release notes

  • Fixed to match lodash's behavior.

    1.43.0release notes

  • Fixed to match lodash's behavior.

    1.43.0release notes

  • Fixed to match lodash's behavior.

    1.43.0release notes

  • Fixed to match lodash's behavior.

    1.43.0release notes

  • Handles arrays and objects consistently and matches lodash's behavior with date values and array-like objects.

    1.43.0release notes

  • Fixed to match lodash's behavior.

    1.43.0release notes

  • Fixed to match lodash's behavior.

    1.43.0release notes

  • Fixed throttle so it no longer works like debounce.

    1.43.0release notes

  • Fixed type inference for edge cases and improved type inference for uppercase keys.

    1.43.0release notes

  • Fixed type inference for edge cases and improved type inference for uppercase keys.

    1.43.0release notes

  • Fixed to match lodash's behavior.

    1.43.0release notes

  • Now implements a type predicate to narrow the type to number.

    1.42.0release notes

  • Now implements a type predicate to narrow the type to number.

    1.42.0release notes

  • Fixed behavior that could add index properties to array-like objects.

    1.42.0release notes

  • Supports array-like objects.

    1.41.0release notes

  • Uses get for value retrieval in the updater function.

    1.41.0release notes

  • Correctly handles undefined and null sources in the compatibility layer.

    1.41.0release notes

  • Properly handles shared objects in merge logic.

    1.41.0release notes

  • Supports runtime-determined key arrays with proper overloads.

    1.41.0release notes

  • Preserves the this context when called as a method.

    1.41.0release notes

  • Correctly returns types for non-plain objects.

    1.41.0release notes

  • Properly handles shared objects in merge logic.

    1.41.0release notes

  • Correctly returns types for non-plain objects.

    1.41.0release notes