Writing
Clear, consistent writing is part of the design. These guidelines cover voice, capitalization, error messages, empty states, and the microcopy patterns used across Sitka products.
Voice & Tone
Sitka speaks like a knowledgeable colleague: direct, calm, and precise. Not chatty. Not corporate. Never apologetic when something goes wrong — just clear about what happened and what to do next.
Direct
Say what you mean in as few words as possible. Omit filler phrases like "Please note that" or "It looks like".
Calm
Errors happen. Describe them factually. Avoid exclamation marks except in genuine moments of celebration.
Precise
Name the thing. Don't say "the item" when you can say "the project" or "the file".
Capitalisation
Use sentence case everywhere except navigation labels and proper nouns.
| Context | Rule | Example |
|---|---|---|
| Page titles | Sentence case | Design principles |
| Navigation labels | Title Case | Getting Started |
| Buttons | Sentence case | Save changes |
| Error messages | Sentence case | File size exceeds 10 MB |
| Tooltips | Sentence case | Open in new tab |
| Product names | Always capitalised | Sitka, SwiftUI, Figma |
Button labels
Buttons are actions. Label them with a verb that describes what happens when you press them — not the state of the thing they affect.
✗ Avoid
Changes
✓ Use
Save changes
Lead with the verb. The noun can follow if it adds clarity.
✗ Avoid
OK
✓ Use
Delete project
Generic confirmations are dangerous. Always name what will be deleted.
✗ Avoid
Submit
✓ Use
Send message
"Submit" is a form concept. Name the real-world action.
✗ Avoid
Retry
✓ Use
Try again
Natural language over technical vocabulary.
Error messages
Every error message should answer three questions: what happened, why it happened, and what the user can do next. If you can only answer one, answer what to do next.
Never blame the user. Never use technical jargon. Never leave the user with no path forward.
✗ Avoid
Error 401: Unauthorized
✓ Use
Your session expired. Sign in again to continue.
Translate HTTP status codes into plain language with a recovery action.
✗ Avoid
Something went wrong.
✓ Use
We couldn't save your changes. Check your connection and try again.
"Something went wrong" communicates nothing. Name what failed.
✗ Avoid
Invalid password.
✓ Use
Password must be at least 8 characters.
Validation errors must explain the rule, not just flag the failure.
✗ Avoid
Upload failed.
✓ Use
File too large. Upload a file smaller than 10 MB.
Include the constraint. The user needs to know what to change.
Empty states
An empty state is an opportunity to orient the user, not just fill a gap. Explain what would normally be here and what to do to get there.
✗ Avoid
No items found.
✓ Use
No projects yet. Create your first project to start collaborating.
Name the content type. Give them a next step.
✗ Avoid
No search results.
✓ Use
No results for "darkmode". Try a different spelling or browse all foundations.
Repeat the query back. Offer an alternative path.
Microcopy patterns
Placeholder text
Placeholders disappear when typing begins and must not carry essential information. Use them for format hints only.
e.g. search@company.com — not "Enter your email address"
Tooltip text
One sentence maximum. Tooltips supplement — they don't replace — visible labels. Don't put information here that a user needs to complete a task.
"Export as CSV" not "Click this button to download your data as a comma-separated values file."
Loading states
Name what's loading where possible. A generic "Loading…" is acceptable only when what's loading is obvious from context.
"Loading projects…" — not just "Loading…"
Destructive confirmations
Use a confirmation dialog with a red CTA that names the exact action. Never make the default the destructive option.
"Delete project" (red) + "Cancel" (secondary) — the heading says what will happen, not "Are you sure?"
Numbers, dates & units
| Rule | Avoid | Use |
|---|---|---|
| Spell out numbers one to nine | 3 items selected | Three items selected |
| Use numerals at 10+ | Twelve results | 12 results |
| Abbreviate large numbers | 1,000,000 users | 1M users |
| Dates: day Month year | 01/03/2025 | 1 March 2025 |
| Relative time for recency | Updated 2025-05-01 | Updated 4 days ago |
| Always include the unit | Timeout: 30 | Timeout: 30 seconds |