Earlier quoted context omitted.
But they aren't accessing the database. They are accessing a data structure on the client, and changes are propagated to the server. There are opportunities to reject that change at the server. This trick is already in use in a lot of places. If you click an upvote on Reddit, it doesn't do a complete round-trip, it just increments the count in place, and then issues a command to the server to do a "real" increment. I…
All true, but then you're essentially lying to the client. You are saying something happened, when it didn't. I understand the argument that this type of lying is "ok" for the sake of responsiveness, since 99% of the time the data will be accepted. That argument isn't valid in my eyes. When I update the users screen to reflect the data they entered, to me, that's an indication that I accepted the data. If I were to f…
But, you can still use this model of data synchronization with a bit of good manners. You create a "registration" data object locally, with a "confirmed" flag set to false. You wait for that data to propagate to the server, and for the confirmed flag to be set to true. You show the user a spinner until the confirmed (or processed or whatever) thing changes.