📃 January 2020 release notes
Newly available
The following features are newly available:
-
all:
The
all
CSS property is a shorthand for all CSS properties, except fordirection
andunicode-bidi
. It accepts only the keywords for explicit defaulting (such asinitial
andinherit
), since they are the only values supported on all CSS properties. -
Array flat() and flatMap():
The
flat()
andflatMap()
methods for arrays creates a new array such that each nested array item is concatenated into it. -
Async generators:
Async generator functions (
async function*
) create iterators that return multiple promises, one after another, on-demand. -
Async iterators and the for await..of loop:
Asynchronous iterator objects, such as those returned by promises or generator functions, are iterable with the
for await .. of
loop. -
Autonomous custom elements:
Autonomous custom elements are HTML elements with a hyphenated tag name (like
<example-element>
) that have behaviors you define. -
background-blend-mode:
The
background-blend-mode
CSS property blends an element's background image and background color using blend modes likemultiply
,difference
, orcolor
. -
<bdi>:
The
<bdi>
element isolates text that may have a different text direction from its surrounding text. This prevents the browser's bidirectional text algorithm from affecting or being affected by the direction of the surrounding text. -
captureStream() for <canvas>:
The
captureStream()
method for<canvas>
elements returns aMediaStream
which includes aCanvasCaptureMediaStreamTrack
representing real-time video of the canvas image. You can use this to record the canvas, or send it elsewhere, such as another canvas or WebRTC connection. -
caret-color:
The
caret-color
CSS property sets the color of the text insertion pointer in a text input. -
Case-insensitive attribute selector:
The
i
identifier in a CSS attribute selector matches attribute values case-insensitively in document languages like XML where attribute values are case-sensitive. - COLRv0: COLRv0 is a font format that supports multi-color glyphs. COLRv0 supports only solid colors.
-
Credential management:
The
navigator.credentials
API provides generic storage for authentication credentials. Other credential APIs represent specific kinds of credentials, such as password or public key credentials, that the credential management API stores. -
CSS.escape():
The
CSS.escape()
static method escapes a string so that it can be used in a valid CSS selector. -
CSS.supports():
The
CSS.supports()
static method returns whether the browser supports a CSS declaration (given by two arguments, a property and value) or an@supports
at-rule condition string. -
:default:
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. - Destructuring: The destructuring assignment syntax is a JavaScript expression that unpacks values from arrays, or properties from objects, into distinct variables.
-
<details>:
The
<details>
element is a disclosure widget which can be expanded to reveal additional content. When closed, only the nested<summary>
element is visible. -
display: flow-root:
The
display: flow-root
CSS declaration sets an element as the root element of a new flow layout for its children, preventing margin collapse with sibling elements. -
DOM Geometry:
The
DOMMatrix
,DOMPoint
,DOMQuad
andDOMRect
interfaces offer a way to represent points, rectangles, quadrilaterals and transformation matrices within JavaScript. They can be used in transformations in CSS,<canvas>
, and SVG. -
document.elementFromPoint() and document.elementsFromPoint():
The
document.elementFromPoint()
anddocument.elementsFromPoint()
methods find the top-most element at a given point in the viewport, or all elements at a given point in the viewport, respectively. -
<embed>:
The
<embed>
element represents an external resource such as a PDF or SVG document. It was historically used for plugins such as Shockwave Flash. -
File API:
The File API represents and reads from file data and metadata. Typically, you get files through other APIs, such as the
<input type="file">
element or drag-and-drop events. You may also send file data to other APIs, such as creating images or drawing on canvases. -
:focus-within:
The
:focus-within
CSS pseudo-class matches an element if the element or any of its children are focused. -
font-display:
The
font-display
CSS descriptor sets whether to show a substitute font or nothing while a font face loads. The property manages what's known as a flash of unstyled text or flash of invisible text. -
font-kerning:
The
font-kerning
CSS property sets whether kerning data from a font is used to adjust the space between letters. -
Font loading:
The
document.fonts
API dynamically loads custom fonts and tracks when fonts are loading or ready to use. -
font-variant-caps:
The
font-variant-caps
CSS property sets whether text should be displayed in small caps, petite caps, or with capital letters designed for titles. -
font-variant-east-asian:
The
font-variant-east-asian
CSS property controls glyph substitution and sizing in East Asian text. -
font-variant-ligatures:
The
font-variant-ligatures
CSS property sets how characters can be visually combined for readability or stylistic reasons. -
font-variant-numeric:
The
font-variant-numeric
CSS property sets how numeric characters are displayed. For example, you can align columns of numbers or use zeroes that have a slash. -
globalThis:
The
globalThis
property accesses the globalthis
value (and hence the global object itself) across environments. -
Host:
The
:host
CSS pseudo-class selects the containing element of the shadow tree in which it is used. The:host()
CSS pseudo-class selects the that element only if it matches the provided selector. -
HSL:
The
hsl()
andhsla()
CSS functions pick colors using hue, saturation, lightness, and alpha (transparency) channels. -
srcdoc:
The
srcdoc
attribute for the<iframe>
HTML element sets a string of HTML to embed in the document. The value ofsrcdoc
overrides loading a document from thesrc
attribute. -
:indeterminate:
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. -
Input events:
The
input
event fires when a form control changes or an element with thecontenteditable
attribute changes. -
isolation:
The
isolation
CSS property creates a new stacking context, which impactsz-index
ordering and blend modes. -
Layout direction override:
The
unicode-bidi
anddirection
CSS properties override the Unicode layout algorithm. They are intended for Document Type Definition (DTD) designers. For HTML documents, you should use thedir
global HTML attribute and<bdo>
HTML element instead. -
<link rel="dns-prefetch">:
The
rel="dns-prefetch"
attribute for the<link>
HTML element is a hint to the browser that the page or user is likely to request resources from another domain, so the browser should preemptively resolve DNS for thehref
value's domain. -
<link rel="preconnect">:
The
rel="preconnect"
attribute for the<link>
HTML element is a hint to the browser that the page or user is likely to request resources from another origin, so the browser should preemptively start a connection to thehref
value's origin. -
Link selectors:
The
:link
CSS pseudo-class matches unvisited links,:visited
matches visited links, and:any-link
matches both. -
mask-type:
The
mask-type
CSS property on an SVG<mask>
element sets whether the mask is aluminance
oralpha
mask. -
min-content and max-content:
The
min-content
andmax-content
CSS keywords represent the smallest and largest intrinsic sizes of an element. -
mix-blend-mode:
The
mix-blend-mode
CSS property blends an element's content with its background or parent elements using blend modes likemultiply
,difference
, orcolor
. - Mixed content handling: When a document is loaded over HTTPS, browsers ensure that none of the document's resources are loaded over an insecure protocol. Instead, resources that the document attempts to load over an insecure protocol are either loaded over HTTPS or are blocked.
-
object-fit:
The
object-fit
CSS property sets how images, videos, and other replaced elements are scaled within their container. -
object-position:
The
object-position
CSS property places images, videos, and other replaced elements within their boxes. -
Optional catch binding:
Omit the the binding parameter of a
catch
clause when you don't need information about the exception in atry ... catch
statement. -
::placeholder:
The
::placeholder
CSS pseudo-element selects help text in<input>
and<textarea>
elements when no value is set. -
:placeholder-shown:
The
:placeholder-shown
CSS pseudo-element selects<input>
and<textarea>
elements when no value is set and the element'splaceholder
attribute is not empty. Not to be confused with::placeholder
, which selects the placeholder text itself. -
prefers-color-scheme media query:
The
prefers-color-scheme
CSS media query sets styles based on the requested color scheme, light or dark. -
prefers-reduced-motion media query:
The
prefers-reduced-motion
CSS media query sets styles based on whether the user prefers to minimize the amount of non-essential animations on the device, such as scrolling, panning, zooming, and strobing. -
RGB:
The
rgb()
, rgba(), and hexadecimal (as in
#004488ff`) notations pick colors using red, green, blue, and alpha (transparency) channels. -
Safe area inset environment variables:
The
safe-area-inset-
CSS environment variables represent a rectangle that cannot cut off content within a non-rectangular screen. For example,top:\ env(safe-area-inset-top);
positions the top of an element below the notch on an iPhone. -
:scope (pseudo-class):
The
:scope
CSS pseudo-class matches the scoping root, for instance the element thatquerySelector()
is called on, or the root of a DOM subtree specified with@scope
. - Scroll snap: CSS scroll snap controls the panning and scrolling behavior within a scroll container.
-
Server-sent events:
The
EventSource
API creates a connection to a server and listens to a stream of events sent by the server. - Shadow DOM: 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.
-
shape-outside:
The
shape-outside
CSS property, along withshape-margin
andshape-image-threshold
, sets the shape around which adjacent content will wrap. -
shapes:
The
circle()
,ellipse()
,inset()
,polygon()
,rect()
, andxywh()
CSS shape functions create shapes for use withclip-path
andshape-outside
. -
<slot>:
The
<slot>
HTML element is a placeholder inside a web component where consumers of the component can insert their own markup. -
SMIL SVG animations:
The
<animate>
,<animateMotion>
, and<animateTransform>
SVG elements declaratively animate SVG elements. Also known as SMIL. -
Sourcemap header:
The
Sourcemap
HTTP response header links generated code to a source map, so the browser shows the original source in a debugger. This makes it easier to work with minified or transpiled code. -
Spread syntax:
The spread (
...
) syntax allows an iterable, such as an array or string, to be expanded in places where zero or more arguments (for function calls) or elements (for array literals) are expected. - Stable array sort: Stable array sort() function
-
String matchAll():
The
matchAll()
method of strings matches a string against a regular expression and returns an iterator of all results, including capturing groups. -
String trimStart() and trimEnd():
The
trimStart()
andtrimEnd()
methods of strings return a new string with whitespace removed from the beginning or end of the string. -
SVG:
The SVG image format, represented by the
<svg>
element, creates two-dimensional vector graphics with declarative or scripted interaction and animation. - 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.
-
Text encoding and decoding:
The
TextEncoder
API transforms a stream of code points into a byte stream with UTF-8 encoding, andTextDecoder
does the reverse. -
WEBGL_compressed_texture_astc WebGL extension:
The
WEBGL_compressed_texture_astc
extension for WebGL 1.0 and 2.0 contexts adds the Adaptive Scalable Texture Compression format tocompressedTexImage2D()
andcompressedTexSubImage2D()
. - WebRTC: The WebRTC API establishes real-time communication channels directly between browsers. It is commonly used in video conferencing applications.
-
WebRTC statistics:
The
RTCPeerConnection.getStats()
,RTCRtpSender.getStats()
, andRTCRtpReceiver.getStats()
methods return detailed information about the status, performance, network, and media for a given WebRTC connection. -
WebVTT cue settings:
The
VTTCue
API updates various aspects of cues dynamically, such as alignment, size and position. -
will-change:
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.
New in Edge
The following features are now available in Edge:
-
Alt text for generated content:
The
/
notation incontent
CSS property values adds alternative text to generated content. For example, thecontent: url('upvote-icon.svg') / 'Upvote'
declaration adds accessible 'Upvote' text to the SVG icon. Also known as alternate text. -
Async clipboard:
The
navigator.clipboard
API asynchronously reads and writes to the system clipboard. -
AudioWorklet:
The
AudioWorklet
API runs module code in a separate thread, specifically for non-blocking, low latency audio processing. -
Autocapitalize:
The
autocapitalize
global HTML attribute sets the virtual keyboard capitalization behavior for user input on an element, such as the first letter of sentences or all words. -
::backdrop:
The
::backdrop
CSS pseudo-element is a box underneath an element in the top layer, such as a<dialog>
. It can be used to create obscuring effects distinguishing a modal element from the elements underneath. -
backdrop-filter:
The
backdrop-filter
CSS property applies graphical effects such as blurring or color shifting to the area behind an element. - Background fetch: Background fetch downloads data in the background even when the web page is closed.
- Background sync: The background synchronization API registers a service worker callback to run only when the device is no longer offline. You can use this to let users continue using your app while offline and synchronize with a server after reconnecting.
-
Battery status:
The
navigator.getBattery()
API obtains information about the device's battery, including charge level and status. Also known as the Battery API. -
BigInt:
The
BigInt
JavaScript type represents integers of any size, including integers too large for the primitiveNumber
type. -
BigInt64Array:
The
BigInt64Array
andBigUint64Array
typed arrays represent 64-bit integers, signed and unsigned respectively. -
BroadcastChannel:
The
BroadcastChannel
API allows you to send messages between same-origin browsing contexts, such as between the same page loaded in multiple tabs. -
Desynchronized 2D canvas:
The optional
desynchronized
parameter of a canvas'sgetContext()
method permits the browser to draw a 2D canvas independently of the event loop. This can reduce drawing latency. -
captureStream() for <audio> and <video>:
The
captureStream()
method for<audio>
and<video>
elements returns aMediaStream
for the media element's content. You can use this to record media or send it elsewhere, such as a canvas or WebRTC connection. -
Animatable clipping paths:
The
clip-path
property can be animated using CSS transitions and animations. -
color-gamut media query:
The
color-gamut
media query sets styles based on the colors a device can display. -
Conic gradients:
The
conic-gradient()
andrepeating-conic-gradient()
CSS functions create backgrounds that progress between two or more colors around a center point. -
Constructed stylesheets:
The
CSSStyleSheet
constructor creates a new stylesheet which can be shared between a document and multiple shadow roots usingadoptedStyleSheets
. -
contain:
The
contain
CSS property sets limits to the scope of styles, layout, and paint rendering for speed and efficiency. Thenone
keyword value disables containment,strict
is equivalent tocontain: size layout style paint
, andcontent
is equivalent tocontain: layout style paint
. -
Layout containment:
The
contain: layout
CSS declaration isolates the inside of an element such that it cannot affect the layout of the rest of the page or be affected by the rest of the page. This permits the browser to avoid slower layout calculations. -
Paint containment:
The
contain: paint
CSS declaration prevents an element's descendants from being drawn outside the boundaries of the containing element, with any overflow clipped. This permits the browser to avoid slower painting calculations. -
Size containment:
The
contain: size
CSS declaration sets an element's dimensions exclusively by itsheight
andwidth
properties, ignoring its contents and descendants. This permits the browser to avoid slower layout calculations. -
Style containment:
The
contain: style
CSS declaration permits the browser to avoid slower layout calculations by preventing modification to counter (counter-increment
andcounter-set
) and quotation styles (content
property quote values) beyond the element's descendants. -
Contenteditable:
The
contenteditable
global HTML attribute allows the user to edit the content of an element, such as inserting or deleting text. -
controlslist:
The
controlslist
attribute for<audio>
or<video>
hides parts of the browser's built-in controls. For example,controlslist="nofullscreen"
removes the button to play the video in fullscreen. -
createImageBitmap:
The
createImageBitmap()
global method creates anImageBitmap
object from a source such as an image, SVG, blob, or canvas. AnImageBitmap
object represents pixel data that can be drawn to a canvas with lower latency than other types, such asImageData
. -
CSS typed object model:
The
CSSStyleValue
and its subclasses represent CSS values as distinct types instead of only strings. Also known as typed OM. -
Cursor styles:
The
cursor
CSS property styles the pointer, allowing you to provide hints to the user on how to interact with the hovered element. -
Customized built-in elements:
Customized built-in elements are HTML elements that extend built-in elements using the
is
attribute, to add new behaviors that you define. -
Device memory:
The
navigator.deviceMemory
property returns the approximate amount of device memory, in gigabytes. -
<dialog>:
The
<dialog>
HTML element represents a modal or non-modal dialog box, such as a confirmation prompt or a subwindow used to enter data. -
dirname:
The
dirname
attribute of<textarea>
and<input>
HTML elements includes the field's writing direction as form data on submission. -
Element timing:
The
element
performance entry and thePerformanceElementTiming
API measures the time to render elements that have theelementtiming
attribute. -
Enterkeyhint:
The
enterkeyhint
global HTML attribute sets the label for a virtual keyboard's Enter key. For example,enterkeyhint="search"
may label the key with a magnifying glass icon. -
Event timing:
The
event
andfirst-input
performance entries and thePerformanceEventTiming
API measures the latency of user input events, such as mouse clicks or keypresses, and the latency of the first user input. First Input Delay (FID) is a common metric for perceived responsiveness. -
EXT_color_buffer_float WebGL extension:
The
EXT_color_buffer_float
extension for WebGL 2.0 contexts adds color-renderable floating point formats torenderbufferStorage()
. -
EXT_float_blend WebGL extension:
The
EXT_float_blend
extension for WebGL 1.0 and 2.0 contexts adds 32-bit floating-point components to blending and draw buffers. -
Federated credentials:
The
FederatedCredential
API represents the details required to authenticate a user using a third-party identity provider. Not to be confused with federated credential management (FedCM). -
fit-content:
The
fit-content
CSS keyword expands a box as needed to fit its contents until the maximum size is reached, preserving the content's preferred aspect ratio. -
System font:
The
font-family: system-ui
CSS declaration uses the operating system default font for text. -
Forced colors:
The
forced-colors
CSS @media rule detects when a user has chosen to use a forced colors mode, also known as high-contrast mode, and theforced-color-adjust
CSS property sets whether forced colors apply to an element. -
Form-associated custom elements:
Custom elements may act like built-in form elements, via the the
attachInternals()
method ofHTMLElement
and theElementInternals
API. - Fullscreen API: The fullscreen API makes a specific element fill the whole screen and hides most browser UI.
-
Gamepad haptic feedback:
The
gamepad.vibrationActuator
property represents a gamepad's haptics hardware, which allows you to control the vibration motors in a gamepad. -
Gyroscope:
The
Gyroscope
API reads the angular velocity of a device in three dimensions. -
Hashbang comments:
The
#!
comment at the absolute start of a script or module is treated as a normal comment and is ignored by the JavaScript engine. -
host-context:
The
:host-context()
CSS pseudo-class selects the containing element of the shadow tree in which it is used if that element or an ancestor matches the provided selector. -
image-rendering:
The
image-rendering
CSS property sets how images are scaled, retaining smoothness for photos, or hard edges for pixel art and QR codes. - IndexedDB: The IndexedDB API is a local storage transactional object database.
-
Intersection observer visibility tracking:
The
trackVisibility
parameter for theIntersectionObserver
constructor enables tracking the visibility of an element, to detect if it may be obscured by other content or visual effects. Also known as IntersectionObserver v2. -
Intl.ListFormat:
The
Intl.ListFormat
API creates a locale-aware formatter that turns iterable objects into localized strings. -
Intl.Locale:
The
Intl.Locale
API parses Unicode locale identifiers, with language, region, and script codes, such aszh-Hans-CN
oren-GB
. -
Intl.RelativeTimeFormat:
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. -
Keyboard lock:
The
navigator.keyboard.lock()
API allows you to capture keys that are normally reserved by the operating system. It can be used to provide an immersive fullscreen experience such as games. -
Keyboard map:
The
navigator.keyboard.getLayoutMap()
API returns a map from key codes to human readable key names. It can be used to describe buttons to the user when using the keyboard as a set of buttons, such as in games. -
KHR_parallel_shader_compile WebGL extension:
The
KHR_parallel_shader_compile
extension for WebGL 1.0 and 2.0 contexts checks the status of shader compilation without blocking the runtime. -
Largest contentful paint (LCP):
The
largest-contentful-paint
performance entry and theLargestContentfulPaint
API measures the time it takes for the largest image or text to appear. Largest contentful paint (LCP) is a common metric for perceived loading times. -
Lazy-loading images and iframes:
The
loading="lazy"
attribute for<img>
and<iframe>
elements blocks loading the external resource until the user scrolls to that element's part of the page. -
Long tasks:
The
longtask
performance event type and thePerformanceLongTaskTiming
API provides information about tasks that occupy the UI thread for 50 milliseconds or more, a metric for input latency, delayed animations, and other sources of "jank." - Web app manifest: A web app manifest file provides metadata about the site. The browser can use the metadata to install the site as a standalone application on the user's device. The metadata usually includes the app's name, icon, description, and ways in which the app wishes to integrate with the device.
-
Media session:
The
navigator.mediaSession
API integrates with platform UI for media playback. It can be used to set metadata such as title and artwork, and to handle user actions like playing, pausing, or seeking. -
min(), max(), and clamp():
The
min()
andmax()
CSS functions return the minimum or maximum of the arguments, whileclamp()
clamps a value to a given range. -
Motion path:
The
offset
CSS property animates an element along a defined motion path. -
Numeric separators:
To improve readability for numeric literals, underscores (
_
) can be used as separators. For example,1_050.95
is equivalent to1050.95
. -
Offscreen canvas:
The
OffscreenCanvas
API provides a canvas that can be drawn to off screen, with no dependencies on the DOM, which can be used to run heavy rendering operations inside a worker context. -
Orientation Sensor:
The
AbsoluteOrientationSensor
andRelativeOrientationSensor
APIs describe the physical orientation of a device in three-dimensional space, either in relation to the Earth's coordinate system or in relation to the device's own orientation, respectively. -
overflow-anchor:
The
overflow-anchor
CSS property sets an element as a possible scroll anchor, reducing unintended scrolling when document changes occur above the current scrollport. This is enabled by default where supported. -
Page lifecycle:
The page lifecycle API helps you safely handle page suspensions or discards from memory. The
freeze
andresume
events fire when the browser suspends or resumes a page from memory while thedocument.wasDiscarded
property reports whether the page was reloaded after being dropped. -
Page setup:
The
@page
CSS at-rule sets the page-specific dimensions and margins for content such as printed documents, ebooks, or slides. -
paint():
The
paint()
CSS function creates a custom image, drawn using a paint worklet, for an element's background or border. -
Paint timing:
The
paint
performance entry and thePerformancePaintTiming
API measures the duration of "paint" (also called "render") operations as a page loads. The API measures the time to First Paint (FP) and First Contentful Paint (FCP), common metrics for perceived loading times. -
Password credentials:
The
PasswordCredential
API represents a username and password. - Payment handler: The payment handler API registers a web application as a payment handler and responds to payment requests in the browser's user interface, rather than redirecting users to a separate site to complete a payment.
-
Permissions:
The
navigator.permissions
API checks whether a permission, such as access to geolocation data, has been granted. - Picture-in-picture (video): The picture-in-picture API allow websites to create a floating, always-on-top video window. Also known as PiP or pop-out video.
-
Preloading responsive images:
The
imagesrcset
andimagesizes
attributes with therel="preload"
attribute for the<link>
HTML element starts fetching responsive images before they're found in the body of the document. - Presentation API: The Presentation API shows or controls content on another display, such as a network-connected TV or projector.
-
Promise.allSettled():
The
Promise.allSettled()
static method waits for an array of promises to settle (resolve or reject). -
Q unit:
The
Q
CSS length unit is an absolute length anchored to the physical measurement of quarter-millimeters.1Q
is equivalent to 1/40 of 1 centimeter. -
registerProtocolHandler:
The
navigator.registerProtocolHandler()
method declares a site's ability to handle an address scheme (also known as a protocol). For example, an email site can register to openmailto:
URLs or a VoIP site to opentel:
URLs. -
requestAnimationFrame() in workers:
The
requestAnimationFrame()
method in workers schedules a function that runs before the next repaint. Together with offscreen canvas, you can animate content from a worker. -
requestIdleCallback():
The
requestIdleCallback()
API queues a function that runs in idle browser time, either at the end of a frame or when the user is inactive. Also known as the background tasks API. -
resize (CSS property):
The
resize
CSS property sets whether an element can be resized by the user, and on which axes. -
Resize observer:
The
ResizeObserver
API observes and reacts to changes in the size of DOM elements. -
resolution media query:
The
resolution
CSS media query sets styles based on the pixel density, or how many pixels a device uses to display a single CSS pixel. -
Save-Data:
Browsers send the
Save-Data
HTTP request header when the user turns on a data-saving mode. It is a hint to reduce data sent to the browser. Servers should respond with alternative content, such as smaller images and videos, or different markup and styling. -
Screen capture:
The
navigator.mediaDevices.getDisplayMedia()
method asks the user to choose a screen or portion of a screen (such as a window) to capture as a media stream. -
Screen orientation:
The
screen.orientation
API gets information about the orientation of the viewport, such as landscape or portrait. With this API, you can adapt an application's layout or behavior in response to changes in orientation. -
scroll-behavior:
The
scroll-behavior
CSS property controls whether scrolling is smooth or snaps, for scroll actions not performed by the user such as those triggered by navigation. -
Scroll methods on elements:
The
scroll()
andscrollBy()
methods change the scroll position of overflow content within an element. Similar to settingscrollTop
andscrollLeft
properties, but with options setting whether the scroll should animate smoothly or jump. Note thatscrollTo()
is an alias forscroll()
. -
scrollIntoView():
The
scrollIntoView()
method scrolls an element's ancestor containers such that the element is visible to the user. -
Serializable errors:
The
DOMException
,Error
,EvalError
,RangeError
,ReferenceError
,SyntaxError
,TypeError
, andURIError
objects are serializable. You can callstructuredClone()
on an error object or pass it to a worker usingpostMessage()
. -
Server timing:
The
serverTiming
property of thePerformanceResourceTiming
API contains server timing information about network requests. -
Shadow parts:
The
part
andexportparts
HTML attributes expose elements of a shadow DOM as named parts, which can be selected by the::part()
CSS pseudo-element for styling. -
SharedArrayBuffer and Atomics:
The
SharedArrayBuffer
object represents bytes shared between multiple workers and the main thread. TheAtomics
object safely accessesSharedArrayBuffer
data to make sure predictable values are read and written and that operations are not interrupted. -
steps() easing:
The
steps()
CSS easing function divides an animation or transition into equidistant intervals, jumping from value to value. Thestep-start
andstep-end
keyword values are presets with a single interval. -
Storage manager:
The
navigator.storage
API provides information about the availability and persistence of the data that a site stores on the device, by using APIs such as the Cache API or the IndexedDB API. -
tab-size:
The
tab-size
CSS property sets the width of the tab character. -
text-combine-upright:
The
text-combine-upright
CSS property displays multiple characters in the space of a single character in vertical text. This is used in East Asian documents to display Latin-based strings such as components of a date or letters of an initialism. -
text-orientation:
The
text-orientation
CSS property sets the how text is typeset within a line when the writing mode is vertical. -
text-size-adjust:
The
text-size-adjust
CSS property disables or modifies the browser's default text size adjustment for small screen sizes. -
Time-relative pseudo-selectors:
The
:future
and:past
CSS pseudo-classes match upcoming or prior elements during media playback. -
translate attribute:
The
translate
HTML attribute marks whether an element's text should be translated. -
User activation:
The
navigator.userActivation
API reveals whether the user has interacted with the page through an "activation" gesture such as a click, tap, or key press. User activation gated APIs (such as the fullscreen API) fail without user interaction, and this API allows you to predict such a failure. -
user-select:
The
user-select
CSS property controls which elements can be selected by the user. -
Vibration:
The
navigator.vibrate()
method makes a tactile alert, if the device is equipped with a haptic motor. -
Visual viewport API:
The
visualViewport
API provides a way to query and modify the user-visible viewport of a web page. -
Bulk memory operations (WebAssembly):
Bulk memory operations, such as
copy
andinit
, mirror the efficiency of nativememcpy
andmemmove
operations. - Import and export of mutable globals (WebAssembly): Mutable global variables are importable and exportable.
- Threads and atomics (WebAssembly): Threads in WebAssembly run code in parallel, while atomic memory instructions can guarantee that no two threads can read or write to shared memory at the same time.
-
Web animations:
The
animate()
method ofElement
objects programmatically animates elements over time and can synchronize the animations of multiple elements. - Web Bluetooth: The Web Bluetooth API enables selecting and communicating with nearby Bluetooth devices.
-
Locks:
The
navigator.locks
API coordinates work with shared resources through mutually exclusive ownership of a resource's name. Also known as web locks. - Web MIDI: The Web MIDI API enables selecting MIDI input and output devices and sending and receiving MIDI messages.
-
WEBGL_compressed_texture_etc WebGL extension:
The
WEBGL_compressed_texture_etc
extension for WebGL 1.0 and 2.0 contexts adds many ETC2 and EAC compressed texture formats tocompressedTexImage2D()
andcompressedTexSubImage2D()
. -
WEBGL_compressed_texture_etc1 WebGL extension:
The
WEBGL_compressed_texture_etc1
extension for WebGL 1.0 and 2.0 contexts adds the ETC1 compressed texture format tocompressedTexImage2D()
andcompressedTexSubImage2D()
. -
WEBGL_debug_shaders WebGL extension:
The
WEBGL_debug_shaders
extension for WebGL 1.0 and 2.0 contexts adds thegetTranslatedShaderSource()
method to debug shaders from privileged contexts. -
Desynchronized WebGL canvas:
The optional
desynchronized
parameter of a canvas'sgetContext()
method permits the browser to draw a WebGL canvas independently of the event loop. This can reduce drawing latency. -
SharedArrayBuffer in WebGL:
SharedArrayBuffer
objects can be used in WebGL APIs that previously only worked withArrayBuffer
objects. -
WebGL2:
The
WebGL2RenderingContext
API is the"webgl2"
rendering context for the<canvas>
element. It represents a space for drawing two- and three-dimensional graphics and animations. It corresponds to OpenGL ES 3.0. -
Desynchronized WebGL2 canvas:
The optional
desynchronized
parameter of a canvas'sgetContext()
method permits the browser to draw a WebGL2 canvas independently of the event loop. This can reduce drawing latency. -
WebRTC SCTP information:
The
sctp
object onRTCPeerConnection
represents the negotiated SCTP transport. SCTP (Stream Control Transmission Protocol) is the protocol thatRTCDataChannel
uses. - WebUSB: The WebUSB API exposes USB compatible devices to web pages.
-
WebXR:
The
navigator.xr
API represents the browser's virtual reality or augmented reality system. You can use to request a WebXR session. -
Gamepad (WebXR):
The
gamepad
attribute of anXRInputSource
represents an XR input device, such as a motion controller, that reports data from physical inputs (such as buttons, touch pads, and triggers).
New in Firefox
The following features are now available in Firefox:
-
Individual transform properties:
The
translate
,rotate
, andscale
CSS properties apply single transformations independently, as opposed to applying multiple transformations with thetransform
CSS property. -
Motion path:
The
offset
CSS property animates an element along a defined motion path. -
Shadow parts:
The
part
andexportparts
HTML attributes expose elements of a shadow DOM as named parts, which can be selected by the::part()
CSS pseudo-element for styling.