My Hard Stops and Annoyances

I’m not looking for feedback or conversation. I’m just documenting some things that have tripped me up recently, so I can refer to them later. I’ve only just begun to rewrite a Classic App as a New App and these are some of the things that have made the conversion difficult or frustrating. I’m sure there are more, but these are just the initial things that I’ve ran into and thought of off the top of my head. I will edit this post as necessary.

Hard Stops

  • I need a way to enlarge images or use the open link action when using a Multiple Image column or an Array as the source of image component. There is currently no way to enlarge images or open links for those images with an image component used for multiple images (especially for images of documents) which are hard to view in a small image component with no way to efficiently zoom in and out of the image.

    For example, I love that I can swipe through multiple images, but there is no way to enlarge the one I’m currently viewing.

  • Why do Multiple File and Multiple Image columns default to User Specific when using external data sources, such as Google Sheets? They are not very useful when they are user specific since they get locked to individual users when they need to be viewed by all users. Understandable that the data won’t get written to the external data source, but there should be no reason to force user specific when it’s not intended to be user specific. As a bonus, it would be awesome if data was actually written as a delimited string to the external data source, but not necessary in my case. I don’t plan to move away from Google Sheets as a data source because I need ownership of the data so I can perform data backups in a way that Glide does not provide. I also don’t want to offload the images to a separate Glide Table, because that will further complicate my Add and Edit forms.

    This doesn’t make sense when I have no intention for this field to be user specific.

  • It’s been mentioned in a separate feature request, but a tabbed interface could really be useful for many reasons. Tabbed Container
    I currently do the following using a choice component in Classic Apps, but under the current Glide pricing structure it does cost a lot of updates for something that is only used for navigation and organization of onscreen data. If there is no hope of ever seeing session variable columns to reduce update counts, then I would hope we can get something native in this respect. Session Variable Column

  • In relation to the need for session variable columns, is Custom Forms. I use custom forms simply because I have a case where I need to save both the underlying value and the displayed value from a choice component. It’s really easy to do with a relation/lookup and a custom form, but impossible to achieve with a native form unless there is some unreliable back end logic or actions to handle that. We have zero access to computed columns in a native form which would make access to write both values very easy. Again, if we don’t get sesson variable columns, then it would be vary useful if there was a way to access dynamic computed column values within a native form.

  • I perform some actions through a Single Relation, such as a Set Column Action. This action is among other actions in a custom action that sets some values in the current row as well at rows in other tables before executing a Show Detail Screen action. I noticed that the button completely disappears if one of the single relations are empty. If there are no matches in the relations, then there is nothing that to needs to be set, but there is no reason why the rest of the action sequence can’t continue to run. I still need those other actions to occur but the button completely disappears. Short of breaking a single IF branch in the custom action into 3 or 4 separate branches to account for every possible scenario, I see no reason why the entire button needs to be disabled. This was not an issue in classic apps. I did the same thing and the button still worked as expected. This is only an issue introduced with New Apps.
    Notice the highlighted actions. The relations for those actions may or may not be empty. If they are empty, who cares…the rest of the action sequence should work, so there is no reason to hide the button that calls this custom action. I’ll have to add 3 extra branches just to account for the times that one or both of the relations are empty and duplicate a lot of logic.


  • I’m trying to rewrite a Legacy Plan Classic App as a New App on a new Starter team plan. I only upgraded the plan on the new team so it’s slightly less annoying to build the app with a bunch of missing data. For whatever reason, Glide will not sync all data from external sources if the plan row limit is too low. I’ve never completely understood the logic behind this. My data is in Google Sheets and I intend to keep it that way. Right now my data far exceeds the row limit of the plan as it’s linked to a legacy app that doesn’t have the current row limits. I understand that I would not be able to have a functioning published version of this new app due to row limits. I’m working on processes to clean up old data in the time being. But the problem is that it’s very hard to build the app when a lot of the crucial data is missing from rows that are limited to only 10 random rows on seemingly random tables. Most of my data is heavily reliant on relations to other tables. I also have resource tables that store global images, choices, etc. and it’s hard to build the interface when that crucial data is missing, since many things do not display properly if there is not associated data. Also, what’s accessible seems to change randomly so it varies from day to day. In my opinion, ALL data should at least sync to the builder so we can at build our projects. I can’t tear into my data to reduce rows since it’s also being used on a published legacy classic app. I know this is a very rare case these days and this is largely my own problem due to having legacy apps. However, I’m not in a particular hurry to rewrite the app, and some hard stop features just aren’t there, so right now I’m picking away at it as I have time and as new features become available, but meanwhile I’m paying for an app that won’t be published anytime soon. I know I’m in a weird situation for many reasons due to still having legacy apps, and when they eventually get migrated to team folders, it will be different story, but overall it seems to make more sense to sync ALL external data regardless of plan limits. Only for the fact that it could allow people to build faster, see the fruits of their effort, and upgrade to a higher paid plan sooner.

    I’ve seen several posts where people get confused as to why all of there data is not syncing. Seems beneficial to at least show all data, but still apply restrictions to the published app.

  • Why doesn’t a custom collection allow for the same background options that a container does? White on white is hard on my eyes sometimes and I like to have a little bit of color contrast. Both are essentially containers, so I don’t understand why they don’t have the same configuration options.

    Why do the options differ between Containers and Custom Collection Containers? It’s design inconsistencies between components that annoy me sometimes.

  • When opening an overlay on top of an overlay on mobile, there is no Back button. I need the Back button on that second overlay. All we have is the X button which reverts us back to the main screen instead of going back to the previous overlay. Desktop mode shows the back button which functions perfectly, but for some reason it’s missing on mobile. Just looking for some consistency.

    Here you can see the back button on an overlay in desktop mode, which takes me back to the previous overlay, which is the desired behavior.
    In mobile mode, where is the back button? I’m stuck with the X button, which closes this overlay as well as the underlying overlay I wanted to go back to, so I end up at the main screen and have to navigate back to where I was.

  • Really need to clean up the white space in the heading at the top, as well as the bottom, of an overlay. Really stands out and looks unprofessional when I’m trying to apply color everywhere else and I have the white bar that can’t be changed.

    This just looks bad.

    There’s even a white bar at the bottom that I can’t get rid of.

  • The Action Row component is the only component, short of using HTML in Rich Text, that will give me font sizes and colors that make the data stand out without looking washed out or two small. I’m still not crazy about the options that are available to us, but it’s the best out of all the other components in my case. Really could use more consistency and options with font sizes, styles, and colors regarding titles and details, but that’s not the biggest issue. More importantly, in some cases I also need the actions, which is great. The problem is, to maintain consistency in look and style when not using any actions, I still get an empty ghost button that just looks weird. If I don’t have any actions, I don’t want to see any remnants of a button. Otherwise I have to use a different component which, again due to lack of consistency among all components, doesn’t match the style of the action row component. Also, as a side note, the spacing between components is unusually large.

    Why the large spacing as well as the ghost buttons that can’t be removed?

  • I discovered that I cannot set conditions on a custom action based on Screen Values. I have a list of Tests that have been taken. Those tests can be taken multiple times. When viewing a particular test, I also have a history of all the times the test was taken. That history is being displayed with a collection and will show past tests as well as the current test. I want to prevent the current history item in the collection from being selected if I’m already viewing that item. Should be easy with a custom action that only allows a Show Detail Screen action when the RowID for that item does not match the RowID of the item currently being viewed. Custom actions do not allow me to select screen values, however a filter does allow me to filter based on screen values. The screen value options available in a filter should also be available in a custom action. Otherwise a user can continuously click on the same item over and over which puts them several layers deep.


