Every user-facing string follows one voice. Engineers writing for engineers — direct, technical, honest, economical.
Constant across every product and surface.
| Attribute | How it shows up |
|---|---|
| Direct | First sentence is the point. No preamble. |
| Technical | Assume a competent user. Use precise terms. |
| Honest | Truth without euphemism — “Failed to save”, not “Oops!” |
| Economical | Cut until you can’t cut more — “Deleted”, not “Successfully deleted!” |
| Active | “We couldn’t load”, not “It couldn’t be loaded”. |
The rules that turn the voice into concrete strings.
Brief, not truncated — cut “please”, “simply”, “just”, “easily”, “very”, “really”.
Specific, not generic — “Task #142 deleted”, not “Item deleted”.
Active voice, present tense.
Imperative for actions (“Save”); declarative for state (“Saved”).
Sentence case — not Title Case, except proper nouns.
Oxford comma — “team, clients, and partners”.
No anthropomorphization — no “I”, “I’m sorry”, “Let me…”.
No fake enthusiasm — no confetti, no “Awesome!”.
One word per concept, held consistent across the library and every consumer.
| Concept | Use | Don’t use |
|---|---|---|
| Permanently remove | Delete | Destroy, Erase, Wipe, Kill |
| Reversible remove from view | Archive | Hide, Bin, Trash |
| Remove from membership | Remove | Kick, Boot, Eject |
| Persist draft | Save | Store, Keep |
| Persist final | Publish | Release, Go live, Broadcast |
| Send form data | Submit | Send, Post |
| Apply pending changes | Apply | Confirm, Activate |
| Close without saving | Discard | Throw away, Forget |
| Navigate back | Back | Previous, Return |
| Abandon flow | Cancel | Abort, Nevermind, Skip |
| Close modal | Close | Dismiss, Hide |
| Copy a resource | Duplicate | Copy, Clone |
| Sign-in action | Sign in | Login, Log in |
| Sign-up action | Sign up | Register |
How the voice resolves into button labels, errors, empty states, and toasts.
verb + object
Do Create project
Do Save changes
Do Delete account
Don’t OK
Don’t Done
Don’t Click here
Don’t Learn more
what’s wrong + how to fix
Do Email must contain an @ symbol.
Do Email already in use. Sign in or use a different email.
Don’t Invalid input.
Don’t Error: see below.
“No {things} yet” + value proposition + next step
Do No projects yet
Do Create your first project to track tasks and collaborate.
Don’t Nothing to show here
Don’t Click the button below to get started!
past-tense factual — {noun} {verb}.
Do Project created.
Do Email sent.
Don’t Success!
Don’t Your project has been successfully created.
question form with a specific noun — {Verb} {noun}?
Do Delete workspace?
Do Discard changes?
Don’t Are you sure?
Don’t Confirm action
present participle + specific object
Do Generating PDF…
Do Uploading 2 of 8 files…
Don’t Loading…
Don’t Please wait…
@idinstudio/ui/copy. Consumers override them through LanguageProvider with ICU message format — counts, dates, and numbers always go through Intl, never hardcoded.