Abbreviations and inline expansion
Good abbreviations are memorable and unlikely to be typed by accident. Prefix them with z, j, ;, or double a letter.
How it works
TypeFire builds a trie of your abbreviations and watches keystrokes through the macOS Accessibility API. On a match it deletes the abbreviation with backspaces, then injects the body (Accessibility API in native apps, clipboard paste in web apps).
When it fires
Settings → Snippets → Expansion mode decides for every snippet: after a delimiter (a space, return or tab), or the instant the last character is typed. One snippet can differ: turn on Override expansion mode beside its Abbreviation field and pick its own. A zsig that fires on the space while zz fires as you type, in one library. Snippets made before this exist follow the setting, as they always did.
A body can end in a space or a tab and it is kept: Best, pastes with the space, so the next word does not run into it.
Case sensitivity
| Setting | Behavior |
|---|---|
| Ignore Case | zem, ZEM, Zem all fire |
| Case Sensitive | Only the exact case fires |
| Adapt to Case | Type ZEM and the body pastes UPPERCASE; Zem capitalizes the first letter |
App compatibility
- Native apps (TextEdit, Notes, Mail, Xcode): best case, instant injection.
- Web apps (Chrome, Safari, Slack, Google Docs): clipboard paste, slightly slower.
- Terminals: works; avoid abbreviations that clash with shell commands.
Expansion feels laggy in Google Docs? Settings → Expansion has Instant expansion for fast typists and Extra backspace, which fixes first-word-of-sentence expansion in canvas-based web editors.
Documentation for TypeFire 5.1.0. Updated 2026-09-15.