Concurrent use

Dear Appsheet community,

I have a question about concurrent use of data within the app.

In my spreadsheet, I have a sheet to which I import rows from another system. I then use Appsheet to add new information to those rows, for which there are 10 extra columns. I have about 20 users, so the chance for concurrent use of data is pretty high, and I always have a risk of data loss when two users work on the same row.

I’ve read the articles about concurrent usage and I know that Appsheet is always overwriting the entire row, even if only 1 value was changed. Now I understand that this is the way the platform works, and that app creators just have to find our ways around it.

However, I’m very curious to know why exactly is the platform designed this way and why it isn’t possible to only overwrite data that changed. Perhaps, it is something that Appsheet is planning to change in the future, or, it is the only way of working with gSheets.

I would be very thankful if someone could explain this to me!

First, this is not an uncommon problem - updates being overwritten by other users. In corporate systems for example, this is handled by locking rows (or even columns but it is typically rows) in the database table when the first update request comes in, making any other requests wait. Once lock is released, then other updates can be applied. In many cases, the other updates are simply rejected. And those users will need to re-submit the changes based on the newly updated data.

In the case of AppSheet, it is a distributed mobile first platform that supports OFFLINE functionality. Critical feature for business mobile applications. So, locking is not feasible.

Additionally, frequency of updates are minimized (and somewhat controlled by developer based on needs) in order to conserve device battery life.

With the above considered, it then boils down to does AppSheet apply updates by row or by column. Column updates don’t really provide an advantage and actually require additional system overhead to detect WHICH columns updated. It is actually more efficient to simply note the row is updated and send the entire row.

These are my observations based on experience. AppSheet may have more platform-specific reasons for row-based processing.

What I didn’t know was that you could achieve “single-column” changes only if you use separate slices for it. That pretty much resolves the entire problem