Interaction pass / Patchwork
Failure is a state.
Not a dead end.
Report one bug. Keep what you typed when the request fails. Give focus, feedback and recovery a deliberate place in the flow.
Report an issue
Local simulation only. This demo does not send or persist an issue.
Try the whole journey
- Leave the title empty and submit. Focus moves to the field with its error.
- Type a title; use Tab to reach the submit button and press Enter.
- During the simulated 1.2-second request, a second submission is blocked.
- Failure retains the fields and moves focus to feedback. Choose Successful response and retry.
- Success appears only after the simulated response resolves.
Before → after
Before: a generic alert, cleared input and an ambiguous disabled button.
After: a named problem, preserved input, explicit pending state and a retry path.
Backend boundary
Frontend duplicate prevention is not server idempotency. A real endpoint must define durable completion, authorization and duplicate handling. Reloading this demo clears the form.