Discovered some more issues.

As I stated above, I have a classic app on a legacy plan that I duplicated into a Starter team so I begin the process of rebuilding as a new app. It’s a slow process due to some of the above mentioned issues and I’m still over the row limit for a starter plan but it allows more data to be accessible so I can at least build my screens without most of the data being truncated.

Two things I noticed:

  • Up until yesterday, the team folder contained the original classic app and the new app version…both of which share the same google sheet data source. Under usage I noticed that I was using 6.3Gb. Didn’t think much about it at the time. Yesterday I duplicated the new app to strip it down as a separate app for a very specific use case and noticed my data usage went to over 9Gb of usage. As I understand it, I believe I’m only using around 3Gb of actual Glide storage, but now it’s showing as tripled the amount because I have 3 apps that all share the same data source (and same urls to the same files). This doesn’t seem right as it should only be counting the same files once per team. Not multiple times.
  • The other issue has been ongoing for years, but it seems like it usually works itself out after a couple of weeks. Like I said, I duplicated the new version of my app as another new app and stripped out most everything out of the app. The app SHOULD only be using a fraction of the amount of rows as Glide says they don’t count rows in unused tables. That’s not the case here. It’s still counting all rows, even in tables the app isn’t using. It’s counting something like 9600 rows while the app is only using tables that account for maybe 500 to 1000 rows tops. I’ve seen this a handful of times in the past, but usually after a week or two it seems like Glide will reanalyze, recount, and only look at used rows. It’s just not clear how these row counts work sometimes.

I’m reopening this topic to allow further discussion. I’m not looking for workarounds. This is mainly for me to document issues, but I’m sure others have similar issues and would like to chime in.

Right now the most pressing issues are the two I posted about above and I’m reiterating below. Not do discount any of the other issues I’ve found, but these two are by for the worst.:

  • Glide is counting unused rows. I duplicated a project (that uses google sheets) and stripped it down to only use one table from that google sheet. All rows in all tables are still being counted. If I create a project from scratch and point it to the same google sheet source and the same single table, then it properly counts rows in only those used tables. My only thought is that Glide is counting the rows in unused tables because I have existing computed columns in all tables from when the project was duplicated. I’m left with two options right now. Either duplicate a project and have a grossly over-represented row count, or start from scratch and have to recreate all computed columns as needed. And, no, I do not have relational links that would be bumping the row count…maybe a couple that would add a few hundred rows, but definitely not 8000 rows.
  • File storage usage is being double, triple, quadruple counted based on how many projects use the same tables that contain the same files. I had up to 4 apps in my team folder that used the same google sheet data source. I only have 3Gb of actual files but glide was saying that I was using 12Gb. These are the same files in the same location. They are only taking up 3Gb of space. They did not magically duplicate when I duplicated the project, so why is a file being counted 2/3/4 times. I ended up deleting projects for fear that Glide would start deleting files without my knowledge. This point below in the documentation led to me to delete the extra projects I was working on. Can’t risk file loss because the data is being used in a 4 year old legacy pro app in production.

:raised_hands: PREACH

Things I’ve been thinking all in one place.