Why is UI form-based customization promoted when it is not suitable for so many things?

So, the motivation for this is similar to this one, but the WTH is more fundamental based on frustrations I had on reading this and other threads.

A recurring topic seems to be, excessive customization is bad, YAML-based customization is bad, customization should happen through the UI (applying a bit of hyperbole, of course). But UI-based customization doesn’t allow me to set dynamic icons and doesn’t allow me to set dynamic icon colors. If I look at the entities I care about on my dashboard… all the integrations provide dynamic icons, or at least dynamic icon colors (and frankly, if the icon isn’t dynamic, I don’t know if I even care about it at all). So the only thing the UI-based customization is allowing me to do is to… break icons. By that I mean: it replaces the “(dynamic) icon” concept that I know, which shows me some information about an entity’s state, with a “static icon” concept that I rarely come across in real-life integrations - and that I also don’t want.

Obviously, this is an often-requested feature, I have used search extensively, probably there still are so many threads I haven’t read, but mostly the answers are always along the lines of “use custom-ui” and/or why more powerful customization isn’t coming and why UI form-based customization is the intended way to customize icons. I find this surprising, to say the least, because of this statement by frenck:

For example, I have a some kind Window sensor from China. Now lets say, I have one, and I ship one to Paulus in the USA. We both pair it with ZHA… what should it show?

IMHO, this is a really good point, and points directly to a flaw in the current design of HA. The issue is not even about localization US vs. EU vs. whatever. The sensor probably isn’t a “window sensor”, even though it may be marketed as such. It’s a contact sensor. You can use it on windows, but also on doors, drawers, what have you. The fact that it should be the integration determining the icon to be shown seems just… wrong. It’s a design flaw. If anything, the integration can provide a default icon. But if the integration should no longer be the preferred source of truth for icons, that now really means that (icon) customization needs to be a first-class citizen - but a UI form-based customization feature that, when used, makes the icons for the vast majority of integrations less useful, certainly isn’t that.

Maybe there’s the plan to add state-based icons to the UI-based customization, and nobody ever got around to doing that, who knows. But the fact that I’ve seen the recommendation to use the icon customization in the entity settings gives out the impression that the “how” (UI components should be used for customization, not YAML) takes precedence over the “what” (change icon - without breaking the icon concept I know), which isn’t very user-oriented.

This is a long winded request for device_class, which already exists. Device_class controls the dynamic icon. Seems like you just want to make your own device_classes and you want more options for device_classes. FYI, there’s already WTH’s that request this, they were some of the first WTHs introduced this round. Granted, device_classes won’t cover color, but it covers icons.

Most integrations provide icons through device_classes, they do not offer default icons (unless it’s a really outdated integration from the pre device_class era). Also, this blurb only applies to the core domains: Sensor, Binary Sensor, Cover, Switch, etc. Obscure domains may or may not utilize device classes.

In the UI, users have the ability to change the device_class, but it’s only exposed for a few types. I’d wager this will open up more in the future.

Right now, we are stuck with the icons that material design offers. So when they add new icons, we can add new device_classes that satisfy the needs of both of those WTHs.