zloirock/core-js
58.0
Adequate · 1 October 2026
53.4k
lines of production code
JavaScript
primary language
2
measurements over time
What this system is
This system is the core-js polyfill library, which provides implementations for ECMAScript standards and web APIs to ensure compatibility across diverse JavaScript environments. It offers a modular architecture with granular entry points for stable features, experimental proposals, and pure/non-polluting usage, allowing developers to selectively include only the necessary polyfills. The system also includes tooling for generating custom bundles, analyzing engine compatibility, and maintaining strict adherence to evolving language specifications.
How it got here
2013–2018 — core-js v4 modularization and stabilization
36 changes.
The project underwent a major restructuring for core-js v4, introducing a modular package system with granular entry points for stable ECMAScript features and TC39 proposals. This period focused on removing legacy polyfills, enhancing tree-shaking capabilities, and expanding engine compatibility support through updated tooling and comprehensive test suites.
2019–2022 — Stable and full namespace expansion
67 changes.
The project expanded its API surface by introducing dedicated stable and full entry points for a comprehensive set of ECMAScript features, including modern Array, String, and Promise methods. This period also involved migrating build scripts and core compatibility data to ES modules while significantly broadening test coverage across Node, browser, and Deno environments.
2023–2025 — Stable iterators and website overhaul
14 changes.
This period focused on stabilizing ES Iterator methods and Explicit Resource Management APIs for production use, alongside comprehensive improvements to test coverage and code quality. Simultaneously, the project undertook a major website redesign, introducing a new theming system, interactive playground, and robust build infrastructure to support legacy browsers and versioned documentation.
Features
Add DataView get/set methods for float16 and uint8-clamped types
This change introduces new methods to the DataView API under the /full/ namespace, specifically adding getFloat16, setFloat16, getUint8Clamped, and setUint8Clamped. These additions expose experimental ESNext features, allowing users to read and write 16-bit floating-point numbers and clamped unsigned 8-bit integers directly from DataViews, which is useful for handling binary data formats like FP16 or color values.
packages/core-js/full/data-view · high confidence
Add ES2015 Number polyfills to the /es/ entry path
The \packages/core-js/es/number\ directory now provides entry points for the full set of ES2015 Number static methods and prototype methods. Users importing from this path gain access to polyfills for \Number.isFinite\, \Number.isInteger\, \Number.isNaN\, \Number.isSafeInteger\, \Number.parseFloat\, \Number.parseInt\, \Number.EPSILON\, \Number.MAX\_SAFE\_INTEGER\, \Number.MIN\_SAFE\_INTEGER\, and the constructor, as well as prototype methods \toExponential\, \toFixed\, and \toPrecision\. This change ensures that code relying on these ES2015 features works correctly in older environments when using the \/es/\ subset of the library.
packages/core-js/es/number · high confidence
Add ES2018+ RegExp entry points for dotAll, sticky, and escape
This change introduces new entry points under \packages/core-js/es/regexp\ to support ES2018+ RegExp features. Users can now import specific capabilities such as the \dotAll\ flag (via \regexp/dot-all.js\), the \sticky\ flag (via \regexp/sticky.js\), and the static \RegExp.escape\ method (via \regexp/escape.js\). The \index.js\ entry point aggregates these along with other ES2018+ features like \test\ and \to-string\, ensuring that polyfills for \es.regexp.dot-all\, \es.regexp.sticky\, and \es.regexp.escape\ are included when using the \/es/\ path.
packages/core-js/es/regexp · high confidence
Add Number\#clamp and Number.range to the /full/ namespace
The \packages/core-js/full/number\ entry point now exposes the \Number.clamp\ and \Number.range\ methods (along with their virtual prototype counterparts) via the new \/full/\ namespace. Users importing from this path can now utilize these ES Next number utilities directly, in addition to the standard number static methods and properties already available.
packages/core-js/full/number · high confidence
Add Reflect entry points and enable strict mode
The \packages/core-js/es/reflect\ directory now includes individual entry points for all Reflect methods (such as \apply\, \construct\, \defineProperty\, \deleteProperty\, \get\, \has\, \isExtensible\, \ownKeys\, \preventExtensions\, \set\, \setPrototypeOf\, and \to-string-tag\), allowing for more granular inclusion of features. Each entry point is implemented in strict mode and exports the corresponding method from the core modules. The main \index.js\ aggregates these requirements to export the full \Reflect\ object, and a new \to-string-tag.js\ entry point provides the \Reflect\[@@toStringTag\]\ property.
packages/core-js/es/reflect · high confidence
Add stable ES entry points for globalThis, AggregateError, and utility functions
The \packages/core-js/es\ directory now provides dedicated entry points for stable ECMAScript features, allowing users to import only the specific standards they need. New modules include \globalThis\, \AggregateError\, \SuppressedError\, \escape\, \unescape\, \parseFloat\, \parseInt\, \getIterator\, and \getIteratorMethod\. These entry points bundle the necessary internal dependencies to ensure the features work correctly when imported individually.
packages/core-js/es · high confidence
Add stable entry points for DOM collections
New entry points are now available at packages/core-js/stable/dom-collections, including index.js, for-each.js, and iterator.js. These modules expose DOM collection iteration methods (keys, values, entries, iterator, forEach) and ensure strict mode is enabled, providing a stable API surface for accessing these utilities.
packages/core-js/stable/dom-collections · high confidence
Add stable entry points for Number API methods
This change introduces a new set of stable entry points under \packages/core-js/stable/number\ for various Number API methods, including \constructor\, \epsilon\, \isFinite\, \isInteger\, \isNaN\, \isSafeInteger\, \maxSafeInteger\, \minSafeInteger\, \parseFloat\, \parseInt\, \toExponential\, \toFixed\, and \toPrecision\, as well as their virtual counterparts. These new files act as wrappers that re-export the corresponding implementations from the \es/number\ module, ensuring strict mode is enabled and providing a stable interface for these standard Number features.
packages/core-js/stable/number · high confidence
Add stable entry points for Object methods
This change introduces a comprehensive set of new entry points under \packages/core-js/stable/object/\ (including \assign\, \create\, \entries\, \freeze\, \hasOwn\, \keys\, \values\, and others). Each file acts as a stable wrapper that re-exports the corresponding implementation from the \es/object\ layer, ensuring that users can import these Object utilities via the stable path. Additionally, the \index.js\ and \from-entries\ entry points now explicitly require \web.dom-collections.iterator\ to ensure necessary polyfills are loaded.
packages/core-js/stable/object, packages/core-js/stable/string/virtual · high confidence
Add stable entry points for URL.canParse and URL.parse
This change introduces new stable entry points for the \URL.canParse\ and \URL.parse\ methods, allowing users to import these specific functionalities directly via \core-js/stable/url/can-parse\ and \core-js/stable/url/parse\. It also adds a \to-json\ entry point and a consolidated \index\ entry for the URL module, ensuring these features are available in the stable API surface alongside existing URL capabilities.
packages/core-js/stable/url · high confidence
Add stable entry points for core-js features
The \packages/core-js/stable\ directory now contains dedicated entry points for all stable core-js features, providing a recommended way to load only the required polyfills with their dependencies. This includes new modules for \AggregateError\, \atob\/\btoa\, \structuredClone\, \self\, and \globalThis\, as well as stable wrappers for existing features like \Date\, \Function\, and \Promise\ methods, allowing users to import specific stable implementations directly.
packages/core-js/stable · high confidence
Add stable instance entry points for Array and String methods
This change adds a comprehensive set of new entry points under \packages/core-js/stable/instance\ for various Array and String prototype methods (such as \at\, \find\, \flat\, \matchAll\, \replaceAll\, \toReversed\, and \with\). These files act as stable wrappers that re-export the corresponding implementations from the \es/instance\ directory, ensuring that these methods are accessible via a stable path. Additionally, specific implementations for \entries\, \forEach\, \keys\, and \values\ are included to handle DOM collection iteration compatibility alongside standard array methods.
packages/core-js/stable/instance · high confidence
Add website component styles for code, header, footer, main, playground, and tooltips
New SCSS files have been added to the website's styling system to define the visual appearance of key interface sections. This includes syntax highlighting themes for code blocks, layout and navigation styles for the header and footer, responsive behavior for the main content area and documentation menu, styling for the interactive playground editor and console, and visual rules for tooltips. These styles ensure consistent theming and responsive design across the website's core components.
website/src/scss/parts · high confidence
Added AsyncDisposableStack entry points
The library now exposes the AsyncDisposableStack feature through the full entry points at packages/core-js/full/async-disposable-stack. This allows users to import the implementation directly via the standard core-js full path, making the explicit resource management capability available for asynchronous disposal scenarios.
packages/core-js/full/async-disposable-stack · high confidence
Added Deno bundle for core-js v3.50.0
Users can now import a bundled version of core-js (v3.50.0) for Deno via \deno.land/x/corejs\. This bundle includes polyfills for ECMAScript features up to 2021 (such as \Object.hasOwn\, \Array.prototype.at\, \Promise.any\, and iterator utilities) and is designed to be loaded at the top of the entry point to provide global namespace pollution-free access to these standards.
deno · high confidence
Added ES5 Date module entry points
New entry-point files have been added to the \packages/core-js/es/date\ directory, providing direct access to specific Date methods including \getYear\, \now\, \setYear\, \toGMTString\, \toISOString\, \toJSON\, \toString\, and \toPrimitive\. These files enable more granular inclusion of Date features from the \/es/\ path, allowing users to import only the specific Date functionalities they need rather than loading the entire Date module.
packages/core-js/es/date · high confidence
Added Map and WeakMap entry points for getOrInsert and getOrInsertComputed
New entry points are now available at \core-js/es/map/get-or-insert\, \core-js/es/map/get-or-insert-computed\, and their \WeakMap\ equivalents, allowing users to import these specific methods directly. The \core-js/es/map\ and \core-js/es/weak-map\ index files have been updated to include these methods, ensuring they are polyfilled when importing the full collection modules.
packages/core-js/es/map · high confidence
Added stable entry points for JSON module
New entry points have been added under the \packages/core-js/stable/json\ path, providing stable access to JSON-related features such as \parse\, \stringify\, \is-raw-json\, \raw-json\, and \to-string-tag\. These modules re-export the corresponding implementations from the \es/json\ layer, ensuring consistent behavior for users relying on the stable API surface.
packages/core-js/stable/json · high confidence
Added stable entry points for Map and WeakMap methods
New stable entry points have been added for Map and WeakMap methods, specifically \get-or-insert\, \get-or-insert-computed\, and \group-by\. These files act as wrappers that re-export the corresponding implementations from the \es\ directory, ensuring that these specific functionalities are accessible via the stable API path alongside the standard Map and WeakMap index files.
packages/core-js/stable/map · high confidence
Added stable entry points for Reflect API methods
This change introduces a new set of stable entry points under \packages/core-js/stable/reflect\ for the Reflect API. These files act as wrappers that re-export the corresponding implementations from the \es/reflect\ layer, ensuring consistent access to Reflect methods (such as \apply\, \construct\, \defineProperty\, \get\, \set\, etc.) via a stable path. Additionally, a specific entry point for \Reflect.toStringTag\ is provided, which explicitly exports the string 'Reflect'.
packages/core-js/stable/reflect · high confidence
Added stable entry points for URLSearchParams and WeakSet
New entry points are now available at packages/core-js/stable/url-search-params and packages/core-js/stable/weak-set. These files provide stable access to the respective Web API implementations (URLSearchParams and WeakSet) by re-exporting the parent modules and ensuring the required DOM collection iterators are loaded, allowing users to import these features via a dedicated stable path.
packages/core-js/stable/url-search-params, packages/core-js/stable/weak-set · high confidence
Configure website build paths and add v4 version support
The website configuration now explicitly defines directory paths for documentation, blog, templates, and source files, alongside specific bundle names for standard and ES module builds. Additionally, version management is updated to include a new 'v4 (alpha)' entry alongside the existing 'v3' default, enabling the website to serve content from the v4 branch.
website/config · high confidence
Expanded /es/array entry points for granular polyfill imports
The core-js library now provides dedicated entry points for individual Array methods under the /es/array/ path (e.g., /es/array/at.js, /es/array/flat.js, /es/array/find-last.js, /es/array/to-reversed.js). This allows users to import only the specific polyfills they need rather than loading the entire array module, supporting more granular inclusion of features. The update includes entry points for both stable ES methods and newer proposals like Array.prototype.at, Array.prototype.findLast, and Array.prototype.toReversed.
packages/core-js/es/array · high confidence
Expanded virtual Array entry points in the ES path
The \packages/core-js/es/array/virtual\ directory now exposes individual entry points for a comprehensive set of Array prototype methods, including \at\, \concat\, \copyWithin\, \entries\, \every\, \fill\, \filter\, \find\, \findIndex\, \findLast\, \findLastIndex\, \flat\, \flatMap\, \forEach\, \includes\, \indexOf\, \join\, \keys\, \lastIndexOf\, \map\, \push\, \reduce\, \reduceRight\, \reverse\, \slice\, \some\, \sort\, \splice\, \toReversed\, \toSorted\, \toSpliced\, \unshift\, \values\, and \with\. This change allows users to import specific virtual array methods individually rather than relying solely on the bulk \index.js\ export, enabling more granular tree-shaking and smaller bundle sizes for applications that only use a subset of these features.
packages/core-js/es/array/virtual · high confidence
Introduce core-js-builder for custom polyfill bundling
A new \core-js-builder\ package is added, providing an API to generate custom polyfill bundles tailored to specific engine targets. Users can now selectively include or exclude modules, specify output formats (bundled, ESM, or CJS), and enable build summaries, allowing for optimized delivery of polyfills without shipping the entire library.
packages/core-js-builder · high confidence
New /full/ entry points for Map, WeakMap, and WeakSet methods
The library introduces a new \/full/\ namespace (replacing \/features/\) that provides direct import paths for specific Map, WeakMap, and WeakSet methods. This location adds entry points for \Map\ methods such as \deleteAll\, \emplace\, \every\, \filter\, \find\, \findKey\, \from\, \getOrInsert\, \getOrInsertComputed\, \groupBy\, \includes\, \keyBy\, \keyOf\, \mapKeys\, \mapValues\, \merge\, \of\, \reduce\, \some\, \update\, \updateOrInsert\, and \upsert\. It also adds corresponding entry points for \WeakMap\ (\deleteAll\, \emplace\, \from\, \getOrInsert\, \getOrInsertComputed\, \of\, \upsert\) and \WeakSet\ (\addAll\, \deleteAll\, \from\, \of\). These files ensure that importing these specific methods also pulls in their required dependencies, enabling more granular tree-shaking for users who only need a subset of these collection utilities.
packages/core-js/full/map · high confidence
New /full/iterator entry points for Iterator helpers
The \core-js\ library now exposes individual entry points under the \/full/iterator/\ namespace for various Iterator prototype methods and static utilities. Users can now import specific helpers such as \chunks\, \concat\, \drop\, \filter\, \find\, \flatMap\, \forEach\, \from\, \includes\, \indexed\ (renamed from \asIndexedPairs\), \join\, \map\, \range\, \reduce\, \sliding\, \some\, \take\, \toArray\, \toAsync\, \windows\, \zip\, and \zipKeyed\ directly. This change provides a more granular import structure for accessing the full set of Iterator helpers, with some entries like \indexed\ and \asIndexedPairs\ marked for removal in core-js@4 to reflect the final proposal naming.
packages/core-js/full/iterator · high confidence
New Math utilities and namespace reorganization
The library introduces a new \/full/\ namespace structure, replacing the previous \/features/\ path, to provide full polyfills for Math methods. This update adds several new experimental and standard Math functions, including \clamp\, \f16round\, \deg-per-rad\, \degrees\, \fscale\, \iaddh\, \isubh\, \imulh\, \rad-per-deg\, \radians\, \scale\, \seeded-prng\, \signbit\, \sumPrecise\, and \umulh\. Additionally, strict mode has been enabled in these modules to ensure consistent execution behavior.
packages/core-js/full/math · high confidence
New Set methods available via /full/set entry points
The /full/set entry point now exposes a comprehensive suite of Set methods, including addAll, deleteAll, difference, every, filter, find, intersection, isDisjointFrom, isSubsetOf, isSupersetOf, join, map, reduce, some, symmetricDifference, and union, as well as the static constructors Set.from and Set.of. These additions allow users to perform bulk operations, set algebra, and functional transformations directly on Set instances without needing to import individual feature modules.
packages/core-js/full/set · high confidence
New URL utility methods available via /full/ namespace
The core-js library now exposes \URL.canParse\ and \URL.parse\ methods, along with \URL.prototype.toJSON\, accessible through the new \/full/url/\ import paths. These additions provide standardized ways to validate and parse URLs without instantiating a full URL object, enhancing URL handling capabilities for users relying on this polyfill layer.
packages/core-js/full/url · high confidence
New \`core-js/actual\` entry points for selective feature loading
The \packages/core-js/actual\ directory now provides a new set of entry points that combine stable ECMAScript features with Stage 3 proposals (such as \Array.group\, \Array.fromAsync\, \Error.isError\, and \ArrayBuffer.transfer\). These files allow users to import only the specific features they need, automatically pulling in the necessary polyfills from the \esnext\ modules while reusing the stable implementations where available.
packages/core-js/actual · high confidence
New dedicated script for checking dependency updates
A new \scripts/check-dependencies\ module has been introduced to centralize and parallelize the process of detecting outdated dependencies across the project. This script scans \package.json\ files in the root, website, packages, scripts, and tests directories, applying specific exclusion and version-bump rules (minor/patch) defined in a local configuration file. It leverages the \updates\ CLI tool to identify obsolete packages and can optionally update versions in place when the \UDEPS\ environment variable is set, providing a more robust and configurable way to manage dependency hygiene compared to previous ad-hoc approaches.
scripts/check-dependencies · high confidence
New entry points for ECMAScript proposals by stage
The \core-js/stage\ directory now provides dedicated entry points (\stage/0\, \stage/1\, \stage/2\, \stage/2.7\, \stage/3\, \stage/4\, and \pre\) that bundle polyfills for ECMAScript proposals according to their TC39 standardization stage. Users can import these specific paths to include only the proposal features relevant to their target environment, rather than loading the entire proposals bundle.
packages/core-js/stage · high confidence
New instance methods and \`/full/\` namespace entries
This update adds a comprehensive set of new instance method entries under the \core-js/full/instance\ path, including \at\, \clamp\, \demethodize\, \filter-out\, \filter-reject\, \group-by\, \group-by-to-map\, \group-to-map\, \is-well-formed\, \match-all\, \replace-all\, \to-reversed\, \to-sorted\, \to-spliced\, \to-well-formed\, \unique-by\, and \un-this\. These entries expose polyfills for modern ECMAScript proposals (such as Array methods, Well-Formed Unicode Strings, and Function.prototype methods) and the new \/full/\ namespace, allowing users to import these specific instance capabilities directly.
packages/core-js/full/instance · high confidence
New script for bundling and minifying core-js packages
A new \scripts/bundle-package/bundle-package.mjs\ script has been added to handle the creation of \core-js\ bundles. This tool supports generating bundles for both Deno (targeting version 1.0) and standard environments (including ES Modules). It utilizes \core-js-builder\ to assemble the source and \terser\ to produce minified outputs with source maps, applying specific compression settings and excluding obsolete or withdrawn \esnext\ features to ensure compatibility and stability.
scripts/bundle-package · high confidence
New web entry points for DOM, URL, and structured cloning
This change introduces a new \packages/core-js/web\ directory that aggregates entry points for various web-standard APIs. Users can now import consolidated modules for \DOMException\, \URL\ (including \URL.canParse\ and \URL.parse\), \URLSearchParams\ (with \size\, \has\, and \delete\ methods), \structuredClone\, \queueMicrotask\, \atob\/\btoa\, and DOM collection iterators. These entry points bundle the necessary underlying polyfills and dependencies, simplifying the inclusion of these specific web features.
packages/core-js/web · high confidence
New website navigation, syntax highlighting, and playground features
The website now includes a new table-of-contents menu that highlights the current section and smooth-scrolls to anchors, a 'Run' button on JavaScript code blocks that links to the playground with the code pre-filled, and a fully functional playground page that compiles and executes code using Babel, displaying results in a console with improved serialization for complex objects like Sets, Maps, and Promises.
website/src/js · high confidence
Stabilize DataView float16 methods in ES path
Users can now import \DataView.prototype.getFloat16\ and \DataView.prototype.setFloat16\ directly from the \/es/data-view/\ entry points. These methods, previously experimental, are now included in the stable ES module exports, allowing for granular inclusion of these specific features alongside other standard DataView operations.
packages/core-js/es/data-view · high confidence
Stable ES Iterator methods now available via direct entry points
This change exposes a comprehensive set of Iterator prototype methods as stable ES features, making them directly importable from the \core-js/es/iterator\ path. Users can now import specific utilities such as \chunks\, \concat\, \dispose\, \drop\, \every\, \filter\, \find\, \flatMap\, \forEach\, \from\, \includes\, \join\, \map\, \reduce\, \some\, \take\, \toArray\, \windows\, \zip\, and \zipKeyed\ individually. The \index.js\ entry point aggregates all these methods, ensuring that importing the full iterator module includes these newly stabilized capabilities alongside existing ones like \constructor\.
packages/core-js/es/iterator · high confidence
Stable ES instance method entry points added to core-js
The \packages/core-js/es/instance\ directory now includes dedicated entry points for a comprehensive set of Array and String instance methods (such as \at\, \find\, \flat\, \matchAll\, \replaceAll\, \toReversed\, and \trim\). These new files provide stable, standardized access to these methods, ensuring that polyfills are applied correctly when the native implementation is missing or when strict prototype checking is required.
packages/core-js/es/instance · high confidence
Stable Iterator helpers now available
This change exposes a suite of Iterator utility methods under the stable \core-js/stable/iterator\ path, allowing users to import them with guaranteed stability. The newly added entry points include \chunks\, \concat\, \dispose\, \drop\, \every\, \filter\, \find\, \flat-map\, \for-each\, \from\, \includes\, \join\, \map\, \reduce\, \some\, \take\, \to-array\, \windows\, \zip\, and \zip-keyed\. These modules act as stable wrappers that re-export the underlying implementations from the \es/iterator\ namespace, with specific helpers like \concat\, \flat-map\, \from\, \index\, \zip\, and \zip-keyed\ also pulling in the \web.dom-collections.iterator\ module to ensure compatibility with DOM collections.
packages/core-js/stable/iterator · high confidence
Stable entry points added for Promise.allSettled, Promise.any, Promise.withResolvers, and Promise.try
Users can now import Promise.allSettled, Promise.any, Promise.withResolvers, and Promise.try directly from the stable entry points (e.g., core-js/stable/promise/all-settled). These new modules re-export the corresponding implementations from the ES layer, ensuring that these features are available via the stable API path alongside existing stable Promise methods like finally.
packages/core-js/stable/promise · high confidence
Stable entry points added for Symbol features
New stable entry points have been added under \packages/core-js/stable/symbol\ for various Symbol properties, including \async-dispose\, \async-iterator\, \description\, \dispose\, \match-all\, and others. These files re-export the corresponding implementations from the \es\ namespace, allowing users to import these specific Symbol features via a stable path. The \index.js\ entry point also ensures that \web.dom-collections.iterator\ is loaded when importing the full symbol module.
packages/core-js/stable/symbol · high confidence
Stable entry points for ArrayBuffer methods
New stable entry points have been added for ArrayBuffer-related features, including the constructor, detached status, is-view checks, slice, and transfer methods (both general and fixed-length variants). These new files in the stable directory act as wrappers that re-export the corresponding implementations from the ES directory, ensuring consistent access to these capabilities through the stable API path.
packages/core-js/stable/array-buffer · high confidence
Stable entry points for Math and DataView methods
Added stable ES entry points for \Math.sumPrecise\, \Math.f16round\, and \DataView.prototype.{getFloat16, setFloat16}\, alongside other standard Math methods (such as \acosh\, \asinh\, \atanh\, \cbrt\, \clz32\, \cosh\, \expm1\, \fround\, \hypot\, \imul\, \log10\, \log1p\, \log2\, \sign\, \sinh\, \tanh\, \to-string-tag\, and \trunc\). These new files in \packages/core-js/stable/math\ and \packages/core-js/stable/data-view\ re-export the corresponding implementations from the \es\ namespace, allowing users to import these features via the stable path.
packages/core-js/stable/math · high confidence
Stable entry points for RegExp features
Added stable \/stable/regexp/\ entry points that re-export existing ES-level implementations (including \RegExp.escape\, \dotAll\, \flags\, \match\, \replace\, \search\, \split\, \sticky\, \test\, \toString\, and the constructor). This allows users to import these RegExp utilities via stable paths, ensuring consistent behavior across environments.
packages/core-js/stable/regexp · high confidence
Stable entry points for Set set operations
New stable entry points have been added for Set methods including difference, intersection, is-disjoint-from, is-subset-of, is-superset-of, symmetric-difference, and union. These allow users to import these specific Set operations directly from the stable path, ensuring consistent availability across environments.
packages/core-js/stable/set · high confidence
Stable entry points for String methods
This change adds a comprehensive set of new entry points under the \packages/core-js/stable/string/\ directory, providing stable, standardized access to various String prototype methods and static functions. The diff introduces individual modules for methods such as \anchor\, \at\, \big\, \blink\, \bold\, \code-point-at\, \ends-with\, \fixed\, \fontcolor\, \fontsize\, \from-code-point\, \includes\, \is-well-formed\, \italics\, \iterator\, \link\, \match-all\, \match\, \pad-end\, \pad-start\, \raw\, \repeat\, \replace-all\, \replace\, \search\, \small\, \split\, \starts-with\, \strike\, \sub\, \substr\, \sup\, \to-well-formed\, \trim\, \trim-end\, \trim-left\, \trim-right\, and \trim-start\, along with a main \index.js\ that re-exports the entire stable string namespace. Each module strictly enforces strict mode and delegates to the corresponding implementation in the \es/string/\ path, ensuring that users can import specific string utilities from a stable location that aligns with finalized ECMAScript standards.
packages/core-js/stable/array, packages/core-js/stable/string · high confidence
Stable entry points for Typed Array methods and constructors
This change adds a comprehensive set of \/stable/typed-array/\ entry points that expose core JavaScript Typed Array features, including \.at()\, \findLast\, \toReversed\, \toSorted\, \with\, \copyWithin\, and binary conversion methods like \toBase64\/\fromBase64\. These new modules provide stable, strict-mode wrappers that re-export the underlying ES implementations, ensuring consistent availability and behavior for these standard features across the library.
packages/core-js/stable/typed-array · high confidence
core-js-compat v3.50.0: New API, TypeScript types, and expanded engine support
The \core-js-compat\ package has been updated to version 3.50.0, introducing a dedicated \compat\ entry point that accepts a \targets\ object (in addition to browserslist queries) to list required modules for specific environment versions. This release adds comprehensive TypeScript declarations for the new API and internal helpers, and expands engine support to include Bun, Deno, Electron, Hermes, PhantomJS, React Native, Rhino, and various mobile browsers (Chrome/Firefox/Opera for Android). It also introduces an \inverse\ option to identify modules NOT required for a target, an \esmodules\ option (including an 'intersect' mode), and a new \getModulesListForTargetVersion\ helper to retrieve the module list available in a specific \core-js\ version.
packages/core-js-compat · high confidence
Removals
Removal of legacy polyfills and custom utility methods
The library has removed its internal ES5 and ES6 shims (including implementations for Map, Set, Object.create, Array.from, and various prototype extensions) along with custom utility methods for Array, Date, Function, Number, and String. This change indicates a shift away from supporting older environments like IE8 or relying on custom polyfilled behavior, likely assuming a modern runtime or external polyfilling strategy.
src · high confidence
Behavioural changes
2427 commits (436 fixes) modifying (repo-wide)
A change to existing behaviour in (repo-wide) — 2427 commits (436 fixs), 13 files.
(repo-wide) · low confidence · unverified
Add /full/ namespace entry points for core-js modules
The library now exposes a \/full/\ namespace (replacing the previous \/features/\ path) that provides explicit entry points for individual modules. This change adds new files under \packages/core-js/full/\ for various APIs—including BigInt, Date, DOM collections, Observable, and Reflect metadata—ensuring they are loaded in strict mode and correctly re-exporting the underlying implementations from the \actual\ and \internals\ directories.
(repo-wide) · high confidence
Add /full/ namespace for ArrayBuffer entry points
The library introduces a new \/full/\ namespace structure, replacing the previous \/features/\ path, to provide standardized entry points for ArrayBuffer functionality. This change adds specific modules for the constructor, detached status, is-view checks, slice operations, and the new Stage 3 proposal methods \transfer\ and \transferToFixedLength\, ensuring these features are accessible via the updated import paths.
packages/core-js/full/array-buffer · high confidence
Add /full/ namespace for Error module entries
The /full/ namespace is now available as the replacement for the previous /features/ path, providing full-featured entry points for Error-related functionality. This includes new exports for Error.isError, Error constructor, and Error.prototype.toString, allowing users to import these specific error utilities via the /full/ path.
packages/core-js/full/error · high confidence
Add /full/ namespace for RegExp features
The /full/ namespace is introduced as the new entry point for RegExp-related features, replacing the previous /features/ path. This change adds a set of new modules under packages/core-js/full/regexp (including constructor, dot-all, escape, flags, index, match, replace, search, split, sticky, and to-string) that re-export the corresponding implementations from the /actual/ directory, ensuring strict mode is enabled for these exports.
packages/core-js/full/regexp · high confidence
Add automated actions dependency check script
A new script at scripts/check-actions/check-actions.mjs has been added to verify actions dependencies. When executed, it runs 'actions-up' in dry-run mode with a minimum age of 0 and confirms the check by printing a success message, ensuring that dependency states are validated before proceeding.
scripts/check-actions · high confidence
Add explicit ES-path entry points for JSON methods
New dedicated entry points are now available under the \/es/json/\ path (e.g., \stringify\, \parse\, \isRawJSON\, \rawJSON\, \toStringTag\). These modules provide stable, explicit access to JSON functionality, ensuring that \stringify\ correctly handles \Date\#toJSON\ and other edge cases by relying on the underlying \es.json.stringify\ and \es.date.to-json\ implementations rather than falling back to the native global.
packages/core-js/es/json · high confidence
Async iterator helpers now available under the /full/ namespace
The \core-js\ library now exposes async iterator helper methods (such as \map\, \filter\, \reduce\, \take\, \drop\, \every\, \some\, \find\, \flatMap\, \forEach\, \from\, \toArray\, and \indexed\) via the new \/full/async-iterator/\ entry points. This change introduces the \/full/\ namespace as the replacement for the older \/features/\ path, ensuring that these utilities are included in the full build. Notably, the \asIndexedPairs\ method is now available alongside the renamed \indexed\ method, with both exposed in the main \index.js\ entry for backward compatibility.
packages/core-js/full/async-iterator · high confidence
Build and maintenance scripts rewritten in ESM with \`zx\`
The project's build and maintenance scripts (including \build-indexes\, \clean-and-copy\, \update-version\, \check-compat-data-mapping\, \downloads-by-versions\, \check-unused-modules\, and \prepare\) have been rewritten from CommonJS to ES modules and now use the \zx\ library for shell execution. This change introduces a new \zxi\ helper that manages local dependency installation and execution context for these scripts. Users will experience updated build behaviors, such as the \build-indexes\ script generating new \index.js\ files for \es\, \stable\, and \full\ namespaces, and the \clean-and-copy\ script creating \/features/\ entries as replacements for \/full/\. The \update-version\ script now automatically includes the number of commits in the changelog entry, and the \check-compat-data-mapping\ script validates browser compatibility data against live MDN sources.
scripts · high confidence
Core-js-pure internal helpers restructured for tree-shaking and validation
The internal helper modules in core-js-pure have been refactored to improve tree-shaking and validation. New dedicated validation functions (a-map, a-set, a-weak-map, a-weak-set) now explicitly check for required properties before treating an object as a collection instance. Collection helpers (map-helpers, set-helpers, etc.) are simplified to use caller wrappers. The export logic (export.js) is enhanced with options like 'bind', 'wrap', and 'sham' to better control how polyfills are attached to prototypes and global objects, ensuring stricter validation and preventing internal state exposure in the pure version.
packages/core-js-pure/override/internals · high confidence
Introduce /full/ namespace as the recommended entry point for core-js features
The /full/ directory now serves as the primary entry point for loading core-js features with their dependencies, replacing the previous /features/ namespace. This change provides a cleaner, recommended way for users to import only the specific polyfills they need, with each module in this directory delegating to the corresponding implementation in the /actual/ folder while ensuring strict mode is enforced.
packages/core-js/full · high confidence
Introduce /full/ namespace for Object methods with strict mode and new ESNext features
The \packages/core-js/full/object\ location now serves as the primary entry point for Object-related polyfills, replacing the older \/features/\ path. All individual method entry points (such as \assign\, \create\, \keys\, \values\, \entries\, \freeze\, \seal\, \is\, \hasOwn\, and prototype accessors) have been added to this namespace and are now executed in strict mode. This update also introduces support for Stage 3 \Object.groupBy\ and adds \Object.prototype.\_\proto\\_\ polyfilling. Additionally, several ESNext iteration methods (\iterateEntries\, \iterateKeys\, \iterateValues\) and \hasOwn\ are included, with \hasOwn\ explicitly marked for removal in core-js v4.
packages/core-js/full/object · high confidence
Introduce /full/ namespace for Typed Array entries
The \packages/core-js/full/typed-array\ directory now provides the primary entry points for Typed Array features, replacing the previous \/features/\ namespace. This change establishes a new \/full/\ structure where each method (such as \at\, \filter-out\, \from-base64\, and \unique-by\) is exposed via its own module that re-exports the implementation from the \actual\ layer. The entry points also handle necessary polyfill dependencies, such as requiring \es.map\ and \es.promise\ for methods like \group-by\ and \from-async\, and mark certain experimental proposals (like \at\ and \filter-out\) with a deprecation note for removal in core-js v4.
packages/core-js/full/typed-array · high confidence
Introduction of internal helper modules for type validation and resource management
The \packages/core-js/internals\ directory now contains a collection of internal helper modules that enforce type constraints and manage internal state for polyfills. This includes type-checking assertions (such as \a-callable\, \a-constructor\, \a-data-view\, \a-map\, \a-set\, \a-weak-map\, and \a-weak-set\) that throw \TypeError\ when arguments do not match expected types or internal slots, and resource management helpers (like \add-disposable-resource\) that support the explicit resource management proposal. These modules provide the foundational logic for ensuring correct invocation contexts and handling disposable resources within the core-js polyfill ecosystem.
packages/core-js/internals · high confidence
New /full/ JSON module namespace with raw JSON support
The library introduces a new \/full/\ namespace for JSON functionality, replacing the previous \/features/\ path. This update exposes \JSON.rawJSON\ and \JSON.isRawJSON\ for handling raw JSON data, adds a \source\ property to \JSON.parse\ results, and patches \JSON.stringify\ behavior, all now accessible via the standardized full JSON entry points.
packages/core-js/full/json · high confidence
New /full/ function entry points and demethodize support
The /full/ namespace now provides dedicated entry points for function-related features, including bind, has-instance, metadata, name, is-callable, and is-constructor. A new demethodize method is exposed via Function.prototype.demethodize (replacing the previous unThis proposal), while the legacy unThis method remains available but is marked for removal in core-js@4. All new entry points operate in strict mode.
packages/core-js/full/function · high confidence
New /full/array entry points for Array methods
The \packages/core-js/full/array\ directory now exposes individual entry points for a comprehensive set of Array methods, including standard ones (e.g., \concat\, \filter\, \map\, \reduce\) and newer proposals (e.g., \at\, \find-last\, \flat\, \group\, \to-reversed\, \unique-by\). This change introduces the \/full/\ namespace as the replacement for the previous \/features/\ path, allowing users to import specific array functionalities directly. It also includes polyfills for experimental methods like \filterOut\, \filterReject\, and \isTemplateObject\, with some marked for removal in core-js@4.
packages/core-js/full/array · high confidence
New /full/symbol entry points and updated Symbol predicates
The library introduces a new \/full/symbol/\ namespace that provides direct entry points for individual Symbol features, replacing the older \/features/\ path. This update includes new exports for async resource management (\async-dispose\, \async-iterator\) and updates several Symbol predicates to align with the latest proposals: \Symbol.matcher\ is replaced by \Symbol.customMatcher\, and \Symbol.metadata\ is replaced by \Symbol.metadataKey\. Additionally, legacy predicates like \isRegistered\, \isWellKnown\, and \matcher\ are marked for removal in core-js v4, while new stage 3 features like \Symbol.patternMatch\ and \Symbol.replaceAll\ are now available.
packages/core-js/full/symbol · high confidence
New test bundling script for unit tests and QUnit assets
A new \scripts/bundle-tests\ directory has been introduced, containing a Node.js script and a Webpack configuration to automate the bundling of unit tests (\unit-global\ and \unit-pure\) and the copying of QUnit and core-js assets into the \tests/bundles\ directory. This change centralizes the build process for test dependencies, ensuring that QUnit helpers and core-js are consistently available in the test bundles without requiring manual bundling steps.
scripts/bundle-tests · high confidence
New website layout and theme system
The website now uses a new HTML structure and SCSS-based theme system that supports dark and light modes, with a theme switcher in the navigation bar and automatic detection of the user's system preference.
website/src · high confidence
New website styling system with dark/light theme support
The website now uses a new SCSS architecture in the includes directory, introducing a theming system that supports both dark and light color palettes. This change adds base styles for typography, layout, and components (forms, buttons, tables), along with specific styling for markdown alerts and responsive breakpoints, allowing the site to adapt its appearance based on the selected theme.
website/src/scss/includes · high confidence
Overrides for core-js-pure to align with ES standards and fix legacy behaviors
This change introduces override modules for core-js-pure to ensure correct behavior in environments where native implementations may be non-compliant or missing. Specifically, it adds a polyfill for \Date.prototype.toJSON\ to handle NaN and non-standard objects correctly, implements the \self\ global property for web environments, and sets the \@@toStringTag\ on DOM collections to ensure proper identification. Additionally, it registers the \Symbol.dispose\ and \Symbol.asyncDispose\ well-known symbols to support the Explicit Resource Management proposal, and configures the \RegExp\ species constructor.
packages/core-js-pure/override/modules · high confidence
Promise API updates: new entry points and deprecation notices
This change introduces new \full/promise\ entry points for \all-keyed\, \all-settled-keyed\, \try\, and \with-resolvers\, while updating existing entries like \all-settled\, \any\, and the main \index\ to explicitly require \esnext.aggregate-error\ and \esnext.promise.\*\ modules. These additions are marked with a TODO to remove them in core-js@4, indicating a shift in how these Promise-related features are bundled or deprecated in the upcoming major version.
packages/core-js/full/promise · high confidence
Promote Promise.allSettled, Promise.any, Promise.try, and Promise.withResolvers to stable ES entry points
The core-js \/es/promise\ entry points now include stable implementations for \Promise.allSettled\, \Promise.any\, \Promise.try\, and \Promise.withResolvers\. Users importing from these specific paths (e.g., \core-js/es/promise/all-settled\) will now get the standard ES-compliant versions of these methods, ensuring consistent behavior aligned with the latest ECMAScript specifications rather than experimental or polyfill-only variants.
packages/core-js/es/promise · high confidence
Rebuilt compatibility data now includes mappings for new browser targets
The compatibility data generation script has been restructured and now automatically maps feature support for additional browser environments. Specifically, the build process now generates data for Chrome Android, Opera Android, Oculus Quest (formerly Oculus), React Native, and iOS, deriving these from existing Chrome, Safari, and Firefox data. This ensures that consumers of the compatibility data receive accurate version information for these platforms without manual intervention.
scripts/build-compat · high confidence
Refactored website build runner with improved cleanup and error handling
The website build process has been refactored to improve reliability and maintainability. The new runner script (runner.sh) now properly manages build lifecycle by killing any previous in-progress builds and cleaning up lock/pid files on exit, ensuring that failed builds do not leave stale state. The underlying Node.js runner (runner.mjs) and its helper module (helpers.mjs) have been restructured to centralize logic for cloning repositories, checking out specific versions, copying documentation and blog posts, and building core-js bundles. This change also introduces better error propagation, where build failures now trigger cleanup routines and result in a failed job status, rather than leaving partial or corrupted build artifacts.
website/scripts · high confidence
Restructured polyfill modules and added explicit README
The \packages/core-js/modules\ directory has been reorganized to improve maintainability and tree-shaking. A new \README.md\ has been added to clarify that this folder contains polyfill implementations and is not intended for direct inclusion in projects. Additionally, the \es.array.for-each\ and \es.array.is-array\ modules have been updated to use internal helpers (\array-for-each\ and \is-array\) for their implementations, and \es.array.concat\ has been refactored to support \@@species\ and \@@isConcatSpreadable\.
packages/core-js/modules · high confidence
Stabilize ArrayBuffer.prototype.transfer and transferToFixedLength in /es path
The /es/array-buffer entry points now include ArrayBuffer.prototype.transfer and ArrayBuffer.prototype.transferToFixedLength, moving these capabilities from proposal status to the stable ES path. Users importing from packages/core-js/es/array-buffer will now have access to these methods alongside existing features like slice, detached, and is-view, ensuring consistent availability in environments supporting the stable specification.
packages/core-js/es/array-buffer · high confidence
Stabilize Error.isError and add Error.toString polyfills
The Error.isError utility has been moved from the ES stage to the stable API, making it reliably available in stable imports. Additionally, polyfills for Error.prototype.toString and Error.cause are now included in the error module entry points, ensuring consistent error stringification and cause handling across environments.
packages/core-js/es/error, packages/core-js/stable/error · high confidence
Stabilize Math extensions in the ES entry path
The \packages/core-js/es/math\ entry point now exposes a broader set of \Math\ methods as stable ES features, including \acosh\, \asinh\, \atanh\, \cbrt\, \clz32\, \cosh\, \expm1\, \f16round\, \fround\, \hypot\, \imul\, \log10\, \log1p\, \log2\, \sign\, \sinh\, \sumPrecise\, \tanh\, and \trunc\. This change allows users importing from the \/es/\ path to access these utilities directly, reflecting their promotion to stable ECMAScript standards.
packages/core-js/es/math · high confidence
Stabilize Symbol features and restructure /es/symbol entry points
The /es/symbol path now exposes several previously experimental or internal Symbol features as stable ES entry points, including Symbol.asyncDispose, Symbol.asyncIterator, Symbol.description, Symbol.dispose, and Symbol.matchAll. This change updates the core-js /es/symbol index to include the corresponding module requirements and provides dedicated entry files for these symbols, allowing users to import them directly from the stable /es/ path alongside existing well-known symbols like Symbol.iterator and Symbol.hasInstance.
packages/core-js/es/symbol · high confidence
Stabilize Typed Array methods and Uint8Array binary conversions in ES path
The \packages/core-js/es/typed-array\ entry points now expose a comprehensive set of Typed Array methods as stable ES features, including \.at()\, \.find()\, \.findLast()\, \.toReversed()\, \.toSorted()\, and \.with()\. Additionally, \Uint8Array\ binary conversion utilities (\.fromBase64()\, \.toBase64()\, \.fromHex()\, \.toHex()\, \.setFromBase64()\, and \.setFromHex()\) are now available in the stable \/es/\ path. Users importing from this location will now have access to these previously proposal-stage or unstable features, ensuring consistent behavior across environments that support the stable ECMAScript specification.
packages/core-js/es/typed-array · high confidence
Stabilized DOMException entry points with explicit dependency wiring
The stable entry points for DOMException are now fully defined with explicit dependency requirements. The constructor and index modules now explicitly require the underlying implementation modules (constructor, stack, and toStringTag) and the ES error-to-string polyfill, ensuring that the DOMException object is correctly constructed and stringified in environments where these dependencies were previously missing or implicit. A dedicated to-string-tag module is also provided to expose the 'DOMException' string constant, improving compatibility for code relying on the @@toStringTag property.
packages/core-js/stable/dom-exception · high confidence
Stabilized ES string methods now available via /es/ entry points
The \packages/core-js/es/string\ directory now provides stable, ES-standard entry points for string methods that have reached Stage 4 or the ES specification, including \at\, \matchAll\, \replaceAll\, \isWellFormed\, and \toWellFormed\, alongside legacy HTML wrapper methods like \anchor\, \big\, and \blink\. This change allows users to import these specific features directly from the \/es/\ path with guaranteed stability, while also introducing strict mode and granular inclusion for better compatibility and smaller bundle sizes.
packages/core-js/es/string · high confidence
Stabilized Object methods and added legacy prototype support in the ES entry path
The \packages/core-js/es/object\ entry point now exposes a comprehensive set of Object utilities as stable ES features, including \Object.fromEntries\, \Object.hasOwn\, and \Object.groupBy\, alongside standard methods like \assign\, \create\, \entries\, \freeze\, \keys\, \values\, and property descriptor tools. Additionally, the package now includes polyfills for legacy and non-standard Object properties, specifically \\_\proto\\\, \\\defineGetter\\\, \\\defineSetter\\\, \\\lookupGetter\\\, and \\\lookupSetter\\_\, ensuring broader compatibility for code relying on these legacy APIs.
packages/core-js/es/object · high confidence
Stabilized String prototype methods in the ES entry path
The \packages/core-js/es/string/virtual\ entry points now expose the full set of String prototype methods as stable ES features, including \at\, \matchAll\, \replaceAll\, \isWellFormed\, \toWellFormed\, and the legacy HTML wrapper methods (e.g., \anchor\, \bold\, \italics\). This change aligns the virtual String API with the latest ECMAScript specifications, ensuring that these methods are available for direct use on string instances via the standard ES import path.
packages/core-js/es/string/virtual · high confidence
Stable ES entry points for new Set methods
The \packages/core-js/es/set\ path now exposes stable entry points for the new Set methods (\difference\, \intersection\, \isDisjointFrom\, \isSubsetOf\, \isSupersetOf\, \symmetricDifference\, and \union\). Users can import these specific methods directly from the \/es/set/\ directory (e.g., \core-js/es/set/difference\) or use the full set index, ensuring these features are treated as part of the stable ES standard rather than experimental additions.
packages/core-js/es/set · high confidence
Stable release of Explicit Resource Management (AsyncDisposableStack, DisposableStack, async-dispose)
The Explicit Resource Management proposal is now stable in core-js, making AsyncDisposableStack, DisposableStack, and the async-dispose iterator method available via the stable entry points (e.g., core-js/stable/...). This change ensures these APIs are included in stable builds and no longer require experimental flags, allowing developers to use them in production without relying on the es/ path.
(repo-wide) · high confidence
String methods now available via the /full/ namespace
The \packages/core-js/full/string\ directory now provides entry points for all standard and experimental string methods (including \at\, \codePoints\, \dedent\, \isWellFormed\, \matchAll\, \replaceAll\, and \toWellFormed\) under the new \/full/\ namespace. This change introduces the \/full/\ path as the replacement for the legacy \/features/\ namespace, ensuring that both static and prototype-based string methods are correctly re-exported with strict mode enabled. Users importing from this location will now access the full suite of string polyfills, including those marked for removal in core-js v4.
packages/core-js/full/array/virtual, packages/core-js/full/string · high confidence
Updated proposal entry points to reflect TC39 stage changes and API renames
The proposal entry points in \packages/core-js/proposals\ have been updated to align with the latest TC39 proposal stages and specifications. This includes moving \Object.fromEntries\, \Promise.allSettled\, \String.prototype.matchAll\, \Symbol.prototype.description\, and \Array.prototype.at\ to their stable ES entry points, while adding new entry points for proposals such as \Error.cause\, \Promise.withResolvers\, \Array.groupBy\, \Map.emplace\ (upsert), and \URL.canParse\. Several methods have been renamed to match spec drafts, including \filterOut\ to \filterReject\, \upsert\ to \emplace\, and \asIndexedPairs\ to \indexed\. Additionally, obsolete modules are marked for removal in core-js@4, and new proposals like \String.dedent\, \Math.clamp\, and \Iterator\ helpers are now available.
packages/core-js/proposals · high confidence
Usage script now uses Playwright and fetches Alexa data from a new source
The usage script has been rewritten to use Playwright with the stealth plugin instead of Puppeteer, and it now fetches the top-1m Alexa dataset from a new URL (es6.zloirock.ru) because the original S3 source is deprecated. The script parses the CSV to detect core-js usage on websites, running checks in parallel with timeouts to handle slow or hanging sites, and reports the percentage of sites using core-js along with any access issues.
scripts/usage · high confidence
core-js v4 introduces modular packaging and configurable polyfill aggressiveness
The core-js library has been restructured into a modular package system, moving source code into related sub-packages and renaming the legacy \/fn/\ directory to \/features/\. This release adds support for configurable polyfill aggressiveness via a new \configurator.js\, allowing users to explicitly force native implementations, polyfills, or feature detection for specific features. The package now includes a \postinstall.js\ script that displays a sponsorship banner (unless disabled by environment variables like \ADBLOCK\ or \CI\), and the main entry point (\index.js\) now exports the full library. The README has been updated to reflect the new modular import paths (e.g., \core-js/actual\) and includes examples for both global and pure (non-polluting) usage.
packages/core-js · high confidence
core-js-compat source rewritten to ESM with new data structure
The core-js-compat package has been refactored to use ES modules (ESM) instead of CommonJS. The internal data structure has been reorganized into dedicated files: \data.mjs\ now holds the browser compatibility version mappings, \mapping.mjs\ contains the engine version translation tables (e.g., Chrome to Node/Deno/Electron), \external.mjs\ defines the minimum supported engine versions, and \modules-by-versions.mjs\ lists the modules included in each core-js release version. This change improves module loading and aligns with modern JavaScript standards.
packages/core-js-compat/src · high confidence
Fixes
New local website build script and Vite configuration for legacy browser support
A new \build-local.mjs\ script has been added to streamline local website builds, orchestrating steps like copying core-js, blog posts, and common files before invoking the main build. The Vite configuration (\vite.config.mjs\) has been updated to explicitly set legacy plugin targets (IE 11, Chrome\>=38, Safari\>=7.1, FF\>=15) and CSS targets (ie11), ensuring the generated website assets are compatible with older browsers.
website · high confidence
Test coverage
Add Bun-based unit test runner; Add comprehensive unit tests for global ES polyfills; Added CI checks for compatibility test coverage and module version alignment; Added Karma-based unit test runner for browser bundles; Added TypeScript type definition tests for core-js modules; Added Web Platform Tests for URL parsing, setters, and ASCII conversion; Added automated publint validation for packages; Added browser-based unit test runners for core-js and core-js-pure; Added codespell test runner for spelling verification; Added entry point content and unit tests for core-js; Added quiet reporter and runner for Node unit tests; Added test helper utilities for QUnit assertions and environment detection; Added test infrastructure for observables in both global and pure modes; Added test infrastructure for validating Promise implementations in global and pure modes; Added test262 compliance test runner and preprocessor; Added tests for compat-tools utilities; Added tests for the core-js builder module; Added unit tests for core-js-pure ES array and error methods; Centralized ESLint configuration and runner; Initial compatibility test suite and runners; Removed test bootstrap.css.
Dependencies
Update core-js packages to version 3.50.0 and refresh development tooling
The core-js library packages (core-js, core-js-pure, core-js-compat, and core-js-builder) have been updated to version 3.50.0. Development dependencies and build scripts have also been refreshed: ESLint is upgraded to version 10 in the tests/eslint workspace with corresponding plugin updates, webpack is updated to version 5 in the bundle-tests script, and the playwright testing infrastructure is updated to version 1.63.0.
(dependencies) · high confidence
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
How this codebase got here
Score
- CAI 50 → 58 (+8.2)
- Rubric changed (rubric-2026.09.11 → rubric-2026.09.18) — scores are not directly comparable.
Lenses
- Code Health 54 → 54 (+0.0)
- Architecture 95 → 95 (+0.1)
- Maturity 42 → 63 (+21.0)
- Readiness 53 → 53 (+0.8)
- Security 57 → 63 (+6.1)
- Accessibility 74 (new)
- Performance 100 (new)
Resolved (6)
- Dependency hygiene PARTLY measured — npm pinning read, dependency currency not (no pnpm-resolved versions to grade)
- Documentation: no architecture or design documentation (docs/web/docs/usage.md)
- Documentation: no installation or build instructions (README.md)
- Documentation: no installation or build instructions (docs/web/index.md)
- Documentation: written for insiders (docs/web/docs/missing-polyfills.md)
- Hotspot: packages/core-js/modules/web.url.constructor.js (packages/core-js/modules/web.url.constructor.js)
New (30)
- High CVE: [GHSA redacted] (scripts/usage/package-lock.json)
- Outdated (npm): mkdirp
- Outdated (npm): vite
- Outdated (npm): webpack
- Split packages/core-js
- array-buffer-transfer.default (cognitive 17) (packages/core-js/internals/array-buffer-transfer.js)
- check-dependencies.checkPackage (cognitive 20) (scripts/check-dependencies/check-dependencies.mjs)
- collection.default (cognitive 32) (packages/core-js-pure/override/internals/collection.js)
- collection.default (cognitive 68) (packages/core-js/internals/collection.js)
- collection.default (cyclomatic 22) (packages/core-js-pure/override/internals/collection.js)
- collection.default (cyclomatic 36) (packages/core-js/internals/collection.js)
- define-built-in.default (cognitive 16) (packages/core-js/internals/define-built-in.js)
- export.default (cognitive 26) (packages/core-js/internals/export.js)
- export.default (cognitive 42) (packages/core-js-pure/override/internals/export.js)
- export.default (cyclomatic 17) (packages/core-js/internals/export.js)
- export.default (cyclomatic 36) (packages/core-js-pure/override/internals/export.js)
- get-substitution.default (cognitive 17) (packages/core-js/internals/get-substitution.js)
- iterate.default (cognitive 35) (packages/core-js/internals/iterate.js)
- iterate.default (cyclomatic 24) (packages/core-js/internals/iterate.js)
- iterator-define.default (cognitive 49) (packages/core-js/internals/iterator-define.js)
- …and 10 more
Changes since last survey
- 11 commits — 10 feature/other, 1 fixes
By area
- (root) — 4 commits
- packages/core-js — 3 commits
- (repo) — 1 commit
- scripts/check-dependencies — 1 commit
- tests/entries — 1 commit
- website/scripts — 1 commit
Notable commits
- fix: fix Iterator.prototype.join in Chrome version
- change: Merge pull request #1558 from zloirock/website-runner-cleanup
- change: add Electron 46 compat data mapping
- change: add Opera for Android 102 compat data mapping
- change: add Samsung Browser 31 compat data mapping
- change: drop unneeded test
- change: move Iterator.prototype.includes to stable ES
- change: move Iterator.prototype.join to stable ES
- change: move Iterator chunking to stable ES
- change: update dependencies
- change: website runner: clean up after a failed build and fail the job
Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.
Survey your own repository
zloirock/core-js was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.
About this page
- The score is its most recent published measurement, taken on 1 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
- Measured at commit 6330eeeba366e03aae2b1068fa6c3a7eda89f064 — the exact code this score is about.
- Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
- Measured by watchdog.canine.dev using codehealth-analyzer preprod-e569280dd5e2.