Intent to Ship: Window shape API

128 views
Skip to first unread message

Chromestatus

unread,
Jul 8, 2026, 12:58:26 PM (6 days ago) Jul 8
to blin...@chromium.org, edm...@google.com, swetha...@google.com
Contact emails
edm...@google.com, swetha...@google.com

Explainer
https://github.com/explainers-by-googlers/chromeos-iwa-apis/blob/main/window-shape-explainer.md

Specification
https://explainers-by-googlers.github.io/chromeos-iwa-apis

Design docs

https://docs.google.com/document/d/1zPr1QgS-bXsJE7nrO44zx9RBopR4gHuvHxfcqxsX5Ag/edit?tab=t.0#heading=h.pcgro84kqnh3

Summary
Window Shape API enables allowlisted [Isolated Web Apps](https://chromeos.dev/en/web/isolated-web-apps) on ChromeOS to customize their window shape. By enabling non-rectangular and non-contiguous window layouts, developers can implement unique user experiences (such as widgets, floating panels, and overlays) that match the look-and-feel of native applications. The API `window.chromeos.isolatedWebApp.setShape` requires the window to be in the unframed display mode and requires the window-management permission to be granted. Administrators can manage this feature with existing policies for window management: - [DefaultWindowManagementSetting](https://chromeenterprise.google/policies/#DefaultWindowManagementSetting) configures the default state for the window management for all apps. The policies below can override this default. - [WindowManagementAllowedForUrls](https://chromeenterprise.google/policies/#WindowManagementAllowedForUrls) allows IWAs with specified origins to enter unframed mode and set custom window shapes without any user interaction. - [WindowManagementBlockedForUrls](https://chromeenterprise.google/policies/#WindowManagementBlockedForUrls) blocks the permission for specified origins, forcing Chrome to remove any custom window shapes and fallback to other available display modes.

Blink component
UI>Browser>WebAppInstalls>Isolated

Web Feature ID
Missing feature

Motivation
No information provided

Initial public proposal
No information provided

TAG review
N/A - TAG review is not needed for IWA APIs https://crsrc.org/c/docs/website/site/blink/launching-features/isolated-web-apps/index.md;l=73;drc=a5459539e0dfc093d8dc137fb9f8a72ddf5dcbb3

TAG review status
Not applicable

Goals for experimentation
None

Risks


Interoperability and Compatibility
N/A, this feature is not meant to be implemented by other browsers.

Gecko: No signal

WebKit: No signal

Web developers: No signals

Other signals:

Ergonomics
N/A

Activation
N/A, the feature is a single JS API that follows the same behavior as a pre-existing Chrome App API. Developers already know how to use it.

Security
See https://github.com/explainers-by-googlers/chromeos-iwa-apis/blob/main/window-shape-explainer.md#security--privacy-considerations In summary: The custom shape can be used to create a hidden window, or for clickjacking. We mitigate this by requiring a minimum shape size of 10x10 pixels, and by enforcing an allowlist of partners that can use this API.

WebView application risks

Does this intent deprecate or change behavior of existing APIs, such that it has potentially high risk for Android WebView-based applications?

N/A


Debuggability
N/A

Will this feature be supported on all six Blink platforms (Windows, Mac, Linux, ChromeOS, Android, and Android WebView)?
No
This feature is implemented as a Blink extensions for Chrome on ChromeOS. It will not be available in any other platform.

Is this feature fully tested by web-platform-tests?
No


Flag name on about://flags
enable-chromeos-isolated-web-app-set-shape

Finch feature name
No information provided

Non-finch justification
No information provided

Rollout plan
Will ship enabled for all users

Requires code in //chrome?
False

Availability expectation
Feature is available only in Chrome on ChromeOS, and only for allowlisted IWAs.

Adoption expectation
Feature is used by allowlisted IWAs within 12 months of launch in Chrome.

Adoption plan
Work with partners: The feature is currently available behind a feature flag in ChromeOS, and two partners already use it to develop new IWAs. The target release of their IWAs is 26Q4.

Non-OSS dependencies

Does the feature depend on any code or APIs outside the Chromium open source repository and its open-source dependencies to function?

N/A

Estimated milestones
Shipping on desktop152


Anticipated spec changes

Open questions about a feature may be a source of future web compat or interop issues. Please list open issues (e.g. links to known github issues in the project for the feature specification) whose resolution may introduce web compat/interop risk (e.g., changing to naming or structure of the API in a non-backward-compatible way).

N/A

Link to entry on the Chrome Platform Status
https://chromestatus.com/feature/5075144470036480?gate=6125215051546624

This intent message was generated by Chrome Platform Status.

Alex Russell

unread,
Jul 13, 2026, 2:44:21 PM (14 hours ago) Jul 13
to blink-dev, Chromestatus, edm...@google.com, swetha...@google.com
Hey folks,

I'm very excited to see this capability coming to the web!

At the same time, the shape of this proposal is not going to pass muster in current form.

First, we can't be embedding the name `chromeos` into APIs that can be used across platforms. We should hope and expect for a day when IWAs are lit up more broadly, so putting this in a CrOS-specific namespace is a bad smell. It also isn't clear that this should be prefixed with an IWA-specific namespace.

Second, it isn't clear that this making format is common to other masking formats on the web. I don't see a list of considered design alternatives for these (and other) API shape concerns in the Explainer, which in and of itself is concerning. Can you please reach out to a current or former TAG memeber in your org to get guidance on API shape?

Best,

Alex

Edman Anjos

unread,
Jul 13, 2026, 4:05:17 PM (13 hours ago) Jul 13
to blink-dev, Alex Russell, Chromestatus, edm...@google.com, swetha...@google.com
Hi Alex, thanks a lot for your reply,
there's some additional context I can share about this feature:

* This feature is designed as a ChromeOS-specific Blink extension exclusively for Isolated Web Apps (IWAs). It is not a general web standard or cross-platform web API, and will not become one. Access is further restricted to allowlisted applications. Because the target audience and platform scope are so narrow, standardization is not a goal in this feature.

* We first proposed this style of APIs on blink-api-owners-discuss. `setShape` is our first (and currently only planned) API following this proposal. The use of `chromeos.isolatedWebApp.*` comes from the need of a namespace that won't pollute standard web or IWA API surfaces, or potentially other ChromeOS-only APIs.

* The API signature and behavior comes from the existing `chrome.app.window.setShape` API for Chrome Apps on ChromeOS. Partners are already familiar with the Chrome App API, so mirroring it for the IWA API greatly simplifies adoption.

I hope this clarifies things.

Thanks again,
Edman
Reply all
Reply to author
Forward
0 new messages