Forms: the part where users are broken most
Fewer fields
Every field lowers the completion rate. Ask of each: what will we do with this tomorrow morning? If the answer is vague, delete it or make it optional — and mark that explicitly.
Split a long form into steps with visible progress, and save a draft. A user who closed by accident and lost ten minutes doesn't come back.
Validation at the right time
Don't shout at a field while it's being typed for the first time. Check when leaving it, and show the message next to the field — not as a list at the top.
An error message says what happened and what to do: “the phone number should start with 05” and not “invalid input.”
Details that feel professional
The right keyboard type on mobile, autocomplete enabled, focus on the first field with an error, a button disabled during submission to prevent duplicates, and a success message that says what actually happened.
Going deeper
Always validate on the server too. Client-side validation is user experience, not security — any request can be sent directly. And return server errors in a consistent format with field attribution, so the interface can show them in the right place without guessing.