JavaScript

Baseline Ready

A practical reference for deciding whether a JavaScript feature is ready to use now.

  • Widely available
    80
    features
  • Newly available
    21
    features
  • Limited support
    20
    features

Browse by category

WidelyArrays

Array (initial support)

The Array object, as with arrays in other programming languages, enables storing a collection of multiple items under a single variable name, and has members for performing common array operations.

Arrays
WidelyArrays

Array at()

The at() method of Array instances takes an integer value and returns the item at that index, allowing for positive and negative integers.

ArraysIndexingES2022
WidelyArrays

Array by copy

The toReversed() method of Array instances is the copying counterpart of the reverse() method.

ArraysImmutabilityES2023
WidelyArrays

Array copyWithin()

The copyWithin() method of Array instances shallow copies part of this array to another location in the same array and returns this array without modifying its length.

Arrays
WidelyArrays

Array fill()

The fill() method of Array instances changes all elements within a range of indices in an array to a static value.

Arrays
WidelyArrays

Array find() and findIndex()

The find() method of Array instances returns the first element in the provided array that satisfies the provided testing function.

ArraysSearchES2023
WidelyArrays

Array findLast() and findLastIndex()

The findLast() method of Array instances iterates the array in reverse order and returns the value of the first element that satisfies the provided testing function.

Arrays
WidelyArrays

Array flat() and flatMap()

The flat() method of Array instances creates a new array with all sub-array

ArraysES2019Transformation
WidelyArrays

Array includes()

The includes() method of Array instances determines whether an array

Arrays
WidelyArrays

Array iteration methods

The every() method of Array instances returns false if it finds an element in the array that does not satisfy the provided testing function.

Arrays
WidelyArrays

Array iterators

