Skip to main content

Changelog

Less than 1 minute

Unreleased
3.31.1 - 2023.07.06open in new window
3.31.0 - 2023.06.12open in new window
3.30.2 - 2023.05.07open in new window
3.30.1 - 2023.04.14open in new window
3.30.0 - 2023.04.04open in new window
3.29.1 - 2023.03.13open in new window
3.29.0 - 2023.02.27open in new window
3.28.0 - 2023.02.14open in new window

I highly recommend reading this: So, what's next?open in new window

3.27.2 - 2023.01.19open in new window
  • Set methods proposalopen in new window updates:
  • Added one more workaround of a webpack dev server bug on IE global methods, #1161open in new window
  • Fixed possible String.{ raw, cooked } error with empty template array
  • Used non-standard V8 Error.captureStackTrace instead of stack parsing in new error classes / wrappers where it's possible
  • Added detection correctness of iteration to Promise.{ allSettled, any } feature detection, Hermes issue
  • Compat data improvements:
  • Minor tweaks of minification settings for core-js-bundle
  • Refactoring, some minor fixes, improvements, optimizations
3.27.1 - 2022.12.30open in new window
  • Fixed a Chakra-based MS Edge (18-) bug that unfreeze (O_o) frozen arrays used as WeakMap keys
  • Fixing of the previous bug also fixes some cases of String.dedent in MS Edge
  • Fixed dependencies of some entries
3.27.0 - 2022.12.26open in new window
3.26.1 - 2022.11.14open in new window
  • Disabled forced replacing of Array.fromAsync since it's on Stage 3
  • Avoiding a check of the target in the internal function-uncurry-this helper where it's not required - minor optimization and preventing problems in some broken environments, a workaround of #1141open in new window
  • V8 will not ship Array.prototype.{ group, groupToMap } in V8 ~ Chromium 108, proposal-array-grouping/44open in new window
3.26.0 - 2022.10.24open in new window
3.25.5 - 2022.10.04open in new window
3.25.4 - 2022.10.03open in new window
  • Added a workaround of a Nashorn bug with Function.prototype.{ call, apply, bind } on string methods, #1128open in new window
  • Updated lists of [Serializable] and [Transferable] objects in the structuredClone polyfill. Mainly, for better error messages if polyfilling of cloning such types is impossible
  • Array.prototype.{ group, groupToMap } marked as supported from V8 ~ Chromium 108open in new window
  • Added Electron 22 compat data mapping
3.25.3 - 2022.09.26open in new window
  • Forced polyfilling of Array.prototype.groupToMap in the pure version for returning wrapped Map instances
  • Fixed existence of Array.prototype.{ findLast, findLastIndex } in /stage/4 entry
  • Added Opera Android 71 compat data mapping
  • Some stylistic changes
3.25.2 - 2022.09.19open in new window
  • Considering document.all as a callable in some missed cases
  • Added Safari 16.0 compat data
  • Added iOS Safari 16.0 compat data mapping
  • Fixed some ancient iOS Safari versions compat data mapping
3.25.1 - 2022.09.08open in new window
  • Added some fixes and workarounds of FF30- typed arrays bug that does not properly convert objects to numbers
  • Added sideEffects field to core-js-pure package.json for better tree shaking, #1117open in new window
  • Dropped semver dependency from core-js-compat
    • semver package (ironically) added a breaking change and dropped NodeJS 8 support in the minor 7.1 versionopen in new window, after that semver in core-js-compat was pinned to 7.0 since for avoiding breaking changes it should support NodeJS 8. However, since core-js-compat is usually used with other packages that use semver dependency, it causes multiple duplication of semver in dependencies. So I decided to remove semver dependency and replace it with a couple of simple helpers.
  • Added Bun 0.1.6-0.1.11 compat data
  • Added Deno 1.25 compat data mapping
  • Updated Electron 21 compat data mapping
  • Some stylistic changes, minor fixes, and improvements
3.25.0 - 2022.08.25open in new window
  • Added Object.prototype.__proto__open in new window polyfill
    • It's optional, legacy, and in some cases (mainly because of developers' mistakes) can cause problems, but some libraries depend on itopen in new window, and most code can't work without the proper libraries' ecosystem
    • Only for modern engines where this feature is missed (like Deno), it's not installed in IE10- since here we have no proper way setting of the prototype
    • Without fixes of early implementations where it's not an accessor since those fixes are impossible
    • Only for the global version
  • Considering document.all as an object in some missed cases, see ECMAScript Annex B 3.6open in new window
  • Avoiding unnecessary promise creation and validation result in %WrapForValid(Async)IteratorPrototype%.return, proposal-iterator-helpers/215open in new window
  • Fixed omitting the result of proxing .return in %IteratorHelperPrototype%.return, #1116open in new window
  • Fixed the order creation of properties of iteration result object of some iterators (value should be created before done)
  • Fixed some cases of Safari < 13 bug - silent on non-writable array .length setting
  • Fixed ArrayBuffer.length in V8 ~ Chrome 27-
  • Relaxed condition of re-usage native WeakMap for internal states with multiple core-js copies
  • Availability cloning of FileList in the structuredClone polyfill extended to some more old engines versions
  • Some stylistic changes and minor fixes
  • Throwing a TypeError in core-js-compat / core-js-builder in case of passing invalid module names / filters for avoiding unexpected result, related to #1115open in new window
  • Added missed NodeJS 13.2 to esmodules core-js-compat / core-js-builder target
  • Added Electron 21 compat data mapping
  • Added Oculus Browser 23.0 compat data mapping
3.24.1 - 2022.07.30open in new window
  • NodeJS is ignored in IS_BROWSER detection to avoid a false positive with jsdom, #1110open in new window
  • Fixed detection of @@species support in Promise in some old engines
  • { Array, %TypedArray% }.prototype.{ findLast, findLastIndex } marked as shipped in FF104open in new window
  • Added iOS Safari 15.6 compat data mapping
  • Fixed Opera 15 compat data mapping
