Skip to content

Commit 900ab5d

Browse files
New beta web platform release notes
1 parent ed47221 commit 900ab5d

1 file changed

Lines changed: 338 additions & 0 deletions

File tree

  • microsoft-edge/web-platform/release-notes
Lines changed: 338 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,338 @@
1+
---
2+
title: Microsoft Edge 135 web platform release notes (Apr. 2025)
3+
description: Microsoft Edge 135 web platform release notes (Apr. 2025)
4+
author: MSEdgeTeam
5+
ms.author: msedgedevrel
6+
ms.topic: conceptual
7+
ms.service: microsoft-edge
8+
ms.date:
9+
---
10+
# Microsoft Edge 135 web platform release notes (Apr. 2025)
11+
12+
The following are the new web platform features and updates in Microsoft Edge 135, which releases on April 3, 2025.
13+
14+
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](https://aka.ms/microsoftedge).
15+
16+
**Detailed contents:**
17+
18+
* [Edge DevTools](#edge-devtools)
19+
* [WebView2](#webview2)
20+
* [Web platform features](#web-platform-features)
21+
* [Enabled features](#enabled-features)
22+
23+
* [:has-slotted pseudo selector](#has-slotted-pseudo-selector)
24+
25+
* [Add MediaStreamTrack support to the Web Speech API](#add-mediastreamtrack-support-to-the-web-speech-api)
26+
27+
* [Blob URL Partitioning: Fetching/Navigation](#blob-url-partitioning-fetching-navigation)
28+
29+
* [CSP require-sri-for for scripts](#csp-require-sri-for-for-scripts)
30+
31+
* [CSS Inertness](#css-inertness)
32+
33+
* [CSS Logical Overflow](#css-logical-overflow)
34+
35+
* [CSS caret-animation property](#css-caret-animation-property)
36+
37+
* [CSS dynamic-range-limit property](#css-dynamic-range-limit-property)
38+
39+
* [CSS shape() function](#css-shape-function)
40+
41+
* [Create service worker client and inherit service worker controller for srcdoc iframe](#create-service-worker-client-and-inherit-service-worker-controller-for-srcdoc-iframe)
42+
43+
* [Dispatching click events to captured pointer](#dispatching-click-events-to-captured-pointer)
44+
45+
* [Float16Array](#float16array)
46+
47+
* [Incorporating navigation initiator into the HTTP cache partition key](#incorporating-navigation-initiator-into-the-http-cache-partition-key)
48+
49+
* [Invoker Commands; the command and commandfor attributes](#invoker-commands-the-command-and-commandfor-attributes)
50+
51+
* [Link rel=facilitated-payment to support push payments](#link-rel-facilitated-payment-to-support-push-payments)
52+
53+
* [NavigateEvent sourceElement](#navigateevent-sourceelement)
54+
55+
* [Observable API](#observable-api)
56+
57+
* [On-device Web Speech API](#on-device-web-speech-api)
58+
59+
* [Partitioning :visited links history](#partitioning-visited-links-history)
60+
61+
* [Service Worker client URL ignore history.pushState changes](#service-worker-client-url-ignore-history-pushstate-changes)
62+
63+
* [Timestamps for RTC Encoded Frames](#timestamps-for-rtc-encoded-frames)
64+
65+
* [Update ProgressEvent to use double type for 'loaded' and 'total'](#update-progressevent-to-use-double-type-for-loaded-and-total)
66+
67+
* [fetchLater API](#fetchlater-api)
68+
69+
* [highlightsFromPoint API](#highlightsfrompoint-api)
70+
71+
* [Deprecated and removed features](#deprecated-and-removed-features)
72+
73+
* [Deprecate getters of Intl Locale Info](#deprecate-getters-of-intl-locale-info)
74+
75+
* [Remove deprecated navigator.xr.supportsSession method](#remove-deprecated-navigator-xr-supportssession-method)
76+
77+
78+
* [Origin trials](#origin-trials)
79+
* [Microsoft Edge-only origin trials](#microsoft-edge-only-origin-trials)
80+
81+
* [New Chromium origin trials](#new-chromium-origin-trials)
82+
83+
84+
85+
<!-- ====================================================================== -->
86+
## Edge DevTools
87+
88+
For Edge DevTools, see [What's New in Microsoft Edge DevTools](../../devtools-guide-chromium/whats-new/whats-new.md).
89+
90+
91+
<!-- ====================================================================== -->
92+
## WebView2
93+
94+
For WebView2, see [Release Notes for the WebView2 SDK](../../webview2/release-notes/index.md).
95+
96+
97+
<!-- ====================================================================== -->
98+
## Web platform features
99+
100+
101+
<!-- ------------------------------ -->
102+
#### Enabled features
103+
104+
105+
<!-- ---------- -->
106+
###### :has-slotted pseudo selector
107+
108+
The :has-slotted pseudo class represents a slot element with slotted content, such as a text node or element. This can be used to style elements based on whether or not they are using slot fallback content.
109+
110+
111+
<!-- ---------- -->
112+
###### Add MediaStreamTrack support to the Web Speech API
113+
114+
Add MediaStreamTrack support to the Web Speech API.
115+
116+
The Web Speech API is a web standard API that allows developers to incorporate speech recognition and synthesis into their web pages. Currently, the Web Speech API uses the user's default microphone as the audio input. MediaStreamTrack support allows websites to use the Web Speech API to caption other sources of audio including remote audio tracks.
117+
118+
119+
<!-- ---------- -->
120+
###### Blob URL Partitioning: Fetching/Navigation
121+
122+
As a continuation of Storage Partitioning, Chromium will implement partitioning of Blob URL access by Storage Key (top-level site, frame origin, and the has-cross-site-ancestor boolean), with the exception of top-level navigations which will remain partitioned only by frame origin. This behavior is similar to what’s currently implemented by both Firefox and Safari, and aligns Blob URL usage with the partitioning scheme used by other storage APIs as part of Storage Partitioning. In addition, Chromium will enforce noopener on renderer-initiated top-level navigations to Blob URLs where the corresponding site is cross-site to the top-level site performing the navigation. This aligns Chromium with similar behavior in Safari, and the relevant specs have been updated to reflect these changes.
123+
124+
This change can be temporarily reverted by setting the PartitionedBlobURLUsage policy. The policy will be deprecated when the other storage partitioning related enterprise policies are deprecated.
125+
126+
127+
<!-- ---------- -->
128+
###### CSP require-sri-for for scripts
129+
130+
The `require-sri-for` directive gives developers the ability to assert that every resource of a given type needs to be integrity checked. If a resource of that type is attempted to be loaded without integrity metadata, that attempt will fail and trigger a CSP violation report.
131+
This intent covers the "script" value of this directive.
132+
133+
134+
<!-- ---------- -->
135+
###### CSS Inertness
136+
137+
The interactivity property specifies whether an element and its flat tree descendants (including text runs) are inert or not.
138+
139+
Making an element inert affects whether it can be focused, edited, selected, and searchable by find-in-page. It also affects whether it is visible in the accessibility tree.
140+
141+
The syntax is: interactivity: auto | inert
142+
143+
144+
145+
<!-- ---------- -->
146+
###### CSS Logical Overflow
147+
148+
The overflow-inline and overflow-block CSS properties allow setting overflow in inline and block direction relative to the writing-mode. In a horizontal writing-mode overflow-inline maps to overflow-x, while in a vertical writing-mode it maps to overflow-y.
149+
150+
151+
152+
<!-- ---------- -->
153+
###### CSS caret-animation property
154+
155+
Chromium supports animation of the caret-color property, but when animated the default blinking behavior of the caret interferes with the animation. For instance, see the example at https://drafts.csswg.org/css-ui/#caret-animation where an animation from blue to red and back is rendered as a blinking cursor that is randomly blue or red. The CSS caret-animation property has two possible values: auto and manual, where auto means browser default (blinking) and manual means the page author is controlling the caret animation. In addition, via a user stylesheet, it allows users who are disturbed by or have adverse reactions to blinking or flashing visuals to disable the blinking.
156+
157+
158+
<!-- ---------- -->
159+
###### CSS dynamic-range-limit property
160+
161+
Enables a page to limit the maximum brightness of HDR content.
162+
163+
164+
<!-- ---------- -->
165+
###### CSS shape() function
166+
167+
shape() allows responsive free-form shapes in clip-path.
168+
169+
It lets the author define a series of commands, equivalent to the commands in path(), but where the commands accept responsive units (e.g. % or vw), as well as any CSS values such as custom properties or rather than pixel-values.
170+
171+
See https://drafts.csswg.org/css-shapes-2/#shape-function
172+
173+
174+
<!-- ---------- -->
175+
###### Create service worker client and inherit service worker controller for srcdoc iframe
176+
177+
Srcdoc context documents are currently not service worker clients and not covered by their parent’s service worker. That results in some discrepancies (e.g. Resource Timing reports the URLs that these document load, but service worker doesn’t intercept them). This aims to fix the discrepancies by creating service worker clients for srcdoc iframes and make them inherit parent's service worker controller.
178+
179+
180+
<!-- ---------- -->
181+
###### Dispatching click events to captured pointer
182+
183+
If a pointer is captured while the `pointerup` event is being dispatched, the `click` event will be dispatched to the captured target instead of the nearest common ancestor of `pointerdown` and `pointerup` events as per the UI Event spec.
184+
185+
For uncaptured pointers, the `click` target remains unchanged.
186+
187+
188+
<!-- ---------- -->
189+
###### Float16Array
190+
191+
Adds the Float16Array typed array. Number values are rounded to IEEE fp16 when writing into Float16Array instances.
192+
193+
194+
<!-- ---------- -->
195+
###### Incorporating navigation initiator into the HTTP cache partition key
196+
197+
Chrome’s HTTP cache keying scheme will be updated to include an “is-cross-site-main-frame-navigation” boolean to mitigate cross-site leak attacks involving top-level navigation. Specifically, this will prevent cross-site attacks in which an attacker can initiate a top-level navigation to a given page and then navigate to a resource known to be loaded by the page in order to infer sensitive information via load timing. This change also improves privacy by preventing a malicious site from using navigations to infer whether a user has visited a given site previously.
198+
199+
200+
<!-- ---------- -->
201+
###### Invoker Commands; the command and commandfor attributes
202+
203+
Adding command and commandfor attributes to <button> elements would allow authors to assign behaviour to buttons in a more accessible and declarative way, while reducing bugs and simplifying the amount of JavaScript pages are required to ship for interactivity. Buttons with commandfor and command attributes will - when clicked, touched, or enacted via keypress - dispatch a CommandEvent on the element referenced by commandfor, with some default behaviours such as opening dialogs and popovers.
204+
205+
206+
207+
208+
<!-- ---------- -->
209+
###### Link rel=facilitated-payment to support push payments
210+
211+
Adds support for <link rel="facilitated-payment" href="..."> as a hint that the browser should notify registered payment clients about a pending push payment.
212+
213+
214+
<!-- ---------- -->
215+
###### NavigateEvent sourceElement
216+
217+
When a navigation is initiated by an Element (i.e., a link click or a form submission), the sourceElement property on the NavigateEvent will be the initiating element.
218+
219+
220+
<!-- ---------- -->
221+
###### Observable API
222+
223+
Observables are a popular reactive-programming paradigm to handle an asynchronous stream of push-based events. They can be thought of as Promises but for multiple events, and aim to do what Promises did for callbacks/nesting. That is, they allow ergonomic event handling by providing an Observable object that represents the asynchronous flow of events.
224+
225+
You can "subscribe" to this object to receive events as they come in, and call any of its operators/combinators 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 things like `addEventListener()`. For more on this, see the examples in the explainer.
226+
227+
The big selling point for native Observables is their integration with EventTarget — its proposed `when()` method that returns an Observable which is a "better" `addEventListener()`.
228+
229+
See https://github.com/WICG/observable and https://twitter.com/domfarolino/status/1684921351004430336.
230+
231+
See the spec https://wicg.github.io/observable/ and the design doc: https://docs.google.com/document/d/1NEobxgiQO-fTSocxJBqcOOOVZRmXcTFg9Iqrhebb7bg/edit.
232+
233+
234+
<!-- ---------- -->
235+
###### On-device Web Speech API
236+
237+
This feature adds on-device speech recognition support to the Web Speech API, allowing websites to ensure that neither audio nor transcribed speech are sent to a third-party service for processing.
238+
239+
Websites can query the availability of on-device speech recognition for specific languages, prompt users to install the necessary resources for on-device speech recognition, and choose between on-device or cloud-based speech recognition as needed.
240+
241+
242+
<!-- ---------- -->
243+
###### Partitioning :visited links history
244+
245+
To eliminate user browsing history leaks, anchor elements are styled as :visited only if they have been clicked from this top-level site and frame origin before. On the browser-side, this means that the VisitedLinks hashtable is now partitioned via "triple-keying", or by storing the following for each visited link: <link URL, top-level site, frame origin>. By only styling links that have been clicked on this site and frame before, the many side-channel attacks that have been developed to obtain :visited links styling information are now obsolete, as they no longer provide sites with new information about users.
246+
247+
There is an exception for "self-links", where 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. The privacy benefits above are still achieved because sites already know which of its subpages a user has visited, so no new information is exposed. This was a community-requested exception which improves user experience as well.
248+
249+
250+
<!-- ---------- -->
251+
###### Service Worker client URL ignore history.pushState changes
252+
253+
Modify the service worker Client.url property to ignore document URL changes via history.pushState() and other similar history APIs. The Client.url property is intended to be the creation URL of the HTML document which ignores such changes.
254+
255+
256+
<!-- ---------- -->
257+
###### Timestamps for RTC Encoded Frames
258+
259+
This feature consists in exposing to the Web some timestamps that are present in WebRTC encoded frames transmitted via RTCPeerConnection.
260+
The timestamps in question are:
261+
-Capture timestamp: the timestamp when a frame was originally captured
262+
-Receive timestamp: the timestamp when a frame was received
263+
264+
265+
266+
<!-- ---------- -->
267+
###### Update ProgressEvent to use double type for &#39;loaded&#39; and &#39;total&#39;
268+
269+
The ProgressEvent has attributes `loaded` and `total` indicating the progress, and their type is `unsigned long long` now.
270+
271+
With this feature, the type for these two attributes is changed to `double` instead, which gives the developer more control over the value. For example, the developers can now create a ProgressEvent with the `total` of 1 and the `loaded` increasing from 0 to 1 gradually. This is aligned with the default behavior of the <progress> HTML element if the max attribute is omitted.
272+
273+
274+
<!-- ---------- -->
275+
###### fetchLater API
276+
277+
fetchLater() is a JavaScript API to request a deferred fetch. Once called in a document, a deferred request is queued by the browser in the PENDING state, and will be invoked by the earliest of the following conditions:
278+
279+
* The document is destroyed.
280+
* After a user-specified time. For privacy reason, all pending requests will be flushed upon document entering bfcache no matter how much time is left.
281+
* Browser decides it's time to send it.
282+
283+
The API returns a FetchLaterResult that contains a boolean field "activated" that may be updated to tell whether the deferred request has been sent out or not. On successful sending, the whole response will be ignored by browser, including body and headers. Nothing at all should be processed or updated, as the page may have already be gone.
284+
285+
Note that from the point of view of the API user, the exact send time is unknown.
286+
287+
288+
<!-- ---------- -->
289+
###### highlightsFromPoint API
290+
291+
The highlightsFromPoint API enables developers to interact with custom highlights by detecting which highlights exist at a specific point within a document. This interactivity is valuable for complex web features where multiple highlights may overlap or exist within shadow DOM. By providing precise point-based highlight detection, the API empowers developers to manage dynamic interactions with custom highlights more effectively, such as responding to user clicks or hover events on highlighted regions to trigger custom tooltips, context menus, or other interactive features.
292+
293+
294+
<!-- ------------------------------ -->
295+
#### Deprecated and removed features
296+
297+
**TODO: CHECK THE FEATURES LISTED BELOW AND ADD THEM TO THE SITE-COMPAT-IMPACTING-CHANGES ARTICLE.**
298+
299+
300+
301+
<!-- ---------- -->
302+
###### Deprecate getters of Intl Locale Info
303+
304+
Intl Locale Info API is a Stage 3 ECMAScript TC39 proposal to enhance the Intl.Locale object by exposing Locale information, such as week data (first day in a week, weekend start day, weekend end day, minimun day in the first week), and text direction hour cycle used in the locale.
305+
https://github.com/tc39/proposal-intl-locale-info
306+
307+
We ship our implementation in m99 (https://chromestatus.com/feature/5566859262820352 ) . But later on the propose made some change in Stage 3 and move several getters to functions. We need to remove the deprecated getters and relaunch the renamed functions
308+
309+
310+
311+
<!-- ---------- -->
312+
###### Remove deprecated navigator.xr.supportsSession method
313+
314+
navigator.xr.supportsSession was replaced in the WebXR spec by the navigator.xr.isSessionSupported method in September of 2019 after receiving feedback on the API shape from the TAG. It has been marked as deprecated in Chromium since then, producing a console warning redirecting developers to the updated API.
315+
316+
Usage of the call is very low, as shown here: https://chromestatus.com/metrics/feature/timeline/popularity/2416 Additionally, all major frameworks that are used to build WebXR content have been confirmed to have been updated to use the newer call.
317+
318+
319+
320+
321+
<!-- ====================================================================== -->
322+
## Origin trials
323+
324+
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](../../origin-trials/index.md). To see the full list of available origin trials, see [Microsoft Edge Origin Trials](https://developer.microsoft.com/microsoft-edge/origin-trials/).
325+
326+
327+
<!-- ------------------------------ -->
328+
#### Microsoft Edge-only origin trials
329+
330+
331+
<!-- ------------------------------ -->
332+
#### New Chromium origin trials
333+
334+
335+
336+
<!-- ====================================================================== -->
337+
> [!NOTE]
338+
> 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](https://creativecommons.org/licenses/by/4.0).

0 commit comments

Comments
 (0)