Blog post

AI Made UI Drift Cheaper

Why AI does not break product coherence by itself, but makes local UI deviation cheap enough that drift appears faster than many teams can review it.

AI Made UI Drift Cheaper

At first, faster UI generation looked like a pure win.

Need a new table view? Generate it. Need a settings form? Generate it. Need an empty state, a side panel, a wizard step, a confirmation flow? Generate them all.

That speed is useful.

What it changed, though, was not only how fast I could produce interface code. It changed how cheap it became to introduce one more local variation.

That is where UI drift gets dangerous.

The problem is not that AI can generate components

The problem is that AI can generate plausible local solutions faster than a product can stay coherent by default.

The model sees the file in front of it, the nearby components, the immediate ask, and whatever examples happen to be close in context. If the system does not make the right pattern obvious, the model will complete the local task anyway.

That means a product can start leaking coherence through many small decisions:

  • a form validates differently from the previous form
  • a table action becomes a new button pattern
  • an empty state uses a different tone, spacing, or hierarchy
  • a “quick” variant quietly becomes a new branch of the system

None of those is catastrophic on its own.

Together, they create drift.

Cheap generation makes cheap deviation possible

Before AI-assisted UI work, implementation cost acted as a weak constraint.

A new variant was still possible, but it usually cost enough that I hesitated. I had to decide whether the difference was real or whether I was just avoiding the discipline of reusing the existing pattern.

AI weakens that hesitation.

Now a new variant can appear almost for free. That changes the economics of frontend discipline.

The new risk is not that the UI cannot be produced. The risk is that the product surface expands into many slightly different versions of the same idea before anyone notices what has happened.

The real defense is stronger component authority

This made me think less about “design systems” as a library of parts and more about component authority.

When a pattern matters, the system should make the authoritative version easy to find, easy to reuse, and harder to bypass casually.

If that authority is weak, the agent will fill gaps with whatever looks locally reasonable.

That is not misbehavior. It is the natural result of giving a local optimizer an under-specified system.

So the countermeasure is not “generate faster.”

It is:

  • fewer ambiguous primitives
  • stronger reusable patterns
  • clearer naming and boundaries
  • stricter review of UI drift, not just UI correctness

Local correctness is not enough

A generated screen can be correct in isolation and still be wrong for the product.

That is the failure mode worth watching.

The button works. The form submits. The layout renders. The empty state is readable.

And yet the product becomes harder to trust because each adjacent screen teaches a slightly different interaction model.

That is why I no longer treat frontend review as only a check for correctness or polish.

I also treat it as a check for coherence leakage.

The lesson

AI did not break my UI.

It made deviation cheap enough that weak product boundaries became visible much faster.

That changed the discipline I need.

When generation gets cheaper, reuse and authority matter more, not less.

Continue exploring

Follow the same line of thought through themes, tags, or a broader local search across the archive.

Keep following the thread.