Science confirmed: text replacements do not sync
Text replacement snippets are a useful tool that can be used on macOS and iOS. With this feature you create shortcut text that, when typed, expands to something longer.
For instance, you might create a shortcut so that “4yum” automatically expands to “For the best pastries in the world, visit Les Madeleines in Salt Lake City and ask for a Kouign Aman. Your life will change.” (What? It’s the truth. Highly recommended.)
You can also use it to force an autocorrect. For instance, I make “welll” automatically go to “we’ll” to save the apostrophe hunting.
Once setup, the feature is incredibly useful.
There are fantastic third party apps like Textexpander that have been doing this for years. While I still love Textexpander on my Mac, it’s much less convenient on an iPhone because it requires a 3rd party keyboard. Switching back and forth between keyboards kill the convenience so I don’t use it.
Apple introduced text expansion as a built-in feature with Snow Leopard (2009) and iOS 5 (2011) updates.
In iOS 6 (2012), syncing between Mac and iOS devices was introduced. At least that is when Apple said it was introduced. I have yet to see the feature roll out. Therein lies the premise of this post.
The sinking syncing feeling
Text replacement syncing is completely broken. Sometimes it works, sometimes it doesn’t. Sometimes it will only sync back old snippets that you have deleted. Sometimes the sync will work one direction, but not the other. Every time I ask about this on Twitter, it brings a strong response of similar experiences.
Even though I know it’s broken, I decided to get scientific about it. I felt like I had a unique setup to test well for a few reasons:
Like many of you, I have a good number of personal Macs and iOS devices that I use every day.
Also, I have four kids with iPods that I can commandeer at any time “for science.” This allows me to test various iOS installs.
Finally, I have hundreds of Mac minis available at my disposal so I can test all sorts of OS X and macOS releases, including clean installs and upgrades. (Thanks MacStadium and especially the data center team that will install all of these OS versions.)
Now, I’m not a scientist but I do play one on this blog so here was my approach:
My personal iPhone is my control device. It’s the one I use every day and is the most important to have all of my text replacement snippets. It’s the only one that has the full list of all snippets because it is where they were all added.
On every other device, I created only one single snippet that was self identifying. For instance, on an 6th generation iPod running iOS 10 I’d create “*6iPodiOS10” which would expand to “6th generation iPod running iOS 10 created on Aug 15”, etc. This way I would know what was syncing from where.
I turned on iCloud Drive and syncing of any kind that could be found in the Settings.
I began my observations on July 26 with the release of iOS 11 beta 3. I installed that beta on my personal iPhone and iPad and deleted everything on all other devices.
I checked all of the devices every 6 days. In a general observation, anything to sync would take 2-5 days. (Sidenote: WHY DOES SYNCING TAKE SO LONG WITH THIS STUFF?!?)
I won’t overload you with the screenshots. Nearly all of them had the single entry, and when things do sync, there’s too much personal info there for me to blot out every time. (ie, address, phone numbers, school addresses, etc)
With that being said, here is the graph showing the state of each device when checked in ten 6-day periods:
I understand the details on the graph are limited. The general idea is that syncing text replacements is a complete mess.
The iPhone 7 and a clean installed iPad Pro stayed in sync nearly the whole time. Adding a snippet to either device would sync immediately. That's a good sign.
Period 3 for the Macbook was a glorious day. It’s the lone surprise green. To get that result I went into Finder on the MacBook and deleted the following files:
~/Library/KeyboardServices/TextReplacements.db ~/Library/KeyboardServices/TextReplacements.db-shm ~/Library/KeyboardServices/TextReplacements.db-wal ~/Library/Group Containers/com.apple.InputMethodKit.TextReplacementService
It was a total shot in the dark because sometimes you just feel like a sledgehammer is the best tool to use. After that, the snippets synced with the iPhone.
Then the other two personal iMacs kind of synced. (They showed only the snippet from the MacBook, but not any from the iPhone.)
Then all of these machines went back to where they were at the beginning. What a let down.
When the 10.13 GM was released I put it on a Mac mini and it shook some things up for a few Macs, but it was just random cases of sync. Hopefully future updates of macOS 10.13 will bring more hope.
From my own experience, syncing of all other data via iCloud has really improved. Notes, Calendar, address book, reminders, photos, etc all sync almost instantly across all devices.
What is so special/not special about Text Replacement snippets that makes it so hard?
I do wonder if some if this comes from my main machines going through years and years of upgrades. For instance, the iMac 5K hasn’t had a clean install of the OS in over a decade. I’ve always upgraded to new releases and cloned over to new Macs.
I wonder if someone went out to buy a brand new Mac and iPhone today with no history of using iCloud or syncing, would their text snippets come through fine?
For anyone who has years of data like me (and probably you), it seems like there would need to be some way to mark the master list of snippets. It would probably need to be on iCloud.com where it could show you what all of your devices are syncing and you can choose the one to replace all the others.
I have no idea if there is a fix for text replacement syncing. If there is one, I’d be happy to hear about it on twitter. I wish I had a fix to share. I mostly put forward this data to show just how random and far reaching the issue is on Apple devices. If you solve this issue and share the solution with me, I'll personally reward you handsomely. (Then I'll expense it to the company. Perk of the job.)
Note: As of Nov 27, 2017 the syncing appears to be fixed.