← Unframed display mode for Isolated Web Apps

v152 · css property · draggable regions

app-region

The app-region CSS property marks which regions of an unframed (or window-controls-overlay) app window act as the draggable surface — the replacement for the removed host-native title bar — and which elements inside that surface (buttons, menus) are excluded from dragging.

Syntax

/* Enable dragging from an element: */
app-region: drag;

/* Exclude an element from dragging (e.g. a button inside the title bar): */
app-region: no-drag;

From the spec's defining draggable regions section: “The app-region property can be used to define with CSS which regions or elements in for example a title bar are draggable.” Setting it to drag enables dragging on the element; no-drag disables it. “The app-region property MUST only take effect when the applied display mode of the window is unframed or window-controls-overlay.”

“Some user agents use the non-standard CSS property -webkit-app-region for the same purpose” (spec note). The spec's text is prose-level — it does not yet give a formal value-definition grammar, an initial value, or inheritance rules; those are recorded as an open question in the critique rather than invented here.

Source: Manifest Incubations — defining draggable regions

Inputs

Values
ValueEffect
dragThe element's region drags the window — pointer press + move here moves the whole app window, as the system title bar would
no-dragThe element is excluded from dragging — required on interactive elements (window buttons, menus, text fields) placed inside a drag region so they keep their normal click behaviour
Source: Manifest Incubations — defining draggable regions

Outputs

Source: Manifest Incubations — defining draggable regions, unframed display mode (“the app can specify draggable regions in the web contents to create a customized title bar”)

Errors

Error and edge behaviour
SituationBehaviour
Window not in unframed / window-controls-overlay modeThe declaration parses but MUST NOT take effect — no error, no draggable region
Unknown valueNormal CSS error handling: the declaration is invalid at computed-value time and ignored (generic CSS behaviour; the incubation spec does not define feature-specific diagnostics)
No draggable region declared in an unframed windowThe window cannot be dragged by the user from the content area; the app must provide another mechanism (or the user relies on OS-level window management). Not an error — a documented developer responsibility, since the app owns the whole window surface in unframed mode
Source: Manifest Incubations — defining draggable regions; unframed explainer — introduction (“interaction normally led by the user, like closing the window or dragging the title bar, is instead expected to be implemented by the IWA programmatically”)

Context and exposure

Source: Manifest Incubations — defining draggable regions

Lifecycle

  1. The property is evaluated with normal CSS cascade and style recalculation; it takes effect only while the window's applied display mode is unframed or window-controls-overlay.
  2. Because an unframed window's display mode is fixed for its lifetime (see the overview lifecycle), the effective draggable map changes only when the app's own DOM/style changes — not on navigation.
  3. Pairing with @media (display-mode: unframed) lets the app reveal its custom title bar — and its drag regions — only when the system frame is actually absent.
Source: Manifest Incubations — defining draggable regions, CSS media query; unframed explainer — window navigation or URL change

Examples

A custom title bar for an unframed window: the bar drags the window, its buttons remain clickable, and the whole bar only appears when the window is actually unframed:

.title-bar {
  display: none;            /* hidden while framed */
  app-region: drag;         /* the bar itself drags the window */
}
.title-bar button {
  app-region: no-drag;      /* buttons keep their clicks */
}

@media (display-mode: unframed) {
  .title-bar { display: flex; }
}
Source: property semantics per Manifest Incubations — defining draggable regions; media query per Manifest Incubations — CSS media query

Browser compatibility

Interim table. No BCD entry exists for app-region (2026-07-28); the non-standard -webkit-app-region is a separate legacy spelling. Shipping status follows the parent feature:

Interim compatibility (source-derived)
Browser / platformSupportEvidence
Chrome desktop152 — listing: “Enabled by default” + “Stepped rollout”; detail record: developer trial behind a flagmilestone=152 listing; ChromeStatus API record
Chrome Android / WebView / iOSNo milestone — not applicableChromeStatus API record
EdgeNot separately reportedChromium-based; no separate position on the record
FirefoxNo signalChromeStatus API record vendor views
SafariN/AChromeStatus API record vendor views

Full analysis and evidence links: overview — browser compatibility.

Source: chromestatus.com/feature/5551475195904000; Manifest Incubations — defining draggable regions

Security and privacy

Source: Manifest Incubations — defining draggable regions, security and privacy considerations