With EasySync Beta 10, support for deletions is changing significantly. And I think you're going to like it...
Back in EasySync Beta 8, I added support for deletions. It worked, sort of - depending on how you define "deletions."
In that version, users would "flag" records that they wanted to delete, and after syncing with the server, the records would be deleted from the mobile device that initiated the deletion, and eventually from any other devices that sync. The problem with this approach is that those "deleted" records remained on the mobile device until the next sync, and they also ended up stranded on the server until someone took action to delete them. There was no good way of knowing when it was safe to really delete them from the server, because you couldn't be sure that all of the mobile users had synced and were aware that they should be deleted.
In Beta 10, when a mobile user deletes a record, it is immediately deleted from their device. Behind the scenes, EasySync logs the UUID of the deleted record (and the UTC timestamp of the event). When the user syncs, the "push" payload includes a list of UUIDs of any records that the user has deleted since the last sync. The server honors this new portion of the payload, and deletes the records from the server as well. So when you delete, the records are really, really deleted.
Now here's where things get interesting: When a user syncs with the server, we need a way to tell them what records other users have deleted. To pull that off, a new phase of the sync process, which we're calling a "sync check," is performed. The mobile device creates a list of all of the UUIDs, for all records in all synced tables, that it has on the device. It sends that list to the server, which in turn compares the list to the UUIDs of the records that it has - and it sends back a list of any UUIDs that it doesn't recognize (because they represent records that have been deleted). The mobile device then deletes those records.
There a number of other changes coming in Beta 10 - things like performance improvements, an improved UI, better error reporting, etc. But this change in how deletions are handled is the most significant.
I want to give a shout out to Bill Heizer at FileMaker Inc for setting me straight about how deletions should be handled. We bounced a lot of ideas off of each other, and what you're going to see in Beta 10 is the result of that collaboration. Thanks Bill!
We're still doing some "behind-the-scenes" testing of EasySync Beta 10. If all goes well, we'll release it later in the week. So stay tuned...