📃 January 2020 release notes
Newly available
The following features are newly available:
-
all:
The
allCSS property is a shorthand for all CSS properties, except fordirectionandunicode-bidi. It accepts only the keywords for explicit defaulting (such asinitialandinherit), 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 .. ofloop. -
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-modeCSS 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 aMediaStreamwhich includes aCanvasCaptureMediaStreamTrackrepresenting 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-colorCSS property sets the color of the text insertion pointer in a text input. -
Case-insensitive attribute selector:
The
iidentifier in a CSS attribute selector matches attribute values case-insensitively in document languages like XML where attribute values are case-sensitive. -
Animatable clipping paths:
The
clip-pathproperty can be animated using CSS transitions and animations. - COLRv0: COLRv0 is a font format that supports multi-color glyphs. COLRv0 supports only solid colors.
-
Credential management:
The
navigator.credentialsAPI 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@supportsat-rule condition string. -
:default:
The
:defaultCSS pseudo-class matches the default element in a group of related form controls, such as checkboxes and radio buttons with thecheckedattribute. - 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-rootCSS 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,DOMQuadandDOMRectAPIs represent points, rectangles, quadrilaterals and transformation matrices within JavaScript. They can be used in transformations in CSS,<canvas>, and SVG. -
dominant-baseline:
The
dominant-baselineCSS property sets the specific baseline used to align an elements's text and inline-level contents. -
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-withinCSS pseudo-class matches an element if the element or any of its children are focused. -
font-display:
The
font-displayCSS 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-kerningCSS property sets whether kerning data from a font is used to adjust the space between letters. -
Font loading:
The
document.fontsAPI dynamically loads custom fonts and tracks when fonts are loading or ready to use. -
font-variant-caps:
The
font-variant-capsCSS 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-asianCSS property controls glyph substitution and sizing in East Asian text. -
font-variant-ligatures:
The
font-variant-ligaturesCSS property sets how characters can be visually combined for readability or stylistic reasons. -
font-variant-numeric:
The
font-variant-numericCSS property sets how numeric characters are displayed. For example, you can align columns of numbers or use zeroes that have a slash. -
globalThis:
The
globalThisproperty accesses the globalthisvalue (and hence the global object itself) across environments. -
Host:
The
:hostCSS 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
srcdocattribute for the<iframe>HTML element sets a string of HTML to embed in the document. The value ofsrcdocoverrides loading a document from thesrcattribute. -
ImageBitmapRenderingContext:
The
ImageBitmapRenderingContextAPI is the"bitmaprenderer"rendering context for the<canvas>element. It is commonly used to transfer frames from anOffscreenCanvasto a user-visible<canvas>element. -
:indeterminate:
The
:indeterminateCSS 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 (event):
The
inputevent fires when a form control changes or an element with thecontenteditableattribute changes. -
isolation:
The
isolationCSS property creates a new stacking context, which impactsz-indexordering and blend modes. -
Layout direction override:
The
unicode-bidianddirectionCSS properties override the Unicode layout algorithm. They are intended for Document Type Definition (DTD) designers. For HTML documents, you should use thedirglobal HTML attribute and<bdo>HTML element instead. -
<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 thehrefvalue's origin. -
Link selectors:
The
:linkCSS pseudo-class matches unvisited links,:visitedmatches visited links, and:any-linkmatches both. -
mask-type:
The
mask-typeCSS property on an SVG<mask>element sets whether the mask is aluminanceoralphamask. -
min-content and max-content:
The
min-contentandmax-contentCSS keywords represent the smallest and largest intrinsic sizes of an element. -
mix-blend-mode:
The
mix-blend-modeCSS 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-fitCSS property sets how images, videos, and other replaced elements are scaled within their container. -
object-position:
The
object-positionCSS property places images, videos, and other replaced elements within their boxes. -
Optional catch binding:
Omit the the binding parameter of a
catchclause when you don't need information about the exception in atry ... catchstatement. -
::placeholder:
The
::placeholderCSS pseudo-element selects help text in<input>and<textarea>elements when no value is set. -
:placeholder-shown:
The
:placeholder-shownCSS pseudo-element selects<input>and<textarea>elements when no value is set and the element'splaceholderattribute is not empty. Not to be confused with::placeholder, which selects the placeholder text itself. -
prefers-color-scheme media query:
The
prefers-color-schemeCSS media query sets styles based on the requested color scheme, light or dark. -
prefers-reduced-motion media query:
The
prefers-reduced-motionCSS 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
:scopeCSS pseudo-class matches the scoping root, for instance the element thatquerySelector()is called on, or the root of a DOM subtree specified with@scope. -
scrollIntoView():
The
scrollIntoView()method scrolls an element's ancestor containers such that the element is visible to the user. - Scroll snap: CSS scroll snap controls the panning and scrolling behavior within a scroll container.
-
Server-sent events:
The
EventSourceAPI 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-outsideCSS property, along withshape-marginandshape-image-threshold, sets the shape around which adjacent content will wrap. -
shapes:
The
circle(),ellipse(),inset(), andpolygon()CSS shape functions create shapes for use withclip-pathandshape-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
SourcemapHTTP 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
TextEncoderAPI transforms a stream of code points into a byte stream with UTF-8 encoding, andTextDecoderdoes the reverse. -
WEBGL_compressed_texture_astc WebGL extension:
The
WEBGL_compressed_texture_astcextension 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
VTTCueAPI updates various aspects of cues dynamically, such as alignment, size and position. -
will-change:
The
will-changeCSS 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:
-
alignment-baseline:
The
alignment-baselineCSS property sets which baseline of an element is aligned with the corresponding baseline of its parent. -
Alt text for generated content:
The
/notation incontentCSS 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.clipboardAPI asynchronously reads and writes to the system clipboard. -
AudioWorklet:
The
AudioWorkletAPI runs module code in a separate thread, specifically for non-blocking, low latency audio processing. -
autocapitalize:
The
autocapitalizeglobal 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
::backdropCSS 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-filterCSS 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.
-
baseline-shift:
The
baseline-shiftCSS property sets the position of an element relative to its dominant baseline. -
Battery status:
The
navigator.getBattery()API obtains information about the device's battery, including charge level and status. Also known as the Battery API. -
beforeinstallprompt:
The
beforeinstallpromptevent fires when a Progressive Web App (PWA) is installable. You can cancel the event and later callevent.prompt()to control when the installation prompt is shown. Theappinstalledevent fires when the PWA is successfully installed. -
BigInt:
The
BigIntJavaScript type represents integers of any size, including integers too large for the primitiveNumbertype. -
BigInt64Array:
The
BigInt64ArrayandBigUint64Arraytyped arrays represent 64-bit integers, signed and unsigned respectively. -
BroadcastChannel:
The
BroadcastChannelAPI allows you to send messages between same-origin browsing contexts, such as between the same page loaded in multiple tabs. -
2D canvas opacity:
The optional
alphaparameter of a 2D canvas'sgetContext()method sets whether the canvas has an alpha transparency channel. If set tofalse, then this permits the browser to optimize compositing for an opaque canvas. -
Desynchronized 2D canvas:
The optional
desynchronizedparameter 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 aMediaStreamfor the media element's content. You can use this to record media or send it elsewhere, such as a canvas or WebRTC connection. -
clip:
The
clipCSS property sets the visible area of an absolutely positioned element. -
color-gamut media query:
The
color-gamutmedia 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
CSSStyleSheetconstructor creates a new stylesheet which can be shared between a document and multiple shadow roots usingadoptedStyleSheets. -
contain:
The
containCSS property sets limits to the scope of styles, layout, and paint rendering for speed and efficiency. Thenonekeyword value disables containment,strictis equivalent tocontain: size layout style paint, andcontentis equivalent tocontain: layout style paint. -
Layout containment:
The
contain: layoutCSS 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: paintCSS 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: sizeCSS declaration sets an element's dimensions exclusively by itsheightandwidthproperties, ignoring its contents and descendants. This permits the browser to avoid slower layout calculations. -
Style containment:
The
contain: styleCSS declaration permits the browser to avoid slower layout calculations by preventing modification to counter (counter-incrementandcounter-set) and quotation styles (contentproperty quote values) beyond the element's descendants. -
controlslist:
The
controlslistattribute 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 anImageBitmapobject from a source such as an image, SVG, blob, or canvas. AnImageBitmapobject represents pixel data that can be drawn to a canvas with lower latency than other types, such asImageData. -
CSS typed object model:
The
CSSStyleValueand its subclasses represent CSS values as distinct types instead of only strings. Also known as typed OM. -
Cursor styles:
The
cursorCSS 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
isattribute, to add new behaviors that you define. -
Device memory:
The
navigator.deviceMemoryproperty is 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
dirnameattribute of<textarea>and<input>HTML elements includes the field's writing direction as form data on submission. -
Element timing:
The
elementperformance entry and thePerformanceElementTimingAPI measures the time to render elements that have theelementtimingattribute. -
enterkeyhint:
The
enterkeyhintglobal 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
eventandfirst-inputperformance entries and thePerformanceEventTimingAPI measures the latency of user input events, such as mouse clicks or keypresses. They're used to calculate Interaction to Next Paint (INP), a common metric for perceived responsiveness. -
EXT_color_buffer_float WebGL extension:
The
EXT_color_buffer_floatextension for WebGL 2.0 contexts adds color-renderable floating point formats torenderbufferStorage(). -
EXT_float_blend WebGL extension:
The
EXT_float_blendextension for WebGL 1.0 and 2.0 contexts adds 32-bit floating-point components to blending and draw buffers. -
Federated credentials:
The
FederatedCredentialAPI 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-contentCSS 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-uiCSS declaration uses the operating system default font for text. -
Forced colors:
The
forced-colorsCSS @media rule detects when a user has chosen to use a forced colors mode, also known as high-contrast mode, and theforced-color-adjustCSS 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 ofHTMLElementand theElementInternalsAPI. - Fullscreen API: The fullscreen API makes a specific element fill the whole screen and hides most browser UI.
-
Gamepad haptic feedback:
The
gamepad.vibrationActuatorproperty represents a gamepad's haptics hardware, which allows you to control the vibration motors in a gamepad. -
Gyroscope:
The
GyroscopeAPI 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-renderingCSS 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.
-
inputmode:
The
inputmodeglobal HTML attribute gives a hint about what type of data is to be entered into an<input>element, such astext,numeric, oremail, so the browser may help the user enter data using an adapted input mechanism, such as an on-screen virtual keyboard. -
Intersection observer visibility tracking:
The
trackVisibilityparameter for theIntersectionObserverconstructor 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.ListFormatAPI creates a locale-aware formatter that turns iterable objects into localized strings. -
Intl.Locale:
The
Intl.LocaleAPI parses Unicode locale identifiers, with language, region, and script codes, such aszh-Hans-CNoren-GB. -
Intl.RelativeTimeFormat:
The
Intl.RelativeTimeFormatAPI 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_compileextension 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-paintperformance entry and theLargestContentfulPaintAPI 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. -
<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 thehrefvalue's domain. -
<link rel="preload">:
The
rel="preload"attribute for the<link>HTML element requests resources, such as images or style sheets, that the page needs soon, so the browser may prioritize them for loading before rendering begins. -
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
longtaskperformance event type and thePerformanceLongTaskTimingAPI 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.mediaSessionAPI 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. -
MediaStream recording:
The
MediaRecorderAPI captures data generated byMediaStreamorHTMLMediaElementobjects for analysis, processing, or saving to disk. Also known as the Media Recording API. -
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. -
<link rel="modulepreload">:
The
rel="modulepreload"attribute for the<link>HTML element indicates that a module script should be fetched, parsed, and compiled preemptively, and stored for later execution. -
Motion path:
The
offsetCSS property animates an element along a defined motion path. -
Numeric factory functions:
The numeric factory functions, such as
CSS.px()orCSS.kHz(), return aCSSUnitValuerepresenting a CSS number value (as in12pxor440kHz). -
Numeric separators:
To improve readability for numeric literals, underscores (
_) can be used as separators. For example,1_050.95is equivalent to1050.95. -
Offscreen canvas:
The
OffscreenCanvasAPI 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
AbsoluteOrientationSensorandRelativeOrientationSensorAPIs 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-anchorCSS 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. -
overflow:
The
overflowCSS property sets the behavior for when content doesn't fit in an element. -
Page lifecycle:
The page lifecycle API helps you safely handle page suspensions or discards from memory. The
freezeandresumeevents fire when the browser suspends or resumes a page from memory while thedocument.wasDiscardedproperty reports whether the page was reloaded after being dropped. -
Page setup:
The
@pageCSS 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
paintperformance entry and thePerformancePaintTimingAPI 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
PasswordCredentialAPI 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.permissionsAPI 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
imagesrcsetandimagesizesattributes 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
QCSS length unit is an absolute length anchored to the physical measurement of quarter-millimeters.1Qis equivalent to 1/40 of 1 centimeter. -
queueMicrotask():
The
queueMicrotask()method schedules a function to run after the currently running synchronous JavaScript finishes but before returning to the event loop. -
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
resizeCSS property sets whether an element can be resized by the user, and on which axes. -
Resize observer:
The
ResizeObserverAPI observes and reacts to changes in the size of DOM elements. -
resolution media query:
The
resolutionCSS 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-DataHTTP 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.orientationAPI 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-behaviorCSS 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 settingscrollTopandscrollLeftproperties, but with options setting whether the scroll should animate smoothly or jump. Note thatscrollTo()is an alias forscroll(). -
Serializable errors:
The
DOMException,Error,EvalError,RangeError,ReferenceError,SyntaxError,TypeError, andURIErrorobjects are serializable. You can callstructuredClone()on an error object or pass it to a worker usingpostMessage(). -
Server timing:
The
serverTimingproperty of thePerformanceResourceTimingAPI contains server timing information about network requests. -
Shadow parts:
The
partandexportpartsHTML 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
SharedArrayBufferobject represents bytes shared between multiple workers and the main thread. TheAtomicsobject safely accessesSharedArrayBufferdata to make sure predictable values are read and written and that operations are not interrupted. -
Shared worker:
The
SharedWorker()constructor runs a script in its own thread, which can send and receive messages with other scripts running at the same origin. -
steps() easing:
The
steps()CSS easing function divides an animation or transition into equidistant intervals, jumping from value to value. Thestep-startandstep-endkeyword values are presets with a single interval. -
Storage manager:
The
navigator.storageAPI 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. - Streams: The streams API creates, composes, and consumes continuously generated data.
-
tab-size:
The
tab-sizeCSS property sets the width of the tab character. -
text-combine-upright:
The
text-combine-uprightCSS 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-decoration-line: blink:
The
text-decoration: blinkCSS declaration flashes text between visible and invisible. -
text-orientation:
The
text-orientationCSS property sets the how text is typeset within a line when the writing mode is vertical. -
text-size-adjust:
The
text-size-adjustCSS property disables or modifies the browser's default text size adjustment for small screen sizes. -
Time-relative pseudo-selectors:
The
:pastand:futureCSS pseudo-classes match prior or upcoming text track cues during media playback. -
translate:
The
translateHTML attribute marks whether an element's text should be translated. -
User activation:
The
navigator.userActivationAPI 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-selectCSS 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
visualViewportAPI provides a way to query and modify the user-visible viewport of a web page. -
Bulk memory operations (WebAssembly):
Bulk memory operations, such as
copyandinit, mirror the efficiency of nativememcpyandmemmoveoperations. - 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 Bluetooth: The Web Bluetooth API enables selecting and communicating with nearby Bluetooth devices.
-
Locks:
The
navigator.locksAPI 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_etcextension 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_etc1extension for WebGL 1.0 and 2.0 contexts adds the ETC1 compressed texture format tocompressedTexImage2D()andcompressedTexSubImage2D(). -
WEBGL_debug_shaders WebGL extension:
The
WEBGL_debug_shadersextension for WebGL 1.0 and 2.0 contexts adds thegetTranslatedShaderSource()method to debug shaders from privileged contexts. -
Desynchronized WebGL canvas:
The optional
desynchronizedparameter 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:
SharedArrayBufferobjects can be used in WebGL APIs that previously only worked withArrayBufferobjects. -
WebGL2:
The
WebGL2RenderingContextAPI 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
desynchronizedparameter 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
sctpobject onRTCPeerConnectionrepresents the negotiated SCTP transport. SCTP (Stream Control Transmission Protocol) is the protocol thatRTCDataChanneluses. - WebUSB: The WebUSB API exposes USB compatible devices to web pages.
-
WebXR:
The
navigator.xrAPI represents the browser's virtual reality or augmented reality system. You can use to request a WebXR session. -
Gamepad (WebXR):
The
gamepadattribute of anXRInputSourcerepresents 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, andscaleCSS properties apply single transformations independently, as opposed to applying multiple transformations with thetransformCSS property. -
Motion path:
The
offsetCSS property animates an element along a defined motion path. -
Shadow parts:
The
partandexportpartsHTML attributes expose elements of a shadow DOM as named parts, which can be selected by the::part()CSS pseudo-element for styling.