Intent to Ship: :user-valid and :user-invalid CSS pseudo-classes

443 views
Skip to first unread message

Joey Arhar

unread,
Aug 26, 2023, 4:14:23 AM8/26/23
to blink-dev

Contact emails

jar...@chromium.org

Explainer

None

Specification

https://drafts.csswg.org/selectors-4/#user-pseudos

Summary

The :user-invalid and the :user-valid pseudo-classes represent an element with incorrect or correct input, respectively, but only after the user has significantly interacted with it. This is similar to :valid and :invalid, but with the added constraint that these pseudo-classes only match after the user has interacted with the element.



Blink component

Blink>CSS

TAG review

None

TAG review status

Not applicable

Risks



Interoperability and Compatibility

There is no interop/compat risks because this is a new feature that has already been implemented by safari and firefox and has WPTs.



Gecko: Shipped/Shipping

WebKit: Shipped/Shipping

Web developers: No signals

Other signals:

Ergonomics

This feature will not be used in tandem with other platform APIs. The default usage of this API will not make it hard for chrome to maintain good performance.



Activation

It will not be challenging for developers to use this feature immediately. There is already an MDN article for this feature, so I don't think that we need additional outreach.



Security

There are no security risks for this feature.



WebView application risks

Does this intent deprecate or change behavior of existing APIs, such that it has potentially high risk for Android WebView-based applications?

None



Debuggability

These new pseudo-classes will be supported by the DevTools styles sidebar automatically, just like every other pseudo-class.



Will this feature be supported on all six Blink platforms (Windows, Mac, Linux, Chrome OS, Android, and Android WebView)?

Yes

Is this feature fully tested by web-platform-tests?

Yes

Flag name on chrome://flags

UserValidUserInvalid

Finch feature name

UserValidUserInvalid

Requires code in //chrome?

False

Availability expectation

This feature is already being shipped by safari and firefox, so it will be available on the web platform mainline as soon as we launch it.

Adoption expectation

This feature will be considered the best practice for its use case as soon as we launch it.

Adoption plan

This is already implemented in safari and firefox, so we don't need to do anything in order to gain adoption of this feature.

Sample links

https://developer.mozilla.org/en-US/docs/Web/CSS/:user-valid

Estimated milestones

Shipping on desktop118
DevTrial on desktop118
Shipping on Android118
DevTrial on Android118
Shipping on WebView118


Anticipated spec changes

Open questions about a feature may be a source of future web compat or interop issues. Please list open issues (e.g. links to known github issues in the project for the feature specification) whose resolution may introduce web compat/interop risk (e.g., changing to naming or structure of the API in a non-backward-compatible way).

There are no anticipated spec changes.

Link to entry on the Chrome Platform Status

https://chromestatus.com/feature/5132477781245952

This intent message was generated by Chrome Platform Status.

PhistucK

unread,
Aug 26, 2023, 1:01:00 PM8/26/23
to Joey Arhar, blink-dev
Sounds good!

Debuggability

These new pseudo-classes will be supported by the DevTools styles sidebar automatically, just like every other pseudo-class.


Can it (along with other form-related ones, I guess) be added to the list of toggle-able pseudo classes (shown when you click on the ":hov" button)?

image.png



PhistucK


--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CAK6btwKVw_WLSEZ348JyUXHVXfrNOBD7DN1U5svUkQ%3D1TLADFg%40mail.gmail.com.

Joey Arhar

unread,
Aug 26, 2023, 1:18:23 PM8/26/23
to PhistucK, blink-dev
Sure I can try setting up the force element state feature for it.

> along with other form-related ones

Any ones you have in mind? I could try to do them all at once

PhistucK

unread,
Aug 26, 2023, 1:31:30 PM8/26/23
to Joey Arhar, blink-dev
I guess all of them would be good. Not really why only a few pseudo-classes are listed there...

PhistucK

Mason Freed

unread,
Aug 26, 2023, 5:26:13 PM8/26/23
to blink-dev, PhistucK, blink-dev, Joey Arhar
On Saturday, August 26, 2023 at 10:31:30 AM UTC-7 PhistucK wrote:
I guess all of them would be good. Not really why only a few pseudo-classes are listed there...

