Web Features Polyfill Explorer

Browse web platform features with available polyfills, sorted by Baseline availability date

Showing 97 features with polyfills · Generated on November 17, 2025

Widely Available Array.isArray() Widely Available

array-isarray Baseline since July 28, 2015

The Array.isArray() static method checks whether a value is an array.

Polyfills (2)

Widely Available Iterators and the for...of loop Widely Available

iterators Baseline since July 28, 2015

The for...of loop operates on a sequence of values sourced from an iterable object, such as arrays, array-like objects, DOM collections, iterators, generators, and user-defined iterables. All built-in iterators inherit from the Iterator class.

Polyfills (2)

Widely Available Map (initial support) Widely Available

map Baseline since July 28, 2015

Map objects hold key-value pairs and remember the original insertion order of the keys.

Polyfills (2)

Widely Available Math and numbers Widely Available

number Baseline since July 28, 2015

The number type (and Number object) represents floating-point numbers, such as 42 or -4.201, while the Math API contains mathematical functions and constants. JavaScript can also represent boundless negative and positive values as Infinity or not-a-number as NaN (as in 0 * Infinity).

Widely Available Promise (initial support) Widely Available

promise Baseline since July 28, 2015

A promise represents an asynchronous operation which eventually succeeds or fails.

Polyfills (1)

Widely Available Regular expressions Widely Available

regexp Baseline since July 28, 2015

The RegExp object represents a regular expression, a notation for matching text patterns.

Widely Available Set (initial support) Widely Available

set Baseline since July 28, 2015

Set objects store unique values of any type.

Polyfills (2)

Widely Available setInterval Widely Available

setinterval Baseline since July 28, 2015

The setInterval() global function repeatedly executes provided code on a given delay, and the accompanying clearInterval() cancels the interval.

Widely Available setTimeout() Widely Available

settimeout Baseline since July 28, 2015

The setTimeout() global function executes provided code after a given duration of time, and the accompanying clearTimeout() cancels the timer.

Widely Available WeakMap Widely Available

weakmap Baseline since July 28, 2015

A WeakMap object holds key-value pairs that do not create strong references to its keys, such that value data can be associated with a key without preventing garbage collection of the key.

Polyfills (1)

Widely Available String codePointAt() and fromCodePoint() Widely Available

string-codepoint Baseline since September 29, 2015

The codePointAt() method returns the numeric value of the UTF-16 code point at an index of the string. The fromCodePoint() method returns a string created from one or more code points.

Polyfills (3)

Widely Available String includes() Widely Available

string-includes Baseline since September 29, 2015

The includes() method of strings returns whether a search string appears within the string.

Polyfills (2)

Widely Available String raw() Widely Available

string-raw Baseline since September 29, 2015

The String.raw() static method interpolates template literal substitutions, but ignores escape sequences. It is the tag function for template literals.

Polyfills (2)

Widely Available String repeat() Widely Available

string-repeat Baseline since September 29, 2015

The repeat() method of strings returns the original string repeated a number of times.

Polyfills (2)

Widely Available String startsWith() and endsWith() Widely Available

string-startsends-with Baseline since September 29, 2015

The startsWith() and endsWith() methods of strings returns whether a search string appears at the beginning or end of the provided string.

Polyfills (3)

Widely Available Symbol Widely Available

symbol Baseline since September 29, 2015

A Symbol value is a unique, non-enumerable primitive value used for encapsulation or information hiding. For example, a symbol can be a key of an object that can never collide with any other key.

Polyfills (1)

Widely Available WeakSet Widely Available

weakset Baseline since September 29, 2015

A WeakSet object stores unique values of any type without creating strong references to the values, such that membership in the set does not prevent garbage collection of the value.

Polyfills (1)

Widely Available Array copyWithin() Widely Available

array-copywithin Baseline since September 19, 2016

The copyWithin() method of arrays and typed arrays shifts or copies items of an array to another index of the array without changing its length.

Polyfills (3)

Widely Available Array fill() Widely Available

array-fill Baseline since September 19, 2016

The fill() method of arrays and typed arrays sets all or some items of an array to a given a value.

Polyfills (2)

Widely Available Array find() and findIndex() Widely Available

array-find Baseline since September 19, 2016

The find() and findIndex() methods of arrays and typed arrays search an array for the first item that satisfies a test function.

Polyfills (2)

Widely Available Array.from() Widely Available

array-from Baseline since September 19, 2016

The Array.from() and typed array .from() static methods copy items from an iterable or array-like object to make a new array.