3.24.0 - 2022.07.25open in new window
3.23.5 - 2022.07.18open in new window
  • Fixed a typo in the structuredClone feature detection, #1106open in new window
  • Added Opera Android 70 compat data mapping
3.23.4 - 2022.07.10open in new window
  • Added a workaround of the Bun ~ 0.1.1 bugopen in new window that define some globals with incorrect property descriptors and that causes a crash of core-js
  • Added a fix of the FF103+ structuredClone bugs (1774866open in new window (fixed in FF104) and 1777321open in new window (still not fixed)) that now can clone errors, but .stack of the clone is an empty string
  • Fixed { Map, WeakMap }.prototype.emplace logic, #1102open in new window
  • Fixed order of errors throwing on iterator helpers
3.23.3 - 2022.06.26open in new window
3.23.2 - 2022.06.21open in new window
  • Avoided creation of extra properties for the handling of %TypedArray% constructors in new methods, #1092 (comment)open in new window
  • Added Deno 1.23 compat data mapping
3.23.1 - 2022.06.14open in new window
  • Fixed possible error on multiple core-js copies, #1091open in new window
  • Added v flag to RegExp.prototype.flags implementation in case if current V8 bugs will not be fixed before this flag implementation
3.23.0 - 2022.06.14open in new window
  • Array find from lastopen in new window moved to the stable ES, according to June 2022 TC39 meeting:
    • Array.prototype.findLast
    • Array.prototype.findLastIndex
    • %TypedArray%.prototype.findLast
    • %TypedArray%.prototype.findLastIndex
  • Methods from the Array grouping proposalopen in new window renamedopen in new window, according to June 2022 TC39 meeting:
    • Array.prototype.groupBy -> Array.prototype.group
    • Array.prototype.groupByToMap -> Array.prototype.groupToMap
  • Changed the order of operations in %TypedArray%.prototype.with following proposal-change-array-by-copy/86open in new window, according to June 2022 TC39 meeting
  • Decorator Metadata proposalopen in new window extracted from Decorators proposalopen in new window as a separate stage 2 proposal, according to March 2022 TC39 meeting, Symbol.metadataKey replaces Symbol.metadata
  • Added Array.prototype.push polyfill with some fixes for modern engines
  • Added Array.prototype.unshift polyfill with some fixes for modern engines
  • Fixed a bug in the order of getting flags in RegExp.prototype.flags in the actual version of V8
  • Fixed property descriptors of some Math and Number constants
  • Added a workaround of V8 ArrayBufferDetaching protector cell invalidation and performance degradation on structuredClone feature detection, one more case of #679open in new window
  • Added detection of NodeJS bugopen in new window in structuredClone that can not clone DOMException (just in case for future versions that will fix other issues)
  • Compat data:
    • Added NodeJS 18.3 compat data mapping
    • Added and fixed Deno 1.22 and 1.21 compat data mapping
    • Added Opera Android 69 compat data mapping
    • Updated Electron 20.0 compat data mapping
3.22.8 - 2022.06.02open in new window
  • Fixed possible multiple call of ToBigInt / ToNumber conversion of the argument passed to %TypedArray%.prototype.fill in V8 ~ Chrome < 59, Safari < 14.1, FF < 55, Edge <=18
  • Fixed some cases of DeletePropertyOrThrow in IE9-
  • Fixed the kind of error (TypeError instead of Error) on incorrect exec result in RegExp.prototype.test polyfill
  • Fixed dependencies of { actual, full, features }/typed-array/at entries
  • Added Electron 20.0 compat data mapping
  • Added iOS Safari 15.5 compat data mapping
  • Refactoring
3.22.7 - 2022.05.24open in new window
3.22.6 - 2022.05.23open in new window
  • Fixed possible double call of ToNumber conversion on arguments of Math.{ fround, trunc } polyfills
  • Array.prototype.includes marked as fixedopen in new window in FF102
3.22.5 - 2022.05.10open in new window
  • Ensured that polyfilled constructors .prototype is non-writable
  • Ensured that polyfilled methods .prototype is not defined
  • Added detection and fix of a V8 ~ Chrome <103 bugopen in new window of struturedClone that returns null if cloned object contains multiple references to one error
3.22.4 - 2022.05.03open in new window
  • Ensured proper .length of polyfilled functions even in compressed code (excepting some ancient engines)
  • Ensured proper .name of polyfilled accessors (excepting some ancient engines)
  • Ensured proper source / ToString conversion of polyfilled accessors
  • Actualized Rhino compat data
  • Refactoring
3.22.3 - 2022.04.28open in new window
  • Added a fix for FF99+ Array.prototype.includes broken on sparse arrays
3.22.2 - 2022.04.21open in new window
  • Fixed URLSearchParams in IE8- that was broken in the previous release
  • Fixed __lookupGetter__ entries
3.22.1 - 2022.04.20open in new window
  • Improved some cases of RegExp flags handling
  • Prevented experimental warning in NodeJS ~ 18.0 on detection fetch API
  • Added NodeJS 18.0 compat data
3.22.0 - 2022.04.15open in new window
  • Change Array by copy proposalopen in new window:
  • Added some more atob / btoa fixes:
  • Added /full/ namespace as the replacement for /features/ since it's more descriptive in context of the rest namespaces (/es//stable//actual//full/)
  • Avoided propagation of removed parts of proposals to upper stages. For example, %TypedArray%.prototype.groupBy was removed from the Array grouping proposal a long time ago. We can't completely remove this method since it's a breaking change. But this proposal has been promoted to stage 3 - so the proposal should be promoted without this method, this method should not be available in /actual/ entries - but it should be available in early-stage entries to avoid breakage.
  • Significant internal refactoring and splitting of modules (but without exposing to public API since it will be a breaking change - it will be exposed in the next major version)
  • Bug fixes:
  • Tooling:
    • Stabilized proposals are filtered out from the core-js-compat -> core-js-builder -> core-js-bundle output. That mean that if the output contains, for example, es.object.has-own, the legacy reference to it, esnext.object.has-own, no longer added.
    • Aligned modules filters of core-js-builderopen in new window and core-js-compatopen in new window, now it's modules and exclude options
    • Added support of entry points, modules, regexes, and arrays of them to those filters
    • Missed targets option of core-js-compat means that the targets filter just will not be applied, so the result will contain modules required for all possible engines
  • Compat data:
    • .stack property on DOMException marked as supported from Deno 1.15open in new window
    • Added Deno 1.21 compat data mapping
    • Added Electron 19.0 and updated 18.0 compat data mapping
    • Added Samsung Internet 17.0 compat data mapping
    • Added Opera Android 68 compat data mapping