The [Symbol.

Arrays
WidelyArrays

Array splice()

The splice() method of Array instances changes the contents of an array by

Arrays
WidelyArrays

Array.from()

The Array.

Arrays
WidelyArrays

Array.isArray()

The Array.

Arrays
WidelyArrays

Array.of()

The Array.

Arrays
WidelyArrays

Stable array sort

Stable array sort() function

Arrays
WidelyAsync

Async functions

The AsyncFunction object provides methods for async functions.

AsyncES2017Control flow
WidelyAsync

Promise (initial support)

The Promise object represents the eventual completion (or failure) of an asynchronous operation and its resulting value.

AsyncES2015Promises
WidelyAsync

Promise finally()

The finally() method of Promise instances schedules a function to be called when the promise is settled (either fulfilled or rejected).

AsyncPromisesCleanup
WidelyAsync

Promise.allSettled()

The Promise.

AsyncPromisesResilience
WidelyAsync

Promise.any()

The AggregateError object represents an error when several errors need to be wrapped in a single error.

AsyncPromisesFallback
WidelyData

JSON

The JSON namespace object contains static methods for parsing values from and converting values to JavaScript Object Notation (JSON).

DataSerializationJSON
WidelyInternationalization

Intl.DisplayNames

The Intl.

IntlLocalizationLabels
WidelyInternationalization

Intl.ListFormat

The Intl.

IntlLocalizationFormatting
WidelyInternationalization

Intl.PluralRules

The Intl.

IntlLocalizationGrammar
WidelyInternationalization

Intl.RelativeTimeFormat

The Intl.

IntlLocalizationDates
WidelyInternationalization (Intl)

Intl

The Intl namespace object contains several constructors as well as functionality common to the internationalization constructors and other language sensitive functions.

Internationalization (Intl)ES2015Formatting
WidelyInternationalization (Intl)

Intl.Locale

The Intl.

Internationalization (Intl)
WidelyIterators

Async iterators and the for await..of loop

An AsyncIterator object is an object that conforms to the async iterator protocol by providing a next() method that returns a promise fulfilling to an iterator result object.

Iterators
WidelyIterators

Iterators and the for...of loop

An Iterator object is an object that conforms to the iterator protocol by providing a next() method that returns an iterator result object.

Iterators
WidelyIterators

Typed array iterators

The [Symbol.

Iterators
WidelyLanguage core

Async generators

The AsyncGenerator object is returned by an async generator function and it conforms to both the async iterable protocol and the async iterator protocol.

Language core
WidelyLanguage core

BigInt

BigInt values represent integer values which are too high or too low to be represented by the number primitive.

Language core
WidelyLanguage core

BigInt64Array

The BigInt64Array typed array represents an array of 64-bit signed integers in the platform byte order.

Language core
WidelyLanguage core

Classes

The class declaration creates a binding of a new class to a given name.

Language core
WidelyLanguage core

Destructuring

The destructuring syntax is a JavaScript syntax that makes it possible to unpack values from arrays, or properties from objects, into distinct variables.

Language coreES2015Object and array patterns
WidelyLanguage core

Error cause

The cause data property of an Error instance indicates the specific original cause of the error.

Language core
WidelyLanguage core

Exponentiation operator

The exponentiation (**) operator returns the result of raising the first operand to the power of the second operand.

Language core
WidelyLanguage core

Functions

The Function object provides methods for functions.

Language core
WidelyLanguage core

Generators

The Generator object is returned by a generator function and it conforms to both the iterable protocol and the iterator protocol.

Language core
WidelyLanguage core

globalThis

The globalThis global property contains the global this value, which is usually akin to the global object.

Language core
WidelyLanguage core

Hashbang comments

This page describes JavaScript's lexical grammar.

SyntaxScriptsCompatibility
WidelyLanguage core

JavaScript (initial core language support)

Boolean values can be one of two values: true or false, representing the truth value of a logical proposition.

SyntaxCoreLanguage
WidelyLanguage core

Let and const

The const declaration declares block-scoped local variables.

Language core
WidelyLanguage core

Logical assignments

The logical AND assignment (&&=) operator only evaluates the right operand and assigns to the left if the left operand is truthy.

Language core
WidelyLanguage core

Nullish coalescing

The nullish coalescing (?

Language coreES2020Defaults
WidelyLanguage core

Numeric separators

This page describes JavaScript's lexical grammar.

Language core
WidelyLanguage core

Optional catch binding

Omit the the binding parameter of a catch clause when you don't need information about the exception in a try ... catch statement.

Language core
WidelyLanguage core

Proxy and Reflect

The Proxy object enables you to create a proxy for another object, which can intercept and redefine fundamental operations for that object.

Language core
WidelyLanguage core

SharedArrayBuffer and Atomics

The Atomics namespace object contains static methods for carrying out atomic operations.

SharedArrayBufferAtomicsConcurrency
WidelyLanguage core

Template literals

Template literals are literals delimited with backtick (`) characters, allowing for multi-line strings, string interpolation with embedded expressions, and special constructs called tagged templates.

Language coreES2015Strings
WidelyLanguage core

Unicode point escapes

This page describes JavaScript's lexical grammar.

Language core
WidelyLanguage core

Weak references

A FinalizationRegistry object lets you request a callback when a value is garbage-collected.

MemoryWeakRefCleanup
WidelyMap and Set

Map (initial support)

The Map object holds key-value pairs and remembers the original insertion order of the keys.

Map and SetES2015Keyed collections
WidelyMap and Set

Set (initial support)

The Set object lets you store unique values of any type, whether primitive values or object references.

Map and SetES2015Unique values
WidelyModules

JavaScript modules

The export declaration is used to export values from a JavaScript module.

ModulesImportExport
WidelyModules

JavaScript modules in workers

The Worker() constructor accepts { type: "module" } to load scripts that use import and export. Also known as ECMAScript modules or ESM in workers.

ModulesWorkersPerformance
WidelyObjects

Object

The Object type represents one of JavaScript's data types.

ObjectsConstructorCore language
WidelyObjects

Object.hasOwn()

The Object.

ObjectsPropertiesOwnership
WidelyPrimitive types

Date

JavaScript Date objects represent a single moment in time in a platform-independent format.

Primitive types
WidelyPrimitive types

Math and numbers

Number values represent floating-point numbers like 37 or -9.

Primitive types
WidelyPrimitive types

String (initial support)

The String object is used to represent and manipulate a

Primitive types
WidelyPrimitive types

Symbol

Symbol is a built-in object whose constructor returns a symbol primitive — also called a Symbol value or just a Symbol — that's guaranteed to be unique.

Primitive types
WidelyStrings

String at()

The at() method of String values takes an integer value and returns a new String consisting of the single UTF-16 code unit located at the specified offset.

StringsIndexingES2022
WidelyStrings

String codePointAt() and fromCodePoint()

The codePointAt() method of String values returns a non-negative integer that is the Unicode code point value of the character starting at the given index.

Strings
WidelyStrings

String includes()

The includes() method of String values performs a case-sensitive search to determine whether a given string may be found within this string, returning true or false as appropriate.

StringsSearchES2015
WidelyStrings

String matchAll()

The matchAll() method of String values returns an iterator of all results matching this string against a regular expression, including capturing groups.

StringsRegExpIteration
WidelyStrings

String normalize()

The normalize() method of String values returns the Unicode Normalization

Strings
WidelyStrings

String padStart() and padEnd()

The padEnd() method of String values pads this string with a given string (repeated and/or truncated, if needed) so that the resulting string has a given length.

Strings
WidelyStrings

String raw()

The String.

Strings
WidelyStrings

String repeat()

The repeat() method of String values constructs and returns a new string

Strings
WidelyStrings

String replaceAll()

The replaceAll() method of String values returns a new string with all matches of a pattern replaced by a replacement.

StringsReplacementES2021
WidelyStrings

String startsWith() and endsWith()

The endsWith() method of String values determines whether a string ends with the characters of this string, returning true or false as appropriate.

Strings
WidelyStrings

String trimStart() and trimEnd()

The trimEnd() method of String values removes whitespace from the end of this string and returns a new string, without modifying the original string.

Strings
WidelySyntax

Spread syntax

The spread (.

SyntaxArraysObjects
WidelyText processing

Regular expressions

The RegExp object is used for matching text with a pattern.

RegExpPatternsStrings
WidelyTyped arrays

Typed array iteration methods

The every() method of TypedArray instances returns false if it finds an element in the array that does not satisfy the provided testing function.

Typed arrays
WidelyTyped arrays

Typed arrays (initial support)

The ArrayBuffer object is used to represent a generic raw binary data buffer.

Typed arrays
WidelyWeakMap and WeakSet

WeakMap

A WeakMap is a collection of key/value pairs whose keys must be objects or non-registered symbols, with values of any arbitrary JavaScript type, and which does not create strong references to its keys.

WeakMap and WeakSet
WidelyWeakMap and WeakSet

WeakSet

A WeakSet is a collection of garbage-collectable values, including objects and non-registered symbols.

WeakMap and WeakSet
NewlyArrays

Array grouping

Note:

ArraysGroupingData transformation
NewlyArrays

Array.fromAsync()

The Array.

Arrays
NewlyAsync

Promise.withResolvers()

The Promise.

Async
NewlyAsync processing

Promise.try()

The Promise.

PromiseErrorsAsync
NewlyInternationalization

Intl.Segmenter

The Intl.

IntlLocalizationText
NewlyInternationalization (Intl)

Intl.DurationFormat

The Intl.

IntlLocalizationFormatting
NewlyIterators

Iterator methods

The Iterator() constructor is intended to be used as the superclass of other classes that create iterators.

IteratorsLazy evaluationPipelines
NewlyIterators

Iterator.concat()

The Iterator.

Iterators
NewlyJSON

JSON import attributes

Module import … with { type: "json" } statements load JSON data. Also known as JSON module scripts.

JSONModulesImports
NewlyJSON

JSON source text access

The JSON.

JSONParsingPrecision
NewlyLanguage core

Atomics.pause()

The Atomics.

AtomicsConcurrencyPerformance
NewlyLanguage core

Atomics.waitAsync()

The Atomics.

AtomicsAsyncConcurrency
NewlyLanguage core

Resizable buffers

The maxByteLength accessor property of ArrayBuffer instances returns the maximum length (in bytes) that this array buffer can be resized to.

ArrayBufferMemoryBinary data
NewlyLanguage core

Transferable ArrayBuffer

The detached accessor property of ArrayBuffer instances returns a boolean indicating whether or not this buffer has been detached (transferred).

ArrayBufferTransferPerformance
NewlyMap and Set

Map getOrInsert()

The getOrInsert() method of Map instances returns the value corresponding to the specified key in this Map.

MapCachingInitialization
NewlyMap and Set

Set methods

The difference() method of Set instances takes a set and returns a new set containing elements in this set but not in the given set.

Map and SetSet operationsES2024
NewlyModules

JavaScript modules in service workers

The navigator.serviceWorker.register() method accepts { type: "module" } to load scripts that use import and export. Also known as ECMAScript modules or ESM in service workers.

ModulesService WorkerCaching
NewlyStrings

String isWellFormed() and toWellFormed()

The isWellFormed() method of String values returns a boolean indicating whether this string contains any lone surrogates.

Strings
NewlyText processing

RegExp.escape()

The RegExp.

RegExpEscapingSafety
NewlyTyped arrays

Float16Array

The Float16Array typed array represents an array of 16-bit floating point numbers in the platform byte order.

Typed arraysNumeric dataPerformance
NewlyTyped arrays

Uint8Array base64 and hex conversion

The Uint8Array.

Binary dataEncodingTyped arrays
LimitedError handling

Serializable errors

Serializable objects are objects that can be serialized and later deserialized in any JavaScript environment ("realm").

Error handling
LimitedInternationalization (Intl)

Intl.Locale info

The getCalendars() method of Intl.

IntlLocaleRegional settings
LimitedLanguage core

__proto__

Deprecated: This feature is no longer recommended.

LegacyPrototypeDeprecated
LimitedLanguage core

Accessor methods

Deprecated: This feature is no longer recommended.

Language core
LimitedLanguage core

arguments.callee

Deprecated: This feature is no longer recommended.

LegacyFunctionsDeprecated
LimitedLanguage core

Error.isError()

The Error.

ErrorsValidationRuntime
LimitedLanguage core

escape() and unescape()

Deprecated: This feature is no longer recommended.

LegacyEncodingDeprecated
LimitedLanguage core

Function caller and arguments

Deprecated: This feature is no longer recommended.

LegacyIntrospectionDeprecated
LimitedLanguage core

getYear() and setYear()

Deprecated: This feature is no longer recommended.

DateLegacyDeprecated
LimitedLanguage core

HTML wrapper methods

Deprecated: This feature is no longer recommended.

StringsHTMLDeprecated
LimitedLanguage core

Math.sumPrecise()

The Math.

MathPrecisionNumbers
LimitedLanguage core

Temporal

The Temporal object enables date and time management in various scenarios, including built-in time zone and calendar representation, wall-clock time conversions, arithmetics, formatting, and more.

DatesTimezonesTemporal
LimitedLanguage core

toGMTString()

The toUTCString() method of Date instances returns a string representing this date in the RFC 7231 format, with negative years allowed.

DateLegacyDeprecated
LimitedLanguage core

Top-level await

The await operator is used to wait for a Promise and get its fulfillment value.

ModulesAsyncInitialization
LimitedLanguage core

with

Deprecated: This feature is no longer recommended.

LegacyScopeDeprecated
LimitedModules

CSS import attributes

Module import … with { type: "css" } statements load CSS modules as constructable stylesheets. Also known as CSS module scripts.

ModulesCSSStyling
LimitedModules

Import assertions

Module import … assert { type: "json" } and import … assert { type: "css" } JavaScript statements load JSON and CSS data.

ModulesImportsMetadata
LimitedRegular expressions

RegExp compile()

Deprecated: This feature is no longer recommended.

RegExpLegacyDeprecated
LimitedRegular expressions

RegExp static properties

Deprecated: This feature is no longer recommended.

RegExpLegacyDeprecated
LimitedResource management

Explicit resource management

The AsyncDisposableStack object represents a stack of async disposers to run when the stack itself is disposed.

DisposalusingLifecycle