Help us improve AppSheet: slices, data filtering, & tables

Hi everyone! The UX team is looking into how we can improve the way app builders interact with data.

If you’re interested in helping us out, we’d love for you to share your thoughts on configuring tables, and how you shape, filter, and secure your data with slices and security filters. Tell us what you like, what’s missing, and don’t hesitate to share your frustrations, too!

Why do you shape your data? Do you worry about protecting sensitive data, or performance? Or just sorting and filtering? Are there data-related things you wished AppSheet could do, but are difficult or impossible? If you’re an experienced app builder, did you encounter any challenges when you were learning to use slices?

And finally, we’d love to connect with you (virtually) one-on-one. If you are interested in sharing your thoughts in more detail, fill out this form.

Thanks, and happy building!

Brandon S.

Interaction Designer


Would like to share my thoughts

Some of them may not be ones you are looking for. This is quick list after I had a little think around what we need, what we are missing, what I need in terms of data controlling wihtin app editor.

  • Reorder the virtual column in the table. (Not change order in slice)
    Without create slice, opitinaly move the virtual column order up and down. Currently it is served basis first in first serve.

  • Copy column (both physical/virtual) and create the new virtual column on the same table.
    Currenlty need to manually all when we create new virtual column from scatch all the time. Copy the field setting from other field of same/other table and paste. Most of the case we add virtual column list which are similar to others. Copy and paste will create a boiler plate for new column then app creator change a bit, just a field name. This should increase the effciency and productivities.

  • “Union” tables where we have same set of data fields, in terms of fields name, data type.

Alike SQL operation, to create new slice based on multiple tables which has common data schema, to crate single virtual table. UNION.

  • Change “Key” for slice
    In case the key filed are not included in slice table, then optinally app creator can select the field as key which is not set to key in original table.

  • Security filter using Virtual column value

There should be more. I know this is not a post for feature request though.


I agree with all of @tsuji_koichi’s requests, but I understand this one would be difficult to implement.

Virtual Columns can reference the local user or device using expressions like HERE(), CONTEXT(“Device”), etc. But the row would not be able to evaluate since Security Filters are applied at the server, and filter data before sending it to the user.

So it makes sense why some virtual columns are not allowed, but it would be nice to be able to use VC in Security Filters when the VC inputs are just sheet columns for that table.


  ISBLANK([Approved]), "Pending",
  ISNOTBLANK([Agent]), "Assigned",
  TRUE, "Draft"

Sometimes the expression is much larger, and it would be a lot easier to reference the existing [Status] virtual column than have to replicate it’s expression inside the security filter because VC’s can’t be used.

This is a problem when you want to update the expression for your [Status] because now you have to ensure those edits are copied to Security Filters too, when it could be automatic by just referencing the virtual column.

Could Security Filters be updated to allow Virtual Columns that only reference the current table?

Well… You asked for it… :wink:

Basic App Creation

All expression fields should have a clear-expression button so that one doesn’t have to go into Expression Assistant to clear an expression.

Toggling a field from text to expression, or enabling the expression on a column constraint, should automatically open Expression Assistant.

Freeze headers and column names in the column list.

Display all expression fields (including in Expression Assistant) in a fixed-width font.

Don’t resize buttons (e.g., Regenerate Structure) when clicked, so that the user needn’t move the pointer to deliver the confirmation click.

Add expression flask to fields that are expression-capable (e.g., SHOW?, EDITABLE?) in the columns list standard view.

Add on-hover or pop-up tips throughout, especially on the more arcane/obscure labels (e.g., NFC, PII).

Anywhere anything may be rearranged or reordered (e.g., menu views, actions, slice columns), it should be possible using drag-and-drop or with arrow keys.

System-generated ref views and actions should not be sorted separately from user-added ones.

A change to a component (e.g., view, action) that prompts its relocation within the displayed page (e.g., for sorting) should not change its on-screen location. I should not have to go find what I was just configuring after making a change.

Reduce the need for so much scrolling throughout. Less whitespace?

Advanced App Creation

Sort or provide a means to sort tables and slices to suit the preferences of the app creator. With more than just a handful of slices, it becomes a pain to locate the one I want if they aren’t sorted.

Ability to copy column configurations within and between tables.

Ability to add and delete multiple tables without a reload for each.

Ability to regenerate columns of multiple tables at once.

Ability to copy configuration between apps, so that I can easily reproduce features from one app in another without recrafting it all manually.

Ability to disable hints entirely. As an experienced user, I never use them, and the attention-grabbers are an distraction (by design!). I should not be conditioned to ignore attention-grabbers.

