Edit

Share via


Microsoft Edge 139 web platform release notes (Aug. 2025)

The following are the new web platform features and updates in Microsoft Edge 139, which releases on August 7, 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

See What's New in Microsoft Edge DevTools.

WebView2

See Release Notes for the WebView2 SDK.

Web platform features

CSS features

CSS custom functions

A CSS custom function is similar to a custom property, but instead of returning a single, fixed value, a CSS custom function returns values that are based on other custom properties, parameters, and conditionals.

The following example shows a custom function called --negative, which takes a single parameter --value and returns its negated value:

@function --negative(--value) {
  result: calc(-1 * var(--value));
}

See also:

CSS font-width property

The font-width CSS property selects a font face from a font family based on width, either by a keyword such as condensed or a percentage.

The font-width property now works both in inline CSS styles and @font-face rules.

In addition, the font-stretch CSS property is now considered a legacy alias to the font-width property. The font-stretch CSS property continues to function, but it's no longer the recommended approach for controlling font width.

See also:

Continue running transitions when switching to initial transition value

CSS transitions that are set to none, while running, now continue to run. When transition-related CSS properties change, those changes only affect newly started transitions.

This change makes Microsoft Edge consistent with other browsers. Previously, Microsoft Edge incorrectly canceled transitions when the transition property was set to none.

See also:

CSS corner-shape property

The corner-shape CSS property allows you to specify the shape of the corners of an element, in addition to the existing border-radius property.

This allows to create shapes like squircles (squared-off circles) or notches, and animating between them.

See also:

Support width and height presentational attributes on nested <svg> elements

You can now use the width and height presentational attributes on nested <svg> elements, through both SVG markup and CSS. This approach provides greater flexibility, allowing you to style SVG elements more efficiently within complex designs.

With this feature, the following two HTML code snippets now produce the same output:

<svg width="100px" height="100px">
  <svg style="width:50px;height:50px;">
    <circle cx="50px" cy="50px" r="40px" fill="green" />
  </svg>
</svg>
<svg width="100px" height="100px">
  <svg width="50px" height="50px">
    <circle cx="50px" cy="50px" r="40px" fill="green" />
  </svg>
</svg>

In the second line:

  • The first example uses a style attribute that contains width and height values.
  • The second example uses separate width and height attributes.

See also:

Web APIs

request-close invoker command

The <dialog> element's requestClose() method can now also be invoked declaratively, by using the request-close invoker command.

The requestClose() method and the request-close invoker command are used to request closing a dialog element, which fires an event that allows you to prevent the dialog from closing, if necessary.

See also:

Allow more characters in JavaScript DOM APIs

You can now create DOM elements and attributes with a wider variety of valid characters in JavaScript. This matches the behavior for when the same elements and attributes are defined in HTML markup.

This change aligns the JavaScript DOM APIs with the HTML parser, which allows a broader set of characters for element names and attributes.

See also:

Audio level for WebRTC encoded frames

The audioLevel value for an encoded frame transmitted via RTCPeerConnection is now available in the metadata of that frame.

The audioLevel value is already exposed in other APIs, such as RTCStats and RTCContributingSources, and is useful in cases such as to indicate who's talking in a video conferencing application, or to detect silence.

Having audioLevel as part of each frame's metadata makes detecting the audio level more accurate and efficient for applications that use WebRTC Encode Transform. An application no longer needs to constantly call getStats() or getContributingSources() to get access to the audio level. The audio level now exactly corresponds to the frame that's being processed.

See also:

Specify a crash-reporting endpoint to receive only crash reports

With the Reporting API, crash reports are delivered to the default endpoint, which also receives many other kinds of reports besides crash reports.

You can now specify an endpoint named crash-reporting, which will receive only crash reports.

See also:

Fire error event instead of throwing for CSP blocked worker

Previously, when a Content Security Policy (CSP) blocked Microsoft Edge from using a Worker or SharedWorker, the browser threw a SecurityError when new Worker(url) or new SharedWorker(url) were run.

Now, the CSP is checked as part of fetching the Worker or SharedWorker script and an error event is fired asynchronously instead of throwing an exception.

See also:

Reduce fingerprinting in Accept-Language

To reduce the amount of information that the Accept-Language header exposes in HTTP requests, instead of sending the full list of the user's preferred languages with every HTTP request, only the user's most preferred language is sent.

See also:

Browser Bound Keys in the Secure Payment Confirmation API

The Secure Payment Confirmation API can now keep up with syncing passkeys and device requirements for online payments. The Browser Bound Keys feature adds device binding in the browser, to enable payment scenarios in which device binding is required.

This feature helps meet requirements for device binding for payment transactions.

See also:

Better JSON MIME type detection

Microsoft Edge now recognizes all valid JSON MIME types that are defined by the MIME Sniffing specification. This includes any MIME type whose subtype ends with +json, such as text/html+json, in addition to application/json and text/json MIME types.

