Widely available features
These features have been supported across all core browsers for a while.
-
aspect-ratio
Widely available since 2024-03-20 (baseline high)The
aspect-ratio
CSS property controls the width-to-height ratio of elements. For<img>
and<video>
elements, thewidth
andheight
attributes used together withheight: auto
control the aspect ratio while the image/video is loading.- Chrome 88 Released on 2021-01-19
- Chrome Android 88 Released on 2021-01-19
- Edge 88 Released on 2021-01-21
- Firefox 89 Released on 2021-06-01
- Firefox for Android 89 Released on 2021-06-01
- Safari 15 Released on 2021-09-20
- Safari on iOS 15 Released on 2021-09-20
-
Visual viewport API
Widely available since 2024-02-10 (baseline high)The
visualViewport
API provides a way to query and modify the user-visible viewport of a web page.- Chrome 61 Released on 2017-09-05
- Chrome Android 61 Released on 2017-09-05
- Edge 79 Released on 2020-01-15
- Firefox 91 Released on 2021-08-10
- Firefox for Android 68 Released on 2019-07-09
- Safari 13 Released on 2019-09-19
- Safari on iOS 13 Released on 2019-09-19
-
Flexbox gap
Widely available since 2023-10-26 (baseline high)The
gap
CSS property in a flexbox layout sets the size of the space between items.- Chrome 84 Released on 2020-07-27
- Chrome Android 84 Released on 2020-07-27
- Edge 84 Released on 2020-07-16
- Firefox 63 Released on 2018-10-23
- Firefox for Android 63 Released on 2018-10-23
- Safari 14.1 Released on 2021-04-26
- Safari on iOS 14.5 Released on 2021-04-26
-
:is()
Widely available since 2023-07-21 (baseline high)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.- Chrome 88 Released on 2021-01-19
- Chrome Android 88 Released on 2021-01-19
- Edge 88 Released on 2021-01-21
- Firefox 82 Released on 2020-10-20
- Firefox for Android 82 Released on 2020-10-20
- Safari 14 Released on 2020-09-16
- Safari on iOS 14 Released on 2020-09-16
-
:where()
Widely available since 2023-07-21 (baseline high)The
:where()
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. It is functionally equivalent to the selectors in the list, but doesn't affect the CSS rule specificity.- Chrome 88 Released on 2021-01-19
- Chrome Android 88 Released on 2021-01-19
- Edge 88 Released on 2021-01-21
- Firefox 82 Released on 2020-10-20
- Firefox for Android 82 Released on 2020-10-20
- Safari 14 Released on 2020-09-16
- Safari on iOS 14 Released on 2020-09-16
-
Conic gradients
Widely available since 2023-05-17 (baseline high)The
conic-gradient()
andrepeating-conic-gradient()
CSS functions create backgrounds that progress between two or more colors around a center point.- Chrome 72 Released on 2019-01-29
- Chrome Android 72 Released on 2019-01-29
- Edge 79 Released on 2020-01-15
- Firefox 83 Released on 2020-11-17
- Firefox for Android 83 Released on 2020-11-17
- Safari 12.1 Released on 2019-03-25
- Safari on iOS 12.2 Released on 2019-03-25
-
BigInt
Widely available since 2023-03-16 (baseline high)The
BigInt
JavaScript type represents integers of any size, including integers too large for the primitiveNumber
type.- Chrome 67 Released on 2018-05-29
- Chrome Android 67 Released on 2018-05-31
- Edge 79 Released on 2020-01-15
- Firefox 68 Released on 2019-07-09
- Firefox for Android 68 Released on 2019-07-09
- Safari 14 Released on 2020-09-16
- Safari on iOS 14 Released on 2020-09-16
-
Promise.any()
Widely available since 2023-03-16 (baseline high)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 anAggregateError
when all of the promises have rejected.- Chrome 85 Released on 2020-08-25
- Chrome Android 85 Released on 2020-08-25
- Edge 85 Released on 2020-08-27
- Firefox 79 Released on 2020-07-28
- Firefox for Android 79 Released on 2020-07-28
- Safari 14 Released on 2020-09-16
- Safari on iOS 14 Released on 2020-09-16
-
scrollIntoView()
Widely available since 2023-03-16 (baseline high)The
scrollIntoView()
method scrolls an element's ancestor containers such that the element is visible to the user.- Chrome 61 Released on 2017-09-05
- Chrome Android 61 Released on 2017-09-05
- Edge 79 Released on 2020-01-15
- Firefox 36 Released on 2015-02-24
- Firefox for Android 36 Released on 2015-02-27
- Safari 14 Released on 2020-09-16
- Safari on iOS 14 Released on 2020-09-16
-
WebP
Widely available since 2023-03-16 (baseline high)The WebP image format is a raster graphics file format that supports animation, alpha transparency, and lossy as well as lossless compression.
- Chrome 9 Released on 2011-02-03
- Chrome Android 18 Released on 2012-06-27
- Edge 18 Released on 2018-10-02
- Firefox 65 Released on 2019-01-29
- Firefox for Android 65 Released on 2019-01-29
- Safari 14 Released on 2020-09-16
- Safari on iOS 14 Released on 2020-09-16
-
Grid
Widely available since 2023-01-28 (baseline high)CSS Grid is a two-dimensional layout system, which lays content out in rows and columns.
- Chrome 66 Released on 2018-04-17
- Chrome Android 66 Released on 2018-04-17
- Edge 79 Released on 2020-01-15
- Firefox 76 Released on 2020-05-05
- Firefox for Android 79 Released on 2020-07-28
- Safari 12.1 Released on 2019-03-25
- Safari on iOS 12.2 Released on 2019-03-25
-
min(), max(), and clamp()
Widely available since 2023-01-28 (baseline high)The
min()
andmax()
CSS functions return the minimum or maximum of the arguments, whileclamp()
clamps a value to a given range.- Chrome 79 Released on 2019-12-10
- Chrome Android 79 Released on 2019-12-17
- Edge 79 Released on 2020-01-15
- Firefox 75 Released on 2020-04-07
- Firefox for Android 79 Released on 2020-07-28
- Safari 13.1 Released on 2020-03-24
- Safari on iOS 13.4 Released on 2020-03-24
-
Promise.allSettled()
Widely available since 2023-01-28 (baseline high)The
Promise.allSettled()
static method waits for an array of promises to settle (resolve or reject).- Chrome 76 Released on 2019-07-30
- Chrome Android 76 Released on 2019-07-30
- Edge 79 Released on 2020-01-15
- Firefox 71 Released on 2019-12-10
- Firefox for Android 79 Released on 2020-07-28
- Safari 13 Released on 2019-09-19
- Safari on iOS 13 Released on 2019-09-19
-
:read-only and :read-write
Widely available since 2023-01-28 (baseline high)The
:read-only
and:read-write
CSS pseudo-classes match elements that are read-only or read-write, respectively. For example,:read-only
matches<input>
and<textarea>
elements with thereadonly
attribute.- Chrome 1 Released on 2008-12-11
- Chrome Android 18 Released on 2012-06-27
- Edge 13 Released on 2015-11-12
- Firefox 78 Released on 2020-06-30
- Firefox for Android 79 Released on 2020-07-28
- Safari 4 Released on 2009-06-08
- Safari on iOS 3.2 Released on 2010-04-03
-
Web animations
Widely available since 2022-09-24 (baseline high)The web animations API allows you to animate and synchronize the animations of DOM elements.
- Chrome 36 Released on 2014-07-16
- Chrome Android 36 Released on 2014-07-16
- Edge 79 Released on 2020-01-15
- Firefox 48 Released on 2016-08-02
- Firefox for Android 48 Released on 2016-08-02
- Safari 13.1 Released on 2020-03-24
- Safari on iOS 13.4 Released on 2020-03-24
-
Array flat() and flatMap()
Widely available since 2022-07-15 (baseline high)The
flat()
andflatMap()
methods for arrays creates a new array such that each nested array item is concatenated into it.- Chrome 69 Released on 2018-09-04
- Chrome Android 69 Released on 2018-09-04
- Edge 79 Released on 2020-01-15
- Firefox 62 Released on 2018-09-05
- Firefox for Android 62 Released on 2018-09-05
- Safari 12 Released on 2018-09-17
- Safari on iOS 12 Released on 2018-09-17
-
Autonomous custom elements
Widely available since 2022-07-15 (baseline high)Autonomous custom elements are HTML elements with a hyphenated tag name (like
<example-element>
) that have behaviors you define.- Chrome 54 Released on 2016-10-12
- Chrome Android 54 Released on 2016-10-19
- Edge 79 Released on 2020-01-15
- Firefox 63 Released on 2018-10-23
- Firefox for Android 63 Released on 2018-10-23
- Safari 10.1 Released on 2017-03-27
- Safari on iOS 10.3 Released on 2017-03-27
-
:default
Widely available since 2022-07-15 (baseline high)The
:default
CSS pseudo-class matches the default element in a group of related form controls, such as checkboxes and radio buttons with thechecked
attribute.- Chrome 10 Released on 2011-03-08
- Chrome Android 18 Released on 2012-06-27
- Edge 79 Released on 2020-01-15
- Firefox 4 Released on 2011-03-22
- Firefox for Android 4 Released on 2011-03-29
- Safari 5 Released on 2010-06-07
- Safari on iOS 5 Released on 2011-10-12
-
<details>
Widely available since 2022-07-15 (baseline high)The
<details>
element is a disclosure widget which can be expanded to reveal additional content. When closed, only the nested<summary>
element is visible.- Chrome 12 Released on 2011-06-07
- Chrome Android 18 Released on 2012-06-27
- Edge 79 Released on 2020-01-15
- Firefox 49 Released on 2016-09-20
- Firefox for Android 49 Released on 2016-09-20
- Safari 6 Released on 2012-07-25
- Safari on iOS 6 Released on 2012-09-10
-
:indeterminate
Widely available since 2022-07-15 (baseline high)The
:indeterminate
CSS pseudo-class selects any form element whose state is indeterminate, such as checkboxes that have been set to an indeterminate state with JavaScript, or radio buttons which are members of a group in which all radio buttons are unchecked.- Chrome 39 Released on 2014-11-18
- Chrome Android 39 Released on 2014-11-12
- Edge 79 Released on 2020-01-15
- Firefox 51 Released on 2017-01-24
- Firefox for Android 51 Released on 2017-01-24
- Safari 10 Released on 2016-09-20
- Safari on iOS 10 Released on 2016-09-13
-
prefers-color-scheme
Widely available since 2022-07-15 (baseline high)The
prefers-color-scheme
CSS media query detects the requested color scheme, light or dark.- Chrome 76 Released on 2019-07-30
- Chrome Android 76 Released on 2019-07-30
- Edge 79 Released on 2020-01-15
- Firefox 67 Released on 2019-05-21
- Firefox for Android 67 Released on 2019-05-21
- Safari 12.1 Released on 2019-03-25
- Safari on iOS 13 Released on 2019-09-19
-
Shadow DOM
Widely available since 2022-07-15 (baseline high)Shadow DOM allows you to attach encapsulated "shadow" DOM trees to elements. A shadow DOM tree is a separate component, isolated from the scripts and styles in other parts of the document. This is a part of Web Components.
- Chrome 54 Released on 2016-10-12
- Chrome Android 54 Released on 2016-10-19
- Edge 79 Released on 2020-01-15
- Firefox 63 Released on 2018-10-23
- Firefox for Android 63 Released on 2018-10-23
- Safari 10.1 Released on 2017-03-27
- Safari on iOS 10.3 Released on 2017-03-27
-
<slot>
Widely available since 2022-07-15 (baseline high)The
<slot>
HTML element is a placeholder inside a web component where consumers of the component can insert their own markup.- Chrome 53 Released on 2016-08-31
- Chrome Android 53 Released on 2016-09-07
- Edge 79 Released on 2020-01-15
- Firefox 63 Released on 2018-10-23
- Firefox for Android 63 Released on 2018-10-23
- Safari 10 Released on 2016-09-20
- Safari on iOS 10 Released on 2016-09-13
-
Stable array sort
Widely available since 2022-07-15 (baseline high)Stable array sort() function
- Chrome 70 Released on 2018-10-16
- Chrome Android 70 Released on 2018-10-17
- Edge 79 Released on 2020-01-15
- Firefox 3 Released on 2008-06-17
- Firefox for Android 4 Released on 2011-03-29
- Safari 10.1 Released on 2017-03-27
- Safari on iOS 10.3 Released on 2017-03-27
-
WebRTC
Widely available since 2022-07-15 (baseline high)The WebRTC API establishes real-time communication channels directly between browsers. It is commonly used in video conferencing applications.
- Chrome 56 Released on 2017-01-25
- Chrome Android 56 Released on 2017-02-01
- Edge 79 Released on 2020-01-15
- Firefox 44 Released on 2016-01-26
- Firefox for Android 44 Released on 2016-01-26
- Safari 11 Released on 2017-09-19
- Safari on iOS 11 Released on 2017-09-19
-
will-change
Widely available since 2022-07-15 (baseline high)The
will-change
CSS property gives hints to the browser about expected changes to an element's scroll position, contents, or style. These hints allow browsers to optimize for upcoming style changes.- Chrome 36 Released on 2014-07-16
- Chrome Android 36 Released on 2014-07-16
- Edge 79 Released on 2020-01-15
- Firefox 36 Released on 2015-02-24
- Firefox for Android 36 Released on 2015-02-27
- Safari 9.1 Released on 2016-03-21
- Safari on iOS 9.3 Released on 2016-03-21
-
font-optical-sizing
Widely available since 2022-06-17 (baseline high)The
font-optical-sizing
CSS property sets whether text rendering is optimized for viewing at different sizes.- Chrome 79 Released on 2019-12-10
- Chrome Android 79 Released on 2019-12-17
- Edge 17 Released on 2018-04-30
- Firefox 62 Released on 2018-09-05
- Firefox for Android 62 Released on 2018-09-05
- Safari 11 Released on 2017-09-19
- Safari on iOS 11 Released on 2017-09-19
-
Print events
Widely available since 2022-03-19 (baseline high)An alternative to
@media print
queries, thebeforeprint
andafterprint
events allow you to change the page for printing and and restore the page after printing.- Chrome 63 Released on 2017-12-06
- Chrome Android 63 Released on 2017-12-05
- Edge 12 Released on 2015-07-29
- Firefox 6 Released on 2011-08-16
- Firefox for Android 6 Released on 2011-08-16
- Safari 13 Released on 2019-09-19
- Safari on iOS 13 Released on 2019-09-19
-
Sticky positioning
Widely available since 2022-03-19 (baseline high)The
position: sticky
CSS declaration positions an element in the normal flow until it crosses a specified threshold, at which points it becomes fixed (stuck) at that position.- Chrome 56 Released on 2017-01-25
- Chrome Android 56 Released on 2017-02-01
- Edge 16 Released on 2017-10-17
- Firefox 59 Released on 2018-03-13
- Firefox for Android 59 Released on 2018-03-13
- Safari 13 Released on 2019-09-19
- Safari on iOS 13 Released on 2019-09-19
-
Scroll snap
Widely available since 2022-01-09 (baseline high)CSS scroll snap controls the panning and scrolling behavior within a scroll container.
- Chrome 69 Released on 2018-09-04
- Chrome Android 69 Released on 2018-09-04
- Edge 79 Released on 2020-01-15
- Firefox 68 Released on 2019-07-09
- Firefox for Android 68 Released on 2019-07-09
- Safari 11 Released on 2017-09-19
- Safari on iOS 11 Released on 2017-09-19
-
Abortable fetch
Widely available since 2021-09-25 (baseline high)If you construct a fetch request with an
AbortSignal
, you can cancel the request.- Chrome 66 Released on 2018-04-17
- Chrome Android 66 Released on 2018-04-17
- Edge 16 Released on 2017-10-17
- Firefox 57 Released on 2017-11-14
- Firefox for Android 57 Released on 2017-11-28
- Safari 12.1 Released on 2019-03-25
- Safari on iOS 12.2 Released on 2019-03-25
-
AbortController and AbortSignal
Widely available since 2021-09-25 (baseline high)The
AbortController
andAbortSignal
APIs allow you to cancel an ongoing operation, such as afetch()
request.- Chrome 66 Released on 2018-04-17
- Chrome Android 66 Released on 2018-04-17
- Edge 16 Released on 2017-10-17
- Firefox 57 Released on 2017-11-14
- Firefox for Android 57 Released on 2017-11-28
- Safari 12.1 Released on 2019-03-25
- Safari on iOS 12.2 Released on 2019-03-25
-
Intersection observer
Widely available since 2021-09-25 (baseline high)The Intersection Observer API asynchronously observes changes in the intersection of a target element with an ancestor element or with a top-level document's viewport.
- Chrome 58 Released on 2017-04-19
- Chrome Android 58 Released on 2017-04-25
- Edge 16 Released on 2017-10-17
- Firefox 55 Released on 2017-08-08
- Firefox for Android 55 Released on 2017-08-08
- Safari 12.1 Released on 2019-03-25
- Safari on iOS 12.2 Released on 2019-03-25
-
Constraint validation API
Widely available since 2021-06-11 (baseline high)Methods that validate form controls before submission, such as
checkValidity()
,reportValidity()
andsetCustomValidity()
.- Chrome 40 Released on 2015-01-21
- Chrome Android 40 Released on 2015-01-21
- Edge 18 Released on 2018-10-02
- Firefox 51 Released on 2017-01-24
- Firefox for Android 64 Released on 2018-12-11
- Safari 10.1 Released on 2017-03-27
- Safari on iOS 10.3 Released on 2017-03-27
-
Promise finally()
Widely available since 2021-04-02 (baseline high)The promise
finally()
method executes a function when the promise settles (resolves or rejects).- Chrome 63 Released on 2017-12-06
- Chrome Android 63 Released on 2017-12-05
- Edge 18 Released on 2018-10-02
- Firefox 58 Released on 2018-01-23
- Firefox for Android 58 Released on 2018-01-22
- Safari 11.1 Released on 2018-04-12
- Safari on iOS 11.3 Released on 2018-03-29
-
tabindex
Widely available since 2021-04-02 (baseline high)The
tabindex
HTML attribute make an element focusable, and defines the element's relative ordering for sequential focus navigation.- Chrome 1 Released on 2008-12-11
- Chrome Android 18 Released on 2012-06-27
- Edge 18 Released on 2018-10-02
- Firefox 1.5 Released on 2005-11-29
- Firefox for Android 4 Released on 2011-03-29
- Safari 4 Released on 2009-06-08
- Safari on iOS 3.2 Released on 2010-04-03
-
Speech synthesis
Widely available since 2021-03-05 (baseline high)The
SpeechSynthesis
API converts text into audio using a synthetic voice.- Chrome 33 Released on 2014-02-20
- Chrome Android 33 Released on 2014-02-26
- Edge 14 Released on 2016-08-02
- Firefox 49 Released on 2016-09-20
- Firefox for Android 62 Released on 2018-09-05
- Safari 7 Released on 2013-10-22
- Safari on iOS 7 Released on 2013-09-18
-
JavaScript modules
Widely available since 2020-11-09 (baseline high)JavaScript modules allow code to be organized into reusable units. Modules use
import
to load other modules andexport
to declare what is available to import from other modules. In HTML, modules are loaded with<script type="module">
.- Chrome 61 Released on 2017-09-05
- Chrome Android 61 Released on 2017-09-05
- Edge 16 Released on 2017-10-17
- Firefox 60 Released on 2018-05-09
- Firefox for Android 60 Released on 2018-05-09
- Safari 11 Released on 2017-09-19
- Safari on iOS 11 Released on 2017-09-19
-
Viewport units
Widely available since 2020-04-17 (baseline high)The
vw
,vh
,vmin
, andvmax
CSS viewport units are relative to the size of the viewport, and are used to size elements in relation to the viewport's dimensions.- Chrome 26 Released on 2013-03-26
- Chrome Android 26 Released on 2013-04-03
- Edge 16 Released on 2017-10-17
- Firefox 19 Released on 2013-02-19
- Firefox for Android 19 Released on 2013-02-19
- Safari 7 Released on 2013-10-22
- Safari on iOS 7 Released on 2013-09-18
-
Media capture
Widely available since 2020-03-19 (baseline high)The
navigator.mediaDevices.getUserMedia()
API requests access to devices that produce audio or video streams, such as microphones or video cameras.- Chrome 53 Released on 2016-08-31
- Chrome Android 53 Released on 2016-09-07
- Edge 12 Released on 2015-07-29
- Firefox 36 Released on 2015-02-24
- Firefox for Android 36 Released on 2015-02-27
- Safari 11 Released on 2017-09-19
- Safari on iOS 11 Released on 2017-09-19
-
Resource timing (initial support)
Widely available since 2020-03-19 (baseline high)PerformanceResourceTiming
entries report when network events happen while loading a resource, such as when connections start and end. You can use this information to measure loading times.- Chrome 43 Released on 2015-05-19
- Chrome Android 43 Released on 2015-05-27
- Edge 12 Released on 2015-07-29
- Firefox 35 Released on 2015-01-13
- Firefox for Android 35 Released on 2015-01-13
- Safari 11 Released on 2017-09-19
- Safari on iOS 11 Released on 2017-09-19
-
Async functions
Widely available since 2019-10-05 (baseline high)The
async
andawait
keywords allow you to use the asynchronous, promise-based behavior of a function without using promise chains.- Chrome 55 Released on 2016-12-01
- Chrome Android 55 Released on 2016-12-06
- Edge 15 Released on 2017-04-05
- Firefox 52 Released on 2017-03-07
- Firefox for Android 52 Released on 2017-03-07
- Safari 10.1 Released on 2017-03-27
- Safari on iOS 10.3 Released on 2017-03-27
-
Custom properties
Widely available since 2019-10-05 (baseline high)Custom properties are CSS properties prefixed with
--
that set values you can reuse with thevar()
function. For example, you can set a--key-color
property to reuse asborder-color: var(--key-color)
. Also known as CSS variables.- Chrome 49 Released on 2016-03-02
- Chrome Android 49 Released on 2016-03-09
- Edge 15 Released on 2017-04-05
- Firefox 31 Released on 2014-07-22
- Firefox for Android 31 Released on 2014-07-22
- Safari 9.1 Released on 2016-03-21
- Safari on iOS 9.3 Released on 2016-03-21
-
Classes
Widely available since 2019-09-27 (baseline high)Classes are an object-oriented syntax for JavaScript prototypes.
- Chrome 42 Released on 2015-04-14
- Chrome Android 42 Released on 2015-04-15
- Edge 13 Released on 2015-11-12
- Firefox 45 Released on 2016-03-08
- Firefox for Android 45 Released on 2016-03-08
- Safari 10.1 Released on 2017-03-27
- Safari on iOS 10.3 Released on 2017-03-27
-
Fetch (initial support)
Widely available since 2019-09-27 (baseline high)The
fetch()
method makes asynchronous HTTP requests.- Chrome 42 Released on 2015-04-14
- Chrome Android 42 Released on 2015-04-15
- Edge 14 Released on 2016-08-02
- Firefox 39 Released on 2015-07-02
- Firefox for Android 39 Released on 2015-07-02
- Safari 10.1 Released on 2017-03-27
- Safari on iOS 10.3 Released on 2017-03-27
-
Border images
Widely available since 2019-08-01 (baseline high)The
border-image
CSS property draws an image around an element.- Chrome 56 Released on 2017-01-25
- Chrome Android 56 Released on 2017-02-01
- Edge 12 Released on 2015-07-29
- Firefox 50 Released on 2016-11-15
- Firefox for Android 50 Released on 2016-11-15
- Safari 9.1 Released on 2016-03-21
- Safari on iOS 9.3 Released on 2016-03-21
-
Array copyWithin()
Widely available since 2019-03-20 (baseline high)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.- Chrome 45 Released on 2015-09-01
- Chrome Android 45 Released on 2015-09-01
- Edge 12 Released on 2015-07-29
- Firefox 32 Released on 2014-09-02
- Firefox for Android 32 Released on 2014-09-02
- Safari 10 Released on 2016-09-20
- Safari on iOS 10 Released on 2016-09-13
-
Array.from()
Widely available since 2019-03-20 (baseline high)The
Array.from()
and typed array.from()
static methods copy items from an iterable or array-like object to make a new array.- Chrome 45 Released on 2015-09-01
- Chrome Android 45 Released on 2015-09-01
- Edge 12 Released on 2015-07-29
- Firefox 38 Released on 2015-05-12
- Firefox for Android 38 Released on 2015-05-12
- Safari 10 Released on 2016-09-20
- Safari on iOS 10 Released on 2016-09-13
-
Array includes()
Widely available since 2019-03-20 (baseline high)The
includes()
method of arrays and typed arrays returns whether a given value appears in the array.- Chrome 47 Released on 2015-12-01
- Chrome Android 47 Released on 2015-12-02
- Edge 14 Released on 2016-08-02
- Firefox 43 Released on 2015-12-15
- Firefox for Android 43 Released on 2015-12-15
- Safari 10 Released on 2016-09-20
- Safari on iOS 10 Released on 2016-09-13
-
Array iterators
Widely available since 2019-03-20 (baseline high)Arrays are iterable with the
for…of
statement and enumerable with the methodsentries()
,keys()
, andvalues()
.- Chrome 38 Released on 2014-10-07
- Chrome Android 38 Released on 2014-10-08
- Edge 12 Released on 2015-07-29
- Firefox 36 Released on 2015-02-24
- Firefox for Android 36 Released on 2015-02-27
- Safari 10 Released on 2016-09-20
- Safari on iOS 10 Released on 2016-09-13
-
Array.of()
Widely available since 2019-03-20 (baseline high)The
Array.of()
and typed array.of()
static methods create new arrays from the values of any number of arguments.- Chrome 45 Released on 2015-09-01
- Chrome Android 39 Released on 2014-11-12
- Edge 12 Released on 2015-07-29
- Firefox 25 Released on 2013-10-29
- Firefox for Android 25 Released on 2013-10-29
- Safari 10 Released on 2016-09-20
- Safari on iOS 10 Released on 2016-09-13
-
@font-face
Widely available since 2019-03-20 (baseline high)The
@font-face
CSS at-rule creates a customfont-family
value. The at-rule's descriptors set the font's name, source, and various display settings.- Chrome 36 Released on 2014-07-16
- Chrome Android 36 Released on 2014-07-16
- Edge 14 Released on 2016-08-02
- Firefox 39 Released on 2015-07-02
- Firefox for Android 39 Released on 2015-07-02
- Safari 10 Released on 2016-09-20
- Safari on iOS 10 Released on 2016-09-13
-
Typed array iterators
Widely available since 2019-03-20 (baseline high)Typed arrays are iterable with the
for…of
statement and enumerable with the methodsentries()
,keys()
, andvalues()
.- Chrome 38 Released on 2014-10-07
- Chrome Android 38 Released on 2014-10-08
- Edge 12 Released on 2015-07-29
- Firefox 36 Released on 2015-02-24
- Firefox for Android 36 Released on 2015-02-27
- Safari 10 Released on 2016-09-20
- Safari on iOS 10 Released on 2016-09-13
-
Typed array iteration methods
Widely available since 2018-09-21 (baseline high)Typed array iteration methods
- Chrome 45 Released on 2015-09-01
- Chrome Android 45 Released on 2015-09-01
- Edge 12 Released on 2015-07-29
- Firefox 37 Released on 2015-03-31
- Firefox for Android 37 Released on 2015-03-31
- Safari 9.1 Released on 2016-03-21
- Safari on iOS 9.3 Released on 2016-03-21
-
<template>
Widely available since 2018-05-12 (baseline high)The
<template>
HTML element holds HTML fragments which you can clone and insert into the document using JavaScript.- Chrome 26 Released on 2013-03-26
- Chrome Android 26 Released on 2013-04-03
- Edge 13 Released on 2015-11-12
- Firefox 22 Released on 2013-06-25
- Firefox for Android 22 Released on 2013-06-25
- Safari 8 Released on 2014-10-16
- Safari on iOS 8 Released on 2014-09-17
-
Flexbox
Widely available since 2018-03-30 (baseline high)Flexbox is a one-dimensional layout system, which places content either horizontally or vertically, with optional wrapping.
- Chrome 29 Released on 2013-08-20
- Chrome Android 29 Released on 2013-08-21
- Edge 12 Released on 2015-07-29
- Firefox 28 Released on 2014-03-18
- Firefox for Android 28 Released on 2014-03-18
- Safari 9 Released on 2015-09-30
- Safari on iOS 9 Released on 2015-09-16
-
HTTP/2
Widely available since 2018-03-30 (baseline high)The HTTP/2 protocol is a major revision of the HTTP network protocol, providing improved performance and efficiency by using a single TCP connection to send multiple streams of data at once.
- Chrome 41 Released on 2015-03-03
- Chrome Android 41 Released on 2015-03-11
- Edge 12 Released on 2015-07-29
- Firefox 36 Released on 2015-02-24
- Firefox for Android 36 Released on 2015-02-27
- Safari 9 Released on 2015-09-30
- Safari on iOS 9 Released on 2015-09-16
-
2D transforms
Widely available since 2018-03-30 (baseline high)The
transform
CSS property and its 2D transform functions allow rotating, scaling, skewing, and translating an element. Arbitrary 2D transforms are also possible using a transformation matrix.- Chrome 36 Released on 2014-07-16
- Chrome Android 36 Released on 2014-07-16
- Edge 12 Released on 2015-07-29
- Firefox 16 Released on 2012-10-09
- Firefox for Android 16 Released on 2012-10-09
- Safari 9 Released on 2015-09-30
- Safari on iOS 9 Released on 2015-09-16
-
Array fill()
Widely available since 2018-03-01 (baseline high)The
fill()
method of arrays and typed arrays sets all or some items of an array to a given a value.- Chrome 45 Released on 2015-09-01
- Chrome Android 45 Released on 2015-09-01
- Edge 12 Released on 2015-07-29
- Firefox 31 Released on 2014-07-22
- Firefox for Android 31 Released on 2014-07-22
- Safari 8 Released on 2014-10-16
- Safari on iOS 8 Released on 2014-09-17
-
Array find() and findIndex()
Widely available since 2018-03-01 (baseline high)The
find()
andfindIndex()
methods of arrays and typed arrays search an array for the first item that satisfies a test function.- Chrome 45 Released on 2015-09-01
- Chrome Android 45 Released on 2015-09-01
- Edge 12 Released on 2015-07-29
- Firefox 25 Released on 2013-10-29
- Firefox for Android 4 Released on 2011-03-29
- Safari 8 Released on 2014-10-16
- Safari on iOS 8 Released on 2014-09-17
-
Array (initial support)
Widely available since 2018-01-29 (baseline high)Arrays are ordered lists of JavaScript values.
- Chrome 1 Released on 2008-12-11
- Chrome Android 18 Released on 2012-06-27
- Edge 12 Released on 2015-07-29
- Firefox 1 Released on 2004-11-09
- Firefox for Android 4 Released on 2011-03-29
- Safari 1 Released on 2003-06-23
- Safari on iOS 1 Released on 2007-06-29
-
Array.isArray()
Widely available since 2018-01-29 (baseline high)The
Array.isArray()
static method checks whether a value is an array.- Chrome 4 Released on 2010-01-25
- Chrome Android 18 Released on 2012-06-27
- Edge 12 Released on 2015-07-29
- Firefox 4 Released on 2011-03-22
- Firefox for Android 4 Released on 2011-03-29
- Safari 5 Released on 2010-06-07
- Safari on iOS 5 Released on 2011-10-12
-
Array iteration methods
Widely available since 2018-01-29 (baseline high)Array iteration methods
- Chrome 3 Released on 2009-09-15
- Chrome Android 18 Released on 2012-06-27
- Edge 12 Released on 2015-07-29
- Firefox 3 Released on 2008-06-17
- Firefox for Android 4 Released on 2011-03-29
- Safari 4 Released on 2009-06-08
- Safari on iOS 3.2 Released on 2010-04-03
-
Array splice()
Widely available since 2018-01-29 (baseline high)The array
splice()
method changes an array in-place. You can use it to delete items, overwrite items, or insert items, starting from an index.- Chrome 1 Released on 2008-12-11
- Chrome Android 18 Released on 2012-06-27
- Edge 12 Released on 2015-07-29
- Firefox 1 Released on 2004-11-09
- Firefox for Android 4 Released on 2011-03-29
- Safari 1 Released on 2003-06-23
- Safari on iOS 1 Released on 2007-06-29
-
Autofocus
Widely available since 2018-01-29 (baseline high)The
autofocus
HTML attribute gives focus to an element on page load.- Chrome 1 Released on 2008-12-11
- Chrome Android 18 Released on 2012-06-27
- Edge 12 Released on 2015-07-29
- Firefox 1 Released on 2004-11-09
- Firefox for Android 4 Released on 2011-03-29
- Safari 4 Released on 2009-06-08
- Safari on iOS 3.2 Released on 2010-04-03
-
background-clip
Widely available since 2018-01-29 (baseline high)The
background-clip
CSS property sets the extent of the background: the padding box, the content box, or the default border box.- Chrome 1 Released on 2008-12-11
- Chrome Android 18 Released on 2012-06-27
- Edge 12 Released on 2015-07-29
- Firefox 4 Released on 2011-03-22
- Firefox for Android 4 Released on 2011-03-29
- Safari 5 Released on 2010-06-07
- Safari on iOS 5 Released on 2011-10-12
-
calc()
Widely available since 2018-01-29 (baseline high)The
calc()
CSS function computes mathematical expressions such acalc(100%/3 - 1em)
.- Chrome 26 Released on 2013-03-26
- Chrome Android 28 Released on 2013-07-10
- Edge 12 Released on 2015-07-29
- Firefox 16 Released on 2012-10-09
- Firefox for Android 16 Released on 2012-10-09
- Safari 7 Released on 2013-10-22
- Safari on iOS 7 Released on 2013-09-18
-
Canvas text metrics
Widely available since 2018-01-29 (baseline high)The
fillText()
andstrokeText()
methods draw text to a 2D canvas. ThemeasureText()
method measures the width and other metrics which can be used to position the text.- Chrome 2 Released on 2009-05-21
- Chrome Android 18 Released on 2012-06-27
- Edge 12 Released on 2015-07-29
- Firefox 3.5 Released on 2009-06-30
- Firefox for Android 31 Released on 2014-07-22
- Safari 4 Released on 2009-06-08
- Safari on iOS 3.2 Released on 2010-04-03
-
HTTP/1.1
Widely available since 2018-01-29 (baseline high)HTTP/1.1 is a network protocol used by browsers and servers. It has been superseded by HTTP/2 and HTTP/3.
- Chrome 1 Released on 2008-12-11
- Chrome Android 18 Released on 2012-06-27
- Edge 12 Released on 2015-07-29
- Firefox 1 Released on 2004-11-09
- Firefox for Android 4 Released on 2011-03-29
- Safari 1 Released on 2003-06-23
- Safari on iOS 1 Released on 2007-06-29
-
Map (initial support)
Widely available since 2018-01-29 (baseline high)Map objects hold key-value pairs and remember the original insertion order of the keys.
- Chrome 38 Released on 2014-10-07
- Chrome Android 38 Released on 2014-10-08
- Edge 12 Released on 2015-07-29
- Firefox 13 Released on 2012-06-05
- Firefox for Android 14 Released on 2012-06-26
- Safari 8 Released on 2014-10-16
- Safari on iOS 8 Released on 2014-09-17
-
:nth-child() (initial support)
Widely available since 2018-01-29 (baseline high)The
:nth-child()
and:nth-last-child()
CSS functional pseudo-classes match elements by the relative position of elements (first, second, third, fourth, and so on), counted from the first or last sibling.- Chrome 4 Released on 2010-01-25
- Chrome Android 18 Released on 2012-06-27
- Edge 12 Released on 2015-07-29
- Firefox 3.5 Released on 2009-06-30
- Firefox for Android 4 Released on 2011-03-29
- Safari 3.1 Released on 2008-03-18
- Safari on iOS 2 Released on 2008-07-11
-
Promise (initial support)
Widely available since 2018-01-29 (baseline high)A promise represents an asynchronous operation which eventually succeeds or fails.
- Chrome 32 Released on 2014-01-14
- Chrome Android 32 Released on 2014-01-15
- Edge 12 Released on 2015-07-29
- Firefox 29 Released on 2014-04-29
- Firefox for Android 29 Released on 2014-04-29
- Safari 8 Released on 2014-10-16
- Safari on iOS 8 Released on 2014-09-17
-
requestAnimationFrame()
Widely available since 2018-01-29 (baseline high)The
requestAnimationFrame()
method schedules a function that runs before the next repaint. You can use it to animate content with JavaScript.- Chrome 24 Released on 2013-01-10
- Chrome Android 25 Released on 2013-02-27
- Edge 12 Released on 2015-07-29
- Firefox 23 Released on 2013-08-06
- Firefox for Android 23 Released on 2013-08-06
- Safari 7 Released on 2013-10-22
- Safari on iOS 7 Released on 2013-09-18
-
<input type="search">
Widely available since 2018-01-29 (baseline high)The
<input>
HTML element with thetype="search"
attribute represents a text field for search queries, which might be styled differently by the browser.- Chrome 5 Released on 2010-05-25
- Chrome Android 18 Released on 2012-06-27
- Edge 12 Released on 2015-07-29
- Firefox 4 Released on 2011-03-22
- Firefox for Android 4 Released on 2011-03-29
- Safari 5 Released on 2010-06-07
- Safari on iOS 4.2 Released on 2010-11-22
-
Set (initial support)
Widely available since 2018-01-29 (baseline high)Set objects store unique values of any type.
- Chrome 38 Released on 2014-10-07
- Chrome Android 38 Released on 2014-10-08
- Edge 12 Released on 2015-07-29
- Firefox 13 Released on 2012-06-05
- Firefox for Android 14 Released on 2012-06-26
- Safari 8 Released on 2014-10-16
- Safari on iOS 8 Released on 2014-09-17
-
text-indent
Widely available since 2018-01-29 (baseline high)The
text-indent
CSS property sets the size of the empty space (indentation) at the beginning of lines in a text.- Chrome 1 Released on 2008-12-11
- Chrome Android 18 Released on 2012-06-27
- Edge 12 Released on 2015-07-29
- Firefox 1 Released on 2004-11-09
- Firefox for Android 4 Released on 2011-03-29
- Safari 1 Released on 2003-06-23
- Safari on iOS 1 Released on 2007-06-29
-
Typed arrays (initial support)
Widely available since 2018-01-29 (baseline high)Typed arrays are ordered lists of JavaScript values, where all values are of the same numerical type, such as 8-bit integers or 32-bit floating point numbers.
- Chrome 7 Released on 2010-10-19
- Chrome Android 18 Released on 2012-06-27
- Edge 12 Released on 2015-07-29
- Firefox 4 Released on 2011-03-22
- Firefox for Android 4 Released on 2011-03-29
- Safari 5.1 Released on 2011-07-20
- Safari on iOS 4.2 Released on 2010-11-22
-
WebVTT
Widely available since 2018-01-29 (baseline high)WebVTT is a captions and subtitles format. WebVTT files are loaded using the
<track>
element, and theVTTCue
API can be used to create or update cues dynamically.- Chrome 23 Released on 2012-11-06
- Chrome Android 25 Released on 2013-02-27
- Edge 12 Released on 2015-07-29
- Firefox 31 Released on 2014-07-22
- Firefox for Android 31 Released on 2014-07-22
- Safari 6 Released on 2012-07-25
- Safari on iOS 8 Released on 2014-09-17