
Security News
ECMAScript 2025 Finalized with Iterator Helpers, Set Methods, RegExp.escape, and More
ECMAScript 2025 introduces Iterator Helpers, Set methods, JSON modules, and more in its latest spec update approved by Ecma in June 2025.
core-js-pure
Advanced tools
The core-js-pure package is a version of core-js that doesn't pollute the global namespace. It provides polyfills for ECMAScript features, including promises, symbols, collections, iterators, typed arrays, and many other features that are part of the ECMAScript specification but may not be available in all JavaScript environments.
Polyfilling Promises
This code sample demonstrates how to polyfill Promises using core-js-pure. It allows you to use Promises in environments where they are not natively supported.
import 'core-js-pure/stable/promise';
const promise = Promise.resolve(42);
promise.then(value => console.log(value));
Polyfilling Array methods
This code sample shows how to polyfill Array.prototype.find method. It enables the use of this method in environments where it is not part of the Array prototype.
import 'core-js-pure/stable/array/find';
const array = [1, 2, 3];
const found = array.find(item => item > 1);
console.log(found); // 2
Polyfilling Object static methods
This code sample illustrates how to polyfill Object.assign method. It allows the merging of multiple source objects into a target object in environments that do not support this method natively.
import 'core-js-pure/stable/object/assign';
const target = { a: 1 };
const source = { b: 2 };
const returnedTarget = Object.assign(target, source);
console.log(returnedTarget); // { a: 1, b: 2 }
Polyfilling String methods
This code sample demonstrates how to polyfill String.prototype.includes method. It provides a way to check if one string may be found within another string, returning true or false as appropriate.
import 'core-js-pure/stable/string/includes';
const string = 'hello world';
const includesHello = string.includes('hello');
console.log(includesHello); // true
Babel-polyfill is a package that includes core-js and a custom regenerator runtime to emulate a full ES2015+ environment. It's similar to core-js-pure but is more tightly coupled with Babel's transpilation process.
The es6-shim package provides polyfills for many new JavaScript features introduced in ES5 and ES6. It is similar to core-js-pure but does not offer as modular an approach, and it may include shims for features that are not strictly polyfills.
The polyfill-service (also known as polyfill.io) is a service that provides polyfills based on the user's browser user-agent. Unlike core-js-pure, it is a service rather than a package you include in your code, and it dynamically serves only the polyfills needed by the browser.
Modular standard library for JavaScript. Includes polyfills for ECMAScript up to 2023: promises, symbols, collections, iterators, typed arrays, many other features, ECMAScript proposals, some cross-platform WHATWG / W3C features and proposals like
URL
. You can load only required features or use it without global namespace pollution.
core-js
isn't backed by a company, so the future of this project depends on you. Become a sponsor or a backer if you are interested in core-js
: Open Collective, Patreon, Boosty, Bitcoin ( bc1qlea7544qtsmj2rayg0lthvza9fau63ux0fstcz ), Alipay.
import 'core-js/actual';
Promise.resolve(42).then(it => console.log(it)); // => 42
Array.from(new Set([1, 2, 3]).union(new Set([3, 4, 5]))); // => [1, 2, 3, 4, 5]
[1, 2].flatMap(it => [it, it]); // => [1, 1, 2, 2]
(function * (i) { while (true) yield i++; })(1)
.drop(1).take(5)
.filter(it => it % 2)
.map(it => it ** 2)
.toArray(); // => [9, 25]
structuredClone(new Set([1, 2, 3])); // => new Set([1, 2, 3])
You can load only required features:
import 'core-js/actual/promise';
import 'core-js/actual/set';
import 'core-js/actual/iterator';
import 'core-js/actual/array/from';
import 'core-js/actual/array/flat-map';
import 'core-js/actual/structured-clone';
Promise.resolve(42).then(it => console.log(it)); // => 42
Array.from(new Set([1, 2, 3]).union(new Set([3, 4, 5]))); // => [1, 2, 3, 4, 5]
[1, 2].flatMap(it => [it, it]); // => [1, 1, 2, 2]
(function * (i) { while (true) yield i++; })(1)
.drop(1).take(5)
.filter(it => it % 2)
.map(it => it ** 2)
.toArray(); // => [9, 25]
structuredClone(new Set([1, 2, 3])); // => new Set([1, 2, 3])
Or use it without global namespace pollution:
import Promise from 'core-js-pure/actual/promise';
import Set from 'core-js-pure/actual/set';
import Iterator from 'core-js-pure/actual/iterator';
import from from 'core-js-pure/actual/array/from';
import flatMap from 'core-js-pure/actual/array/flat-map';
import structuredClone from 'core-js-pure/actual/structured-clone';
Promise.resolve(42).then(it => console.log(it)); // => 42
from(new Set([1, 2, 3]).union(new Set([3, 4, 5]))); // => [1, 2, 3, 4, 5]
flatMap([1, 2], it => [it, it]); // => [1, 1, 2, 2]
Iterator.from(function * (i) { while (true) yield i++; }(1))
.drop(1).take(5)
.filter(it => it % 2)
.map(it => it ** 2)
.toArray(); // => [9, 25]
structuredClone(new Set([1, 2, 3])); // => new Set([1, 2, 3])
It's a version without global namespace pollution (the third example), for more info see core-js
documentation.
Symbol.dispose
Symbol.asyncDispose
SuppressedError
DisposableStack
DisposableStack.prototype.dispose
DisposableStack.prototype.use
DisposableStack.prototype.adopt
DisposableStack.prototype.defer
DisposableStack.prototype.move
DisposableStack.prototype[@@dispose]
AsyncDisposableStack
AsyncDisposableStack.prototype.disposeAsync
AsyncDisposableStack.prototype.use
AsyncDisposableStack.prototype.adopt
AsyncDisposableStack.prototype.defer
AsyncDisposableStack.prototype.move
AsyncDisposableStack.prototype[@@asyncDispose]
Iterator.prototype[@@dispose]
AsyncIterator.prototype[@@asyncDispose]
es.
namespace module, /es/
and /stable/
namespaces entriesArray.fromAsync
proposal:
Array.fromAsync
es.
namespace module, /es/
and /stable/
namespaces entriesError.isError
proposal:
Error.isError
es.
namespace module, /es/
and /stable/
namespaces entriesIterator.zip
Iterator.zipKeyed
Iterator
chunking stage 2 proposal:
Iterator.prototype.chunks
Iterator.prototype.windows
Number.prototype.clamp
proposal:
Number.prototype.clamp
Math.clamp
was replaced with Number.prototype.clamp
RangeError
if min <= max
or +0
min and -0
max, tc39/proposal-math-clamp/#22flags
getter PR. Native methods are not fixed, only own implementation updated for:
RegExp.prototype[@@match]
RegExp.prototype[@@replace]
RegExp
flags in polyfills of some methods in engines without proper support of RegExp.prototype.flags
and without polyfill of this getterthis
is updated while Set.prototype.difference
is being executedthis
in the following methods:
Set.prototype.symmetricDifference
Set.prototype.union
Iterator.prototype.drop
Iterator.prototype.filter
Iterator.prototype.flatMap
Iterator.prototype.map
Iterator.from
when underlying iterator's return
method is null
Array.prototype.with
when index coercion failsTypedArray.prototype.with
should truncate negative fractional index to zero, but instead throws an errorPromise
polyfill in the pure version/iterator/flat-map
entriesError.isError
marked not supported in Node because of a bugSet.prototype.difference
marked as not supported in Safari and supported only from Bun 1.2.5 because of a bugSet.prototype.{ symmetricDifference, union }
marked as not supported in Safari and supported only from Bun 1.2.5 because of a bugIterator.from
marked as not supported in Safari and supported only from Bun 1.2.5 because of a bugIterator
helpers marked as implemented from FF141Array.prototype.with
marked as supported only from FF140 because it throws an incorrect exception when index coercion failsTypedArray.prototype.with
marked as unsupported in Bun and Safari because it should truncate negative fractional index to zero, but instead throws an errorDisposableStack
and AsyncDisposableStack
marked as shipped in FF141 (SuppressedError
has a bug)AsyncDisposableStack
bugs marked as fixed in Deno 2.3.2SuppressedError
bugs (extra arguments support and arity) marked as fixed in Bun 1.2.15FAQs
Standard library
The npm package core-js-pure receives a total of 16,734,184 weekly downloads. As such, core-js-pure popularity was classified as popular.
We found that core-js-pure demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
ECMAScript 2025 introduces Iterator Helpers, Set methods, JSON modules, and more in its latest spec update approved by Ecma in June 2025.
Security News
A new Node.js homepage button linking to paid support for EOL versions has sparked a heated discussion among contributors and the wider community.
Research
North Korean threat actors linked to the Contagious Interview campaign return with 35 new malicious npm packages using a stealthy multi-stage malware loader.