3.21.1 - 2022.02.17open in new window
  • Added a bugopen in new windowfix for the WebKit Array.prototype.{ groupBy, groupByToMap } implementation
  • core-js-compat targets parser transforms engine names to lower case
  • atob / btoa marked as fixedopen in new window in NodeJS 17.5
  • Added Electron 18.0 compat data mapping
  • Added Deno 1.20 compat data mapping
3.21.0 - 2022.02.02open in new window
  • Added Base64 utility methodsopen in new window:
    • atob
    • btoa
  • Added the proper validation of arguments to some methods from web standards
  • Forced replacement of all features from early-stage proposals for avoiding possible web compatibility issues in the future
  • Added Rhino 1.7.14 compat data
  • Added Deno 1.19 compat data mapping
  • Added Opera Android 66 and 67 compat data mapping
  • Added iOS Safari 15.3 and 15.4 compat data mapping
3.20.3 - 2022.01.15open in new window
  • Detects and replaces broken third-party Function#bind polyfills, uses only native Function#bind in the internals
  • structuredClone should throw an error if no arguments passed
  • Changed the structure of notes in __core-js_shared__
3.20.2 - 2022.01.02open in new window
3.20.1 - 2021.12.23open in new window
  • Fixed the order of calling reactions of already fulfilled / rejected promises in Promise.prototype.then, #1026open in new window
  • Fixed possible memory leak in specific promise chains
  • Fixed some missed dependencies of entries
  • Added Deno 1.18 compat data mapping
3.20.0 - 2021.12.16open in new window
3.19.3 - 2021.12.06open in new window
3.19.2 - 2021.11.29open in new window
  • Added a workaround for a UC Browser specific version bug with unobservable RegExp#sticky flag, #1008open in new window, #1015open in new window
  • Added handling of comments and specific spaces to Function#name polyfill, #1010open in new window, thanks @ildar-shaimordanovopen in new window
  • Prevented some theoretical cases of breaking / observing the internal state by patching Array.prototype[@@species]
  • Refactored URL and URLSearchParams
  • Added iOS Safari 15.2 compat data mapping
  • Added Electron 17.0 compat data mapping
  • Updated Deno compat data mapping
3.19.1 - 2021.11.03open in new window
  • Added a workaround for FF26- bug where ArrayBuffers are non-extensible, but Object.isExtensible does not report it:
    • Fixed in Object.{ isExtensible, isSealed, isFrozen } and Reflect.isExtensible
    • Fixed handling of ArrayBuffers as collections keys
  • Fixed Object#toString on AggregateError in IE10-
  • Fixed possible lack of dependencies of WeakMap in IE8-
  • .findLast methods family marked as supported from Chrome 97open in new window
  • Fixed inheritance of Electron compat data web. modules
  • Fixed Safari 15.1 compat data (some features were not added)
  • Added iOS Safari 15.1 compat data mapping
3.19.0 - 2021.10.25open in new window
  • Most built-ins are encapsulated in core-js for preventing possible cases of breaking / observing the internal state by patching / deleting of them
    • Avoid .call / .apply prototype methods that could be patched
    • Avoid instanceof operator - implicit .prototype / @@hasInstance access that could be patched
    • Avoid RegExp#test, String#match and some over methods - implicit .exec and RegExp well-known symbols access that could be patched
  • Clearing of Error stack from extra entries experimentally added to AggregateError, #996open in new window, in case lack of problems it will be extended to other cases
  • In engines with native Symbol support, new well-known symbols created with usage Symbol.for for ensuring the same keys in different realms, #998open in new window
  • Added a workaround of a BrowserFS NodeJS process polyfill bugopen in new window that incorrectly reports V8 version that's used in some cases of core-js feature detection
  • Fixed normalization of message AggregateError argument
  • Fixed order of arguments conversion in Math.scale, a spec draft bugopen in new window
  • Fixed core-js-builder work in NodeJS 17, added a workaround of webpack + NodeJS 17 issueopen in new window
  • Added NodeJS 17.0 compat data mapping
  • Added Opera Android 65 compat data mapping
  • Updated Electron 16.0 compat data mapping
  • Many other minor fixes and improvements
3.18.3 - 2021.10.13open in new window
  • Fixed the prototype chain of AggregateError constructor that should contain Error constructor
  • Fixed incorrect AggregateError.prototype properties descriptors
  • Fixed InstallErrorCause internal operation
  • Added NodeJS 16.11 compat data mapping
  • Added Deno 1.16 compat data mapping
  • Object.hasOwn marked as supported from Safari 15.1
3.18.2 - 2021.10.06open in new window
  • Early { Array, %TypedArray% }.fromAsync errors moved to the promise, per the latest changes of the spec draft
  • Internal ToInteger(OrInfinity) operation returns +0 for -0 argument, ES2020+ update
  • Fixed theoretical problems with handling bigint in Number constructor wrapper
  • Fixed String.raw with extra arguments
  • Fixed some missed dependencies in entry points
  • Some other minor fixes and improvements
  • Refactoring
3.18.1 - 2021.09.27open in new window
  • Fixed String.prototype.substr feature detection and compat data
  • Removed mistakenly added .forEach from prototypes of some DOM collections where it shouldn't be, #988open in new window, #987open in new window, thanks @moorejsopen in new window
  • Added cause to AggregateError constructor implementation (still without adding to the feature detection)
  • Families of .at and .findLast methods marked as supported in Safari TP
  • Added Electron 16.0 compat data mapping
