Unofficial Draft
Copyright © 2026 the document editors/authors. Text is available under the Creative Commons Attribution 4.0 International Public License; additional terms may apply.
This specification defines extensions to the Web platform available in ChromeOS. These extensions are restricted to allowlisted Isolated Web Apps running on ChromeOS.
This document is a specification of ChromeOS-specific APIs for allowlisted Isolated Web Apps. It has no official standing of any kind and does not represent the support or consensus of any standards organization.
ChromeOS provides specialized APIs to allowlisted Isolated Web Apps (IWAs) to enable native-like integration with the operating system. This specification defines the entry points for these APIs and the specific features exposed.
All ChromeOS-specific Web APIs are exposed via the chromeos
attribute on the Window object.
WebIDLpartial interface Window {
[Replaceable] readonly attribute ChromeOS chromeos;
};
[Exposed=Window]
interface ChromeOS {
readonly attribute IsolatedWebApp isolatedWebApp;
};
[Exposed=Window]
interface IsolatedWebApp {};
chromeos attribute
The chromeos attribute exposes ChromeOS-specific APIs. This
attribute must return null if the current context is not allowlisted
to use any of ChromeOS IWA APIs.
isolatedWebApp attribute
The isolatedWebApp attribute exposes APIs specific to
Isolated Web Apps. This attribute must return null if the current
context is not an IWA or not allowlisted to use the ChromeOS IWA APIs.
The Window Shape API allows allowlisted IWAs to customize the shape of their window, enabling non-rectangular layouts.
Since this API allows changing the visible shape of the window, it could be used to create invisible or extremely small windows to perform malicious actions without the user's knowledge. To mitigate this:
The Window Shape API extends the IsolatedWebApp interface.
WebIDLpartial interface IsolatedWebApp {
Promise<undefined> setShape(sequence<DOMRectReadOnly> rects);
};
setShape() method
The setShape(|rects|) method customizes the shape
of the window. When called, the user agent does the following
steps:
InvalidStateError and return
promise.
TypeError and return promise.
x, y, width, or height is not finite,
reject promise with a TypeError and return promise.
width is less than 0 or rect's height is less
than 0, reject promise with a TypeError and return
promise.
width is greater than or equal to 10 and rect's
height is greater than or equal to 10, set
hasMinimumSizeRect to true.
x, y, width, and
height set to the corresponding values from rect clamped to
the range of a 32-bit signed integer, to convertedRects.
TypeError and return promise.
InvalidStateError and abort these steps.
InvalidStateError and abort these
steps.
undefined.