It's far worse to give users a false mental model of the underlying system. If the underlying system is complex, but that's out of your control, then it will create confusion and frustration in users to paper over it. Please don't do this!
That is, unless you can create a nearly leak-free abstraction. The example given in the article is anything but leak-free.
Make it as simple as possible, but no simpler. Anything else is deceptive.
I'd also rather just select from the full tristate diagram, but their framing also makes sense to me
Then you (and your users) only need the toggle, if at all, for edge cases.
(If the user cares, they likely will have set system settings the way they like them, and if they don’t care to, it’s pretty unlikely your web site is special to them. It would really just be for users who care but are somehow forced to use a system that doesn’t support the settings they want, and for dev/testing.)
But I agree with the conclusion of the article. If you do have a toggle, it makes more sense to just have the two options. Users click it to say, “I want it the other way right now.” After that, it makes a lot more sense to assume they want it to keep being the way they want than not. And how do you know what that is? Because they’ve taken the time to specify that in the system settings. Or they haven’t. Because they didn’t care to. In which case you still aren’t doing something they didn’t want.
A UI where you just whack it until it does what you want (and then keeps doing it) is perfect for we tailless monkeys. One where you have to stop what you’re doing to think about your previous life choices and whether you ought to continue to make them is maybe a little too much for each web site.
Personally I'm totally fine with light/dark/auto but if you really must simplify I see only two true ways:
1. Just offer light and dark. No auto. Whether auto works is out of your control anyway. Users who know and want auto have to switch manually.
2. Just offer auto on/off. Default is off and off is light mode. User who want dark mode will figure out how to configure their system.
(I don't get the "everything needs to support dark theme" thing either tbh)
You can use the automatic value. Some people expect to change the colors of your site without changing their system colors, but you are free to just ignore them.
> How often do people use these, really?
Most normal people don't think about it. Depends on your audience.
But usually more people use them than know how to change their system colors.
> I don't get the "everything needs to support dark theme" thing either tbh
Again, most people don't think about that. Depends on your audience.
In auto, none of the buttons is pressed (and preferable a small label that says auto is shown). Pressing dark/light will force that mode, enable that button and remove the auto label.
In dark/light mode, you can press the other button to enable the other state. Or you can press the current button to disable it, and switch to auto. This last one is the confusing-at-first interaction, but makes sense if you think about it (it's like saying: I want dark / I want light / I don't care)
In my opinion, the existing UI widget that solves this problem best is a plain old group of radio buttons (auto, light, dark). Two checkboxes that interact with each other and also a sometimes-hidden label is something new for users to learn and also more complex to implement and maintain.
unlike everybody else in this comment section, i like the two-mode toggle. but that's just my opinion. without user testing numbers, an article saying "users like this better" is useless.
> “Whatever the system says” is not just one extra option. It’s also one extra weird option. It doesn’t feel like the other two.
It's wrong to conflate the `prefer-color-scheme` media query with “What the system says”, meaning the OS-level dark/light option. For most people this is probably true, but I prefer sites that work this way because I use two Firefox extensions to set it globally or on a per-site basis regardless of what my OS is set to.
- https://addons.mozilla.org/en-US/firefox/addon/toggle-dark-m...
- https://addons.mozilla.org/en-US/firefox/addon/darkreader/
This is not a novelty but a built-in feature called “Auto” Appearance in MacOS, iOS, iPadOS. Similar feature exists in Android and KDE.
Isn’t the article about how to best deal with the UI for letting the user indicate that the system should decide? Which covers your case.
"For example, a keyboard could include a special-purpose power management button (for example, “Power”) that, when pressed during a system sleeping state, generates a wake event. Alternatively, the button(s) on mice and other pointing devices could be used to trigger a wake event. "
For this scenario to unfold the following has to happen:
1. OS is set to auto mode 2. It's late afternoon 3. User finds they have (for some reason) in the past turned on the Website dark mode (presumably in the daytime) 4. User wants it light now.
This is a pretty tortured hypothetical though. I admit as an engineer, who understands that there's a light/dark signal being passed down, and there's an ability to override that signal, I appreciate separating the "should override" control the way a "3-way" switch allows.
But I have to admit, I cannot imagine a real person getting bit in any way by the implementation the author describes. 90% of people set their OS to the "mode" they want, whether it's full-time or sun-based, and that group never even needs to touch or look at this control (We do default to auto, right?). The other 10% are most likely here because they don't understand they can set this in the OS and they apparently want to toggle to the opposite mode. They might be thinking "I want this dark mode until morning" but "we" in the website actually can't really help them with that unless we start prying into what time it is there and build our own time-based mode. So the best we can do for that user is to shift them into "latched dark mode" and let them come back (as they've demonstrated a knowledge to do) when and if they want the 'lights' back on.
I'm the first to criticize UI designers who rob users of choice in the name of minimalism -- the Alan Dye approach, but this actually screams "Designer thought hard about the actual intent of the users" to me and I like it.
If I'm setting this up during the day, when I normally work, those external sites would easily end up with the "auto" behavior by this very poor design in the blog, when that is not my actual intent. This would result in me having to set it twice (the second time in the evening) to have my desired behavior which is a nuisance. The explicit option is better here, not whatever this silliness is in the article. [0]
At least I've read this article so sites and apps using this stupid option wouldn't be too big of a surprise to me, I'd hate to have to explain this to other people who haven't read it though. Principle of least surprise is a good thing, not something to deliberately work against like this author wants.
EDIT:
[0] Actually, this demonstrates a crucial flaw in the system's design. If I want to set the current default as the permanent setting, I have to wait until a particular time of day to do so. That's even worse than I'd previously realized. You can only set permanent light in the evening (or by changing your OS/browser settings, changing the site, and then changing OS/browser back). You can only set permanent dark during the day (without that same stupid exercise).
This is a terrible design concept.