Polyfills (3)

Widely Available Array includes() Widely Available

array-includes Baseline since September 19, 2016

The includes() method of arrays and typed arrays returns whether a given value appears in the array.

Polyfills (3)

Widely Available Array.of() Widely Available

array-of Baseline since September 19, 2016

The Array.of() and typed array .of() static methods create new arrays from the values of any number of arguments.

Polyfills (3)

Widely Available Base64 encoding and decoding Widely Available

base64encodedecode Baseline since September 19, 2016

The atob() and btoa() global functions encode and decode strings to and from base 64, respectively.

Polyfills (2)

Widely Available Typed array iteration methods Widely Available

typed-array-iteration-methods Baseline since September 19, 2016

Typed array iteration methods

Polyfills (1)

Widely Available Typed array iterators Widely Available

typed-array-iterators Baseline since September 19, 2016

Typed arrays are iterable with the for … of statement and enumerable with the methods entries(), keys(), and values().

Polyfills (1)

Widely Available String padStart() and padEnd() Widely Available

string-pad Baseline since April 4, 2017

The padStart() and padEnd() methods of strings return a string lengthened to a minimum number of characters by adding characters to the start or end of the string.

Polyfills (3)

Widely Available Custom properties Widely Available

custom-properties Baseline since April 4, 2017

Custom properties are CSS properties prefixed with -- that set values you can reuse with the var() function. For example, you can set a --key-color property to reuse as border-color: var(--key-color). Also known as CSS variables.

Polyfills (1)

Widely Available Promise finally() Widely Available

promise-finally Baseline since October 1, 2018

The promise finally() method executes a function when the promise settles (resolves or rejects).

Polyfills (2)

Widely Available Intersection observer Widely Available

intersection-observer Baseline since March 24, 2019

The IntersectionObserver API asynchronously observes changes in the intersection of a target element with an ancestor element or with a top-level document's viewport.

Polyfills (2)

Widely Available Intl.PluralRules Widely Available

intl-plural-rules Baseline since September 18, 2019

The Intl.PluralRules API creates a locale-aware object that tells you which of the language's pluralization rules apply based on a given number.

Polyfills (1)

Widely Available Array flat() and flatMap() Widely Available

array-flat Baseline since January 14, 2020

The flat() and flatMap() methods for arrays creates a new array such that each nested array item is concatenated into it.

Polyfills (3)

Widely Available CSS.escape() Widely Available

css-escape Baseline since January 14, 2020

The CSS.escape() static method escapes a string so that it can be used in a valid CSS selector.

Polyfills (1)

Widely Available globalThis Widely Available

globalthis Baseline since January 14, 2020

The globalThis property accesses the global this value (and hence the global object itself) across environments.

Polyfills (2)

Widely Available Server-sent events Widely Available

server-sent-events Baseline since January 14, 2020

The EventSource API creates a connection to a server and listens to a stream of events sent by the server.

Polyfills (3)

Widely Available Stable array sort Widely Available

stable-array-sort Baseline since January 14, 2020

Stable array sort() function

Widely Available String matchAll() Widely Available

string-matchall Baseline since January 14, 2020

The matchAll() method of strings matches a string against a regular expression and returns an iterator of all results, including capturing groups.

Polyfills (2)

Widely Available String trimStart() and trimEnd() Widely Available

string-trim-startend Baseline since January 14, 2020

The trimStart() and trimEnd() methods of strings return a new string with whitespace removed from the beginning or end of the string.

Polyfills (3)

Widely Available Promise.allSettled() Widely Available

promise-allsettled Baseline since July 27, 2020

The Promise.allSettled() static method waits for an array of promises to settle (resolve or reject).

Polyfills (2)

Widely Available queueMicrotask() Widely Available

queuemicrotask Baseline since July 27, 2020

The queueMicrotask() method schedules a function to run after the currently running synchronous JavaScript finishes but before returning to the event loop.

Polyfills (1)

Widely Available String replaceAll() Widely Available

string-replaceall Baseline since August 26, 2020

The replaceAll() method of strings returns a new string where all matches of a pattern (a string or regular expression) have been substituted with a replacement string.

Polyfills (2)

Widely Available Intl.Locale Widely Available

intl-locale Baseline since September 15, 2020

The Intl.Locale API parses Unicode locale identifiers, with language, region, and script codes, such as zh-Hans-CN or en-GB.

Polyfills (1)

Widely Available Intl.RelativeTimeFormat Widely Available

