Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file not shown.
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ ms.author: msedgedevrel
ms.topic: article
ms.service: microsoft-edge
ms.subservice: pwa
ms.date: 05/22/2024
ms.date: 08/04/2026
---
# Display content in the title bar area using Window Controls Overlay

Expand Down Expand Up @@ -45,20 +45,6 @@ See also:
* [The web app manifest](https://developer.mozilla.org/docs/Web/Progressive_web_apps/Guides/Making_PWAs_installable#the_web_app_manifest) in _Making PWAs installable_ at MDN > References > Progressive web apps > Guides.


<!-- ====================================================================== -->
## Toggle the title bar

When the Window Controls Overlay feature is enabled, the user can choose to have the title bar or not, by clicking the title bar toggle button:

![Select the title bar toggle button](./window-controls-overlay-images/wco-toggle-button.png)

Your code can't assume that the window controls overlay is displayed, because:
* The user can choose whether to display the title bar.
* Your app can also run in a web browser or on a mobile device, as well as running as a desktop app.

Therefore, your code needs to react to title bar geometry changes. To learn more, see [React to overlay changes](#react-to-overlay-changes).


<!-- ====================================================================== -->
## Use CSS environment variables to stay clear of the overlay

Expand Down Expand Up @@ -166,14 +152,11 @@ if ('windowControlsOverlay' in navigator) {

| Icon | Tooltip |
| --- | --- |
| ![The "Hide title bar" icon](./window-controls-overlay-images/hide-title-bar-icon.png) | **Hide title bar** |
| ![The "Settings and more" icon](./window-controls-overlay-images/settings-and-more-icon.png) | **Settings and more** |
| ![The "Minimize" icon](./window-controls-overlay-images/minimize-icon.png) | **Minimize** |
| ![The "Restore" icon](./window-controls-overlay-images/restore-icon.png) | **Restore** |
| ![The "Close" icon](./window-controls-overlay-images/close-icon.png) | **Close** |

1. In the title bar, click the **Hide title bar** (![The "Hide title bar" icon](./window-controls-overlay-images/hide-title-bar-icon.png)) button.

The app now displays content all the way to the top of the window frame, where the title bar used to be:

![The top area of the map can be used to move the window](./window-controls-overlay-images/wco-draggable-titlebar.png)
Expand Down
12 changes: 8 additions & 4 deletions microsoft-edge/toc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@
# maint:
# toc.yml - add new relnotes page, move a relnotes page to archive
# /web-platform/release-notes/index.md - add new relnotes page, remove earliest relnotes page
- name: Microsoft Edge 152
href: ./web-platform/release-notes/152.md
displayName: Microsoft Edge 152 web platform release notes (Aug. 2026) # page title

- name: Microsoft Edge 151
href: ./web-platform/release-notes/151.md
displayName: Microsoft Edge 151 web platform release notes (Jul. 2026) # page title
Expand Down Expand Up @@ -69,13 +73,13 @@
- name: Microsoft Edge 143
href: ./web-platform/release-notes/143.md
displayName: Microsoft Edge 143 web platform release notes (Dec. 2025) # page title

- name: Microsoft Edge 142
href: ./web-platform/release-notes/142.md
displayName: Microsoft Edge 142 web platform release notes (Oct. 2025) # page title
# keep 10 items above
- name: Archive
items:
- name: Microsoft Edge 142
href: ./web-platform/release-notes/142.md
displayName: Microsoft Edge 142 web platform release notes (Oct. 2025) # page title

- name: Microsoft Edge 141
href: ./web-platform/release-notes/141.md
displayName: Microsoft Edge 141 web platform release notes (Oct. 2025) # page title
Expand Down
14 changes: 0 additions & 14 deletions microsoft-edge/web-platform/release-notes/147.md
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,6 @@ To stay up-to-date and get the latest web platform features, download a preview
* [Web APIs](#web-apis)
* [Clear the `window.name` value for cross-site navigations that switch browsing context group](#clear-the-windowname-value-for-cross-site-navigations-that-switch-browsing-context-group)
* [Device Bound Session Credentials](#device-bound-session-credentials)
* [OpaqueRange](#opaquerange)
* [`<install>` HTML element](#install-html-element)
* [Connection allowlists](#connection-allowlists)
* [Autofill event](#autofill-event)
Expand Down Expand Up @@ -193,19 +192,6 @@ See also:
* [Device Bound Session Credentials](https://w3c.github.io/webappsec-dbsc/)


<!-- ------------------------------ -->
#### OpaqueRange

`OpaqueRange` represents a live text range inside text controls such as `<input>` and `<textarea>`.

Use `OpaqueRange` to enable range-based operations, including:
* Geometry queries.
* Integration with highlighting workflows.

See also:
* [Range](https://developer.mozilla.org/docs/Web/API/Range) at MDN.


<!-- ------------------------------ -->
#### `<install>` HTML element

Expand Down
19 changes: 1 addition & 18 deletions microsoft-edge/web-platform/release-notes/149.md
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,6 @@ To stay up-to-date and get the latest web platform features, download a preview
* [User-action pseudo-classes top-layer boundary](#user-action-pseudo-classes-top-layer-boundary)
* [Web APIs](#web-apis)
* [Intl.Locale variants](#intllocale-variants)
* [`OpaqueRange` for form control text](#opaquerange-for-form-control-text)
* [Migrate a PWA to a new origin](#migrate-a-pwa-to-a-new-origin)
* [Distinguish payment handler errors in a payment request](#distinguish-payment-handler-errors-in-a-payment-request)
* [`Request.isReloadNavigation` attribute](#requestisreloadnavigation-attribute)
Expand Down Expand Up @@ -134,7 +133,7 @@ See also:
<!-- ------------------------------ -->
#### Scope system accent color to installed web apps

The `accent-color: auto` CSS value for form controls now applies the operating system's accent color only within installed web app contexts. On regular web pages, form controls use a browser-default accent color instead.
The `accent-color: auto` CSS value for form controls now applies the operating system's accent color only within installed web app contexts. On regular webpages, form controls use a browser-default accent color instead.

This change aligns the behavior of `accent-color: auto` with the `AccentColor` and `AccentColorText` CSS system color keywords, which are also scoped to installed web app contexts, to reduce fingerprinting.

Expand Down Expand Up @@ -184,22 +183,6 @@ See also:
* [Intl.Locale](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Intl/Locale) at MDN.


<!-- ------------------------------ -->
#### `OpaqueRange` for form control text

Use `OpaqueRange` to represent a live span of text within a form control's value, such as a `<textarea>` or text-based `<input>`.

`OpaqueRange` enables the following for inline suggestions, highlights, and anchored popovers:
* Operations such as `getBoundingClientRect()` and `getClientRects()`.
* Integration with the CSS Custom Highlight API.

`OpaqueRange` preserves encapsulation by exposing only value offsets, and returns `null` for `startContainer` and `endContainer`.

See also:
* [OpaqueRange](https://github.com/MicrosoftEdge/Demos/tree/main/opaque-range) at MicrosoftEdge/Demos.
* [Try the OpaqueRange API. Stop using mirror divs to measure text positions in inputs!](https://www.youtube.com/watch?v=Sp9C68TZXiE) at YouTube.


<!-- ------------------------------ -->
#### Migrate a PWA to a new origin

Expand Down
25 changes: 1 addition & 24 deletions microsoft-edge/web-platform/release-notes/150.md
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,6 @@ To stay up-to-date and get the latest web platform features, download a preview
* [CSS `light-dark()` with image values](#css-light-dark-with-image-values)
* [Comma-separated container queries](#comma-separated-container-queries)
* [Expose unprintable areas via CSS](#expose-unprintable-areas-via-css)
* [Media element pseudo-classes](#media-element-pseudo-classes)
* [`named-feature()` function for CSS @supports](#named-feature-function-for-css-supports)
* [`overscroll-behavior: chain`](#overscroll-behavior-chain)
* [`flex-wrap:balance`](#flex-wrapbalance)
Expand Down Expand Up @@ -198,28 +197,6 @@ See also:
* [Staying within the printable area: the `page-margin-safety` property](https://drafts.csswg.org/css-page-3/#page-margin-safety) in _CSS Paged Media Module Level 3_.


<!-- ------------------------------ -->
#### Media element pseudo-classes

The following CSS pseudo-classes match `<audio>` and `<video>` elements based on their state:
* `:playing`
* `:paused`
* `:seeking`
* `:buffering`
* `:stalled`
* `:muted`
* `:volume-locked`

See also:
* [`:playing` CSS pseudo-class](https://developer.mozilla.org/docs/Web/CSS/Reference/Selectors/:playing) at MDN.
* [`:paused` CSS pseudo-class](https://developer.mozilla.org/docs/Web/CSS/Reference/Selectors/:paused) at MDN.
* [`:seeking` CSS pseudo-class](https://developer.mozilla.org/docs/Web/CSS/Reference/Selectors/:seeking) at MDN.
* [`:buffering` CSS pseudo-class](https://developer.mozilla.org/docs/Web/CSS/Reference/Selectors/:buffering) at MDN.
* [`:stalled` CSS pseudo-class](https://developer.mozilla.org/docs/Web/CSS/Reference/Selectors/:stalled) at MDN.
* [`:muted` CSS pseudo-class](https://developer.mozilla.org/docs/Web/CSS/Reference/Selectors/:muted) at MDN.
* [`:volume-locked` CSS pseudo-class](https://developer.mozilla.org/docs/Web/CSS/Reference/Selectors/:volume-locked) at MDN.


<!-- ------------------------------ -->
#### `named-feature()` function for CSS `@supports`

Expand Down Expand Up @@ -468,7 +445,7 @@ For the full list of available origin trials, see [Microsoft Edge Origin Trials]
| Prompt API sampling parameters | The `topK` and `temperature` sampling parameters let you optimize model behavior per language model session. | [Register](https://developer.microsoft.com/microsoft-edge/origin-trials/trials/32d0cd0f-611d-411e-b48e-cfd8edfdbf73) |
| `<install>` HTML element | Declaratively install other websites as web apps by using the `<install>` element. | [Register](https://developer.microsoft.com/microsoft-edge/origin-trials/trials/b2eb5c7f-7df0-4ad9-950e-2fbd2ebc08ec) |
| Declarative CSS Module Scripts | Shares declarative stylesheets with shadow roots, including declarative shadow roots, using inline style modules. | [Register](https://developer.microsoft.com/microsoft-edge/origin-trials/trials/966b04dd-3da4-43f4-a6a0-66a785f129f4) |
| Gamepad raw input event | Instead of relying on frequent polling via `navigator.getGamepads()`, web pages can listen for `gamepadrawinputchanged` events. These events are fired whenever changes are detected between input frames from the same device. | [Register](https://developer.microsoft.com/microsoft-edge/origin-trials/trials/4ecdb530-835b-447d-b27e-0b3be8e0412b) |
| Gamepad raw input event | Instead of relying on frequent polling via `navigator.getGamepads()`, webpages can listen for `gamepadrawinputchanged` events. These events are fired whenever changes are detected between input frames from the same device. | [Register](https://developer.microsoft.com/microsoft-edge/origin-trials/trials/4ecdb530-835b-447d-b27e-0b3be8e0412b) |
| Autofill Event | Detects when browser autofill updates form controls, for adapting custom UI and validation. | [Register](https://developer.microsoft.com/microsoft-edge/origin-trials/trials/43534059-5696-4eaf-8bbd-eba4c4f86e88) |
| WebAssembly Custom Descriptors V2 | Stores data associated with source-level types more efficiently, in custom descriptor objects. | [Register](https://developer.microsoft.com/microsoft-edge/origin-trials/trials/9c75e7f3-49cb-43de-9745-7458ff9c3689) |
| WebMCP | Enables your site to register tools for an in-browser agent to complete tasks on behalf of a user. | [Register](https://developer.microsoft.com/microsoft-edge/origin-trials/trials/0b76fe60-b266-458e-a285-04e375c0c31a) |
Expand Down
Loading
Loading