Apps built with AppSheet are meant for multiple concurrent users. This leads to the natural question -- how do we deal with multiple people updating the data?

The simple rule is that "the last writer wins".

  • The changes of each user are isolated until a sync occurs. At this point, AppSheet attempts to replay the user's changes in order against the backend spreadsheet.
  • The unit of change is a single row. Many applications work so that no two users update the same row.
  • If two users happen to change the same row, the last user's change is what persists. 
  • Even if someone updates the data directly in the spreadsheet (not through the app), this is treated like any other data update.

There are three cases during sync when this behavior is exposed to users of your app:

  • If the user adds a row but a row with the same key already exists, then that row is updated with the new data. When this occurs, the Audit History record for the second add operation will include the property "UpdateExistingRecord" which contains the key of the updated record.
  • If the user deletes a row but no row with that key exists, then that change is ignored. When this occurs, the Audit History record for the delete operation will include the property "DeleteDeletedRecord" which contains the key of the already deleted record.
  • If the user edits a row but no row with that key exists, then that change is ignored because clearly some other user explicitly deleted it first. When this occurs, the Audit History record for the edit operation will include the property "UpdateDeletedRecord" which contains the key of the deleted record.
Did this answer your question?