[PREVIEW] Limited security filter support in “Quick sync”

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 <link>, go to Behavior > Offline.

  1. In Sync: Cloud to Data Source,  turn on (3) Server Caching and (4) Quick Sync
  2. Save your app. AppSheet editor will show a warning and toggle this feature for expressions not supported by this feature.

preethamm_0-1685563167601.png

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.

preethamm_1-1685564305985.png

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. 

@Arthur_Rallu @preethamm 

 

Solved Solved
13 32 3,112
1 ACCEPTED SOLUTION

Hi All - Thanks for the feedback! While we are still in Preview, we released this feature to everyone. 

View solution in original post

32 REPLIES 32

I take it that my security filter won't work with Quick Sync? 

IN([Tags],USERSETTINGS("Tags"))

If it will work, I'm very excited for the paid release...

User settings are supported and if Tags is a regular column, it should be supported. Give it a shot by making a test app as free user?

I will! Thanks! Yes "Tags" is an enum column of the type "text."

Is there anyway enterprise accounts can sign up for testing quick sync with security filters?

This is currently an early release version that is available for free users and can be buggy. It is currently available only to free users since we have limited support bandwidth. 


@preethamm wrote:

First, see the restrictions mentioned above (and check that you have no security filters).


This should be updated to reflect that some security filters are supported


@preethamm wrote:

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.


Appsheet URL has version identifier that general u... - Google Cloud Community

Good catch! Updated. Thank you

Hi @preethamm ,

These improvements truly bring joy to me. I highly appreciate the efforts of the development team.

I have enabled the "Quick sync" feature in my application and tested it with a simple set of allowed security filters. The "Quick sync" feature works well within the same application.

However, when I use another application (with the same database), the "Quick sync" feature does not work as expected. I have to manually sync to update the data as before.

Does the "Quick sync" feature work between two applications with the same database? I would greatly appreciate clarification on this matter.

Thank you!

Thanks for trying out the feature! As of now, this feature only works for the same app and same version. We will take this as a feature request for our future iterations.

Do updates to the data source that are triggered by the Appsheet Api cause a Quick Sync for users who have the Apps open?

Yes. API is supported and will propagate the changes.

@preethamm

Thank you for the very nice announcement.

Unfortunately Quick Sync doesn't seem to work in my app.

My app uses Google Calendar for each account as a data source, so I need a security filter, but it syncs very slowly.

OR((USEREMAIL()="user001@xxx.com"),(USEREMAIL()="administrator@xxx.com"))

We hope to see faster syncing with Google Calendar for each account in the near future.

Thanks for trying the feature! 

Quick sync is more geared towards showing you the app changes as soon as possible. With this turned ON, changes will show up without the sync. This is being done so that in the longer term, users do not have to bother to sync at all.

Google Calendar slowness is usually because Calendar data api is slow. Hence, Sync is slow as well. Unfortunately, we do not have anything that would speed up sync today. 

@preethamm

Thank you for your quick and polite response.

Hi @preethamm thanks for the update on this feature. On this comment:


@preethamm wrote:

This is being done so that in the longer term, users do not have to bother to sync at all.


Can you shed any light on the likely timeline for full release of Quick Sync to paying customers, and will it include these vital aspects that I believe are requirements of the complete solution:

1. Support for security filters referencing other (even multiple other) tables

2. Forcing VCs to update immediately on the device receiving the broadcast also. This could (probably should for battery purposes) be limited to VCs that should be affected by the updated row that is broadcasted, including in other tables – but importantly should occur on a context(“view”) basis.  I.e. VCs should be immediately updated upon the user navigating to a view that shows data from a row that has been updated by broadcast.  Context(“view”) triggered VC re-calc would enable a seamless UX and correct data presentation to the user including VCs but would not require full (and all) table VC re-calcs which is unrealistic in the case of regular broadcast streams on busy apps.  (Note that with this suggestion, there would still be some inherited requirements for VCs to re-calc on other tables, other than the table with the row being viewed. Those descendent requirements are known by the table row in question however so should be possible).  One way I currently force VCs to update immediately without a full sync (eg a parent row calculating something based on children rows), is to have the update action on the child row to physically update a column on the parent row at the same time.  This column I usually call [ForceUpdate], and I set it to NOW() which forces the VCs to recompute immediately.  I mention this in case it assists the dev team in any manner as to solution ideation for this critical aspect (I believe) of the full Quick Sync Solution.

