[ Ionut Dumitru ]
CraftOct 13, 20256 min read

Consistency is overrated when it's lazy

Blind consistency is just a way to stop thinking, and the best interfaces know when to break their own rules.

Most consistency arguments end the conversation instead of starting it. "We do it this way everywhere else" sounds like rigor, but it's usually the opposite — a way to avoid the harder question of whether this way is right here. Consistency is a tool for reducing cognitive load. When it stops doing that and starts overriding judgment, it has quietly become the thing it was supposed to prevent: a rule followed because it's a rule.

The interfaces I trust most are consistent in the ways that matter and deliberately inconsistent in the ways that count. They know the difference. That difference is the whole skill, and it almost never shows up in a design system's documentation.

The two kinds of consistency

There's consistency users feel and consistency only the team feels. They get conflated constantly.

External consistency is the promise the product makes to the person using it: the same gesture does the same thing, the same word means the same thing, a destructive action always asks twice. Break this and you erode trust, because the user built a model of how things work and you violated it.

Internal consistency is the comfort of the people building it: every button uses the same component, every form validates the same way, the codebase rhymes. This is genuinely valuable — it's how you ship fast without a thousand bespoke decisions. But it serves the team, not the user, and the two interests diverge more often than anyone admits.

The lazy move is to invoke external consistency ("users expect this") to defend a choice that's really about internal consistency ("the component already does it this way"). I've sat in that meeting. The button that should have been a single primary action got three equal-weight buttons, because the pattern was "we always show all available actions." The pattern won. The user lost.

Break the rule where the stakes change

A good system is consistent until the moment consistency would cost the user something real. The skill is locating that moment precisely.

Delete behaves like every other button in your app — until it's deleting an account with two years of data. Then it should feel different: heavier, slower, harder to do by accident. Making it look exactly like "save" in the name of visual harmony isn't consistency, it's negligence dressed as discipline.

  • A confirmation dialog that's identical for "discard draft" and "delete workspace" trains people to click through both without reading.
  • An empty state that uses the same cheerful tone whether you have zero items by choice or zero because something failed is lying to one of those users.
  • A form that validates a coupon code with the same urgency as a wire transfer amount has misread the stakes.

Consistency should be the default, never the verdict. The moment it ends an argument, it has stopped being a tool and started being an excuse.

The good version of inconsistency isn't random. It's legible. When you break the pattern, the break itself should communicate why — the heaviness of the destructive confirmation, the change in tone, the extra step. The user doesn't read your rationale; they feel it. A well-placed inconsistency reads as care. A careless one reads as a bug.

Make the system argue with you

The way to avoid lazy consistency isn't to abandon systems — it's to build systems that expect exceptions and make them cheap to reason about. A component that exposes a tone and an intent lets you say "this is destructive and irreversible" in one place, and the system can render that distinctly everywhere without a designer hand-tuning each instance.

The difference is where the judgment lives. In a lazy system, the judgment lives in nobody — the pattern decides. In a good one, the judgment lives in the props, and the system makes the consequences of that judgment consistent. You're not breaking the rule; you're encoding a better one.

This also changes how design reviews go. "It's inconsistent with X" stops being a sentence that ends the discussion. The real question is which kind of consistency, and who it serves. Sometimes the answer is "match the pattern, the difference here is cosmetic." Often enough it's "the pattern is wrong here, and matching it would hurt the person on the other side of the screen."

The strongest design systems I've worked in treat their own rules as defaults with a known cost of deviation, not as laws. That posture is what lets a team move fast and still get the high-stakes moments right. The lazy version of consistency saves you one decision today and charges the user for it on the day it matters most.

So the next time consistency is offered as the reason, treat it as the beginning of the argument, not the end of it. Ask what kind, ask who it serves, and ask what it would cost to be right instead.

#Craft#Design SystemsShare ↗
→ / AUTHOR
Ionut Dumitru
Ionut Dumitru

Full-stack engineer and product designer. Writes about building products where the engineering and the design are the same job.

→ / NEXT
ProductOct 6, 2025
Deadlines are a design tool, not a threat
← All writingionutdumitru.com