Docs Snippets

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.