Workaround needed?

Because of the sync issue last week …the data was not written to the database immediately and it was showing the red exclamation mark in the frontend.

One of the user did not notice the error till now for a week and the data kept accumulating in the frontend.

Now when I clicked discard changes (after asking the user), obviously the data was not there.

Are there any workaround for this? this has happened already and I genuinely cannot think of any way.

I understand users cannot enter the data when it shows an red exclamation mark but

I need a workaround that prevents users from entering any more data in the frontend even when the error is there.

Hello @Sherin_Premkumar,

I sincerely apologize for the inconvenience :frowning:

I did some research and I found this post:
Way to remind users about unsynced entries

Aleksi explains a possible solution there.

Hello Jose , thanks for replying!

But that is not the solution.

“You’ll need to reset the chances and all edits will be lost this is the only way I know you can make this app sync again.”

I do know how to make the app sync again but I do not want the data (adds/updates) to be lost.

Not sure who marked it as a solution!

“And then add an event action to your other tables (form view) to trigger a warning pop-up if the difference is more than for example 30 days.”

Jose, I have 1000s of records out of which let us say 100 would be actively being edited(updated).

it is not possible to guess which records would be updated and which one wont be.

If there is an error , it should not let the users create or update anything in the frontend!

I understand. My best suggestion at this point is to reach out to support to see if there is a way to recover all this information for you.

I don’t think this is goig to be your case but it is important to mention that AppSheet support is not available for free accounts.

If you have a license then please follow the steps below:

  1. Go to Appsheet help

  2. Scroll down to the bottom, you will find a box with the following text

    Need more help?

    Try these next steps:

    Contact us
    Tell us more and we’ll help you get there

  3. At this point you will be redirected to a three steps process in which users will possibly find answers to the query they have. Click Next

  4. Click Next Step

  5. Specify your preferred language and either click on Chat or e-mail

Hello! You can pause the app to prevent users from using the front end.

Educating users is a prerequisite I use for clients that choose appsheet, knowing the offline behavior and importance thereof is vital in choosing whether enable offline use is allowed, then for desktop users, understanding that sync mechanism is vital. Even presenting that message as part of the onboarding screen with some clients.

Offline and Sync: The Essentials - AppSheet Help Offline and Sync: The Essentials - AppSheet Help

In a case whereby this occurs, recovery mode is available for mobile users however the system clearly indicates its not available in desktop mode (therefor critical for users to check their sync mechanism regularly)

There is no built-in way to discover a sync failure or to prevent updates from accumulating.

I’ve never addressed this problem myself, but you may be able to add a guard against it yourself. Virtual columns are only recomputed under the following situations:

  • When the row it’s a part of changes.
  • When a value it uses changes.
  • When a sync occurs.

If you create a table (called This App, e.g.) that has (at least) one row, that never changes, that has a virtual column (called Last Sync, e.g.) with the expression, NOW(), that virtual column value will only ever be recomputed when a sync occurs. You can then make decisions in the app based on how long it’s been since the last sync. For instance, you could make any table read-only if the app hasn’t synced in the last hour with an Are updates allowed expression like this:

IF(
  OR(
    ISBLANK(ANY(This App[Last Sync])),
    ((NOW() - ANY(This App[Last Sync])) >= "001:00:00")
  ),
  "READ_ONLY",
  "ALL_CHANGES"
)

hello Steve , it would be very hard for me to track when each was synced and not synced and make a decision based on that.

i have about 8 to 9 tables all with 2000+ rows and uses update about 100 rows frequently and add about 50 each week.

how about enabling this? would I get a notification at least when users have a red exclamtion mark if I enable this?

You need only one table (with only one row, only one physical column, and only one virtual column) to track the last sync time of the entire app. When the app syncs, all tables sync, so if you know the app synced, you know all tables have synced.

You would not. Sync errors are client-side, audit errors are server-side.

oh got it, thank you! I will work on the above and get back to you soon!

thank you, JuneCorpuz.

I just don’t want to pause the app just because one user did not notice the error.

Most of them do notice.

Just a very few of them don’t.

This is a nice workaround. thanks, Steve!

I’m being lazy by asking without experimenting first, but can you think of a way to have the app maybe change its styling, or make a message visible, when it detects it hasn’t synced for a period of time? Like maybe the whole app gets a coloured border, or background colour changes.. or if there was a notification panel, it appears and spells out “the app hasn’t synced in a while…”

There is no way to apply a global styling change, nor is there a reasonable way to pop up a message if the user doesn’t interact with the app.