1. Don’t use real words for shortcuts or you won’t be able to type that word easily anymore (you have to tap the x on the replacement suggestion, and it’s a pain to do regularly). Instead of “shrug,” I simply use “shr,” because I’ll rarely type that without the “ug” afterward.
It drove me nuts for a while that Apple would decide "well, you're close enough to the shortcut that we'll take pity and fill it in for you" - no, I specifically chose my shortcuts to be text that would
never come up normally. Thankfully, they fixed this eventually.
2. Make them as short as possible. Most of mine are 3 letters. I use “apl” for the Apple logo. It’s a lot faster to type than “applelogo.”
Yep, all of mine are of the form "!ab", where the two letters clue me in, and the leading "!" ensures that I'm doing it on purpose. Also reminds me of csh/bash history substitution, which entertains me. I had had a haphazard naming system early on, but, combined with the above problem of Apple deciding that "close enough was okay" in the early days, I actually ended up writing a script to look through a large body of English language text (the wordlist that ships with Unix, along with a few books) to find least frequently occurring letter pairs - turns out that "(anything)x" is pretty infrequent, if you avoid vowels for the first letter.
3. Save things like your address, email address, and the name of your city. It saves so much time.
"!fx" for full name, "!mx" for email address (amuses me because DNS uses MX records for mail), "!nx" for my normal username on various systems, "!px" for my ten-digit phone number, "!sx" for my street address, "!cx" for my city name, and "!xz" for my full zip+4 zipcode. And it's so nice to be able to use, for instance, the email one, and know for certain that I haven't made a typo - like, yes, I know my own email address, yes, it's easy to type, but typos still happen occasionally. It's almost a security thing, to avoid typos, more than a timesaver.
4. I also have lots of special characters saved. For example: ←, →, ↑, ↓, ≠.
I did a few of those at first, and ended up just building myself a... sort of a clown alphabet, so "!uu" gets me "unusual unicode", namely this mouthful (non-ASCII / non-emoji characters that I might want to use, that I can't get from the iOS keyboard):
©®℗™°¢µ‽℅№§¶†‡·•‣⅛¼⅜½⅝¾⅞⅓⅔±×÷≠∞¬∴⌘⌥⌃⇧⏎↑→↓←△□○✕
I use that mostly in textfields on iOS, where I find it easier to dump in the entire set and select out the character(s) I want, rather than to have a whole bunch of different macros for each character or set of characters. From time to time, if I come up with another character I need, I just add it to the one list in the one place.
5. I also have some links I send fairly frequently.
That is a useful idea I'll have to consider.
I also have "!pqnld" for "¿Por qué no los dos?" because I find places I want to use that occasionally and it saves me having to get the "¿" and remember the accented letters. Come to think of it, there are a handful of sentences that I find myself using over and over (mostly for moderating/helping on Reddit) that I ought to put in to text replacement.
By the way, for getting access to arbitrary unicode characters on iOS/iPadOS, I've been happily using
Unicode Pad Pro for many years. It has a custom keyboard you can install, but I don't bother (I'd rather have the keyboard toggle just have text / emoji rather than cycling through a list). But it's great for looking up arbitrary characters by name, and copying the unicode character from that, to paste into a document. If it's a one-off, I'll do that, if it's something I'll use more than a few times, I'll add it to my "!uu" macro.