Skip to content

The regenerate affordance

Asking for another take, without losing the first one.

8 min

The regenerate button is the most misunderstood control in AI products. Users press it when something is wrong, but the product rarely asks what, so it just rolls the dice again. You get a random walk through the model's answer space, most of it worse than the last one.

"Regenerate should never be a slot machine. It should be a steering wheel."
The pattern

Regenerate asks: different how?

Clicking regenerate doesn't immediately reroll. It opens a small dial: shorter, more formal, warmer, with numbers, simpler, contrarian. Each is a directional nudge the model understands. The user picks one. Now the reroll is purposeful, not random.

The old variants don't disappear. They become breadcrumbs at the bottom of the answer — "Recent variants" — clickable to switch back. The user is never punished for exploring.

Regenerate with steering
Pick a direction; past variants stay accessible
The current answer

Retention ticked up this quarter, driven mostly by onboarding changes.

Variant: As written

Regenerate should never be a slot machine. It should be a steering wheel.

The why

Users rarely want a different answer. They want the same answer, better.

When a user presses regenerate, the dissatisfaction is almost always specific: too long, too stiff, too salesy, missing numbers. A naked reroll treats every complaint the same. A steering regen treats the user as an adult with a preference, and produces a result they can actually use on the first click.

Three moves

Directions that carry most cases.

  • Length dials. "Shorter" and "Longer" land most of the actual regenerate intent. Ship these first.
  • Register dials. "Warmer," "More formal," "Plainer." Every doc has a tone target; the model can usually hit it if told.
  • Content dials. "With numbers," "Without examples," "Just the conclusion." Structural nudges, not just stylistic ones.

The trap

Regenerate that forgets the past.

Products that discard the previous answer on regen force the user to hold their own history. That's a memory tax, and it makes users hesitant to ever press the button. Regen becomes a last resort rather than a first tool. The feature fails by existing.

Failure modes

What this pattern gets wrong when it gets wrong.

Silent truncate
The response ran out of room or tokens and the product didn't tell the user where it stopped.
Ambiguous state
Running, done, errored, paused all look the same. The user has to infer from context.
Seen in the wild

Three shipping variants worth copying.

  • Arrows above the response to cycle previous takes
  • A compare-two-takes view on a single click
  • An 'undo regenerate' affordance for 30s after clicking