Hi everyone,
I’d like to share an issue I’m facing with an application I’m developing and see if anyone has experienced something similar or has any suggestions.
I’m working on an app that records inspections, where I have a main table called Inspections and a related child table called InspectionResults.
The process works as follows:
-
When I create an inspection, it starts with the initial status “In Progress.”
-
Inside the inspection form, there are several questions that can be marked as Good / Bad / N/A.
-
When a question is marked as “Bad,” additional fields such as Observation and Photo appear, and the related InspectionResults subtable becomes available.
-
It’s not mandatory to add results at that time — users can create the inspection first and then add results later without any issue.
-
Once the inspection is created, there’s a button that allows changing the status to “Completed,” but it should only appear when all related results are marked as “Concluded.”
Everything works fine until the following situation occurs:
-
Within the inspection form, the user marks at least one question as “Bad.”
-
No result is added to the InspectionResults subtable.
-
The user then presses Save.
At that moment, before AppSheet finishes saving and syncing the data, the “Finalize Inspection” button becomes temporarily visible.
During that short period (while AppSheet is still processing data in Google Sheets), the user can press “Finalize” and bypass the validation rules that are supposed to prevent finalizing the inspection when the requirements aren’t yet met.
Once synchronization completes, the button behaves correctly and disappears if conditions aren’t satisfied — but that short visibility window creates a validation gap that could compromise data integrity.

It seems that AppSheet evaluates action visibility before all records are fully synced, which causes the button to appear based on an incomplete dataset.
Has anyone else encountered this issue?
Is there a way to delay action visibility or force validation to wait until all records (including unsynced data) are completely saved?
I’d really appreciate any insights or experiences you can share ![]()
