Time to face the music.
On Monday, my iCloud update for EasyRoute was released. This was my longest release cycle for a lot of reasons and I actually sat on this release for a few weeks after I thought it was ready, just to be sure.
Unfortunately when I finally released it, I got reports of routes disappearing. To top it off, even new routes would disappear.
I have a theory as to why this is happening, but I certainly didn’t see it coming.
There are two things that happen when you first launch version 2.6. First it turns the routes into documents, then, if iCloud is enabled, moves those documents into the app’s iCloud container (really just a special directory) for syncing. Once in the iCloud container, they should get synced to Apple’s servers and to your other devices.
Well, unfortunately it seems this sync can go the wrong way and wipe the container. The fact that even new routes get wiped out shortly after being created supports this theory. I’m guessing the initial move to the container is wiped out, and since iCloud insists the “truth” is that the container is empty, keeps removing anything else put there.
I saw things like this happen when trying to sync the old data store (which was Core Data). It would seem to be alright, but often there would be a bad sync and data would be lost. This is the main reason I moved away from Core Data, because I just couldn’t make the iCloud sync work reliably. When I tried this with documents, it worked great. Also, the routes-as-documents approach is much more straightforward. I think the result is much cleaner.
So, upon learning of the syncing problems, I reviewed everything. I checked with some of my testers, but was unable to reproduce it. I had no choice but to disable iCloud-by-default and try and get a new release out as fast as possible.
Luckily, despite my request for an expedited review being denied, version 2.6.1 got through the App Store the same day. The problem isn’t fixed, but it is sidestepped and hopefully, at some point, it will occur to me how to eliminate it altogether.
So, the option is still there in the Settings App, but off by default. I wish I knew exactly how many people the sync fails for, but getting 2 reports in the first day is enough for me to say it’s not reliable.
Finally, I feel terrible that this happened…
EasyRoute isn’t my day job, it is my labor of love. I created it to fit my own needs and it’s been fun adding features and tweaks for cyclists, walkers and even motorcycle riders! (I definitely wasn’t thinking motorcycles when I started this.) There’s been lots of response from all over the world and it’s been fun getting to know my users. Now, I feel like I let everyone down. My name is on this program and until yesterday afternoon, I was quite proud of how it had come out.
So, to anyone having issues, I’m deeply sorry.
If there are still any problems with 2.6.1. Let me know, I’m listening. My contact page is the best option as I see messages left there right away.