This sounds like a great feature request for devtools in general. I wonder if we could separate it out from shipping this one set of 2 pseudo classes though?  


 
PhistucK


On Sat, Aug 26, 2023 at 6:18 PM Joey Arhar <jar...@chromium.org> wrote:
Sure I can try setting up the force element state feature for it.

> along with other form-related ones

Any ones you have in mind? I could try to do them all at once
On Sat, Aug 26, 2023 at 10:00 AM PhistucK <phis...@gmail.com> wrote:
Sounds good!

Debuggability

These new pseudo-classes will be supported by the DevTools styles sidebar automatically, just like every other pseudo-class.


Can it (along with other form-related ones, I guess) be added to the list of toggle-able pseudo classes (shown when you click on the ":hov" button)?

image.png



PhistucK


On Sat, Aug 26, 2023 at 9:14 AM Joey Arhar <jar...@chromium.org> wrote:


Summary

The :user-invalid and the :user-valid pseudo-classes represent an element with incorrect or correct input, respectively, but only after the user has significantly interacted with it. This is similar to :valid and :invalid, but with the added constraint that these pseudo-classes only match after the user has interacted with the element.



Blink componentBlink>CSS

TAG reviewNone

TAG review statusNot applicable


Risks


Interoperability and Compatibility

There is no interop/compat risks because this is a new feature that has already been implemented by safari and firefox and has WPTs.



Gecko: Shipped/Shipping

WebKit: Shipped/Shipping

Web developers: No signals

Other signals:

Ergonomics

This feature will not be used in tandem with other platform APIs. The default usage of this API will not make it hard for chrome to maintain good performance.



Activation

It will not be challenging for developers to use this feature immediately. There is already an MDN article for this feature, so I don't think that we need additional outreach.



Security

There are no security risks for this feature.



WebView application risks

Does this intent deprecate or change behavior of existing APIs, such that it has potentially high risk for Android WebView-based applications?

None



Debuggability

These new pseudo-classes will be supported by the DevTools styles sidebar automatically, just like every other pseudo-class.



Will this feature be supported on all six Blink platforms (Windows, Mac, Linux, Chrome OS, Android, and Android WebView)?Yes

Is this feature fully tested by web-platform-tests?Yes

Flag name on chrome://flagsUserValidUserInvalid

Finch feature nameUserValidUserInvalid

Requires code in //chrome?False

Availability expectationThis feature is already being shipped by safari and firefox, so it will be available on the web platform mainline as soon as we launch it.

Adoption expectationThis feature will be considered the best practice for its use case as soon as we launch it.

Adoption planThis is already implemented in safari and firefox, so we don't need to do anything in order to gain adoption of this feature.


Sample linkshttps://developer.mozilla.org/en-US/docs/Web/CSS/:user-valid

Estimated milestonesShipping on desktop118DevTrial on desktop118Shipping on Android118DevTrial on Android118Shipping on WebView118

Anticipated spec changes

Open questions about a feature may be a source of future web compat or interop issues. Please list open issues (e.g. links to known github issues in the project for the feature specification) whose resolution may introduce web compat/interop risk (e.g., changing to naming or structure of the API in a non-backward-compatible way).

There are no anticipated spec changes.

Link to entry on the Chrome Platform Statushttps://chromestatus.com/feature/5132477781245952


This intent message was generated by Chrome Platform Status.

--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscribe@chromium.org.

PhistucK

unread,
Aug 26, 2023, 7:04:48 PM8/26/23
to Mason Freed, blink-dev, Joey Arhar
Yeah, it was just a thought, maybe any new pseudo-class should automatically be added.

PhistucK

Joey Arhar

unread,
Aug 28, 2023, 11:46:22 AM8/28/23
to PhistucK, Mason Freed, blink-dev

PhistucK

unread,
Aug 28, 2023, 11:55:37 AM8/28/23
to Joey Arhar, Mason Freed, blink-dev
Thank you!