intl-relative-time-format Baseline since September 15, 2020

The Intl.RelativeTimeFormat API creates a locale-aware formatter that turns an object representing a relative time (such as '1 day ago') into a localized string.

Polyfills (1)

Widely Available Promise.any() Widely Available

promise-any Baseline since September 15, 2020

The Promise.any() static method returns a promise that fulfills as soon as the first of an iterable of promises fulfills, with that promise's value. Otherwise, it rejects with an AggregateError when all of the promises have rejected.

Polyfills (2)

Newly Available Array by copy Newly Available

array-by-copy Baseline since July 3, 2023

The toReversed(), toSorted(), toSpliced(), and with() methods of arrays and typed arrays return changed copies of arrays. They stand in contrast to methods such as sort() or reverse() that change arrays in place.

Polyfills (5)

Widely Available :is() Widely Available

is Baseline since January 20, 2021

The :is() CSS functional pseudo-class takes a selector list as its argument, and matches any element that can be selected by one of the selectors in that list.

Polyfills (1)

Newly Available String isWellFormed() and toWellFormed() Newly Available

string-wellformed Baseline since October 23, 2023

The isWellFormed() method of strings returns a boolean indicating if the string contains any Unicode lone surrogates. The toWellFormed() method returns a new string where all lone surrogates are replaced by the Unicode replacement character.

Polyfills (3)

Widely Available Intl.DisplayNames Widely Available

intl-display-names Baseline since April 25, 2021

The Intl.DisplayNames API provides localized names of language, region, script, and currency codes.

Polyfills (1)

Widely Available Intl.ListFormat Widely Available

intl-list-format Baseline since April 25, 2021

The Intl.ListFormat API creates a locale-aware formatter that turns iterable objects into localized strings.

Polyfills (1)

Widely Available MediaStream recording Widely Available

mediastream-recording Baseline since April 25, 2021

The MediaRecorder API captures data generated by MediaStream or HTMLMediaElement objects for analysis, processing, or saving to disk. Also known as the Media Recording API.

Polyfills (1)

Newly Available URL.canParse() Newly Available

url-canparse Baseline since December 6, 2023

The URL.canParse() static method checks whether a URL can be parsed into a valid URL object. It's an alternative to calling new URL() in a try … catch statement.

Newly Available Nesting Newly Available

nesting Baseline since December 10, 2023

CSS nesting allows for shorter selectors, easier reading, and more modularity by nesting rules inside others.

Polyfills (1)

Newly Available :has() Newly Available

has Baseline since December 18, 2023

The :has() CSS functional pseudo-class matches an element if any of the selectors passed as parameters would match at least one element.

Polyfills (2)

Newly Available Array.fromAsync() Newly Available

array-fromasync Baseline since January 24, 2024

The Array.fromAsync() static method copies items from an async iterable object to make a new array.

Polyfills (1)

Newly Available Array grouping Newly Available

array-group Baseline since March 4, 2024

The Object.groupBy() and Map.groupBy() static methods group values of arrays and iterables based on a function that returns a key for each value.

Polyfills (3)

Newly Available Promise.withResolvers() Newly Available

promise-withresolvers Baseline since March 4, 2024

The Promise.withResolvers() static method is an alternative to the Promise() constructor that returns both the promise and resolution functions. You can use this to access resolve and reject outside the scope of the executor function.

Polyfills (2)

Newly Available Transferable ArrayBuffer Newly Available

transferable-arraybuffer Baseline since March 4, 2024

The transfer() and transferToFixedLength() methods of ArrayBuffer move a buffer from one context to another (for example, to a worker).

Polyfills (3)

Newly Available Intl.Segmenter Newly Available

intl-segmenter Baseline since April 15, 2024

The Intl.Segmenter API creates a locale-aware text splitter that can separate a string into meaningful graphemes, words, or sentences.

Polyfills (1)

Newly Available Set methods Newly Available

set-methods Baseline since June 10, 2024

The difference(), intersection(), isDisjointFrom(), isSubsetOf(), isSupersetOf(), symmetricDifference(), and union() methods of the JavaScript Set object performs operations between two sets.

Polyfills (8)

Widely Available Array at() Widely Available

array-at Baseline since March 13, 2022

The at() method of arrays and typed arrays returns the item at an index, including negative indices for getting items relative to the end of an array. Also known as the relative indexing method.

Polyfills (2)

Widely Available Object.hasOwn() Widely Available

object-hasown Baseline since March 13, 2022