3.18.0 - 2021.09.20open in new window
  • Added Array.fromAsync stage 1 proposalopen in new window:
    • Array.fromAsync
    • %TypedArray%.fromAsync
  • .name and .toString() on polyfilled functions improved in many different cases
  • Improved internal IsConstructor and IsCallable checks
  • Fixed some internal cases of GetMethod operation
  • Fixed a bug of MS Edge 18- parseInt / parseFloat with boxed symbols
  • Fixed es.array.{ index-of, last-index-of } compat data
  • Added Deno 1.15 compat data mapping
  • Some other minor fixes and optimizations
3.17.3 - 2021.09.09open in new window
  • Fixed some possible problems related to possible extension of %IteratorPrototype% and %AsyncIteratorPrototype% in the future
  • Fixed DOMTokenList.prototype.{ forEach, @@iterator, keys, values, entries } in old WebKit versions where element.classList is not an instance of global DOMTokenList
  • Added NodeJS 16.9 compat data mapping
  • Added Samsung Internet 16.0 compat data mapping
3.17.2 - 2021.09.03open in new window
  • Fixed missed cases of ES3 reserved words usage, related to #980open in new window
  • Fixed dependencies in one missed entry point
  • Some other minor fixes and optimizations
3.17.1 - 2021.09.02open in new window
  • Fixed missed modules-by-versions data
3.17.0 - 2021.09.02open in new window
3.16.4 - 2021.08.29open in new window
  • AsyncFromSyncIterator made stricter, related mainly to AsyncIterator.from and AsyncIterator.prototype.flatMap
  • Handling of optional .next arguments in (Async)Iterator methods is aligned with the current spec draft (mainly - ignoring the first passed to .next argument in built-in generators)
  • Behavior of .next, .return, .throw methods on AsyncIterator helpers proxy iterators aligned with the current spec draft (built-in async generators) (mainly - some early errors moved to returned promises)
  • Fixed some cases of safe iteration closing
  • Fixed dependencies of some entry points
3.16.3 - 2021.08.25open in new window
3.16.2 - 2021.08.17open in new window
3.16.1 - 2021.08.09open in new window
  • Fixed microtask implementation on iOS Pebble, #967open in new window
  • Fixed some entry points
  • Improved old Safari compat data
3.16.0 - 2021.07.30open in new window
3.15.2 - 2021.06.29open in new window
  • Worked around breakage related to zone.js loaded before core-js, #953open in new window
  • Added NodeJS 16.4 -> Chrome 91 compat data mapping
3.15.1 - 2021.06.23open in new window
3.15.0 - 2021.06.21open in new window
3.14.0 - 2021.06.05open in new window
  • Added polyfill of stable sort in { Array, %TypedArray% }.prototype.sort, #769open in new window, #941open in new window
  • Fixed Safari 14.0- %TypedArray%.prototype.sort validation of arguments bug
  • .at marked as supported from V8 9.2
3.13.1 - 2021.05.29open in new window
  • Overwrites get-own-property-symbols third-party Symbol polyfill if it's used since it causes a stack overflow, #774open in new window
  • Added a workaround of possible browser crash on Object.prototype accessors methods in WebKit ~ Android 4.0, #232open in new window
3.13.0 - 2021.05.26open in new window
3.12.1 - 2021.05.09open in new window
  • Fixed some cases of Function#toString with multiple core-js instances
  • Fixed some possible String#split polyfill problems in V8 5.1
3.12.0 - 2021.05.06open in new window
3.11.3 - 2021.05.05open in new window
  • Native promise-based APIs Promise#{ catch, finally } returns polyfilled Promise instances when it's required
3.11.2 - 2021.05.03open in new window
  • Added a workaround of WebKit ~ iOS 10.3 Safari Promise bug, #932open in new window
  • Promise#then of incorrect native Promise implementations with correct subclassing no longer wrapped
  • Changed the order of Promise feature detection, removed unhandled rejection tracking check in non-browser non-node platforms
3.11.1 - 2021.04.28open in new window
  • Made instanceof Promise and .constructor === Promise work with polyfilled Promise for all native promise-based APIs
  • Added a workaround for some buggy V8 versions ~4.5 related to fixing of %TypedArray% static methods, #564open in new window
3.11.0 - 2021.04.22open in new window
3.10.2 - 2021.04.19open in new window
  • URL and URLSearchParams marked as supported from Safari 14.0
  • Polyfilled built-in constructors protected from calling on instances
3.10.1 - 2021.04.08open in new window
3.10.0 - 2021.03.31open in new window
3.9.1 - 2021.03.01open in new window
  • Added a workaround for Chrome 38-40 bug which does not allow to inherit symbols (incl. well-known) from DOM collections prototypes to instances, #37open in new window
  • Used NumericRangeIterator as toStringTag instead of RangeIterator in { Number, BigInt }.range iterator, per this PRopen in new window
  • TypedArray constructors marked as supported from Safari 14.0
  • Updated compat data mapping for iOS Safari and Opera for Android
3.9.0 - 2021.02.19open in new window
3.8.3 - 2021.01.19open in new window
3.8.2 - 2021.01.03open in new window
3.8.1 - 2020.12.06open in new window
  • Fixed work of new %TypedArray% methods on BigInt arrays
  • Added ESNext methods to ES3 workaround for Number constructor wrapper
3.8.0 - 2020.11.26open in new window
2.6.12 [LEGACY] - 2020.11.26open in new window
  • Added code points / code units explicit feature detection in String#at for preventing breakage code which use obsolete String#at proposal polyfill
  • Added OPEN_SOURCE_CONTRIBUTOR detection in postinstall
  • Added Drone CI detection in postinstall
3.7.0 - 2020.11.06open in new window
3.6.5 - 2020.04.09open in new window
3.6.4 - 2020.01.14open in new window
  • Prevented a possible almost infinite loop in non-standard implementations of some backward iteration array methods
