Why is it that GlideApps downloads my entire glide table data even when i open a single deep link. This becomes problematic because to load the page of that single deep link, it takes forever because GlideApps is actually also downloading everything in the table.
My app is this: acrymold.info. I have built it for my business. It is an online store (amateur version) that helps my employees and clients swiftly navigate through the data.
Whenever I share a deep link to a particular product page, it takes forever to load. but once the deep link loads, my entire app loads as well. So when i go to another product pages from my deep link page everything is ready to go.
Is there a way to optimize this process? I ensured that the user profile is not have any relation or look up columns so that the deep link page does not wait for the user profile to load or compute any data before it can lazily render the content of the deep link page.
Here is the deep link for a particular product: Acrymold
I don’t think Glide applies “lazy render” regarding data. When the device loads the app for the first time, all rows that the user should have access to will be downloaded (unless it’s Glide Big Tables, where you are served chunks of data at a time).
I don’t think relations or lookups mean anything here, if you reference other tables in the app, and the user has access to it, then it will be downloaded, regardless of what tab you’re trying to load.
How many rows are we talking about here? I think it takes only 6-7 seconds to load on my end, and it’s acceptable to me.
Are you sure of this? I have tested this with GlideApps multiple times. Whenever a user enters a tab that they have not entered previously, there is a slight delay because the app seems to download the data on demand. I have even gone as far as to place roll up column counters on the specific tabs containing data from a table. When i enter the tab for the first time, the counter is at 0. Within 2-5 seconds, it updates to the actual count. Bing chat and chat gpt also support this argument as they have confirmed that glideapps works with lazy rendering. In fact, glide tables’s website also mentions it works on lazy rendering.
You should take the words of those models with a pinch of salt.
Can you give me a link on that?
I doubt this. At least not what happens when I last deep-dived on that front. Basically what I believe is Glide takes your “request” to load the app, filter out the rows that should be sent to your device, and then you will be served a package that contains all those rows. If you can present evidence that this isn’t the case anymore it would be great.
I think the only thing that glide might process lazily is computed columns. I think all basic data is downloaded initially, but computed columns may not process until needed. Computed columns run on the local device.
I have an app that loads quickly, but I have one tab connected to a larger table with some more complicated logic and relations to other tables that have a lot of computed columns. That tab can be a little slower to open, but I also realize that it’s doing tens of thousands of calculations initially. After that, the app runs normally. So, I think when a table is accessed in one way or another, it will do an initial process to populate all computed columns in all rows in that table. Once computed columns are populated, then they don’t need to recompute until something in that row, or any related rows changes, so that’s why the app becomes more responsive after that initial load.
I think the basic data load is generally pretty quick. It’s the initial data processing to run computations that may slow things down…even if you are only viewing one record, it still has to process the entire table.
Okay so if all the basic column data loads on boot up. Which tables are prioritized? What if I open up on a screen that has collections data from table 3 but my user profile data has about 500 relations to load form table 2?
I know I am barging the community with these questions yet once we get some clarity on how GlideApps loads data, it will really help boost the way we structure our apps.
Glide loads tables in full (except for Big Tables and BigQuery), whenever they’re first needed, which is usually whenever something is displayed in a screen that directly or indirectly originates from that table.
So if Glide loads the entire table that is required on a particular screen, it must not be downloading the other tables that are not yet required.
Example in an app I open the products screen so it will download the products data table yet the data from the sales order table will not be downloaded unless I shift to that tab or go to collection that is related to the sales orders?
That’s how it works for Glide Tables, yes. That’s assuming that the screen you’re showing does not need any data out of any other table, via computed columns for example.