The Object.hasOwn() static method checks whether an object has a given property. It's a more robust alternative to the Object.prototype.hasOwnProperty() method.

Polyfills (2)

Widely Available String at() Widely Available

string-at Baseline since March 13, 2022

The at() method of strings returns the character (one UTF-16 code unit) at an index, including negative indices for getting the character relative to the end of the string. Also known as the relative indexing method.

Polyfills (2)

Widely Available structuredClone() Widely Available

structured-clone Baseline since March 13, 2022

The structuredClone() global method creates a deep copy of an object. Values that cannot be cloned can instead be transferred, making the original value no longer usable.

Polyfills (3)

Widely Available Cascade layers Widely Available

cascade-layers Baseline since March 13, 2022

The @layer CSS at-rule avoids specificity conflicts by providing priority levels for different groups of CSS rules, such as low-priority styles like resets, and high-priority styles like UI components.

Polyfills (1)

Widely Available :focus-visible Widely Available

focus-visible Baseline since March 13, 2022

The :focus-visible CSS pseudo-class selects elements that match the :focus pseudo-class and meets the browser's criteria for visually emphasizing focused elements.

Polyfills (2)

Newly Available Relative colors Newly Available

relative-color Baseline since September 15, 2024

The from keyword for color functions (color(), hsl(), oklch(), etc.) creates a new color based on a given color by modifying the values of the input color. Also known as relative color syntax (RCS).

Polyfills (1)

Newly Available Promise.try() Newly Available

promise-try Baseline since January 6, 2025

The Promise.try() static method returns a promise that takes a callback of any kind (returns or throws, synchronously or asynchronously) and wraps its result in a Promise.

Polyfills (2)

Widely Available Array findLast() and findLastIndex() Widely Available

array-findlast Baseline since August 22, 2022

The findLast() and findLastIndex() methods of arrays and typed arrays search an array in reverse order for the first item that satisfies a test function.

Polyfills (2)

Newly Available Intl.DurationFormat Newly Available

intl-duration-format Baseline since March 3, 2025

The Intl.DurationFormat API creates a locale-aware formatter that turns an object representing a duration (such as days, hours, and minutes) into a string.

Polyfills (1)

Newly Available Iterator methods Newly Available

iterator-methods Baseline since March 30, 2025

The Iterator object is an abstract base for objects that implement the iterator protocol. It provides methods common to built-in iterators, such as filter(), find(), map(), and reduce(). You can also use the static method Iterator.from() to convert an existing iterable into an Iterator.

Polyfills (2)

Widely Available ic unit Widely Available

ic Baseline since October 2, 2022

The ic CSS length unit corresponds to the width of CJK ideographic characters.

Polyfills (1)

Newly Available RegExp.escape() Newly Available

regexp-escape Baseline since April 30, 2025

The RegExp.escape() static method takes a string and replaces any characters that are potentially special characters of a regular expression with equivalent escape sequences. For example, RegExp.escape("[abc]") returns "\\[abc\\]".

Polyfills (2)

Widely Available Small, large, and dynamic viewport units Widely Available

viewport-unit-variants Baseline since December 4, 2022

The sv*, lv*, and dv* CSS viewport units are relative to the smallest, largest, and current (dynamic) viewport size. They are used to size elements in relation to the viewport's dimensions.

Polyfills (1)

Widely Available Container queries Widely Available

container-queries Baseline since February 13, 2023

Container size queries with the @container at-rule apply styles to an element based on the dimensions of its container.

Polyfills (1)

Newly Available Uint8Array base64 and hex conversion Newly Available

uint8array-base64-hex Baseline since September 4, 2025

The Uint8Array object methods fromBase64(), toBase64(), and setFromBase64() convert to and from base64 strings. The fromHex(), toHex(), and setFromHex() methods convert to and from hex strings.

Polyfills (2)

Newly Available URLPattern Newly Available

urlpattern Baseline since September 14, 2025

The URLPattern API creates patterns that can be matched against URLs or URL components.

Polyfills (1)

Widely Available Media query range syntax Widely Available

media-query-range-syntax Baseline since March 26, 2023

The range syntax of CSS media queries allows you to use mathematical comparison operators such as <, >, <=, and >= to define a range of values for a media query. For example, (400px < width < 1000px) returns true if the viewport width is between 400px and 1000px.

Polyfills (1)

Widely Available color() Widely Available

color-function Baseline since May 8, 2023

