Use a switch for immediate effect, a checkbox for submit-with-form
Aliases: apply now versus apply on save · toggle versus checkbox
What it is
When choosing a control for a binary field, ask about the clock first and the look second. Immediate writes take a switch; submit-with-form takes a checkbox. The rule splits “what on/off looks like” from “when it becomes true.” The same sentence “receive a weekly digest” is a switch in system settings and a checkbox on a registration form, because one subscribes as soon as it is thrown and the other waits to be born with the account. Pick the wrong clock and every later hint and validator is patching a hole.
The choice is not “which looks newer,” nor “does this screen already have a slider.” The clock is the independent variable.
Why it happens
Switch and checkbox bind different commit units in the user’s model. A switch’s unit is the row: when the gesture ends, that row’s value has left the client. A checkbox’s unit is the form: many cells travel together, edits in the middle remain drafts until submit. People recognise the commit unit from the control, and that tells them whether to verify the result at once and whether to hunt for save before leaving.
Once the clock is inverted, verification behaviour misses the widget. A switch with a footer save is skipped at save time; a checkbox that already wrote through is treated as still reversible until submit. Both errors are a one-step gap between “my now” and the system’s now.
Where it stops holding
Autosave turns the whole page into “every row is immediate,” so a switch is aligning the clock, not decorating a checkbox. Conversely, if a wizard only accumulates in memory and POSTs at the end, the whole stretch should use checkboxes, even when a step holds a single binary. Hardware hooks (torch, radio) have no form to submit, so “with-form” is not a path. Immediate writes fail when permission has not been granted: either authorize first and then offer the switch, or do not pretend an immediate state is throwable beforehand.
Applying it
- Tag every binary with a clock: in-row immediate, or whole-form submit. The clock chooses the control; do not draw first and patch logic later.
- Drop footer save on settings screens and keep submit on registration and checkout; those two page types should not share one binary look.
- Give “looking unified” to spacing and alignment, not to one widget covering two clocks.
- How to check: list every binary on the screen and note whether the write happens on throw or on save. Control type must match the note; mismatches are wrong choices.