New: Client-Hidden Columns in Data Tables

Introducing Client-Hidden Columns

In addition to our already-existing permissions to prevent client access to sensitive Data Tables, you can now restrict client access to specific columns!

You can set a column to be Client-Hidden with a single click, from a Data Tables tab in the IDE:

hide-column

Rows accessed client-side will never feature data from Client-Hidden Columns, even if they were returned from the server. This lets you, for example, prevent a user from accessing their password hash, while still allowing them access to their email address.

You can read more about Client-Hidden Columns in our docs and announcement blog post:

Happy coding!

6 Likes

This is amazing!

Now I can finally stop splitting my data into separate tables. This was a much needed feature. Thanks a lot for implementing!

Just one more thing. Is there a way I can manually ā€œunhideā€ a column for a specific row when sending from the server.

1 Like

Great! I can’t believe it. :smiley: :+1:
I remember the discussion last year in February 2025 (Link: Security of Users table - #26) and have been waiting for this ever since. Thank you so much!

1 Like

Does this work right now for user tables that are not named Users? I renamed one of them a few years back, and the little ā€œpersonā€ icon is not appearing in the column header:

For that matter, I’m not seeing that icon in other tables of the same App, and other related Apps.

1 Like

I don’t see the icon neither on old tables from existing apps nor on new tables from new apps.
image

1 Like

Hi Tony,

I’m eager to use this feature, but (as Phil and Stefano have already reported) despite 6 hours having passed since your Announcements post, the IDE isn’t showing me the ā€˜client visible/invisible’ toggle in the columns of either old or new tables in either old or newly-created apps.

1 Like

Whoops :man_facepalming:

We’ve identified the problem; it should be fixed shortly right now!

4 Likes

From the docs:

If you are using Model Classes, this can cause issues if you are attempting to access a client-hidden column or attribute while running on the client.

Could you clarify exactly what happens? Do we get an AttributeError, would the value simply be None or does something else happen?

it depends how you access the column

if using attrs=True and doing row.foo you’ll get an AttributeError
if using row["foo"] you’ll get a NoSuchColumnError

3 Likes