Is there any use in importing both ES6 and ES7 core-js polyfills?

The polyfills from core-js for different ECMAScript versions are mostly distinct. For example take a look at the object polyfill for ES6 and ES7.

So you need to import both if you want to have the features from ES6 and ES7 polyfilled.


This answer concerns core-js@2. Starting from core-js@3, there are no longer separate ES6 and ES7 prefixes. This is due to how ECMAScript developed. You can find more details in the core-js@3, babel and a look into the future post.

Yes, there is a use. Simply compare core-js/es6/object.js to core-js/es7/object.js.

The ES6 object polyfill provides:
•  Symbol
•  Object.create
•  Object.defineProperty
•  Object.defineProperties
•  Object.getOwnPropertyDescriptor
•  Object.getPrototypeOf
•  Object.keys
•  Object.getOwnPropertyNames
•  Object.freeze
•  Object.seal
•  Object.preventExtensions
•  Object.isFrozen
•  Object.isSealed
•  Object.isExtensible
•  Object.assign
•  Object.is
•  Object.setPrototypeOf
•  Object.prototype.toString

On the other hand, the ES7 object polyfill provides:
•  Object.getOwnPropertyDescriptors
•  Object.values
•  Object.entries
•  Object.prototype.__defineGetter__
•  Object.prototype.__defineSetter__
•  Object.prototype.__lookupGetter__
•  Object.prototype.__lookupSetter__

Thus, the ES6 polyfill indeed adds only methods introduced in ES6 and this is not covered by the ES7 polyfill. That one only adds methods introduced in ES7.

core-js appears to be structured the same way for other classes.