)]}'
{"id": 5201338641285120, "name": "window-drag", "summary": "The `window-drag` CSS property allows web content to designate regions of an installed desktop web app\u2019s UI that should behave as draggable window titlebar areas. When applied, user pointer interactions (e.g., click-and-drag) on that region move the top-level application window rather than triggering normal page interaction. This is primarily used by desktop PWAs or apps using features like Window Controls Overlay to implement custom title bars and draggable areas when the browser-provided title bar is hidden.\n\nThis feature standardizes and renames the existing `app-region` CSS property, changes its value names to `move` and `none`, and adds explicit inheritance behavior. This property is used by installed web apps and Electron-based applications for the same purpose.", "markdown_fields": [], "blink_components": ["Blink>CSS"], "star_count": 38, "search_tags": ["WCO", "app-region", "window-drag"], "created": {"by": "akyereboah@microsoft.com", "when": "2026-04-13 20:48:43.539342"}, "updated": {"by": "akyereboah@microsoft.com", "when": "2026-07-27 17:32:18.005281"}, "category": "CSS", "category_int": 15, "feature_notes": null, "web_feature": "Missing feature", "is_official_web_feature": false, "webdx_usecounter_enum": null, "enterprise_feature_categories": [], "enterprise_product_category": 0, "is_releasenotes_content_reviewed": false, "is_releasenotes_publish_ready": false, "stages": [{"id": 5078498013216768, "created": "2026-04-13 20:48:44.250562", "feature_id": 5201338641285120, "stage_type": 220, "display_name": null, "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": null, "announcement_url": null, "experiment_goals": null, "experiment_risks": null, "origin_trial_id": null, "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": null, "ot_description": null, "ot_display_name": null, "ot_documentation_url": null, "ot_emails": [], "ot_feedback_submission_url": null, "ot_has_third_party_support": false, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": null, "ot_requester_email": null, "ot_require_approvals": false, "ot_use_counter_bucket_number": null, "ot_webfeature_use_counter": null, "extensions": [], "experiment_extension_reason": null, "ot_stage_id": null, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": null, "enterprise_policies": [], "desktop_first": null, "android_first": null, "ios_first": null, "webview_first": null, "desktop_last": null, "android_last": null, "ios_last": null, "webview_last": null}, {"id": 5091079717257216, "created": "2026-04-13 20:48:44.370039", "feature_id": 5201338641285120, "stage_type": 230, "display_name": null, "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": null, "announcement_url": null, "experiment_goals": null, "experiment_risks": null, "origin_trial_id": null, "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": null, "ot_description": null, "ot_display_name": null, "ot_documentation_url": null, "ot_emails": [], "ot_feedback_submission_url": null, "ot_has_third_party_support": false, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": null, "ot_requester_email": null, "ot_require_approvals": false, "ot_use_counter_bucket_number": null, "ot_webfeature_use_counter": null, "extensions": [], "experiment_extension_reason": null, "ot_stage_id": null, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": null, "enterprise_policies": [], "desktop_first": null, "android_first": null, "ios_first": null, "webview_first": null, "desktop_last": null, "android_last": null, "ios_last": null, "webview_last": null}, {"id": 4863892103757824, "created": "2026-04-13 20:48:44.448507", "feature_id": 5201338641285120, "stage_type": 250, "display_name": null, "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": null, "announcement_url": null, "experiment_goals": null, "experiment_risks": null, "origin_trial_id": null, "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": null, "ot_description": null, "ot_display_name": null, "ot_documentation_url": null, "ot_emails": [], "ot_feedback_submission_url": null, "ot_has_third_party_support": false, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": null, "ot_requester_email": null, "ot_require_approvals": false, "ot_use_counter_bucket_number": null, "ot_webfeature_use_counter": null, "extensions": [], "experiment_extension_reason": null, "ot_stage_id": null, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": null, "enterprise_policies": [], "desktop_first": null, "android_first": null, "ios_first": null, "webview_first": null, "desktop_last": null, "android_last": null, "ios_last": null, "webview_last": null}, {"id": 5192856668078080, "created": "2026-04-13 20:48:44.575444", "feature_id": 5201338641285120, "stage_type": 260, "display_name": null, "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": "https://groups.google.com/a/chromium.org/d/msgid/blink-dev/5ba01357-ddd6-4eb8-b361-f78425484654n%40chromium.org", "announcement_url": null, "experiment_goals": null, "experiment_risks": null, "origin_trial_id": null, "origin_trial_feedback_url": null, "ot_action_requested": false, "ot_approval_buganizer_component": null, "ot_approval_buganizer_custom_field_id": null, "ot_approval_criteria_url": null, "ot_approval_group_email": null, "ot_chromium_trial_name": null, "ot_description": null, "ot_display_name": null, "ot_documentation_url": null, "ot_emails": [], "ot_feedback_submission_url": null, "ot_has_third_party_support": false, "ot_is_critical_trial": false, "ot_is_deprecation_trial": false, "ot_owner_email": null, "ot_requester_email": null, "ot_require_approvals": false, "ot_use_counter_bucket_number": null, "ot_webfeature_use_counter": null, "extensions": [], "experiment_extension_reason": null, "ot_stage_id": null, "finch_url": null, "rollout_milestone": null, "rollout_platforms": [], "rollout_details": null, "rollout_impact": 2, "rollout_stage_plan": null, "enterprise_policies": [], "desktop_first": 152, "android_first": null, "ios_first": null, "webview_first": null, "desktop_last": null, "android_last": null, "ios_last": null, "webview_last": null}], "accurate_as_of": "2026-07-27 17:32:18.005281", "creator_email": "akyereboah@microsoft.com", "updater_email": "akyereboah@microsoft.com", "owner_emails": ["akyereboah@microsoft.com"], "editor_emails": [], "cc_emails": [], "spec_mentor_emails": [], "unlisted": false, "deleted": false, "editors": [], "cc_recipients": [], "spec_mentors": [], "creator": "akyereboah@microsoft.com", "feature_type": "Chromium catches up", "feature_type_int": 1, "intent_stage": "None", "intent_stage_int": 0, "active_stage_id": 5192856668078080, "bug_url": "https://issues.chromium.org/issues/477608113", "launch_bug_url": null, "new_crbug_url": "https://bugs.chromium.org/p/chromium/issues/entry?components=Blink>CSS&blocking=477608113&cc=akyereboah@microsoft.com", "screenshot_links": [], "first_enterprise_notification_milestone": null, "enterprise_impact": 1, "breaking_change": false, "confidential": false, "shipping_year": 2026, "flag_name": null, "finch_name": "CSSWindowDrag", "non_finch_justification": null, "ongoing_constraints": null, "rollout_plan": 0, "rollout_plan_displayname": "Will ship enabled for all users", "motivation": "The CSS Working Group resolved to standardize the property under the name `window-drag`\u00a0to better reflect its behavior. This feature adds support for the standardized `window-drag\u00a0`property as a new CSS property in Chromium. Chromium is not deprecating or removing `app-region`\u00a0or `-webkit-app-region`. Both legacy properties will remain fully supported. Internally, `app-region`\u00a0is implemented as a surrogate that maps to `window-drag`, making this an additive change with no migration burden on existing content. Supporting the standardized name aligns Chromium with the CSSWG resolution while keeping the cost and risk minimal.", "devtrial_instructions": null, "activation_risks": "There are no significant activation risks associated with this change. The rename from `app-region` to `window-drag` does not introduce new functionality or require additional permissions, and continues to operate within the same installed web app contexts (alongside Window Controls Overlay). Existing usage patterns remain unchanged.", "measurement": null, "availability_expectation": "Feature is fully supported in Chromium browsers on launch. With standardization in the css-ui-4 spec, the chances that other vendors will adopt this are higher.", "adoption_expectation": "Feature is considered a best practice for custom window interactions within 12 months of reaching Web Platform baseline.", "adoption_plan": "The adoption plan is to update references from `app-region` to `window-drag` across relevant specifications and developer-facing documentation, including the Window Controls Overlay spec and platform-specific guidance such as Electron\u2019s custom window interaction docs. Chromium will continue to support `app-region` as a legacy alias during the transition to enable gradual migration without breaking existing content. Once we have decent adoption for `window-drag`, we can look at deprecating `app-region` to avoid supporting 3 different versions of the same property (https://issues.chromium.org/issues/532625804)\nMDN Document Request being tracked at https://issuetracker.google.com/issues/514738005", "initial_public_proposal_url": null, "explainer_links": [], "requires_embedder_support": false, "spec_link": "https://drafts.csswg.org/css-ui-4/#window-drag", "api_spec": false, "automation_spec": false, "interop_compat_risks": "Historically, this feature evolved entirely within Chromium prior to standardization. The original prefixed property, `-webkit-app-region`, shipped as part of Window Controls Overlay, and was later unprefixed to `app-region` and shipped broadly before any formal CSS Working Group specification work. Feedback from other browser vendors and CSSWG participants on the naming and generality of the property only emerged after shipping, at which point concerns were raised that `app-region` was unintuitively named. In response, the CSS Working Group resolved to standardize the behavior under the clearer name `window-drag`, while retaining the already-shipped properties for compatibility.\nRenaming `app-region` to `window-drag` carries some interoperability risk because the feature is currently only implemented in Chromium, and other engines do not yet support either the legacy or renamed property. In the near term, this means the rename will not immediately improve cross-browser compatibility. However, this risk is moderated by the CSSWG resolution to standardize on `window-drag` and the existence of corresponding spec text in CSS UI Level\u00a04, which places the platform on a clearer path toward eventual interoperability while preserving backward compatibility with existing content.", "all_platforms": true, "all_platforms_descr": null, "non_oss_deps": "None.", "anticipated_spec_changes": "None expected.", "security_risks": "This change does not introduce new security risks. The `window-drag` property provides the same behavior as `app-region`, which is limited to defining draggable regions in installed web app windows and does not expose new capabilities or access to sensitive data.\nAs the rename is purely a syntactic and standardization change, it does not expand the attack surface.", "ergonomics_risks": "The ergonomics impact of this change is expected to be low. The property is primarily used in installed web app scenarios, often in conjunction with APIs like Window Controls Overlay, where `app-region` and `-webkit-app-region` are already established patterns. Renaming to `window-drag` improves clarity and alignment with CSS naming conventions without changing the underlying usage model. Chromium will continue to support existing `app-region` usage as a legacy alias, ensuring that current content continues to function while developers gradually migrate to the standardized name, reducing the risk of breakage or developer friction. This change also introduces explicit inheritance on the `window-drag`, `app-region`, and `-webkit-app-region` keywords.\n\nThere would be a potential additive change in behavior for child elements that overflow out of a draggable parent container, now becoming draggable as well. However, Chromium `app-region` has no effect if WCO is not enabled, and WCO is only present in .13% of page loads as of June 2026. A further subset of this would be developers using `app-region` in conjunction with WCO. Taking into account this data and the specificity of the edge case, the actual risk is very low.", "wpt": true, "wpt_descr": "Manual WPT: https://github.com/web-platform-tests/wpt/blob/master/appmanifest/display-override-member/display-override-member-window-drag-window-controls-overlay-manual.tentative.html\n\nChromium side, we have an internal web test confirming support for all 3 properties: `-webkit-app-region`, `app-region`, and `window-drag`. This test is not surfaced as a WPT since `window-drag` is the only standardized property, but we support the legacy shorthands in Chromium. \nInternal web tests: https://chromium-review.googlesource.com/c/chromium/src/+/7858427/5/third_party/blink/web_tests/fast/css/window-drag-app-region-surrogate.html", "webview_risks": "No", "devrel_emails": ["devrel-chromestatus-all@google.com"], "debuggability": "`window-drag` will be exposed as a CSS property at the same capacity as `app-region`, viewable through DevTools when examining the CSS.", "doc_links": [], "sample_links": [], "prefixed": null, "tags": ["WCO", "app-region", "window-drag"], "tag_review": null, "tag_review_status": "Not applicable", "tag_review_status_int": 4, "security_review_status": "Pending", "security_review_status_int": 1, "privacy_review_status": "Pending", "privacy_review_status_int": 1, "security_continuity_id": null, "security_launch_issue_id": null, "updated_display": null, "resources": {"samples": [], "docs": []}, "comments": null, "ff_views": 3, "safari_views": 5, "web_dev_views": 2, "browsers": {"chrome": {"bug": "https://issues.chromium.org/issues/477608113", "blink_components": ["Blink>CSS"], "devrel": ["devrel-chromestatus-all@google.com"], "owners": ["akyereboah@microsoft.com"], "origintrial": false, "prefixed": null, "flag": false, "status": {"text": "Proposed", "val": 2, "milestone_str": "Proposed"}, "announced": true, "desktop": 152, "android": null, "webview": null, "ios": null}, "ff": {"view": {"url": "https://github.com/mozilla/standards-positions/issues/1409", "notes": null, "text": "Positive", "val": 3}}, "safari": {"view": {"url": "https://github.com/WebKit/standards-positions/issues/668", "notes": null, "text": "No signal", "val": 5}}, "webdev": {"view": {"text": "Positive", "val": 2, "url": "https://issues.chromium.org/issues/40616128", "notes": "Attached original tracking bug for WCO with 45+ upvotes from the community. `app-region` and `window-drag` are explicitly tied to WCO functionality in Chromium."}}, "other": {"view": {"text": null, "val": null, "url": null, "notes": null}}}, "standards": {"spec": "https://drafts.csswg.org/css-ui-4/#window-drag", "maturity": {"text": "Specification currently under development in a Working Group", "short_text": "Working draft", "val": 4}}, "is_released": false, "is_enterprise_feature": false, "experiment_timeline": null, "ai_test_eval_report": null, "ai_test_eval_run_status": null, "ai_test_eval_status_timestamp": null}