PhistucK

Mike Taylor

unread,
Aug 28, 2023, 12:01:56 PM8/28/23
to PhistucK, Joey Arhar, Mason Freed, blink-dev

I see that https://drafts.csswg.org/selectors-4/#issue-df919919 states that this and the :invalid/:valid flavors should apply to forms and fieldset elements. It doesn't look like the WPTs test for that - what do we do for those elements, and do you know if it's interoperable?

To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/CABc02_LEyn%3DPRKgON8DQOMTURY913zXii5pMnvyBDuSkpwwtUg%40mail.gmail.com.

Joey Arhar

unread,
Aug 28, 2023, 4:31:16 PM8/28/23
to Mike Taylor, PhistucK, Mason Freed, blink-dev
> I see that https://drafts.csswg.org/selectors-4/#issue-df919919 states that this and the :invalid/:valid flavors should apply to forms and fieldset elements. It doesn't look like the WPTs test for that - what do we do for those elements, and do you know if it's interoperable?

We don't have WPTs at the moment. Based on my testing, it looks like firefox chrome and safari all don't apply :user-valid or :user-invalid to form elements. I opened a spec issue to discuss: https://github.com/w3c/csswg-drafts/issues/9257

Daniel Bratell

unread,
Aug 30, 2023, 11:16:23 AM8/30/23
to PhistucK, Joey Arhar, blink-dev

I think those are the ones that are hard to manually trigger while working in the debugger.

/Daniel

Joey Arhar

unread,
Sep 4, 2023, 9:46:40 AM9/4/23
to Daniel Bratell, PhistucK, blink-dev
> > I see that https://drafts.csswg.org/selectors-4/#issue-df919919 states that this and the :invalid/:valid flavors should apply to forms and fieldset elements. It doesn't look like the WPTs test for that - what do we do for those elements, and do you know if it's interoperable?

> We don't have WPTs at the moment. Based on my testing, it looks like firefox chrome and safari all don't apply :user-valid or :user-invalid to form elements. I opened a spec issue to discuss: https://github.com/w3c/csswg-drafts/issues/9257

I think that we have rough consensus in the spec issue as well to not apply :user-valid or :user-invalid to form or fieldset elements.
image.png

Philip Jägenstedt

unread,
Sep 6, 2023, 11:42:23 AM9/6/23
to Joey Arhar, Daniel Bratell, PhistucK, blink-dev
Thanks for adding that test Joey!

https://staging.wpt.fyi/results/css/selectors/valid-invalid-form-fieldset.html?label=pr_head&max-count=1&pr=41801 shows that it also passes on Firefox. Not sure why Safari didn't run, but that's not your fault and not something to block on.

LGTM1, and thanks for working on this!

Alex Russell

unread,
Sep 6, 2023, 11:45:28 AM9/6/23
to blink-dev, Philip Jägenstedt, Daniel Bratell, PhistucK, blink-dev, Joey Arhar
Why is there no TAG review filed here?

To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscribe@chromium.org.
--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscribe@chromium.org.

--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+unsubscribe@chromium.org.

Alex Russell

unread,
Sep 6, 2023, 11:49:09 AM9/6/23
to blink-dev, Alex Russell, Philip Jägenstedt, Daniel Bratell, PhistucK, blink-dev, Joey Arhar
Was corrected in the API OWNERS meeting re: TAG review; apologies for the noise. LGTM2

Yoav Weiss

unread,
Sep 6, 2023, 11:50:04 AM9/6/23
to Alex Russell, blink-dev, Philip Jägenstedt, Daniel Bratell, PhistucK, Joey Arhar
LGTM3

To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.

--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.

--
You received this message because you are subscribed to the Google Groups "blink-dev" group.
To unsubscribe from this group and stop receiving emails from it, send an email to blink-dev+...@chromium.org.
To view this discussion on the web visit https://groups.google.com/a/chromium.org/d/msgid/blink-dev/6fa8b0fa-d2c5-4d1b-9d5a-14dc9a49fa31n%40chromium.org.
Reply all
Reply to author
Forward
0 new messages