AddThisFeature

Input Masks

Guide people into the expected format without fighting what they type.

moderate Forms & Input

What it adds

Formatted input fields that insert separators as the user types, while submitting a clean, normalized value.

What your agent is told to do

6
  1. 1

    Keep the caret where the user expects it after every insertion and deletion. Reformatting that jumps the caret to the end is the single most common failure of masked inputs.

  2. 2

    Accept pasted values in any shape — with separators, without them, with spaces or dashes — and normalize on paste rather than rejecting.

  3. 3

    Submit the normalized value to the server and format only for display. The server must never receive a display string it has to strip.

  4. 4

    Deleting a separator must delete the adjacent character, not fight the user by re-inserting it.

  5. 5

    Do not put the mask pattern in the field's accessible name, and do not let screen readers read every separator character. Announce the field's purpose and expected format once via the label and description.

  6. 6

    Never use a mask as your only validation. The value must be validated server-side regardless of what the field allowed.

Edge cases it handles

6
  • Selecting the whole value and typing over it must reformat cleanly from scratch.
  • Undo and redo must step through logical edits, not through each reformat.
  • Autofill inserts a whole value at once, bypassing keystroke handlers — normalize on change, not only on keypress.
  • Mobile keyboards behave differently; test composition and predictive input rather than assuming key events.
  • A partially entered value must be preserved on validation failure, not cleared.
  • The field must remain usable with JavaScript disabled or failed — a plain, unmasked input that still submits.

Definition of done

8
  • The caret stays put during insertion, deletion, and mid-string editing.
  • Pasted values are accepted with or without formatting.
  • The server receives normalized values, never display strings.
  • Screen readers announce the field's format once, not per separator.
  • Autofill and mobile input produce correctly formatted values.
  • Server-side validation exists independently of the mask.
  • The feature matches the existing design system.
  • No existing functionality is broken.

Related features

How it works

  1. 1

    Copy the link

    Grab the Markdown instruction URL for this feature.

  2. 2

    Give it to your AI

    Paste it into Claude Code, Cursor, v0, Lovable — whatever you build with.

  3. 3

    It inspects, then implements

    Your agent reads your existing app first, then adds the feature to fit it.

Works with your stack

These instructions are written to adapt. They tell the agent to detect your framework, match your existing design system, and reuse what you already have — rather than assuming a particular stack.

Need it tighter than that? Customize the feature and tell it exactly what you're running.