This change ensures that web APIs and features that rely on JSON detection behave consistently across browsers.

See also:

Support the async attribute for SVG <script> elements

The SVG <script> element now supports the async attribute, similar to the HTML <script> element.

The async attribute allows scripts to be executed asynchronously, improving the performance and responsiveness of web apps that utilize SVG.

See also:

WebGPU core-features-and-limits

The core-features-and-limits feature string is now available, for checking the features that a WebGPU adapter has.

const adapter = await navigator.gpu.requestAdapter();
const hasCore = adapter.features.has('core-features-and-limits');

The core-features-and-limits feature signifies that the WebGPU adapter supports core WebGPU, as opposed to compatibility mode WebGPU.

Currently, core WebGPU is the only available version of WebGPU, but a compatibility mode might be added in the future to allow older hardware to access WebGPU.

See also:

WebGPU: 3D texture support for BC and ASTC compressed formats

The texture-compression-bc-sliced-3d and texture-compression-astc-sliced-3d WebGPU features add support for 3D textures that use Block Compression (BC) and Adaptive Scalable Texture Compression (ASTC) formats.

texture-compression-bc-sliced-3d and texture-compression-astc-sliced-3d let you use the efficient compression capabilities of BC and ASTC formats for volumetric texture data, offering significant reductions in memory footprint and bandwidth requirements, without substantial loss in visual quality.

By exposing these capabilities as WebGPU features, you can explicitly check for support and provide fallback solutions or alternative rendering paths when necessary.

See also:

WebXR depth sensing performance improvements

The WebXR API exposes several new mechanisms to customize the behavior of the depth-sensing feature within a WebXR session. These mechanisms can improve the performance of the generation or consumption of the depth buffer.

By using these new exposed mechanisms, you can:

  • Request the raw or smooth depth buffer.
  • Request that the runtime stop providing the depth buffer, or resume providing the depth buffer.
  • Expose a depth buffer that does not align with the user's view exactly, so that the user agent doesn't need to perform unnecessary re-projection for every frame.

See also:

PWA features

New PWA manifest update algorithm

The updating of installed PWAs uses a new algorithm. The new update algorithm makes the update process more deterministic and predictable, and gives you more control over whether, and when, updates should apply to existing installations of your app.

The new update algorithm has the following benefits:

  • Consistency: The algorithm provides a consistent way to detect when a manifest update should happen.
  • Reduced user interruptions: App users won't see the update dialog, except when it's strictly necessary, such as to confirm security-sensitive changes.
  • Browser flexibility: Microsoft Edge can now allow known, trusted apps to update without displaying a notification, and can block updates for known bad apps.
  • Developer control: You have more control over when the update dialog is shown to users.
  • Reduce network traffic: Unnecessary network traffic is minimized.

See also:

Web app scope extensions

scope_extensions is a new web app 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": "/"
  }
}

See also:

Removed features

Remove auto-detection of ISO-2022-JP charset in HTML

To improve security, auto-detection of the ISO-2022-JP charset in HTML has been removed.

See also:

Origin trials

The following are new experimental APIs that 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.

New Chromium origin trials

Full frame rate render blocking attribute

Expires on March 24, 2026

The new full-frame-rate render blocking attribute instructs the browser to render the page at a lower frame rate to reserve resources while parsing critical content. After the critical content has been parsed, the brower restores its normal frame rate.

For example <link rel="expect" href="#critical-content" blocking="full-frame-rate"> lowers the frame rate of the browser until the #critical-content element is parsed.

The full-frame-rate render blocking attribute is informational only. The browser may decide to lower the frame rate before parsing a blocking element, for example at the very beginning of the loading phase. The browser may also decide to restore the frame rate before the blocking element list gets empty, for example after a timeout or certain user interactions.

Prompt API

Expires on March 24, 2026

The Prompt API is an experimental web API that allows you to prompt a small language model (SLM) that is built into Microsoft Edge, from your website's or browser extension's JavaScript code. Use the Prompt API to generate and analyze text or create application logic based on user input, and discover innovative ways to integrate prompt engineering capabilities into your web application.

See also:

WebGPU Compatibility Mode

Expires on April 21, 2026

WebGPU Compatibility Mode is an opt-in, lightly restricted subset of WebGPU capable of running older graphics APIs such as OpenGL and Direct3D11. The goal is to expand the reach of WebGPU applications to older devices that do not have the modern, explicit graphics APIs that core WebGPU requires.

Microsoft Edge-only origin trials

Web app access to LocalFolder

Expires on July 31, 2025

Web app access to LocalFolder allows a PWA that was 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 app 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 December 18, 2025.

The Acquisition Info API supports third-party 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 your app to directly tell a screen reader what to say when there's a non-user-initiated change in the content of a webpage. In the simplest scenario, you call ariaNotify("foo") on the document or on 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.