3.6.3 - 2020.01.11open in new window
3.6.2 - 2020.01.07open in new window
  • Fixed early implementations of Array#{ every, forEach, includes, indexOf, lastIndexOf, reduce, reduceRight, slice, some, splice } for the usage of ToLength
  • Added RegExp#exec dependency to methods which depends on the correctness of logic of this method (3.6.0-3.6.1 issue), #741open in new window
  • Refactored some internals
3.6.1 - 2019.12.25open in new window
  • Fixed a bug related Symbol with multiple copies of core-js (for 3.4.2-3.6.0), #736open in new window
  • Refactored some tools
3.6.0 - 2019.12.19open in new window
3.5.0 - 2019.12.12open in new window
3.4.8 - 2019.12.09open in new window
  • Added one more workaround for broken in previous versions inspectSource helper, #719open in new window
  • Added Opera Mobile compat data
  • Updated Samsung Internet, iOS, old Node and Android compat data mapping
  • es.string.match-all marked as completely supported in FF73
  • Generate core-js-compat/modules since often we need just the list of core-js modules
2.6.11 [LEGACY] - 2019.12.09open in new window
3.4.7 - 2019.12.03open in new window
  • Fixed an NPM publishing issue
3.4.6 - 2019.12.03open in new window
  • Improved iOS compat data - added missed mapping iOS 12.2 -> Safari 12.1, added bug fixes from patch releases
  • Added Safari 13.1 compat data
  • Added missed in core-js-compat helpers ie_mob normalization
  • Normalize the result of getModulesListForTargetVersion core-js-compat helper
  • Improved CI detection in the postinstall script, #707open in new window
3.4.5 - 2019.11.28open in new window
  • Detect incorrect order of operations in Object.assign, MS Edge bug
  • Detect usage of ToLength in Array#{ filter, map }, FF48-49 and MS Edge 14- issues
  • Detect incorrect MS Edge 17-18 Reflect.set which allows setting the property to object with non-writable property on the prototype
  • Fixed inspectSource helper with multiple core-js copies and some related features like some edge cases of Promise feature detection
3.4.4 - 2019.11.27open in new window
  • Added feature detection for Safari non-generic Promise#finally bugopen in new window (critical for core-js-pure)
  • Fixed missed esnext.string.code-points in core-js/features/string entry point
  • Updated Iterator proposal feature detection for the case of non-standard Iterator in FF44-
3.4.3 - 2019.11.26open in new window
  • Fixed missed es.json.stringify and some modules from iteration helpers proposal in some entry points (includes the root entry point)
  • Added a workaround of String#{ endsWith, startsWith } MDN polyfills bugs, #702open in new window
  • Fixed .size property descriptor of Map / Set in the pure version
  • Refactoring, some internal improvements
3.4.2 - 2019.11.22open in new window
  • Don't use polyfilled symbols as internal uids, a workaround for some incorrect use cases
  • String#replaceAll is available only in nightly FF builds
  • Improved Promise feature detection for the case of V8 6.6 with multiple core-js copies
  • Some internals optimizations
  • Added Node 13.2 -> V8 7.9 compat data mapping
  • Returned usage of node -e in postinstall scripts
3.4.1 - 2019.11.12open in new window
3.4.0 - 2019.11.07open in new window
3.3.6 - 2019.11.01open in new window
  • Don't detect Chakra-based Edge as Chrome in the userAgent parsing
  • Fixed inheritance in typed array constructors wrappers, #683open in new window
  • Added one more workaround for correct work of early fetch implementations with polyfilled URLSearchParams, #680open in new window
3.3.5 - 2019.10.29open in new window
  • Added a workaround of V8 deoptimization which causes serious performance degradation (~4x in my tests) of Array#concat, #679open in new window
  • Added a workaround of V8 deoptimization which causes slightly performance degradation of Promise, #679open in new window
  • Added (Async)Iterator.prototype.constructor -> (Async)Iterator per this issueopen in new window
  • Added compat data for Chromium-based Edge
3.3.4 - 2019.10.25open in new window
  • Added a workaround of V8 deoptimization which causes serious performance degradation (~20x in my tests) of some RegExp-related methods like String#split, #306open in new window
  • Added a workaround of V8 deoptimization which causes serious performance degradation (up to 100x in my tests) of Array#splice and slightly Array#{ filter, map }, #677open in new window
  • Fixed work of fetch with polyfilled URLSearchParams, #674open in new window
  • Fixed an edge case of String#replaceAll with an empty search value
  • Added compat data for Chrome 80
  • package-lock.json no longer generated in libraries
3.3.3 - 2019.10.22open in new window
3.3.2 - 2019.10.14open in new window
3.3.1 - 2019.10.13open in new window
  • Fixed an NPM publishing issue
3.3.0 - 2019.10.13open in new window
2.6.10 [LEGACY] - 2019.10.13open in new window
3.2.1 - 2019.08.12open in new window
  • Added a workaround for possible recursion in microtasks caused by conflicts with other Promise polyfills, #615open in new window
3.2.0 - 2019.08.09open in new window
  • Promise.allSettled moved to stable ES, per July TC39 meeting
  • Promise.any moved to stage 2, .errors property of AggregateError instances maked non-enumerable, per July TC39 meeting
  • using statement proposal moved to stage 2, added Symbol.asyncDispose, per July TC39 meeting
  • Added Array.isTemplateObject stage 2 proposalopen in new window, per June TC39 meeting
  • Added Map#updateOrInsert stage 1 proposalopen in new window, per July TC39 meeting
  • Added a fix for Math.hypot V8 7.7 bugopen in new window, since it's still not stable without adding results to core-js-compat
  • Added a workaround for APIs where not possible to replace broken native Promise, #579open in new window - added .finally and patched .then to / on native Promise prototype
  • Fixed crashing of Opera Presto, #595open in new window
  • Fixed incorrect early breaking of { Map, Set, WeakMap, WeakSet }.deleteAll
  • Fixed some missed dependencies in entry points
  • Added compat data for Node 12.5, FF 67, Safari 13
  • Added support of DISABLE_OPENCOLLECTIVE env variable to postinstall script
  • Removed core-js-pure dependency from core-js-compat, #590open in new window
  • Fixed generation of core-js-compat on Windows, #606open in new window