Ability to reset User Settings to the default to remove experimental artifacts.

Remove or allow user to hide warnings that have no significance. For instance, gallery views are perfectly usable without images, but a warning is displayed, conditioning me to ignore warnings.

Make the app editor more device-friendly to facilitate app creation on smaller form-factor devices like phones.

Allow comments in expressions.

Improve keyboard navigation; reduce the need for so much pointing and clicking.

Integrate Qrew Tools.

Some method for comparing two versions of the same app, or even different apps; something like diff.

Add regular expressions, please!

Generally, give greater consideration to experienced app creators.


Prevent the app user from accessing views that the app itself doesn’t expressly expose. A user can currently craft a URL to access any view in the app if the user knows the view name or enough about the tables or slices to guess the view name. This allows the user to bypass many of the app creator’s attempts to “secure” an app.

Ability to delete system-generated actions to prompt recreation with default configuration, as can be done with system-generated views.

Ability to delete system-generated views and actions permanently.

Ability to prevent the app from using any auto-generated view (e.g., fasttable).

Ability to prevent any user access to any (e.g., system-generated) view based on a table; ability to restrict user to only views based on slices. Views of tables offer full access to table data and actions, where slices can substantially limit both, vastly improving security. In my opinion, views should not be allowed on tables directly, only on slices.

Stop leaking app config internals in URLs. No table, slice, or column name should be included, nor should any expression. Accepting expressions in URLs allows code injection.


This. The whole string should be obfuscated or encrypted in some way.


Agree, although I think Security Filter based on Virtual column might create a circular formula problem, or even impact performance, since the app would need to calculate VC for every row before filter them.


For filtering tables, the user have search field and column ordering. To enable further filtering options for the user, we need a slice with filter-expression based on a filter-table. I think the Feature Request below is great to do that without work-arounds.


Thanks for replying Koichi! This is great feedback. If you think of anything else you’d like to share, let me know!

  1. As Steve mentioned, expression fields need a monospace font. Bonus points for IDE-esque color coding.
  2. As Koji mentioned, we need to be able to reorder virtual columns. However, the only place this matters is on form views -> all other views (table, detail) allow us to specify column order already. We should be able to organize columns within the UX form views, rather than having to make a slice just to order the columns.
1 Like

My absolute biggest recommendation:Virtual columns on slices. I currently have a 15 real column table that I have blown up to 45 virtual columns. Most of which are “this view using this slice needs this verbiage or this set of fields concatenated together to show more information”. Although sometimes these formulas require complex multi select, lookup, or a nested mess of IFs,ANDs, and ORs. I would love to limit the computation needed when my tables are in the tens of thousands of rows but I only need this virtual column for the 100 current rows in my slice. We had to create a script that moves all rows related to a parent after they have been completed from our database to a historical set since the performance went into the dirt at around 50k rows across a handful of tables.


Oh, and you know what, I do have a question for you: when you talk about creating unions of tables or virtual tables, can you elaborate on what motivates you to want to do this? Say for example, you have three tables of data. It wounds like you would create a virtual table out of some columns from each. Is that correct? And if so, how would you organize that, and why is that a benefit to you?

I mainly used Slices to filter data to manipulate how that specific part of my project will appear on user’s view. I don’t use Slices to filter data for security reasons. I should use Security Filters feature if filtering data is for security reasons.

Good morning,
I would my users to be able to choose theme and main app color from usersettings

Thanks for asking Brandon. Some of my (off-topic) insights:

  1. The preview pane shows the wrong table. It always shows the name of the first tab in my sheet.

  2. I am forever modifying the wrong table. I find the table I need, and then realize “oh, right, I have to modify at the column level”. So I switch to column tab, and whatever random table was already open there is present. I start modifying and then realize, oops, wrong table.

  3. I love that I can copy slices (and views), because I need to make a lot of filters for the dashboards. Very handy feature.

  4. Dashboards are great! They should be more forward in the training or documentation. Until a legit filter/sort is available in AppSheet, and most makers are headed to Dashboards eventually. I spent a ton of time trying to make the experience myself (almost impossible) before I found Dashboards.

  5. I really like that we can print or save PDF of the app’s logic. However, I can’t find “show if” logic on my UX views in the PDF. I see “Visible? ALWAYS”, which is not the case (and a little scary because some dashboards should not be visible always, to every user).

Happy to send you more running commentary as I get through this application design.

1 Like

Can I double and triple heart Steve’s suggestions!


What does all this mean?