Put format rule conditions in virtual columns

Through trial and error, I’ve come to the conclusion that it’s often better to put format rule conditions in virtual columns. One advantage is that it can help you eliminate the following kind of warnings:

Screen Shot 2020-02-07 at 19.41.55

See . . .

I’ve also found situations in which placing the condition in a virtual column eliminated inconsistencies in implementation (that is, working sometimes but not always):

Finally, here’s one more example of a situation where a virtual column solved a format rule issue:


Agree :100:.
If only they would move this to the view level…

1 Like

Totally agree.

Formatting expressions are calculated upon every view change, so make them as simple as possible. Move all complication to a virtual column.


@Kirk_Masden @Marc_Dillon @Grant_Stead

There’s another layer to the use of Virtual Columns that we need to keep an eye on as well. They can extend Sync time - a lot - as we all know!

I have a fairly large app and found that over 8 seconds of a 15 second Sync time was in Virtual Columns. Most of those VC’s are static data pulled in for display purposes only and will rarely change.

I have decided for these VC’s it might be better to store them as normal columns. I can then build a Workflow to update those specific column values should the underlying reference data change. This pushes that processing time into the backend AND only needs to be done on each change NOT on every Sync as is done with VC’s.

For what its worth!! :slight_smile:

By the way, the app above is not deployed. Should we expect a difference in the Sync times once the app is deployed?


One downside of using virtual columns that I’ve just had is that is they don’t update in offline mode. I had some action formating rules that changed colour and icon, which relied on a 2 x VC’s. The client decided it had to work offline so I’ve had to merge the code in format rule. Odd thing it is basically identical. So begs the question why VCs can’t work offline. Surely Appsheet could let the sync still run just to calculate all the VCs based on the information the offline App has?


I have also setup a few apps with this approach, and in general try to use real columns when possible instead of abundant VCs.

I don’t think deployed apps get any kind of special sync speed treatment.


Format Rules with deref expression may work better than using a VC.