Buttons and Actions
Do:
- Start with a verb
- Be specific about what happens
- "Save changes" not "Save"
- "Send message" not "Submit"
- "Delete project" not "Delete" (when stakes are high)
Avoid:
- "Click here" (obviously they'll click)
- "Submit" (submit what?)
- "OK" (ok to what?)
- "Yes/No" without context
Button pairs:
| Primary | Secondary |
|---------|-----------|
| Save | Cancel |
| Delete | Keep |
| Send | Save draft |
| Confirm | Go back |
| Create account | Log in instead |
Labels and Placeholders
Labels:
- Always visible (not just placeholders)
- Noun or short phrase
- "Email address" not "Enter your email address here"
- Sentence case, not Title Case
Placeholders:
- Example format, not instruction
- "name@example.com" not "Enter email"
- Disappear on focusโdon't rely on them
- Gray text, low contrast (they're hints, not content)
Helper text:
- Explain why or give guidance
- "We'll send a confirmation link"
- "Must be at least 8 characters"
- Below the field, not above
Error Messages
Structure:
- What happened (brief)
- Why it happened (if helpful)
- How to fix it (always)
Examples:
Bad: "Invalid input"
Good: "Enter a valid email address, like name@example.com"
Bad: "Error 500"
Good: "Something went wrong on our end. Please try again."
Bad: "Password must contain at least one uppercase letter, one lowercase letter, one number, and one special character and be between 8 and 64 characters"
Good: "Password needs 8+ characters with a mix of letters, numbers, and symbols"
Principles:
- Never blame the user
- Be specific about what's wrong
- Tell them exactly how to fix it
- Don't use "please" excessively (once is enough)
- "Oops" and "Uh oh" get old fast
Success Messages
- Confirm what happened
- Be briefโsuccess shouldn't slow them down
- Suggest next action if relevant
- Match the magnitude of accomplishment
Examples:
- "Saved" (small action)
- "Message sent" (medium action)
- "Your account is ready. Let's get started." (big moment)
Empty States
Structure:
- What belongs here
- Why it's empty (if not obvious)
- How to fill it (call to action)
Examples:
Bad: "No data"
Good:
> No projects yet
> Create your first project to get started.
> [Create project]
Better:
> Your projects will appear here
> Projects help you organize your work. Create one to begin.
> [Create your first project]
Loading and Progress
Brief waits (<5 seconds):
- Spinner or skeleton is enough
- "Loading..." if you must
Longer waits:
- Set expectations: "This usually takes about a minute"
- Show progress: "Uploading... 45%"
- Explain what's happening: "Processing your images..."
Very long waits:
- "We'll email you when it's ready"
- Let them leave
Confirmations and Warnings
Confirmation dialogs:
- State the action clearly
- Explain consequences
- Make the destructive option obviously destructive
Example:
> Delete this project?
> This will permanently delete "Website Redesign" and all its files. This can't be undone.
>
> [Cancel] [Delete project]
Not:
> Are you sure?
> [No] [Yes]
Warning patterns:
- Yellow/orange for warnings (proceed with caution)
- Red for destructive actions (data loss, irreversible)
- Inline near the action, not just in a modal
Tooltips and Help Text
When to use tooltips:
- Clarify icon-only buttons
- Explain unfamiliar terms
- Provide keyboard shortcuts
- NOT for essential information
Writing tooltips:
- One sentence max
- No period at the end (unless multiple sentences)
- Action-oriented for buttons: "Add a new project"
- Explanatory for concepts: "Projects organize your work"
Onboarding Copy
Principles:
- Show value before asking for effort
- One concept per step
- Praise progress
- Let them skip (with grace)
Welcome screens:
- Warm but brief
- Set expectations
- Single clear next step
Tooltips/Coaches:
- Point to specific UI
- Explain benefit, not just function
- "Add teammates to collaborate in real-time" not "Click here to add users"
Progress:
- "Step 2 of 4" (sets expectations)
- "Almost there!" (encouragement)
- "You're all set" (closure)