







Yes, the underlying model must have three states, but one is always irrelevant to the actual user goal. Users do not seek out solutions to problems they don’t currently have. A lot of the hate towards two-state toggles is based on poor implementations.
The Dark Mode Toggle Discourse
How the dark mode toggle discourse unfolded One designer's argument against the classic light/dark/system three-way switch turned into weeks of blog rebuttals, parody posts, and "do you even need a toggle at all?" takes. The timeline Aug 1…
ignore the code: Toggles Considered Harmful
I just read this post from Marcin Wichary's Unsung, where he points out a peculiar macOS dialog box that shows boolean toggles in four different shades of grey:
Dark mode & accessibility myth by Stéphanie Walter - UX Researcher & Designer.
Dark mode isn't always better for accessibility, you need to let users chose. And if you build a dark theme, make it accessible!

prefers-color-scheme: Hello darkness, my old friend | Articles | web.dev
Many devices now support an operating system wide dark mode or dark theme experience. This post explains how dark mode can be supported on web pages, lists best practices, and introduces a custom element named dark-mode-toggle that allows web developers to offer users a way to override their operating system level preference on specific web pages.
Dark mode with web standards
Implementing dark mode with minimal JavaScript and standard CSS


Solar Eclipse Toggle (a dark/light mode toggle Web Component)—zachleat.com
A post by Zach Leatherman (zachleat)
Requisite Variety - gordonbrander.com
If a system is to be stable, the number of states of its control mechanism must be greater than or equal to the number of states in the system being controlled.

Aesthetics Wiki | Fandom
Thank you to the winner of our redesign contest, Ethan Duke! The background and wordmark are both his work. You can check him out on both Instagram and Twitter at @theduke2442! The dark mode was designed by Gwenanenn.
Using Enums to Represent State | corrode Rust Consulting
Many Rust beginners with a background in systems programming tend to use bool (or even u8 – an 8-bit unsigned integer type) to represent “state”. For example, how about a bool to indicate whether a user is active or not? struct User { // ... …

CuspHanger — palettes from intuitive parameters
Sequential and diverging OKLCH palettes from a few intuitive parameters — the Wijffelaars et al. 2009 model, in-gamut by construction, for sRGB and Display-P3.

Mysteries of mode collapse — LessWrong
Thanks to Ian McKenzie and Nicholas Dupuis, collaborators on a related project, for contributing to the ideas and experiments discussed in this post…
Visual design rules you can safely follow every time
You do not have to follow these rules every time. If you have a good reason to break any of them, do. But they are safe to follow every time.
Three Lenses on Coordination
Three Sets of Specs (for Staying in Spec) In the last post I talked about how systems formalisms are like sculpting with a chisel: we remove behaviors we don’t…
On Games, Modes, and the Depth of Fewer Inputs