)]}'
{"id": 5067363861004288, "name": "Single-axis scroll containers", "summary": "Extends the `overflow` property to support scrollable values together with `clip` (for example, `overflow: scroll clip`). This allows `position: sticky` to be constrained by different ancestor scroll containers per axis, and gives authors a way to ensure an axis using `overflow: clip` stays in place.", "markdown_fields": [], "blink_components": ["Blink>Layout"], "star_count": 56, "search_tags": [], "created": {"by": "freedebreuil@google.com", "when": "2026-03-12 15:15:36.862052"}, "updated": {"by": "freedebreuil@google.com", "when": "2026-09-10 20:38:00.608010"}, "category": "CSS", "category_int": 15, "feature_notes": null, "web_feature": "overflow", "is_official_web_feature": true, "webdx_usecounter_enum": null, "enterprise_feature_categories": [], "enterprise_product_category": 0, "is_releasenotes_content_reviewed": false, "is_releasenotes_publish_ready": false, "stages": [{"id": 4684936953069568, "created": "2026-03-12 15:15:37.616452", "feature_id": 5067363861004288, "stage_type": 110, "display_name": null, "intent_stage": 7, "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": 5160193186988032, "created": "2026-03-12 15:15:37.664697", "feature_id": 5067363861004288, "stage_type": 120, "display_name": null, "intent_stage": 1, "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": "https://groups.google.com/a/chromium.org/d/msgid/blink-dev/69b81554.050a0220.87ff1.0e40.GAE%40google.com", "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": 6300883551911936, "created": "2026-03-12 15:15:37.802226", "feature_id": 5067363861004288, "stage_type": 130, "display_name": null, "intent_stage": 2, "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": 153, "android_first": 153, "ios_first": null, "webview_first": null, "desktop_last": null, "android_last": null, "ios_last": null, "webview_last": null}, {"id": 5195300518100992, "created": "2026-03-12 15:15:37.851017", "feature_id": 5067363861004288, "stage_type": 140, "display_name": null, "intent_stage": 4, "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": 6249835382571008, "created": "2026-03-12 15:15:37.915169", "feature_id": 5067363861004288, "stage_type": 150, "display_name": null, "intent_stage": 3, "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": 6321434366443520, "created": "2026-03-12 15:15:38.040325", "feature_id": 5067363861004288, "stage_type": 160, "display_name": null, "intent_stage": 5, "pm_emails": [], "tl_emails": [], "ux_emails": [], "te_emails": [], "intent_thread_url": "https://groups.google.com/a/chromium.org/d/msgid/blink-dev/6a7b693b.dc132f77.2e13a8.076f.GAE%40google.com", "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": 158, "android_first": 158, "ios_first": null, "webview_first": 158, "desktop_last": null, "android_last": null, "ios_last": null, "webview_last": null}], "accurate_as_of": "2026-08-10 13:30:33.662607", "creator_email": "freedebreuil@google.com", "updater_email": "freedebreuil@google.com", "owner_emails": ["freedebreuil@google.com"], "editor_emails": ["flackr@chromium.org", "vmpstr@chromium.org"], "cc_emails": ["flackr@chromium.org", "vmpstr@chromium.org"], "spec_mentor_emails": [], "unlisted": false, "deleted": false, "editors": ["flackr@chromium.org", "vmpstr@chromium.org"], "cc_recipients": ["flackr@chromium.org", "vmpstr@chromium.org"], "spec_mentors": [], "creator": "freedebreuil@google.com", "feature_type": "New or changed feature", "feature_type_int": 0, "intent_stage": "None", "intent_stage_int": 0, "active_stage_id": 6321434366443520, "bug_url": "https://issues.chromium.org/440038212", "launch_bug_url": null, "new_crbug_url": "https://bugs.chromium.org/p/chromium/issues/entry?components=Blink>Layout&blocking=440038212&cc=freedebreuil@google.com", "screenshot_links": [], "first_enterprise_notification_milestone": null, "enterprise_impact": 1, "breaking_change": false, "confidential": false, "shipping_year": 2026, "flag_name": null, "finch_name": "SingleAxisScrollContainers", "non_finch_justification": null, "ongoing_constraints": null, "rollout_plan": 3, "rollout_plan_displayname": "(RARE) It's complicated or unusual", "motivation": "The CSS `overflow` property currently allows behavior to be specified per axis, but it does not provide a way to make a scroll container responsible for only a single axis. The affects features that depend on scroll containers, namely `position: sticky` and DOM scroll APIs.\n\nFor example, authors may want to use `position: sticky` to create a table that keeps both the top and left labels in view while the user scrolls through large content. Or they may want to create a carousel that is visually clipped on one axis, while ensuring that `scrollIntoView()` does not unexpectedly move that clipped axis.\n\nPlease see the explainer for more details. ", "devtrial_instructions": null, "activation_risks": null, "measurement": "\nUsage is tracked with one broad use counter and three targeted compat counters:\n\n\nSingleAxisScroller\n(https://chromestatus.com/metrics/feature/timeline/popularity/5862):\nCounts every element with overflow clip on one axis and a scrollable value on the other \u2014 all content this feature could affect.\n\n\nNote that the following three have landed quite recently:\n\n\nSingleAxisScrollerOverscrollBehavior\n(https://chromestatus.com/metrics/feature/timeline/popularity/5976):\nCounts those elements that also set a non-auto overscroll-behavior on the clip axis, where scroll chaining could change.\n\n\nSingleAxisScrollerPositionSticky\n(https://chromestatus.com/metrics/feature/timeline/popularity/5975):\nCounts sticky elements whose horizontal and vertical constraints now resolve against different scroll containers.\n\n\nSingleAxisScrollerAutoMinSize\n(https://chromestatus.com/metrics/feature/timeline/popularity/5977):\nCounts flex/grid items whose automatic minimum size now applies where it previously collapsed to zero, so layout can change.\n\n\nThe last two fire only when the new behavior actually changes something, so if many sites were affected it would show directly in these metrics.", "availability_expectation": null, "adoption_expectation": null, "adoption_plan": null, "initial_public_proposal_url": "https://github.com/w3c/csswg-drafts/issues/865", "explainer_links": ["https://github.com/explainers-by-googlers/single-axis-scroll-containers"], "requires_embedder_support": false, "spec_link": "https://github.com/w3c/csswg-drafts/pull/13903", "api_spec": false, "automation_spec": false, "interop_compat_risks": "# overflow: scroll clip\n\noverflow: scroll clip used to be converted into overflow: scroll hidden, but this will no longer happen, so there is a compatibility risk.\n\nPlease see the analysis for more details. (https://docs.google.com/document/d/1_4zPKOQ8S-Ttn-4BTFaIR7YWkkQYNiF_QlTsOK-k7uE/edit?usp=sharing)", "all_platforms": true, "all_platforms_descr": null, "non_oss_deps": null, "anticipated_spec_changes": "", "security_risks": null, "ergonomics_risks": null, "wpt": true, "wpt_descr": "https://wpt.fyi/results/?label=master&label=experimental&aligned&q=single-axis", "webview_risks": null, "devrel_emails": ["devrel-chromestatus-all@google.com"], "debuggability": null, "doc_links": [], "sample_links": [], "prefixed": null, "tags": [], "tag_review": "https://github.com/w3ctag/design-reviews/issues/1222", "tag_review_status": "Issues addressed", "tag_review_status_int": 3, "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": 5, "safari_views": 5, "web_dev_views": 2, "browsers": {"chrome": {"bug": "https://issues.chromium.org/440038212", "blink_components": ["Blink>Layout"], "devrel": ["devrel-chromestatus-all@google.com"], "owners": ["freedebreuil@google.com"], "origintrial": false, "prefixed": null, "flag": false, "status": {"text": "Proposed", "val": 2, "milestone_str": "Proposed"}, "announced": false, "desktop": 158, "android": 158, "webview": 158, "ios": null}, "ff": {"view": {"url": "https://github.com/mozilla/standards-positions/issues/1418", "notes": null, "text": "No signal", "val": 5}}, "safari": {"view": {"url": "https://github.com/WebKit/standards-positions/issues/680", "notes": null, "text": "No signal", "val": 5}}, "webdev": {"view": {"text": "Positive", "val": 2, "url": "https://github.com/w3c/csswg-drafts/issues/8286", "notes": "https://github.com/w3c/csswg-drafts/issues/9140\nhttps://github.com/w3c/csswg-drafts/issues/865"}}, "other": {"view": {"text": null, "val": null, "url": null, "notes": null}}}, "standards": {"spec": "https://github.com/w3c/csswg-drafts/pull/13903", "maturity": {"text": null, "short_text": "Unknown status", "val": 0}}, "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}