
Indeterminate checkbox busted: it's just a fancy dash pretending to be smart, fooling devs and PMs into buggy tri-state dreams
The HTML specification explicitly states that the indeterminate attribute of a checkbox gives the appearance of a third state, but technically it is not a value. According to the MDN, indeterminate is a JavaScript property only, with no HTML attribute, and has no effect on form submission, only changing the checkbox's appearance. There are two distinct scenarios where indeterminate is commonly used: a parent checkbox with multiple child checkboxes, indicating mixed values, and a checkbox that has never been interacted with, indicating no decision has been made. The indeterminate state is often misunderstood as a third value, but it is merely a visualization. The correct approach to handling multiple states is the participation pattern, using a checkbox and a separate value control. This approach is explicit, accessible, and unambiguous, and works with HTML semantics, making it a recommended solution for developers to avoid common pitfalls and ensure consistent checkbox semantics.