NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
npm · #572 most downloaded on npm
Standard library
Last release 1 months ago
05 Aug 2026
Ships fairly regularly
a new release about every 2 months
Nearly every release is documented
notes for 53 of 53 stable releases
234 versions withdrawn
withdrawn after publishing
13 years old
289 releases · first in 2013
- Fixed an NPM publishing issue
Improved iOS compat data - added missed mapping iOS 12.2 -> Safari 12.1, added bug fixes from patch releases
core-js-compat helpers ie_mob normalizationgetModulesListForTargetVersion core-js-compat helperpostinstall script, #707One column per quarter.
Detect incorrect order of operations in Object.assign, MS Edge bug
Object.assign, MS Edge bugToLength in Array#{ filter, map }, FF48-49 and MS Edge 14- issuesReflect.set which allows setting the property to object with non-writable property on the prototypeinspectSource helper with multiple core-js copies and some related features like some edge cases of Promise feature detectionAdded feature detection for Safari non-generic `Promise#finally` bug (critical for `core-js-pure`)
Promise#finally bug (critical for core-js-pure)esnext.string.code-points in core-js/features/string entry pointIterator proposal feature detection for the case of non-standard Iterator in FF44-Fixed missed es.json.stringify and some modules from iteration helpers proposal in some entry points
es.json.stringify and some modules from iteration helpers proposal in some entry pointsString#{ endsWith, startsWith } MDN polyfills bugs, #702.size property descriptor of Map / Set in the pure versiones.json.stringify and some modules from iteration helpers proposal in some entry points (includes the root entry point)String#{ endsWith, startsWith } MDN polyfills bugs, #702.size property descriptor of Map / Set in the pure versionDon't use polyfilled symbols as internal uids, a workaround for some incorrect use cases
String#replaceAll is available only in nightly FF buildsPromise feature detection for the case of V8 6.6 with multiple core-js copiesnode -e in postinstall scriptsThrow when (Async)Iterator#flatMap mapper returns a non-iterable, per tc39/proposal-iterator-helpers/55 and tc39/proposal-iterator-helpers/59
(Async)Iterator#flatMap mapper returns a non-iterable, per tc39/proposal-iterator-helpers/55 and tc39/proposal-iterator-helpers/59AggregateError#toString, per tc39/proposal-promise-any/49core-js Promise polyfill passes feature detection in the pure versionsString#replaceAll callbacksString#replaceAll marked as supported by FF72Added well-formed `JSON.stringify`, ES2019 feature, thanks @ExE-Boss and @WebReflection for the idea
JSON.stringify, ES2019 feature, thanks @ExE-Boss and @WebReflection for the ideaMath.signbit, #687, thanks @chicoxyzzyDon't detect Chakra-based Edge as Chrome in the userAgent parsing
Added a workaround of V8 deoptimization which causes serious performance degradation (~4x in my tests) of Array#concat, #679
Array#concat, #679Promise, #679(Async)Iterator.prototype.constructor -> (Async)Iterator per this issueAdded a workaround of V8 deoptimization which causes serious performance degradation (~20x in my tests) of some RegExp-related methods like String#spl
RegExp-related methods like String#split, #306Array#splice and slightly Array#{ filter, map }, #677fetch with polyfilled URLSearchParams, #674String#replaceAll with an empty search valuepackage-lock.json no longer generated in librariesgopher removed from URL special cases per this issue and this PR
gopher removed from URL special cases per this issue and this PRFixed compatibility of core-js-compat with Node 6 and Yarn, #669
core-js-compat with Node 6 and Yarn, #669- Fixed an NPM publishing issue
…It's a breaking change, but since it's a breaking change in the ES spec, it's added at the minor release
String#{ matchAll, replaceAll } throws an error on non-global regex argument per the decision from TC39 meetings (+ this PR). It's a breaking change, but since it's a breaking change in the ES spec, it's added at the minor releaseglobalThis moved to stable ES, per October TC39 meetingPromise.any moved to stage 3, some minor internal changes, per October TC39 meetingString#replaceAll moved to stage 3, per October TC39 meetingIterator
Iterator.fromIterator#asIndexedPairsIterator#dropIterator#everyIterator#filterIterator#findIterator#flatMapIterator#forEachIterator#mapIterator#reduceIterator#someIterator#takeIterator#toArrayIterator#@@toStringTagAsyncIterator
AsyncIterator.fromAsyncIterator#asIndexedPairsAsyncIterator#dropAsyncIterator#everyAsyncIterator#filterAsyncIterator#findAsyncIterator#flatMapAsyncIterator#forEachAsyncIterator#mapAsyncIterator#reduceAsyncIterator#someAsyncIterator#takeAsyncIterator#toArrayAsyncIterator#@@toStringTagMap#upsert (Map#updateOrInsert before) proposal
Map#updateOrInsert renamed to Map#upsertWeakMap#upsertPromise bug, #640URL constructor in Safari and URLSearchParams in Chrome 66-, #656Math.hypot marked as not supported in Chrome 77 since a bug in this method was not fixed before the stable Chrome 77 releaseSymbol.matchAll in esnext.string.match-all, #626.next method once, at the beginning, of the iteration protocolpostinstall messages only once per npm i, #597, thanks @remyAdded a workaround for possible recursion in microtasks caused by conflicts with other Promise polyfills, #615
Promise polyfills, #615Promise.allSettled moved to stable ES, per July TC39 meeting
Promise.allSettled moved to stable ES, per July TC39 meetingPromise.any moved to stage 2, .errors property of AggregateError instances maked non-enumerable, per July TC39 meetingusing statement proposal moved to stage 2, added Symbol.asyncDispose, per July TC39 meetingArray.isTemplateObject stage 2 proposal, per June TC39 meetingMap#updateOrInsert stage 1 proposal, per July TC39 meetingMath.hypot V8 7.7 bug, since it's still not stable without adding results to core-js-compatPromise, #579 - added .finally and patched .then to / on native Promise prototype{ Map, Set, WeakMap, WeakSet }.deleteAllDISABLE_OPENCOLLECTIVE env variable to postinstall scriptcore-js-pure dependency from core-js-compat, #590core-js-compat on Windows, #606Refactoring. Many minor internal improvements and fixes like:
Symbol.keyFor complexity to O(1)String.prototype.{ endsWith, includes, startsWith }RegExp#flags helper now respect dotAll flag (mainly ralated to the pure version)Symbol.keyFor complexity to O(1)String.prototype.{ endsWith, includes, startsWith }RegExp#flags helper now respect dotAll flag (mainly related to the pure version)Fixed core-js/features/reflect/delete-metadata entry point
core-js/features/reflect/delete-metadata entry pointpostinstall script like support npm color config (#556) or adding support of ADBLOCK env variableAdded a workaround of a strange npx bug on postinstall, #551
npx bug on postinstall, #551Added one more workaround of alternative not completely correct Symbol polyfills, #550, #554
String#matchAll moved to stable ES, exposed Symbol.matchAll, #516
String#matchAll moved to stable ES, exposed Symbol.matchAll, #516Promise.allSettled moved to stage 3, #515String#replaceAll moved to stage 2, behavior updated by the spec draft, #524Promise.any moved to stage 1, #517es.regexp.flags dependency from es.regexp.to-string, #536, #537Object.{ assign, entries, values }, #541Object.getOwnPropertySymbols in Chrome 38 / 39, #539window.postMessage-based task implementation uses location origin over '*', #542PromiseConstructor.resolve only once in Promise combinators, tc39/ecma262#1506core-js dependency from core-js-compat since it's required for missed at this moment featurepostinstallFixed some cases of work with malformed URI sequences in URLSearchParams, #525
See more info in this article and the changelog.
See more info in this article and the changelog.
Object.fromEntries (ECMAScript 2019)Symbol#description (ECMAScript 2019)Set methods (stage 2 proposal)
Set#differenceSet#intersectionSet#isDisjointFromSet#isSubsetOfSet#isSupersetOfSet#symmetricDifferenceSet#unionPromise.allSettled (stage 2 proposal)Array (stage 1 proposal)
Array#lastItemArray#lastIndexString#replaceAll (stage 1 proposal)String#codePoints (stage 1 proposal)Map.groupByMap.keyByMap#deleteAllMap#everyMap#filterMap#findMap#findKeyMap#includesMap#keyOfMap#mapKeysMap#mapValuesMap#mergeMap#reduceMap#someMap#updateSet#addAllSet#deleteAllSet#everySet#filterSet#findSet#joinSet#mapSet#reduceSet#someWeakMap#deleteAllWeakSet#addAllWeakSet#deleteAllcompositeKey and compositeSymbol methods (stage 1 proposal)Number.fromString (stage 1 proposal)Math.seededPRNG (stage 1 proposal)Symbol.patternMatch (for stage 1 pattern matching proposal)Symbol.dispose (for stage 1 using statement proposal)Promise.any (with AggregateError) (stage 0 proposal)URL and URLSearchParam from URL standard, also stage 0 proposal to ECMAScript
URL
URL#hrefURL#originURL#protocolURL#usernameURL#passwordURL#hostURL#hostnameURL#portURL#pathnameURL#searchURL#searchParamsURL#hashURL#toStringURL#toJSONURLSearchParams
URLSearchParams#appendURLSearchParams#deleteURLSearchParams#getURLSearchParams#getAllURLSearchParams#hasURLSearchParams#setURLSearchParams#sortURLSearchParams#toStringURLSearchParams#keysURLSearchParams#valuesURLSearchParams#entriesURLSearchParams#@@iterator.forEach method on iterable DOM collections (#329)Promise rejection events (instead of only global handlers), #205.fetch for correct with polyfilled Promise and preventing problems like #178, #332, #371.@@isConcatSpreadable to Array#concat.@@species to Array#{concat, filter, map, slice, splice}..exec calling to RegExp#{@@replace, @@split, @@match, @@search}. Also, added fixes for RegExp#exec method. #411, #434, #453, thanks @nicolo-ribaudo.Object#toString does not support @@toStringTag, add to wrapped prototypes own toString method with @@toStringTag logic, see #199.asap (old stage 0 proposal) replaced by queueMicrotask (a part of HTML spec)Observable (#257, #276, etc.)Array#flatten -> Array#flat and Array#flatMapglobal stage 3 proposal - rename global to globalThisString#matchAll (proposal-string-matchall#17, proposal-string-matchall#38, proposal-string-matchall#41, etc.) and move to the stage 3.name properties of String#{trimStart, trimEnd , trimLeft, trimRight}, move to the stage 3String#trim (ES6 -> ES7)Array#{ flat, flatMap }{ Array, %TypedArray% }#includesObject.{ values, entries}Object.getOwnPropertyDescriptorsString#{ padStart, padEnd }String#{ trimStart, trimEnd, trimLeft, trimRight }Promise#finallySymbol.asyncIteratorObject#__(define|lookup)[GS]etter__Error.isError (withdrawn)System.global and global (replaced by globalThis)Map#toJSON and Set#toJSON (rejected)RegExp.escape (rejected)Reflect.enumerate (removed from the spec)CSSRuleList, MediaList, StyleSheetListDictObject.{classof, isObject, define, make}Function#partNumber#@@iteratorString#{escapeHTML, unescapeHTML}delay.sham flag to features which can't be properly polyfilled and / or not recommended for usage:
Symbol constructor - we can't add new primitives. Object.prototype accessors too expensive.Object.{create, defineProperty, defineProperties, getOwnPropertyDescriptor, getOwnPropertyDescriptors}, Reflect.{defineProperty, getOwnPropertyDescriptor} can't be properly polyfilled without descriptors support.Object.{freeze, seal, preventExtensions}, Reflect.preventExtensions can't be properly polyfilled in ES3 environment.Object.getPrototypeOf can be deceived in ES3 environment.Reflect.construct can't be polyfilled for a correct work with newTarget argument on built-ins.URL constructor in engines without descriptors support.WeakMap frozen keys fallback, #384.Array#reverse bug.core-js repository structure to monorepo with packages in /packages/ directory.core-js-pure package (replacement for core-js/library).core-js-bundle package.core-js package, leave it only in core-js-builder package.core-js@2 to:
core-js packagecore-js-pure packagebower.jsoncore-js/library to separate core-js-pure package.core-js/shim entry point, replace it just with core-js.core-js/es, all those features in modules folder has es. prefix.es7. to esnext., they no longer available in core-js/es7, use core-js/stage/* instead of that.core-js(/library)/fn to core-js(-pure)/features for improve readability./es/ path (for example, core-js/es/array/from)./stable/ entry points as an equal of /features/ for stable features, without proposals./proposals/ entry points for allow include all features from one proposal (for example, core-js/proposals/reflect-metadata)./es|stable|features/instance/ entry points for getting polyfill of the related method for passed instance (could be used in cases like babel-runtime).core-js/es/typed-array/from).es.symbol module for loading only required features, for example, in MS Edge.web.dom namespace to web.dom-collections.es6.regexp.{match, replace, search, split} -> es.string.{match, replace, search, split} - mainly it's fixes / adding support of well-known symbols to string methods, only in second place adding related methods to regexp prototype./modules/ directory by moving internal modules to /internals/ directory.core-js(/library)/fn/array/{pop, push, reverse, shift, unshift}.core object no longer available in the global version, entry points which previously returned it now returns globalThis object. Also, don't set global core property.core-js-compat package with:
core-js modules and API for getting a list of required core-js modules by browserslist query, #466.@babel/preset-env).@babel/preset-env).core-js-builder package:
targets option with browserslist query.Object.getOwnPropertyNames feature detection.
Fixed regression in:
Object.getOwnPropertyNames feature detection.DataView prototype methods in old V8.Added a workaround for a rollup bug, #494
rollup bug, #494Array#reverse bug), Electron.- Fixed typo in AggregateError.
AggregateError.Added AgregateError for Promise.any rejections.
AgregateError for Promise.any rejections.String#replaceAll search argument.es.array.unscopables.{ flat, flat-map }.core-js-compat/entries sorted in the order of core-js-compat/data.Some minor changes in Map.{ groupBy, keyBy } per `tc39/proposal-collection-methods@9a4b9e4`
Map.{ groupBy, keyBy } per tc39/proposal-collection-methods@9a4b9e4core-js-compat added data which modules added in minor core-js versions (required for @babel/preset-env).core-js-compat.Information which modules load by each entry point added to core-js-compat.
core-js-compat.Added Map#update from collection methods proposal.
Map#update from collection methods proposal.Map.{ groupBy, keyBy } from the same proposal.Added /stable/ entry points as an equal of /features/ for stable features, without proposals.
/stable/ entry points as an equal of /features/ for stable features, without proposals./es|stable|features/instance/ entry points for getting polyfill of the related method for passed instance (could be used in cases like babel-runtime).Array#{ flat, flatMap } moved to stable ES (January TC39 meeting).
Array#{ flat, flatMap } moved to stable ES (January TC39 meeting).Object.fromEntries moved to stable ES (January TC39 meeting).String#{ trimStart, trimEnd, trimLeft, trimRight } moved to stable ES (January TC39 meeting).Promise.allSettled moved to stage 2 (January TC39 meeting).Promise.any stage 0 proposal.String#matchAll minor update.core-js-compat.fetch wrapped for correct with polyfilled Promise and preventing problems like #178, #332, #371.
Forced replacement queueMicrotask in Node 11 for prevent ExperimentalWarning, nodejs/node#25592.
queueMicrotask in Node 11 for prevent ExperimentalWarning, nodejs/node#25592.core-js-compat.Set#isDisjointWith renamed to Set#isDisjointFrom per tc39/proposal-set-methods#46.
Set#isDisjointWith renamed to Set#isDisjointFrom per tc39/proposal-set-methods#46.Set#isSubsetOf updated per tc39/proposal-set-methods#41, tc39/proposal-set-methods#45, tc39/proposal-set-methods#48.esnext.string.trim-{ left -> start, right -> end } renamed by names of main methods of the proposal.Array#forEach implementation, which in some cases was defined in sloppy mode.Reflect.metadata by the current behaviour of the spec.Reflect.defineMetadata.deleteAll.Added filename option to `core-js-builder`
filename option to core-js-builderMap#merge updated per tc39/proposal-collection-methods@7da035b.deleteAll method updated per tc39/proposal-collection-methods@0b91c07Array#{ flat, flatMap, lastIndex, lastItem } added to Array#@@unscopables per tc39/proposal-flatMap#75$ in String#replace, #471Add `core-js-compat` package with data about the necessity of core-js modules and API for getting a list of required core-js modules by browserslist q
core-js-compat package with data about the necessity of core-js modules and API for getting a list of required core-js modules by browserslist query, #466.targets option with browserslist query to core-js-builder.Set#{ isDisjointWith, isSupersetOf } per https://github.com/tc39/proposal-set-methods/pull/36Math.sinh feature detection.Added new methods to new Set methods stage 2 proposal:
Set methods stage 2 proposal:
Set#isDisjointWithSet#isSubsetOfSet#isSupersetOfString#matchAll updated per https://github.com/tc39/proposal-string-matchall/pull/41web.url-search-params.sort module because all engines without URLSearchParams#sort does not pass tests for URLSearchParams constructor.Added URL and URLSearchParam from `URL` standard, also stage 0 proposal to ECMAScript
URL and URLSearchParam from URL standard, also stage 0 proposal to ECMAScript
URL
URL#hrefURL#originURL#protocolURL#usernameURL#passwordURL#hostURL#hostnameURL#portURL#pathnameURL#searchURL#searchParamsURL#hashURL#toStringURL#toJSONURLSearchParams
URLSearchParams#appendURLSearchParams#deleteURLSearchParams#getURLSearchParams#getAllURLSearchParams#hasURLSearchParams#setURLSearchParams#sortURLSearchParams#toStringURLSearchParams#keysURLSearchParams#valuesURLSearchParams#entriesURLSearchParams#@@iteratorSee all changes in the changelog.
See all changes in the changelog.
asap (old stage 0 proposal) replaced by queueMicrotask (a part of HTML spec)..exec calling to RegExp#{@@replace, @@split, @@match, @@search}. Also, added fixes for RegExp#exec method. #411, #434, #453, thanks @nicolo-ribaudo.{ Map, WeakMap, WeakSet }#deleteAllMap#everyMap#findMap#findKeyMap#includesMap#keyOfMap#reduceMap#someWeakSet#addAllMap#merge semantics.Math.seededPRNG stage 1 proposal.Symbol.dispose for stage 1 using statement proposal.global renamed to globalThis per tc39/proposal-global@2a4cf86Symbol#description marked as a stable ECMAScript feature.String#matchAll updated per tc39/proposal-string-matchall#38.Object.fromEntries moved to stage 3.Promise.allSettled moved to stage 1.Array#reverse bug.Symbol#description bug.String#padStart and String#padEnd bug in mobile Safari, #414.babel to babel@7).Added `Promise.allSettled` proposal, #399
See all changes in #325
Promise.allSettled proposal, #399Set.prototype.intersect renamed to Set.prototype.intersection per tc39/proposal-set-methods@1c62b3d, tc39/proposal-set-methods@703b081Symbol.patternValue - now it's missed in the proposal repo/proposals/ entry points for allow include all features from one proposal (for example, core-js/proposals/reflect-metadata)/es/ path like in /features/ (for example, core-js/es/array/from)webpack dependency in core-js-builderUpdates based on results of May 2018 TC39 meeting:
See all changes in #325
Updates based on results of May 2018 TC39 meeting:
Array.prototype.flatten renamed to Array.prototype.flatSymbol.prototype.description moved to stage 3Object.fromEntries moved to stage 2Set methods:
Set.prorortyp.except -> Set.prorortyp.differenceSet.prorortyp.xor -> Set.prorortyp.symmetricDifferenceWell-known symbols definition extracted from es.symbol module for loading only required features, for example, in MS Edge
See all changes in #325
es.symbol module for loading only required features, for example, in MS EdgecompositeKey and compositeSymbol methods (stage 1 proposal)String#codePoints proposal per tc39/proposal-string-prototype-codepoints@673b43e.name properties of String#{trimStart, trimEnd , trimLeft, trimRight}pure version for case when they should work with global versions of collectionsPromise in V8 6.6 (Node 10 and Chrome 66) because of a bug with resolving custom thenablesPromise in microtask implementation, #396%TypedArray% methodsfinal, related #400pure versionPrevent Promise.prototype pollution in some cases
Remove some deprecated entry points.
https://github.com/zloirock/core-js/pull/325
@@isConcatSpreadable to Array#concat.@@species to Array#{concat, filter, map, slice, splice}.eslint-plugin-qunit.Added Symbol.{patternMatch, patternValue} for updated pattern matching proposal
See #325.
Symbol.{patternMatch, patternValue} for updated pattern matching proposales.regexp.{match, replace, search, split} modules renamed to es.string.{match, replace, search, split} - mainly it's fixes / adding support of well-known symbols to string methods, only in second place adding related methods to regexp prototypecore-js-bundle .npmignoreSee https://github.com/zloirock/core-js/pull/325
See https://github.com/zloirock/core-js/pull/325
Added code points / code units explicit feature detection in String#at for preventing breakage code which use obsolete String#at proposal polyfill
String#at for preventing breakage code which use obsolete String#at proposal polyfillOPEN_SOURCE_CONTRIBUTOR detection in postinstallpostinstallReturned usage of node -e in the postinstall scripts for better cross-platform compatibility, #582
Show similar postinstall messages only once per npm i, #597
postinstall messages only once per npm i, #597Some fixes and improvements of the postinstall script like support npm color config (#556) or adding support of ADBLOCK env variable
postinstall script like support npm color config (#556) or adding support of ADBLOCK env variableAdded a workaround of a strange npx bug on postinstall, #551
npx bug on postinstall, #551Added one more workaround of alternative not completely correct Symbol polyfills, #550, #554
Fixed IE8- non-enumerable properties support in Object.{ assign, entries, values }, #541
Fixed buggy String#padStart and String#padEnd mobile Safari implementations, #414.
String#padStart and String#padEnd mobile Safari implementations, #414.Added a workaround against crushing an old IE11.0.9600.16384 build, #485.
Added a workaround for babel-minify bug, #479
babel-minify bug, #479Fixed handling of $ in String#replace, #471
$ in String#replace, #471Fixed an issue with minified version, #463, #465
Your coding agent can read these notes before it upgrades. Set up the MCP server →