Microsoft Edge 135 web platform release notes (Apr. 2025)
The following are the new web platform features and updates in Microsoft Edge 135, which releases on April 3, 2025.
To stay up-to-date and get the latest web platform features, download an Insiders version of Microsoft Edge, such as Canary, Dev, or Beta; see Become a Microsoft Edge Insider.
Detailed contents:
- Edge DevTools
- WebView2
- Web platform features
- CSS features
- CSS carousel widget:
::column
pseudo-element - CSS carousel widget:
::scroll-marker
and::scroll-marker-groups
pseudo-elements - CSS carousel widget:
::scroll-button()
pseudo-element - Nested pseudo-elements styling
- CSS
interactivity
property - CSS logical overflow properties
- CSS
abs()
andsign()
functions - CSS anchor positioning: remembered scroll offset
- CSS
dynamic-range-limit
property - CSS
shape()
function - CSS
progress()
functions safe-area-max-inset-*
variables
- CSS carousel widget:
- HTML features
- Web APIs
- Add MediaStreamTrack support to the Web Speech API
- Partitioning
:visited
links history - Create service worker client and inherit service worker controller for iframe with
srcdoc
- Dispatching click events to captured pointer
- Float16Array
- HSTS tracking prevention
sourceElement
property forNavigateEvent
- PerformanceNavigationTiming API NotRestoredReasons name change
- Observable API
- Service worker client URL now ignores
history.pushState
changes - Timestamps for RTC Encoded Frames
- Use the
double
type for ProgressEvent'sloaded
andtotal
attributes - fetchLater API
- highlightsFromPoint API
- Deprecated and removed features
- CSS features
- Origin trials
Edge DevTools
See What's New in Microsoft Edge DevTools.
WebView2
See Release Notes for the WebView2 SDK.
Web platform features
CSS features
CSS carousel widget: ::column
pseudo-element
The ::column
CSS pseudo-element represents the individual columns in a multi-column container.
The container can be styled with a limited amount of CSS properties.
The container can be snapped to by its scrolling container, by using ::scroll-marker
pseudo-elements.
CSS carousel widget: ::scroll-marker
and ::scroll-marker-groups
pseudo-elements
The ::scroll-marker
and ::scroll-markers-group
pseudo-elements allow creating a set of focusable markers within a scroll container.
The set of focusable markers is used to snap the scroll container to specific positions.
CSS carousel widget: ::scroll-button()
pseudo-element
The ::scroll-button()
pseudo-element allows creating scroll buttons as pseudo-elements of a scroll container.
The scroll buttons are used to scroll the container in the direction of the button, when the scroll buttons are clicked.
Nested pseudo-elements styling
Pseudo-elements that are nested inside other pseudo-elements can now be styled, by using ::before::marker
and ::after::marker
.
::column::scroll-marker
is not yet supported.
CSS interactivity
property
The CSS interactivity
property specifies whether an element and its flat tree descendants (including text runs) are inert or not.
Making an element inert affects:
- Whether the element can be focused, edited, selected, and searchable by Find-in-page.
- Whether the element is visible in the accessibility tree.
CSS logical overflow properties
The overflow-inline
and overflow-block
CSS properties allow setting overflow in inline and block direction relative to the writing-mode.
- In horizontal writing-mode,
overflow-inline
maps tooverflow-x
. - In vertical writing-mode,
overflow-inline
maps tooverflow-y
.
CSS abs()
and sign()
functions
The abs(A)
function returns the absolute value of A, as the same type as the input. The return type is a <number>
.
The sign(A)
function returns:
-1
if the numeric value of A is negative.+1
if the numeric value of A is positive.0
otherwise.
The return type is a <number>
.
CSS anchor positioning: remembered scroll offset
When a positioned element has a default anchor, and is tethered to this anchor at one edge, and against the original containing block at the other edge, the scroll offset will be taken into account when sizing the element.
Taking the scroll offset into account when sizing the element enables using all visible space for the anchored element (by using position-area
) when the document is scrolled at a given scroll offset.
In order to avoid resizing the element every time the document is scrolled, the "remembered scroll offset" concept is used, rather than always using the current scroll offset.
CSS dynamic-range-limit
property
The dynamic-range-limit
CSS property allows limiting the maximum brightness of High Dynamic Range (HDR) content.
CSS shape()
function
The shape()
CSS function allows using free-form and responsive shapes in the clip-path
property.
You can define a series of verbs, equivalent to the verbs in the path()
function.
You can use responsive units, such as %
or vw
.
You can use CSS values, such as custom properties.
CSS progress()
functions
The progress()
, media-progress()
, and container-progress()
functions represent the proportional distance of a given value (the progress value) from one value (the progress start value) to another value (the progress end value).
progress()
allows drawing a progress ratio from math functions.media-progress()
allows drawing a progress ratio from media features.container-progress()
allows drawing a progress ratio from container features.
safe-area-max-inset-*
variables
The safe-area-max-inset-top
, safe-area-max-inset-right
, safe-area-max-inset-bottom
, and safe-area-max-inset-left
environment variables are tied to the safe area inset variables, but represent the maximum possible safe area.
Using the maximum possible safe area is useful to avoid updating the layout of a page when the safe area inset value grows.
HTML features
command
and commandfor
HTML attributes
The command
and commandfor
HTML attributes for <button>
elements allow you to assign behavior to buttons in an accessible and declarative way, while reducing how often a JavaScript page must be used to provide interactivity.
When clicked, touched, or activated via a keypress, a button with the commandfor
and command
attributes dispatches a CommandEvent
on the element that's referenced by commandfor
, with some default behaviors, such as opening dialogs and popovers.
Link rel=facilitated-payment
to support push payments
The <link rel="facilitated-payment" href="...">
element acts as a hint that the browser uses to notify registered payment clients about a pending push payment.
Support for rel
and relList
attributes in SVG <a>
elements
The SVGAElement interface in SVG 2.0 allows manipulating SVG <a>
elements, which are similar to HTML anchor elements. This change adds support for the rel
and relList
attributes, to enhance security and privacy for your webpages.
This approach aligns with how HTML anchor elements work, and ensures consistency and ease of use across SVG and HTML.
Web APIs
Add MediaStreamTrack support to the Web Speech API
The Web Speech API is a web standard API that allows you to incorporate speech recognition and synthesis into your webpages.
The Web Speech API uses the user's default microphone as the default audio input. MediaStreamTrack support allows a website to use the Web Speech API to caption other sources of audio, including remote audio tracks.
Partitioning :visited
links history
To eliminate user browsing history leaks, HTML <a>
elements are now styled as :visited
only if they have been clicked from the top-level site and frame origin before. This means that Microsoft Edge now partitions visited links according to three keys:
- Link URL.
- Top-level site.
- Frame origin.
By only styling links that have been clicked on this site and frame before, side-channel attacks that have been developed to obtain :visited
links styling information are now obsolete.
Self-links are excluded from this; links to a site's own pages can be styled as :visited
even if they have not been clicked on in this exact top-level site and frame origin before. This exemption is only enabled in top-level frames or subframes which are same-origin with the top-level frame.
Create service worker client and inherit service worker controller for iframe with srcdoc
A service worker client is now created for iframes that use the srcdoc
attribute. The created service worker client inherits from the service worker of the iframe's parent.
Dispatching click events to captured pointer
If a pointer is captured while the pointerup
event is being dispatched, the click
event is dispatched to the captured target, instead of being dispatched to the nearest common ancestor of pointerdown
and pointerup
events.
Float16Array
The Float16Array
typed array is now supported. Number values are rounded to half-precision float-point format (IEEE FP16) when writing into a Float16Array
instance.
HSTS tracking prevention
Mitigates user tracking by third-parties via the HTTP Strict Transport Security (HSTS) cache.
This feature only allows HSTS upgrades for top-level navigations, and blocks HSTS upgrades for sub-resource requests. Blocking such an HSTS upgrade makes it infeasible for third-party sites to use the HSTS cache in order to track a user across the web.
sourceElement
property for NavigateEvent
When a page navigation is initiated by an element, such as when the user clicks a link or submits a form, the resulting NavigateEvent
now has a sourceElement
property that points to the initiating element.
PerformanceNavigationTiming API NotRestoredReasons name change
The NotRestoredReasons API is part of the PerformanceNavigationTiming API. This change updates the names of the reasons so that they match the specification.
List of changes:
Old name | New name |
---|---|
extension-messaging , pending-permission-request , not-main-frame , frame-navigating , timeout , cookie-disabled , cookie-removed , printing , web-database , injected-javascript , and injected-stylesheet |
masked |
response-method-not-get |
request-method-not-get |
serviceworker-version-activation |
serviceworker-version-activated |
serviceworker-added-after-bfcache |
serviceworker-added |
serviceworker-unregistration |
serviceworker-unregistered |
unload-handler |
unload-listener |
session-restored |
null |
Observable API
Observables are a popular reactive-programming paradigm to handle an asynchronous stream of push-based events. Observables can be thought of as Promises but for multiple events. Observables let you write more linear and declarative-style code and avoid nested callbacks. That is, Observables allow ergonomic event handling, by providing an Observable
object that represents the asynchronous flow of events.
You can "subscribe" to this object to receive events as they come in, and call any of its operators to declaratively describe the flow of transformations through which events go. This is in contrast with the imperative version, which often requires complicated nesting with approaches such as addEventListener()
.
See the W3C Observable specification.
Service worker client URL now ignores history.pushState
changes
The Client.url
property of a service worker, which is the URL of the initial HTML document, now ignores changes that are made by the history.pushState()
method and other similar history APIs.
Timestamps for RTC Encoded Frames
The following timestamps are now exposed:
- Capture timestamp: The timestamp when a frame was originally captured.
- Receive timestamp: The timestamp when a frame was received.
These timestamps are present in WebRTC-encoded frames that are transmitted via RTCPeerConnection
.
This change allows video conferencing applications which use WebRTC to implement latency measurements to better understand performance.
Use the double
type for ProgressEvent's loaded
and total
attributes
The loaded
and total
attributes of a ProgressEvent
indicate the current progress. The type of these attributes is now a floating point number between 0
and 1
, which aligns ProgressEvent
with the default behavior of the <progress>
HTML element, when the max
attribute is omitted.
fetchLater API
fetchLater()
is a JavaScript API to send a deferred fetch request. After the deferred fetch request has been sent, a deferred request is queued by the browser in a pending state.
The deferred fetch request is then invoked by the earliest of the following conditions:
- When the document is destroyed.
- After a user-specified time.
- When the browser decides it's time to send the request.
The API returns a FetchLaterResult
that contains the activated
boolean field. The activated
boolean field can be updated to tell whether the deferred request has been sent. After the deferred request has been successfully sent, the response is ignored by the browser, including the webpage's body and headers.
highlightsFromPoint API
The highlightsFromPoint()
API enables your webpages to interact with CSS Custom Highlights, by detecting which highlights exist at a specific point within a document.
Getting highlights from a point can be used by a web app to manage user interactions with custom highlights, such as:
- Responding to a hover event on a highlighted region, to trigger a custom tooltip.
- Responding to a user click on a highlighted region, to trigger a right-click menu (context menu).
Deprecated and removed features
Deprecate Intl.Locale
getters
The Intl.Locale
API exposes information such as week data and hour cycle type of a locale.
The accessor properties of the Intl.Locale
object are now deprecated, in favor of the corresponding functions, per the specification. For example, the Intl.Locale.prototype.hourCycle
accessor property is deprecated in favor of the Intl.Locale.prototype.getHourCycles()
function.
Remove navigator.xr.supportsSession
method
The deprecated navigator.xr.supportsSession
property has been removed from the WebXR API.
In the WebXR specification in 2019, the navigator.xr.supportsSession
property was marked as deprecated, and was replaced by the navigator.xr.isSessionSupported()
method.
Remove WebGPU limit maxInterStageShaderComponents
The maxInterStageShaderComponents
limit is now removed, due to:
Redundancy with
maxInterStageShaderVariables
, which already serves a similar purpose: controlling the amount of data that's passed between shader stages.Minor discrepancies: Although there are slight differences in how the two limits are calculated, these differences are minor, and can be effectively managed within the
maxInterStageShaderVariables
limit.Simplification: Removing
maxInterStageShaderComponents
streamlines the shader interface, and reduces complexity of using the interface. Instead of managing two separate limits (that both apply simultaneously, but with subtle differences), you can just concentrate on the more appropriately named and comprehensivemaxInterStageShaderVariables
.
Origin trials
The following are new experimental APIs which you can try on your own live website for a limited time.
To learn more about origin trials, see Use origin trials in Microsoft Edge.
To see the full list of available origin trials, see Microsoft Edge Origin Trials.
Microsoft Edge-only origin trials
Digital Goods API
Expires on March 31, 2025.
The Digital Goods API allows a web application to get information about their digital products and the user’s purchases managed by a digital store. The user agent abstracts connections to the store, and the Payment Request API is used to make purchases.
Web App LocalFolder Access
Expires on March 31, 2025.
Web App LocalFolder Access allows a Microsoft Store-installed Progressive Web App (PWA) to access file content that was previously stored in the WinRT ApplicationData.LocalFolder
folder by an earlier version of the application.
HTML+IDL handwriting attribute
Expires on June 14, 2025.
The handwriting
attribute provides a per-document and per-element way to control where handwriting input, such as when using a stylus, is allowed.
Acquisition Info API
Expires on June 30, 2025.
The Acquisition Info API supports 3P acquisition attribution for PWAs that were acquired through an app store or directly from the browser.
Note
Portions of this page are modifications based on work created and shared by Chromium.org and used according to terms described in the Creative Commons Attribution 4.0 International License.