Suggestion: Screen variables for all users inc. anon users

A couple of observations coming from Bubble. I love how Glide can generate an attractive UI with very little effort. Requires a lot of work in Bubble. But adding advanced filter and sort logic to a Glide app is much harder than Bubble. Some comments/suggestions:

  1. Custom filters and sorts would be much easier if Glide supported current-user-specific (inc. anon users) screen variables that could be used to filter and/or sort a screen list.

  2. Currently, I have to store screen filter selections in the user sheet. This creates complexity and makes it very hard to support a UI that works for both signed-in users and anon users.

  3. Filters would also be easier if we could combine ANDs and ORs in list filter logic instead having to recreate boolean logic via multiple helper columns in a sheet.

1 Like

We have these…

No, you don’t. User Specific columns can be used in any table.

Yes, this one is a long-standing request.

3 Likes

While the user profile table is easier for overall access throughout the app, I’ve also created tables with a single row and user specific columns to store unique values per user. Then I can use a single value column to pull the entire row or individual columns into other tables to help with filtering or whatever else I need.

3 Likes

Thanks! That sounds a bit easier. I’ll look for a video unless you can link to one.

Thanks, @Darren_Murphy.

My bad - I didn’t mean to suggest only adding user-specific columns to the user table.

What happens if my filter logic relies on user-specific columns but I also want to allow anonymous users to filter? That’s what I have currently.

My app allows anon users to browse posts and prompts them to create a user account only when they attempt to perform an action that requires a user account — such as adding a post or following another user.

Bubble has the concept of screen variables that are set by the current user regardless of whether they are signed in or not. That makes it easy to create filter (and sort) logic for any user — signed-in or anon.

User specific column do not require a user to be signed in. If a user does happen to be signed in, then those variables are stored server side and shared among all sessions for that particular user. If the user is not signed in, the value is only stored locally and thrown away once they close they app.

I don’t have a video, but the documentation should be pretty good at explaining it. The closest example I have to this method is this. It’s a bit more involved, but does what I’m explaining above.

2 Likes

Ok, thanks. I’ll look for a video or docs to see an example of how to reference/access the local variable vs the stored variable.

It’s just a column and you use it like any other column. The only difference is that you specify it as user specific or not. Glide does not have variables that float out in space. Everything references a column, in a row, in a table.

Can you add a video or screenshots from Bubble to help us understand better?

Hi @david i This is not using screen variables (will look for another video) - but it does show a related useful feature in Bubble that would be great in Glide — namely the ability to access/reference the current value of a selection component’s value. In this example, the component is a dropdown. You can also reference the current value of a buttonbar selection.

Hope it helps.

Fwiw, having played with both tools, Glide does a much better job with UX building, but Bubble currently has some powerful features for app logic that would benefit Glide. My 2c only of course.

@david

See this doc for info on Bubble custom states (aka local screen variables) - Using Custom States - Bubble Docs

I’m attaching some screenshots to illustrate

  1. Adding screen variables (aka custom states)

  1. Referencing selections to filter data in a repeating group (basically a Glide inline list)

  1. The UI

Happy to chat/explain further.

And @david — for reference, this is my Glide app where I have some complex filtering that needs to work for both signed-in and anon users

If I can offer a suggestion based on your app. I’m going to assume that you 2Doozi tab points to the user profile sheet and possibly has some filtering by signed in user? I’m not sure, so I’m just guessing here.

What I would do is create a new table. Add one basic column just to hold a value. Can be anything, but we want to have one populated row in that table. Then add two user specific columns to hold your filter values. Your choice components in the tab will then write to these two user specific columns. This single row table will drive your tab.

Now from there, you have several options to set up your filter. The easiest is to add an inline list from your 2Doo table, but filtered it by the screen values of the user specific column values.

Another option is to use those values to create a relation (but this won’t work in all cases and largely depends on how you structure your data to handle ‘all’ or ‘some’ filter situations).

A third option is to pull those user specific values into the 2Doo table using single value columns. Then build some IF logic with an IF column to get an ultimate true or false value if the row fits within that filter scenario. Then you simply filter your inline list based on true or false.

In any of these cases, a user does not have to be signed in for this to work. And it does not require a user profile table.

3 Likes

Thanks, @Jeff_Hager. I think I currently have a combination of those approaches and it seems to be working. I will dig into your suggestion and see if I can simplify my current logic. The hardest part is filtering on Me vs Following vs Everyone for signed-in users. My app supports users following other users.

1 Like