We are excited to announce an update to support some security filters in the “Quick sync” feature.
Quick sync feature allows data updates to be available to users within 1-2 seconds of the updates. This feature was originally announced in this post and is released under the Preview program.
With this announcement, simple security filters that rely on row-scoped calculations (such as value comparisons) or user settings are supported for use with Quick sync. More complex security filters, for example those that rely on values from referenced tables, virtual columns, and other data outside the scope of the row, are not currently supported.
For example, below security filters are supported:
- Constants like =TRUE and =FALSE are supported.
- Value comparisons like [Status]=‘Pending’ are supported.
- User settings and email checks like [Assigned To]=USEREMAIL() are supported.
Below security filters are not supported in this release:
- References in expressions like [Order].[Assigned To]=USEREMAIL() are not supported.
- Select, Filters and other expressions that are table scoped (ex: SELECT(Table1[Col1], TRUE) ) are not supported.
- Only physical columns are supported. Virtual columns are not supported in the security filter.
Do I have access to this feature?
Feature is available on Free accounts only. Based on the feedback, we will gradually release this to paid accounts in the coming months.
How do I enable this feature?
Go to Settings > Performance (1-2) . If you are using the legacy app editor UI , go to Behavior > Offline.
- In Sync: Cloud to Data Source, turn on (3) Server Caching and (4) Quick Sync.
- Save your app. AppSheet editor will show a warning and toggle this feature for expressions not supported by this feature.
When can I enable this feature?
The app editor will enforce that only supported security filters are allowed. If you have a security filter that is not supported and turn on “Quick sync”, the feature will be automatically turned off after you save your app and you’ll get a warning message.
When should I disable this feature?
App creators should also consider at least the following factors to decide if they want to use this feature in their apps:
- The individual data updates will be cached on AppSheet servers. If you have strict data residency requirements, you may not want to use this feature.
- You should not use this feature if your data sources compute values automatically (for example, if your Google Sheets data source uses formulas) or if your app has virtual columns that require a complete sync to be computed properly. This is to make sure that your users are seeing accurate data and have a consistent user experience.
- If people change data directly in the data source (for example, editing directly in Google Sheets) or through another non-AppSheet system, the app will not reflect this updated data until the next sync.
Why is it not working for my users?
First, see the restrictions mentioned above (and check that your security filters are compatible).
In addition, users will only see changes made by other users that are using an app with the same version. This means that if you are updating your app (and the version is changed), your app users may not see updated data until their next full sync. This functionality ideally needs both Sync on start and Automatic sync features to be turned ON as well.
More technical information is shared further below too.
Where is the documentation?
See the Quick sync setting described in Offline and Sync: The Essentials.
Who should I reach out to if I see issues or want to provide feedback?
Add your feedback or report issues directly on this announcement thread.
How does the Security filters in Quick sync feature work?
Quick sync works by “broadcasting” updates directly to the open apps when the changes are done. This allows apps to show the latest data in between full syncs. An overview of the broadcast system is shown in the diagram below.
To support security filters, we evaluate the expressions on the changed rows only.
- AppSheet editor checks the expression to make sure we can correctly evaluate the expression with just the information in the data change.
- Expression evaluation makes sure that we do not fetch additional data from the origin data sources. This is to avoid overwhelming origin data sources with too many read requests.