3.1.4 - 2019.06.15open in new window
  • Refactoring. Many minor internal improvements and fixes like:
    • Improved Symbol.keyFor complexity to O(1)
    • Fixed the order of arguments validation in String.prototype.{ endsWith, includes, startsWith }
    • Internal implementation of RegExp#flags helper now respect dotAll flag (mainly related to the pure version)
    • Performance optimizations related old V8
    • Etc.
3.1.3 - 2019.05.27open in new window
  • Fixed core-js/features/reflect/delete-metadata entry point
  • Some fixes and improvements of the postinstall script like support npm color config (#556open in new window) or adding support of ADBLOCK env variable
  • Refactoring and some minor fixes
2.6.9 [LEGACY] - 2019.05.27open in new window
  • Some fixes and improvements of the postinstall script like support npm color config (#556open in new window) or adding support of ADBLOCK env variable
3.1.2 - 2019.05.22open in new window
2.6.8 [LEGACY] - 2019.05.22open in new window
3.1.1 - 2019.05.21open in new window
  • Added one more workaround of alternative not completely correct Symbol polyfills, #550open in new window, #554open in new window
  • Reverted esnext.string.match-all in some entry points for fix autogeneration of core-js-compat/entries and backward @babel/preset-env compatibility
2.6.7 [LEGACY] - 2019.05.21open in new window
3.1.0 - 2019.05.20open in new window
2.6.6 [LEGACY] - 2019.05.20open in new window
  • Fixed IE8- non-enumerable properties support in Object.{ assign, entries, values }, #541open in new window
  • Fixed support of primitives in Object.getOwnPropertySymbols in Chrome 38 / 39, #539open in new window
  • Show a message on postinstall
3.0.1 - 2019.04.06open in new window
3.0.0 - 2019.03.19open in new window
  • Features
  • Bug and compatibility fixes:
  • Repository:
    • Change core-js repository structure to monorepo with packages in /packages/ directory.
    • Clean-up it, remove all possible duplicates, generated files, etc.
  • Packages:
    • Extract a version without global namespace pollution to a separate core-js-pure package (replacement for core-js/library).
    • Leave only one pair of bundles (global, with all polyfills) and move it to core-js-bundle package.
    • Remove bundling logic from core-js package, leave it only in core-js-builder package.
    • Clean-up packages.
    • Because of all approaches, reduce size of packages from ~2mb for core-js@2 to:
      • ~500kb for core-js package
      • ~440kb for core-js-pure package
    • Finally remove bower.json
  • CommonJS API, namespaces:
    • Add availability configuration of aggressivenessopen in new window.
    • Move core-js/library to separate core-js-pure package.
    • Because of removing all non-standard features, we no longer need core-js/shim entry point, replace it just with core-js.
    • Move all features from ES5, ES2015, ES2016, ES2017, ES2018 and ES2019 to one namespace for stable ES - it's available as core-js/es, all those features in modules folder has es. prefix.
    • Change prefix for ES proposals from es7. to esnext., they no longer available in core-js/es7, use core-js/stage/* instead of that.
    • Rename core-js(/library)/fn to core-js(-pure)/features for improve readability.
    • Allow more granular inclusion of features from /es/ path (for example, core-js/es/array/from).
    • Add /stable/ entry points as an equal of /features/ for stable features, without proposals.
    • Add /proposals/ entry points for allow include all features from one proposal (for example, core-js/proposals/reflect-metadata).
    • Add /es|stable|features/instance/ entry points for getting polyfill of the related method for passed instance (could be used in cases like babel-runtime).
    • Split typed arrays polyfills. Now you can, for example, load only required method (for example, core-js/es/typed-array/from).
    • Extract well-known symbols definition from es.symbol module for loading only required features, for example, in MS Edge.
    • Rename web.dom namespace to web.dom-collections.
    • Rename 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.
    • Relax /modules/ directory by moving internal modules to /internals/ directory.
    • Remove deprecated array entry points: 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.
    • Add some missing entry points.
  • Tools, tests, code quality:
    • Added 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, #466open in new window.
      • Data which modules load by each entry point (mainly useful for tools like @babel/preset-env).
      • Data which modules added in minor versions (mainly useful for tools like @babel/preset-env).
    • core-js-builder package:
      • Added targets option with browserslist query.
      • Removed an option for generation bundle of a version without global namespace pollution - now it's an odd use case.
      • Removed UMD wrapper from a generated code of bundles - we don't need it for a global polyfill.
    • Getting rid of LiveScript, usage another language in JS standard library looks strange and impedes usage of tools like ESLint:
      • Tests are rewritten to JS.
      • Scripts are rewritten to JS.
    • Babel with minimalistic config (which should work anywhere) used on tests.
    • ESLint used on tests and tools.
    • Source code refactored for improving readability.
2.6.5 - 2019.02.15open in new window
2.6.4 - 2019.02.07open in new window
2.6.3 - 2019.01.22open in new window
2.6.2 - 2019.01.10open in new window
2.6.1 - 2018.12.18open in new window
2.6.0 - 2018.12.05open in new window
2.5.7 - 2018.05.26open in new window
2.5.6 - 2018.05.07open in new window
2.5.5 - 2018.04.08open in new window
2.5.4 - 2018.03.27open in new window
  • Fixed one case of deoptimization built-in iterators in V8, related #377open in new window
  • Fixed some cases of iterators feature detection, #368open in new window
  • Fixed manually entered NodeJS domains issue in Promise, #367open in new window
  • Fixed Number.{parseInt, parseFloat} entry points
  • Fixed __(define|lookup)[GS]etter__ export in the library version
2.5.3 - 2017.12.12open in new window
2.5.2 - 2017.12.09open in new window
  • MutationObserver no longer used for microtask implementation in iOS Safari because of bug with scrolling, #339open in new window
  • Fixed JSON.stringify(undefined, replacer) case in the wrapper from the Symbol polyfill, #345open in new window
  • Array() calls changed to new Array() for V8 optimisation
2.5.1 - 2017.09.01open in new window
2.5.0 - 2017.08.05open in new window
2.4.1 - 2016.07.18open in new window
1.2.7 [LEGACY] - 2016.07.18open in new window
2.4.0 - 2016.05.08open in new window
  • Added Observable, stage 1 proposalopen in new window
  • Fixed behavior Object.{getOwnPropertySymbols, getOwnPropertyDescriptor} and Object#propertyIsEnumerable on Object.prototype
  • Reflect.construct and Reflect.apply should throw an error if argumentsList argument is not an object, #194open in new window
2.3.0 - 2016.04.24open in new window
2.2.2 - 2016.04.06open in new window
  • Added conversion -0 to +0 to Array#{indexOf, lastIndexOf}, ES2016 fixopen in new window
  • Added fixes for some Math methods in Tor Browser
  • Array.{from, of} no longer calls prototype setters
  • Added workaround over Chrome DevTools strange behavior, #186open in new window
2.2.1 - 2016.03.19open in new window
2.2.0 - 2016.03.15open in new window
2.1.5 - 2016.03.12open in new window
2.1.4 - 2016.03.08open in new window
2.1.3 - 2016.02.29open in new window
2.1.2 - 2016.02.29open in new window
  • Some minor Promise fixes:
    • Browsers rejectionhandled event better HTML spec complaint
    • Errors in unhandled rejection handlers should not cause any problems
    • Fixed typo in feature detection
2.1.1 - 2016.02.22open in new window
  • Some Promise improvements:
    • Feature detection:
      • Added detection unhandled rejection tracking support - now it's available everywhere, #140open in new window
      • Added detection @@species pattern support for completely correct subclassing
      • Removed usage Object.setPrototypeOf from feature detection and noisy console message about it in FF
    • Promise.all fixed for some very specific cases
2.1.0 - 2016.02.09open in new window
  • API:
    • ES5 polyfills are split and logic, used in other polyfills, moved to internal modules
      • All entry point works in ES3 environment like IE8- without core-js/(library/)es5
      • Added all missed single entry points for ES5 polyfills
      • Separated ES5 polyfills moved to the ES6 namespace. Why?
        • Mainly, for prevent duplication features in different namespaces - logic of most required ES5 polyfills changed in ES6+:
          • Already added changes for: Object statics - should accept primitives, new whitespaces lists in String#trim, parse(Int|float), RegExp#toString logic, String#split, etc
          • Should be changed in the future: @@species and ToLength logic in Array methods, Date parsing, Function#bind, etc
          • Should not be changed only several features like Array.isArray and Date.now
        • Some ES5 polyfills required for modern engines
      • All old entry points should work fine, but in the next major release API can be changed
    • Object.getOwnPropertyDescriptors moved to the stage 3, January TC39 meetingopen in new window
    • Added umd option for custom build processopen in new window, #169open in new window
    • Returned entry points for Array statics, removed in 2.0, for compatibility with babel 6 and for future fixes
  • Deprecated:
  • New Features:
    • Added Reflect metadata APIopen in new window as a pre-strawman feature, #152open in new window:
      • Reflect.defineMetadata
      • Reflect.deleteMetadata
      • Reflect.getMetadata
      • Reflect.getMetadataKeys
      • Reflect.getOwnMetadata
      • Reflect.getOwnMetadataKeys
      • Reflect.hasMetadata
      • Reflect.hasOwnMetadata
      • Reflect.metadata
    • Implementation / fixes Date#toJSON
    • Fixes for parseInt and Number.parseInt
    • Fixes for parseFloat and Number.parseFloat
    • Fixes for RegExp#toString
    • Fixes for Array#sort
    • Fixes for Number#toFixed
    • Fixes for Number#toPrecision
    • Additional fixes for String#split (RegExp#@@split)
  • Improvements:
    • Correct subclassing wrapped collections, Number and RegExp constructors with native class syntax
    • Correct support SharedArrayBuffer and buffers from other realms in typed arrays wrappers
    • Additional validations for Object.{defineProperty, getOwnPropertyDescriptor} and Reflect.defineProperty
  • Bug Fixes:
    • Fixed some cases Array#lastIndexOf with negative second argument
2.0.3 - 2016.01.11open in new window
  • Added fallback for V8 ~ Chrome 49 Promise subclassing bug causes unhandled rejection on feature detection, #159open in new window
  • Added fix for very specific environments with global window === null
2.0.2 - 2016.01.04open in new window
2.0.1 - 2015.12.31open in new window
  • Forced usage Promise.resolve polyfill in the library version for correct work with wrapper
  • Object.assign should be defined in the strict mode -> throw an error on extension non-extensible objects, #154open in new window
2.0.0 - 2015.12.24open in new window
1.2.6 - 2015.11.09open in new window
  • Reject with TypeError on attempt resolve promise itself
  • Correct behavior with broken Promise subclass constructors / methods
  • Added Promise-based fallback for microtask
  • Fixed V8 and FF Array#{values, @@iterator}.name
  • Fixed IE7- [1, 2].join(undefined) -> '1,2'
  • Some other fixes / improvements / optimizations
1.2.5 - 2015.11.02open in new window
  • Some more Number constructor fixes:
    • Fixed V8 ~ Node 0.8 bug: Number('+0x1') should be NaN
    • Fixed Number(' 0b1\n') case, should be 1
    • Fixed Number() case, should be 0
1.2.4 - 2015.11.01open in new window
  • Fixed Number('0b12') -> NaN case in the shim
  • Fixed V8 ~ Chromium 40- bug - Weak(Map|Set)#{delete, get, has} should not throw errors #124open in new window
  • Some other fixes and optimizations
1.2.3 - 2015.10.23open in new window
  • Fixed some problems related old V8 bug Object('a').propertyIsEnumerable(0) // => false, for example, Object.assign({}, 'qwe') from the last release
  • Fixed .name property and Function#toString conversion some polyfilled methods
  • Fixed Math.imul arity in Safari 8-
1.2.2 - 2015.10.18open in new window
1.2.1 - 2015.10.02open in new window
1.2.0 - 2015.09.27open in new window
1.1.4 - 2015.09.05open in new window
1.1.3 - 2015.08.29open in new window
1.1.2 - 2015.08.28open in new window
1.1.1 - 2015.08.20open in new window
  • Added more correct microtask implementation for Promise
1.1.0 - 2015.08.17open in new window
1.0.1 - 2015.07.31open in new window
  • Some fixes for final MS Edge, replaced broken native Reflect.defineProperty
  • Some minor fixes and optimizations
  • Changed compression client/*.min.js options for safe Function#name and Function#length, should be fixed #92open in new window
1.0.0 - 2015.07.22open in new window
0.9.18 - 2015.06.17open in new window
0.9.17 - 2015.06.14open in new window
0.9.16 - 2015.06.11open in new window
0.9.15 - 2015.06.09open in new window
0.9.14 - 2015.06.04open in new window
0.9.13 - 2015.05.25open in new window
0.9.12 - 2015.05.24open in new window
  • Different instances core-js should use / recognize the same symbols
  • Some fixes
0.9.11 - 2015.05.18open in new window
0.9.10 - 2015.05.16open in new window
  • Wrapped Function#toString for correct work wrapped methods / constructors with methods similar to the lodash isNativeopen in new window
  • Added proto versions of methods to export object in default version for consistency with library version
0.9.9 - 2015.05.14open in new window
0.9.8 - 2015.05.12open in new window
0.9.7 - 2015.05.07open in new window
0.9.6 - 2015.05.01open in new window
0.9.5 - 2015.04.30open in new window
  • Added cap for Function#@@hasInstance
  • Some fixes and optimizations
0.9.4 - 2015.04.27open in new window
  • Fixed RegExp constructor
0.9.3 - 2015.04.26open in new window
  • Some fixes and optimizations
0.9.2 - 2015.04.25open in new window
0.9.1 - 2015.04.25open in new window
0.9.0 - 2015.04.24open in new window
0.8.4 - 2015.04.18open in new window
  • Uses webpack instead of browserify for browser builds - more compression-friendly result
0.8.3 - 2015.04.14open in new window
  • Fixed Array statics with single entry points
0.8.2 - 2015.04.13open in new window
0.8.1 - 2015.04.03open in new window
  • Fixed Symbol.keyFor
0.8.0 - 2015.04.02open in new window
0.7.2 - 2015.03.09open in new window
  • Some fixes
0.7.1 - 2015.03.07open in new window
  • Some fixes
0.7.0 - 2015.03.06open in new window
0.6.1 - 2015.02.24open in new window
0.6.0 - 2015.02.23open in new window
0.5.4 - 2015.02.15open in new window
  • Some fixes
0.5.3 - 2015.02.14open in new window
0.5.2 - 2015.02.10open in new window
  • Some fixes
0.5.1 - 2015.02.09open in new window
  • Some fixes
0.5.0 - 2015.02.08open in new window
0.4.10 - 2015.01.28open in new window
0.4.9 - 2015.01.27open in new window
  • FF20-24 fix
0.4.8 - 2015.01.25open in new window
0.4.7 - 2015.01.25open in new window
0.4.6 - 2015.01.21open in new window
0.4.5 - 2015.01.16open in new window
  • Some fixes
0.4.4 - 2015.01.11open in new window
  • Enabled CSP support
0.4.3 - 2015.01.10open in new window
  • Added Function instances name property for IE9+
0.4.2 - 2015.01.10open in new window
  • Object static methods accept primitives
  • RegExp constructor can alter flags (IE9+)
  • Added Array.prototype[Symbol.unscopables]
0.4.1 - 2015.01.05open in new window
  • Some fixes
0.4.0 - 2015.01.03open in new window
  • Added es6.reflectopen in new window module:
    • Added Reflect.apply
    • Added Reflect.construct
    • Added Reflect.defineProperty
    • Added Reflect.deleteProperty
    • Added Reflect.enumerate
    • Added Reflect.get
    • Added Reflect.getOwnPropertyDescriptor
    • Added Reflect.getPrototypeOf
    • Added Reflect.has
    • Added Reflect.isExtensible
    • Added Reflect.preventExtensions
    • Added Reflect.set
    • Added Reflect.setPrototypeOf
  • core-js methods now can use external Symbol.iterator polyfill
  • Some fixes
0.3.3 - 2014.12.28open in new window
0.3.2 - 2014.12.25open in new window
0.3.1 - 2014.12.23open in new window
  • Some fixes
0.3.0 - 2014.12.23open in new window
0.2.5 - 2014.12.20open in new window
  • console no longer shortcut for console.log (compatibility problems)
  • Some fixes
0.2.4 - 2014.12.17open in new window
0.2.3 - 2014.12.15open in new window
  • Symbolsopen in new window:
    • Added option to disable addition setter to Object.prototype for Symbol polyfill:
      • Added Symbol.useSimple
      • Added Symbol.useSetter
    • Added cap for well-known Symbols:
      • Added Symbol.hasInstance
      • Added Symbol.isConcatSpreadable
      • Added Symbol.match
      • Added Symbol.replace
      • Added Symbol.search
      • Added Symbol.species
      • Added Symbol.split
      • Added Symbol.toPrimitive
      • Added Symbol.unscopables
0.2.2 - 2014.12.13open in new window
0.2.1 - 2014.12.12open in new window
0.2.0 - 2014.12.06open in new window
0.1.5 - 2014.12.01open in new window
0.1.4 - 2014.11.27open in new window
0.1.3 - 2014.11.20open in new window
0.1.2 - 2014.11.19open in new window
  • Map & Set bug fix
0.1.1 - 2014.11.18open in new window
  • Public release
Last update:
Contributors: Denis Pushkarev,DreamOfIce,Sergey Nechaev,stydxm,Josh Soref,Kenneth Brubaker,Pavel Pustovalov,Tomas Tintera