3. Support for broadcasting updates to other open apps (within the owner account) that use the same underlying database tables, with the same inclusions as above.

Thanks, and I am investing a lot into AppSheet with the hopes / belief that with these updates the platform will get to where it needs to be soon.

@preethamm thanks for released preview mode. still there is lot of gaps, for example:

  • Ref. Row
  • Virtual Column
  • SELECT Function
  • Filter Function
  • IN / CONTAINS Function

But I'm happy that within few days it will be solve.

thank you

@preethamm thank you so much, I impressed.

please go ahead. I hope that it will be big improvement.

@preethamm I test the quick sync in deck view with nest table and see that if I edit quantity number in child table for example from 1 to 2, it will not update immediately in deck view until I press sync button while I can see the updated quantity in form view and detail view.  If I turn off quick sync, I can see the updated quantity immediately in deck view. Please check if it is a bug or the nature of quick sync function

Thanks for trying out the feature! So, this depends on how deck view is setup. Is the display showing a VC on that parent table in the deck view? This would not update till a sync happens. You can also see this behavior when you add a new child record and see the main deck view before the sync happens.


@APE_Marketing wrote:

If I turn off quick sync, I can see the updated quantity immediately in deck view. Please check if it is a bug or the nature of quick sync function


However, this feels odd. Is this happening for the same user who made the change or other user? Are you referring to change shown after the sync? If you have some time and could share some details including screenshots, ideally give support access to the app, it would help me take a look. You could DM me or contact support.

 

 

 

Below is my screenshot 

I creat an order and order details and show it in deck view

IMG_20230613_010747.jpg

 After that I change the quantity crom 1 to 2

IMG_20230613_011133.jpg

 After sync, I back to deck view, the quantity is not updated while the total value( VC column)in farther table updated from 40000 to 80000

IMG_20230613_012503.jpg

 Then I go to the details view, you can see that the quantity is updated to 2

IMG_20230613_012246.jpg

 After that I back to the details view but the quantity is still not updated

IMG_20230613_012503.jpg

Chào bạn, Mình muốn giúp nhưng chưa hiểu rõ bối cảnh. Có lẽ bạn gặp vấn đề ở chỗ sửa rồi nhưng trong chế độ xem chính thì không hiện đúng kết quả sửa, còn trong chi tiết thì đã hiện đúng. Bạn có thể quay video thao tác rồi gửi lên xem. nhìn vầy khó trả lời

Video đây bạn nhé

Screenrecorder-2023-06-15-00-26-12-830.gif

Sorry I missed this thread. Unfortunately table references from parent are not recomputed with this update. This is the same behavior with a new row being added (and with sync pending). We would like to fix this but unfortunately, we are not there yet.

In my case, if I add new row in child table, the update will be shown in all views: form view, details view and deck view and the total value (VC) column in parent table is also updated . The update is not shown only in the deck view when I edit any column in child table while I still see the update in details view and inline view for what I edited in child table

@preethamm 

it does not work for me.

Screen_recording-2023-06-18_15-14-29.gif

How do I activate it?

Please see https://www.googlecloudcommunity.com/gc/Announcements/PREVIEW-Limited-security-filter-support-in-Qui...

If you have DEREF ([cola].[colb]) or SELECT/FILTER in your security filters, this is not supported yet. There is a warning being shown (yellow traingle) indicating this.

The Appsheet team has moved quickly on this new feature, and I very much appreciate it. I only recently added a more complex security filter to one of my apps, so I can no longer use Quick Sync. Can you give an idea of how long it might be until more complicated security filters can be used?

Thanks!

@Ryan_Wagner Thanks for trying out Quick sync and I am sorry that the feature does not work for you. What kind of security filter do you have ? (please feel free to DM me the details if it is easier). We are hitting the point where the tech limitations are getting in the way of what we want to do. Our next steps will likely involve more focussed set of upgrades for a set of usecases or data sources. So, any info would help prioritize work.

@preethamm Thank you very much for the reply. It was working great for me, but I had a specific need that required me to add another layer to my existing security filter, which disabled Quick Sync...
I will DM you my expression.

Hi All - Thanks for the feedback! While we are still in Preview, we released this feature to everyone. 

Is it possible to display which security filter stopping the Quick Sync to be turned on?