The color() function picks a color from a given color space. Wide gamut color spaces like display-p3 allow showing more vibrant and saturated colors than the standard srgb color space.

Polyfills (1)

Widely Available color-mix() Widely Available

color-mix Baseline since May 8, 2023

The color-mix() function mixes two colors in a given color space and by a given amount. Commonly, lighter or darker variations of a color are created by mixing with white or black.

Polyfills (1)

Widely Available Lab and LCH Widely Available

lab Baseline since May 8, 2023

The CIE Lab color space expresses colors in terms of lightness and how red/green and blue/yellow a color is. LCH is a variant of Lab with polar coordinates. These color spaces can be used with the CSS color(), lab(), and lch() functions. Also known as CIELAB and CIELCH.

Polyfills (1)

Widely Available Oklab and Oklch Widely Available

oklab Baseline since May 8, 2023

The Oklab color space expresses colors in terms of lightness and how red/green and blue/yellow a color is, aiming to match how humans perceive colors. Oklch is a variant of Oklab with polar coordinates. These color spaces can be used with the CSS color(), oklab(), and oklch() functions.

Polyfills (1)

Limited Availability Accessor methods Limited Availability

accessor-methods

The __defineGetter__() and __defineSetter__() methods of objects bind a function to a property, which is called on setting or reading the property.

Polyfills (1)

Limited Availability getYear() and setYear() Limited Availability

date-get-year-set-year

The getYear() and setYear() methods of Date objects get and set the year as an offset to 1900.

Polyfills (2)

Limited Availability escape() and unescape() Limited Availability

escape-unescape

The escape() and unescape() built-in Javascript methods encode and unencode strings using percent encoding, where certain characters are replaced by hexadecimal escape sequences.

Polyfills (1)

Limited Availability Explicit resource management Limited Availability

explicit-resource-management

The using and await using declarations and the dispose and asyncDispose symbols manage the lifecycle of resources such as file handles and streams. The DisposableStack and AsyncDisposableStack objects can group, dispose, and coordinate dependencies between multiple disposable resources.

Polyfills (1)

Limited Availability Map getOrInsert() Limited Availability

getorinsert

The getOrInsert() and getOrInsertComputed() methods of Map objects get a value, setting and getting a default value if needed.

Polyfills (5)

Limited Availability HTML wrapper methods Limited Availability

html-wrapper-methods

JavaScript built-in methods such as, String.bold() and String.italics(), wrap strings in (often historic) HTML.

Polyfills (3)

Limited Availability Intl.Locale info Limited Availability

intl-locale-info

The getter methods of the Intl.Locale API provide supplemental information about a Unicode locale, such as the locale's calendar (for example, the first day in a week or the weekend start day), writing direction, 12- or 24-hour cycles, and numbering system.

Polyfills (1)

Limited Availability Error.isError() Limited Availability

is-error

The Error.isError() static method checks whether a value is an Error object.

Polyfills (2)

Limited Availability JSON source text access Limited Availability

json-raw

To serialize and parse JSON in a lossless way, JSON.stringify() handles rawJSON values and JSON.parse()'s reviver callback takes a source context parameter.

Limited Availability Math.sumPrecise() Limited Availability

math-sum-precise

The Math.sumPrecise() static method returns the sum of an iterable of numbers. It avoids the precision loss of intermediate partial sums, as found using reduce() or a loop to add together an array of values.

Polyfills (2)

Limited Availability Presentation API Limited Availability

presentation-api

The Presentation API shows or controls content on another display, such as a network-connected TV or projector.

Limited Availability Serializable errors Limited Availability

serializable-errors

The DOMException, Error, EvalError, RangeError, ReferenceError, SyntaxError, TypeError, and URIError objects are serializable. You can call structuredClone() on an error object or pass it to a worker using postMessage().

Polyfills (3)

Limited Availability Temporal Limited Availability

temporal

The Temporal API allows you to work with dates, times, time zones, and durations. It is more powerful than the Date API.

Polyfills (2)

Limited Availability Trusted types Limited Availability

trusted-types

Trusted types allow you to lock down insecure parts of the DOM API and prevent client-side cross-site scripting (XSS) attacks.

Polyfills (2)

Limited Availability WebVR Limited Availability

webvr

The navigator.getVRDisplays() API represents virtual reality (VR) devices, including sensors and head-mounted displays.

Polyfills (1)

Limited Availability Scheduler API Limited Availability

scheduler

The scheduler API provides a way to prioritize all tasks belonging to an application.

Polyfills (1)