📅 September 2026 release notes
Newly available
The following features are newly available:
-
alpha():
The
alpha()CSS function computes a relative color value by adjusting the opacity of an origin color. -
Animation accessors:
The
animationproperty of anAnimationEventorTransitionEventobject is theAnimationobject that represents the animation (and thus the element) that fired an animation event. -
ariaNotify():
The
ariaNotify()method ofElementandDocumentrequests assistive technology software, if activated, to announce a message to the user. This can help make dynamic content changes more accessible to users. -
Asynchronously iterable streams:
Asynchronous iteration of a stream allows you to use
for await … ofloops to iterate through a stream's incoming data. -
autocorrect:
The
autocorrectglobal HTML attribute controls whether to automatically correct spelling or punctuation errors for user input. -
light-dark() image values:
The
light-dark()CSS function accepts, in addition to colors, two<image>values, such as a gradient or URL, and uses one depending on the current color scheme. -
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. -
progress():
The
progress()CSS function returns a ratio for the relative position of one value between two other values, clamped between 0 and 1. You can use it to interpolate a value for other calculations. -
Top-level await:
The
awaitkeyword, when used at the top level of a module (outside of an async function), delays parent module execution until after a promise fulfills. - JavaScript promise integration (WebAssembly): The JavaScript promise integration (JSPI) suspends a WebAssembly module when it calls a JavaScript method that returns a promise. The module resumes when the promise is resolved. You can use this to call asynchronous Web APIs from synchronous WebAssembly.
Widely available
The following features are now widely available:
-
AbortSignal.any():
The
AbortSignal.any()static method combines an iterable of abort signals into a single signal, with the abort reason taken from the first signal to abort. -
Array grouping:
The
Object.groupBy()andMap.groupBy()static methods group values of arrays and iterables based on a function that returns a key for each value. -
checkVisibility():
The
checkVisibility()method checks if an element is potentially visible, with optional parameters for the kinds of visibility to check. For example, it checks whether the element has the styledisplay: none, but can also check forvisibility: hidden. -
paint-order:
The
paint-orderCSS property sets the z-order of strokes, fills, and (in SVG content) markers. For example,paint-order: markers stroke fill;draws the markers, then stroke on top of markers, then fill on top of both markers and stroke. -
Promise.withResolvers():
The
Promise.withResolvers()static method is an alternative to thePromise()constructor that returns both the promise and resolution functions. You can use this to accessresolveandrejectoutside the scope of the executor function. -
Transferable ArrayBuffer:
The
transfer()andtransferToFixedLength()methods ofArrayBuffermove a buffer from one context to another (for example, to a worker). -
Extended constant expressions (WebAssembly):
The
i32.add,i32.sub,i32.mul,i64.add,i64.sub, andi64.muloperations extend constant expressions to include arithmetic. -
white-space-collapse:
The
white-space-collapseCSS property sets whether new line characters are shown as line breaks, and whether multiple consecutive spaces are all displayed or combined.
New in Chrome
The following features are now available in Chrome:
-
Responsive iframes:
The
frame-sizingCSS property sets the size of an<iframe>element to that of it contents, to avoid scrolling in the iframe. Embedded documents allow this with the<meta name="responsive-embedded-sizing">element and request resizing in the embedding page by callingwindow.requestResize(). -
Iterator includes():
The
includes()method of anIteratorobject returnstruewhen an item yielded by the iterator is the same as a given value. It's similar to theincludes()method of arrays. -
Iterator join():
The
join()method of anIteratorobject returns a string concatenation of all the iterator's items, separated by commas or a given separator string. It's similar to thejoin()method of arrays. -
Iterator.zip() and Iterator.zipKeyed():
The
Iterator.zip()andIterator.zipKeyed()static methods return new iterators that aggregate items from multiple iterables. You can use them to iterate jointly, to get all of the items at the same position in each iterable. -
scroll-axis-lock:
The
scroll-axis-lockproperty controls whether scrolling is locked to one dimension at a time or freely follows movement in two dimensions. By default, browsers may lock the scroll axis, ignoring minor perpendicular scrolling, when scrolling is nearly vertical or horizontal.
New in Chrome Android
The following features are now available in Chrome Android:
-
Responsive iframes:
The
frame-sizingCSS property sets the size of an<iframe>element to that of it contents, to avoid scrolling in the iframe. Embedded documents allow this with the<meta name="responsive-embedded-sizing">element and request resizing in the embedding page by callingwindow.requestResize(). -
Iterator includes():
The
includes()method of anIteratorobject returnstruewhen an item yielded by the iterator is the same as a given value. It's similar to theincludes()method of arrays. -
Iterator join():
The
join()method of anIteratorobject returns a string concatenation of all the iterator's items, separated by commas or a given separator string. It's similar to thejoin()method of arrays. -
Iterator.zip() and Iterator.zipKeyed():
The
Iterator.zip()andIterator.zipKeyed()static methods return new iterators that aggregate items from multiple iterables. You can use them to iterate jointly, to get all of the items at the same position in each iterable.
New in Edge
The following features are now available in Edge:
-
Responsive iframes:
The
frame-sizingCSS property sets the size of an<iframe>element to that of it contents, to avoid scrolling in the iframe. Embedded documents allow this with the<meta name="responsive-embedded-sizing">element and request resizing in the embedding page by callingwindow.requestResize(). -
Iterator includes():
The
includes()method of anIteratorobject returnstruewhen an item yielded by the iterator is the same as a given value. It's similar to theincludes()method of arrays. -
Iterator join():
The
join()method of anIteratorobject returns a string concatenation of all the iterator's items, separated by commas or a given separator string. It's similar to thejoin()method of arrays. -
Iterator.zip() and Iterator.zipKeyed():
The
Iterator.zip()andIterator.zipKeyed()static methods return new iterators that aggregate items from multiple iterables. You can use them to iterate jointly, to get all of the items at the same position in each iterable.
New in Firefox
The following features are now available in Firefox:
-
attr():
The
attr()CSS function, in the context of any property, returns the value of an attribute of an HTML element, with the option to return it as a specific type or unit. You can set a default value for missing or invalid attributes. -
Retriable module loading:
You can retry importing a module that failed to import previously. Failed module imports, through the
importJavaScript statement, theimport()JavaScript syntax, or dynamically created<script src="…" type="module">HTML elements, aren't cached. -
at-rule():
The
at-rule()function, when used with@supports, checks if a CSS at-rule is supported. For example@supports at-rule(@starting-style)checks if the@starting-styleat-rule is supported.
New in Firefox for Android
The following features are now available in Firefox for Android:
-
attr():
The
attr()CSS function, in the context of any property, returns the value of an attribute of an HTML element, with the option to return it as a specific type or unit. You can set a default value for missing or invalid attributes. -
Retriable module loading:
You can retry importing a module that failed to import previously. Failed module imports, through the
importJavaScript statement, theimport()JavaScript syntax, or dynamically created<script src="…" type="module">HTML elements, aren't cached. -
at-rule():
The
at-rule()function, when used with@supports, checks if a CSS at-rule is supported. For example@supports at-rule(@starting-style)checks if the@starting-styleat-rule is supported.
New in Safari
The following features are now available in Safari:
- Anchor positioning: Anchor positioning places an element based on the position of another element. For example, you can place a tooltip next to the content it references.
- Anchor positioning transforms: Anchor positioned elements take CSS transforms on their anchor elements into account.
-
Case-sensitive attribute selector:
The
sidentifier in a CSS attribute selector matches attribute values case-sensitively in document languages like HTML where attribute values are case-insensitive. -
color-mix() with three or more colors:
The
color-mix()CSS function accepts three or more colors. -
Customizable <select>:
The
<select>element's appearance, including the button, selected option, picker dropdown, and options, can be customized using CSS. -
ReadableStream.from():
The
ReadableStream.from()static method converts an iterable or async iterable object, such as an array or async generator function, into a readable stream. -
Service workers static routing:
The service worker install event's
addRoutesmethod declares resource paths that should either be fetched from the network or the cache, to bypass the service worker and improve performance. -
stretch:
The
stretchCSS keyword expands a box as needed to fit its contents until the maximum size is reached, without preserving the content's preferred aspect ratio. -
text-autospace:
The
text-autospaceCSS property sets whether and how to insert spaces in inter-script text (such as when mixing Latin and Chinese characters) and around punctuation. -
WebOTP:
The
OTPCredentialAPI represents a one-time-password (OTP).
New in Safari on iOS
The following features are now available in Safari on iOS:
- Anchor positioning: Anchor positioning places an element based on the position of another element. For example, you can place a tooltip next to the content it references.
- Anchor positioning transforms: Anchor positioned elements take CSS transforms on their anchor elements into account.
-
Case-sensitive attribute selector:
The
sidentifier in a CSS attribute selector matches attribute values case-sensitively in document languages like HTML where attribute values are case-insensitive. -
color-mix() with three or more colors:
The
color-mix()CSS function accepts three or more colors. -
Customizable <select>:
The
<select>element's appearance, including the button, selected option, picker dropdown, and options, can be customized using CSS. -
ReadableStream.from():
The
ReadableStream.from()static method converts an iterable or async iterable object, such as an array or async generator function, into a readable stream. -
Service workers static routing:
The service worker install event's
addRoutesmethod declares resource paths that should either be fetched from the network or the cache, to bypass the service worker and improve performance. -
stretch:
The
stretchCSS keyword expands a box as needed to fit its contents until the maximum size is reached, without preserving the content's preferred aspect ratio. -
text-autospace:
The
text-autospaceCSS property sets whether and how to insert spaces in inter-script text (such as when mixing Latin and Chinese characters) and around punctuation. -
WebOTP:
The
OTPCredentialAPI represents a one-time-password (OTP).