Note
Access to this page requires authorization. You can try signing in or changing directories.
Access to this page requires authorization. You can try changing directories.
The following are the new web platform features and updates in Microsoft Edge 138, which releases on June 26, 2025.
To stay up-to-date and get the latest web platform features, download a preview channel of Microsoft Edge (Beta, Dev, or Canary); go to Become a Microsoft Edge Insider.
Detailed contents:
- Edge DevTools
- WebView2
- Web platform features
- CSS features
- Web APIs
- Prompt and Writing Assistance API developer previews
- New
prefetchCache
andprerenderCache
values for theClear-Site-Data
header - Video frame orientation metadata in WebCodecs
- New
is_top_level
andvisibility_state
fields in Crash Reporting API reports - Disallow plain text pre-rendering over HTTP
- Escape
<
and>
in HTML attributes when serializing Integrity-Policy
header for subresource integrity of scripts- Predictable reported storage quota
pushsubscriptionchange
event upon resubscription- Speculation rules:
target_hint
field - Strict Same-origin policy for Storage Access API
- Viewport Segments Enumeration API
- Web app scope extensions
- Removed 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 stretch
sizing keyword
The stretch
keyword, for CSS sizing properties such as width
and height
, allows elements to grow to exactly fill their containing block's available space. The stretch
sizing keyword is similar to the value 100%
, except that the resulting size is applied to the element's margin box instead of to the box that's indicated by box-sizing
.
The stretch
keyword allows the element to keep its margins, while still being as large as possible. This is an unprefixed version of -webkit-fill-available
.
See also:
- stretch in height, at MDN.
CSS abs()
and sign()
functions
The abs(A)
function returns the absolute value of A, of the same type as the input:
- If A's numeric value is positive or 0⁺,
abs(A)
outputs A. - Otherwise,
abs(A)
outputs -1 * A.
The sign(A)
function returns:
- -1 if A's numeric value is negative.
- +1 if A's numeric value is positive.
- 0⁺ if A's numeric value is 0⁺.
- 0⁻ if A's numeric value is 0⁻.
The return CSS type is <number>
, made consistent with the input calculation's type.
See also:
CSS environment variable for OS-level font scale
The preferred-text-scale
CSS environment variable exposes a user's preferred font scale to CSS.
Previously, it was not practical for a page to detect if the user had changed their preferred font size via the operating system's preferences.
See also:
- env() at MDN.
CSS sibling-index()
and sibling-count()
functions
sibling-index()
and sibling-count()
can be used as integers in CSS property values to style elements based on their position among sibling elements, or on the total number of siblings. These functions can be used inside calc()
expressions, or can be used directly as integer values.
For example, you can use the sibling-index()
function inside a calc()
expression to set the left margin of a list item based on its position among its siblings:
li {
margin-inline-start: calc(1rem * sibling-index());
}
See also:
- Tree Counting Functions: the
sibling-count()
andsibling-index()
notations in the CSS Values and Units Module Level 5 specification.
Interpolation progress: CSS progress()
function
The progress()
CSS math function returns a <number>
that represents the position of a value between a progress start value and progress end value.
progress()
can be useful in cases such as fluid typography.
See also:
- Interpolation Progress Calculations: the
progress()
notation in the CSS Values and Units Module Level 5 specification. - [css-values] Proposal for a 'progress' function to calculate progress between two
<length>
values on the CSS Working Group GitHub repo.
Nested view transitions
Nested view transitions allow view transitions to generate a nested pseudo-element tree rather than a flat pseudo-element tree, which allows certain view transitions to appear more like their original elements.
Some CSS features rely on the relationship between elements in the DOM tree, such as:
- Clipping from the
overflow
,clip-path
, orborder-radius
properties. - 3D effects from the
transform
,transform-style
, orperspective
properties. - Masking and effects from the
opacity
,mask-image
, orfilter
properties.
The visual output of these effects depend on the DOM tree structure, and a view transition that flattens the DOM tree can cause these effects to not work as expected.
See also:
- View Transition API at MDN.
- Explainer: Nested View Transition Groups on the WICG/view-transitions GitHub repo.
Web APIs
Prompt and Writing Assistance API developer previews
The Prompt API and Writing Assistance APIs are now available as developer previews in Edge Canary and Dev channels.
These APIs give you access to a powerful small language model, Phi-4-mini, that is built into the Edge browser.
Use these APIs to try out prompt engineering, summarize and modify content, or generate text.
See also:
- Prompt a built-in language model with the Prompt API
- Summarize, write, and rewrite text with the Writing Assistance APIs
- Simplified access to AI in Microsoft Edge: Introducing the Prompt and Writing Assistance APIs
New prefetchCache
and prerenderCache
values for the Clear-Site-Data
header
The Clear-Site-Data
HTTP header now supports the new prefetchCache
and prerenderCache
values.
Previously, the only way to clear the prefetch and prerender cache was by using cache
value of the Clear-Site-Data
HTTP header. With the increased adoption of the Speculation Rules API, developers need a way to specifically clear the prefetch or prerender cache, or both, without disrupting other session information, such as history or cookies.
See also:
- Speculation Rules API at MDN.
Video frame orientation metadata in WebCodecs
Various video-related interfaces in WebCodecs now have rotation
and flip
values:
- The
VideoFrame
interface can now create object instances that have arbitraryrotation
andflip
values. - The
VideoDecoderConfig
object now hasrotation
andflip
fields that are emitted on decodedVideoFrame
objects automatically. - The
VideoEncoder
class now has a mechanism for passingrotation
andflip
information fromencode()
to theVideoDecoderConfig
that's emitted as part ofEncodedVideoChunkMetadata
.
Previously, developers had no way of knowing when they received video frames that had a non-default orientation.
See also:
- WebCodecs API at MDN.
New is_top_level
and visibility_state
fields in Crash Reporting API reports
Crash reports that are sent to default endpoints by the Crash Reporting API now have the is_top_level
and visibility_state
string fields.
The is_top_level
and visibility_state
fields are contextual bits of information about crashing frames in a crash report.
See also:
- Reporting API at MDN.
Disallow plain text pre-rendering over HTTP
To make pre-rendering consistent with pre-fetch, plain text pre-rendering now only works over HTTPS.
Previously, plain text pre-rendering was permitted over both HTTP and HTTPS connections.
See also:
- Navigation fetch changes in Prerendering Revamped.
Escape <
and >
in HTML attributes when serializing
The <
and >
characters in HTML element attribute values are now escaped when serializing HTML. This mitigates the risk of mutation XSS attacks, which occur when the value of an attribute is interpreted as a start tag token after being serialized and re-parsed.
Integrity-Policy
header for subresource integrity of scripts
The new Integrity-Policy
header enables you to assert that every resource of a given type needs to be integrity-checked. If a resource of the specified type is attempted to be loaded without integrity metadata, that attempt fails, and produces a violation report.
See also:
- Subresource Integrity at MDN.
Predictable reported storage quota
The storage quota that's reported by the StorageManager's estimate()
method for sites that don't have unlimited storage permissions is now the same across all browsing modes.
This mitigates an issue where it was previously possible to detect a user's browsing mode via the reported storage quota, because the storage space that's made available is significantly smaller in InPrivate mode than in regular mode.
The reported quota is now equal to the current storage usage plus the minimum value between 10 GiB and the device disk size rounded up to the nearest 1 GiB, in all browsing modes, for sites with limited storage permissions.
Sites that have unlimited storage permissions are unaffected.
See also:
- StorageManager at MDN.
- Storage quotas and eviction criteria at MDN.
pushsubscriptionchange
event upon resubscription
The pushsubscriptionchange
event is fired by a service worker when an origin is re-granted notification permission, after the origin's previous push subscription was revoked because of a permission change (from granted
to deny
or default
).
The event is fired with an empty oldSubscription
and newSubscription
.
See also:
Speculation rules: target_hint
field
The syntax for speculation rules has been extended to allow you to specify the target_hint
field. The target_hint
field provides a hint for the browser to know where a prerendered target will be displayed, such as in a new tab or window.
For example, when _blank
is specified as a hint, a prerendered page can be rendered in a window that's opened by window.open()
.
target_hint
currently supports the _self
and _blank
strings. If the hint is not specified, it's treated as _self
.
The target_hint
field has no effect on prefetching speculation rules.
See also:
- Speculation Rules API at MDN.
Strict Same-origin policy for Storage Access API
The Storage Access API now follows the Same-origin policy.
By default, using document.requestStorageAccess()
in a frame only attaches cookies to the requests that are made to the iframe's origin. The CookiesAllowedForUrls
policy and storage access headers can still be used to unblock cross-site cookies.
See also:
- Storage Access API at MDN.
Viewport Segments Enumeration API
The Viewport Segments Enumeration API allows you to adapt your website layout to target foldable devices.
A viewport segment defines the position and dimensions of a logically separate region of the viewport. A viewport segment is created when the viewport is split by one or more hardware features (such as a fold or a hinge between separate displays) that act as a divider.
Segments are the regions of the viewport that can be treated as logically distinct.
See also:
Web app scope extensions
The new "scope_extensions"
web app manifest field enables a web app to extend its scope to other origins.
Example usage:
{
"name": "Example",
"display": "standalone",
"start_url": "/index.html",
"scope_extensions": [
{"type" : "origin", "origin" : "https://example.com"}
]
}
The scope_extensions
field allows a site that controls multiple subdomains and top-level domains to be presented as a single web app.
The scope_extensions
field requires listed origins to confirm association with the web app by using a .well-known/web-app-origin-association
configuration file:
{
"https://sample-app.com/": {
"scope": "/"
}
}
See also:
- Handle links from other origins by using scope extensions in Handle links to a PWA.
Removed features
Asynchronous range removal for Media Source Extensions now throws exceptions
The following changes have been made to the Media Source Extensions specification, to disallow ambiguously defined behavior involving asynchronous range removals:
SourceBuffer.abort()
no longer abortsSourceBuffer.remove()
operations.- Setting
MediaSource.duration
can no longer truncate currently buffered media.
While these changes were made a long time ago, and Safari and Firefox have already implemented them, Chromium had not yet done so. Exceptions will now be thrown in both of these cases.
See also:
- Media Source API at MDN.
Remove the automatic SwiftShader fallback
Previously, if a WebGL context could not be created with the available GPU, Chromium would automatically fall back to using the SwiftShader software renderer. This automatic fallback behavior is now removed and the WebGL context creation will now fail instead of falling back to SwiftShader.
SwiftShader poses security risks and leads to a poor user experience when falling back from a high-performance GPU-backed WebGL to a CPU-backed implementation.
SwiftShader remains a useful tool for doing headless testing on a site. This use case is still supported by opting in, which you can do by running Microsoft Edge with the --enable-unsafe-swiftshader
command-line argument.
See also:
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
Web app access to LocalFolder
Expires on July 31, 2025
Allows PWAs installed from the Microsoft Store to access file content that was previously stored in the WinRT ApplicationData.LocalFolder
folder by an earlier UWP version of the same application.
Web app scope extensions
Expires on August 31, 2025
scope_extensions
is a new web application manifest member that enables web apps to extend their scope to other origins.
Scope extensions allow web apps that rely on multiple subdomains and top-level domains to be presented as a single web app.
{
"name": "Example app",
"display": "standalone",
"start_url": "/index.html",
"scope_extensions": [
{
"type": "type",
"origin": "https://example.com"
}
]
}
The origins that are listed in the scope_extensions
member must confirm that they are associated with the web app, by hosting a configuration file named .well-known/web-app-origin-association
. The file must list the web app's origin:
{
"https://sample-app.com/": {
"scope": "/"
}
}
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.
MS High Contrast Deprecation
Expires on September 9, 2025.
Enables the legacy CSS -ms-high-contrast
media query and the legacy -ms-high-contrast-adjust
property.
See Deprecating support for -ms-high-contrast and -ms-high-contrast-adjust.
AriaNotify API
Expires on October 14, 2025.
The AriaNotify API enables developers to directly tell a screen reader what to read. In the simplest scenario, call ariaNotify("foo")
on the document or an element.
See Creating a more accessible web with Aria Notify.
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.