Skip to content

unprefix the -webkit-user-select CSS property #1000

@o-t-w

Description

@o-t-w

Description

The user-select CSS property still needs a -webkit- prefix in Safari.

A note about the current state of CSS vendor prefix’s

  • Chrome, Edge and other Chromium-based browsers had required a -webkit- prefix for print-color-adjust. This is no longer the case as of version 136.
  • As part of Interop 2025, Safari removed the need for the -webkit- prefix for the text-decoration CSS shorthand property.

That leaves only a handful of properties requiring a prefix:

  • user-select
  • stretch: Implemented as -webkit-fill-available in WebKit and -moz-available in Firefox.
  • text-size-adjust: Needs -webkit- prefix in WebKit and Firefox. (Firefox also supports the -moz- prefix.)
  • box-decoration-break: Needs -webkit- prefix in WebKit.
  • line-clamp: Needs a -webkit- prefix and some additional non-standard properties (display: -webkit-box and -webkit-box-orient: vertical) to be set in Chromium, WebKit and Firefox.

Autoprefixer is downloaded from NPM 33 million times per week. Needing to complicate build tooling with Autoprefixer for such a tiny handful of properties is an unfortunate situation.

Of those properties that do require a prefix, some are pretty niche, but that can’t be said for user-select. While line-clamp is another very useful and popular CSS feature that requires a prefix, Autoprefixer doesn’t prefix line-clamp, so it is primarily user-select that necessitates continued use of Autoprefixer). While ideally no property would require a prefix, for the reason just stated user-select in particular should be prioritised.

Specification

https://drafts.csswg.org/css-ui-4/#content-selection

web-feature

https://web-platform-dx.github.io/web-features-explorer/features/user-select/

Test Links

https://wpt.fyi/results/css/css-ui?label=master&label=experimental&aligned&q=user-select

Additional Signals

WebKit issue
Unmerged PR
various open bugs.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    Status
    Done

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions