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.

ContextRuleExample
Page titlesSentence caseDesign principles
Navigation labelsTitle CaseGetting Started
ButtonsSentence caseSave changes
Error messagesSentence caseFile size exceeds 10 MB
TooltipsSentence caseOpen in new tab
Product namesAlways capitalisedSitka, 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

RuleAvoidUse
Spell out numbers one to nine3 items selectedThree items selected
Use numerals at 10+Twelve results12 results
Abbreviate large numbers1,000,000 users1M users
Dates: day Month year01/03/20251 March 2025
Relative time for recencyUpdated 2025-05-01Updated 4 days ago
Always include the unitTimeout: 30Timeout: 30 seconds