Best practices pls for image sharing & storage from anywhere in app

Hi all :cherry_blossom:
I’d like to display images (PNG with transparency, soft animated gif, later on) shared in multiple places within my app.

Or else, it’s going to be a mess in no time.
I have a bad feeling about this.

Say a logo.

As html img src whenever /it’s working/I can.
To control size without multiplying the files versions or wonder how Glide would render it (Mystery).
So Google Sheet compulsory to copy-paste the url, while editing from its Glide table Right?

Can I store all images in one single table/Google Sheet Tab and call them from anywhere an upload, url, html, CSS is accepted?

Keywords can be centralized in 1 single table to populate choices. I wish images can follow the same logic.

If possible, avoid using the User Profiles Table (the only one that seems to be visible everywhere), as I don’t wish any accident if this table becomes overcrowded, unless it’s really user dependent. You never know, and it’s the last table you want to crash/corrupt.

Or do I have to create a column in every table/Google Sheet Tab whose Glide Tab/Screen need to request? As each Glide tab/screen will only “see” items from 1 single table + User Profiles?

:compass::arrow_right:In Short: where in your app do you store all your images that need to be shared everywhere in your app? Your User Profiles Table as Google Sheet Tab?

Thks for your Best Practices.

For this, I’ll typically create a Glide table just for images, and then reference them wherever I need to using either single values or lookups through relations. The advantage of using a Glide table is that you can easily share the same set of images across multiple apps.


It depends. I’ve created a standard image column in any table that needed an image…and I’ve also created an image resources table that holds a key name and the image. Then any time I need the image, I create a template column with the key name, a relation column that links the key to the images/resources table, and a lookup column to return the url. This way if an image is used in multiple locations, I only need to update the resources table if I need the change anything and have it populate throughout the app. I’ve also done similar things by using the user profile and created the relation/lookup or a single value in that table, so it’s easy to access everywhere else.


But with Glide Tables and images stored in “Image” simple col, you cannot get the url for IMG SRC and control the size, can you?

Sure you can… If you use a template column to build out the html.


Do you mean when using with CSS?
Yes, you can. Just reference the image column in your CSS template column.


You mean you can generate the url of the image “standardly” inserted inside a simple image col, without going to Google Sheet’s side to see the generated url?
For now, I need to switch between the Glide Table and its matching GSheet Tab
Like this image

Can I do without the GS part?
I mean, with an url I can use in an IMG SRC so Rich Text Component

An image column will show the rendered image, but it’s still just a url underneath. The database doesn’t store images. It just stores the location of those images. If you switch that column to a text column, you will see only the url. If you use that image column value in a template column for example, it’s still a url and will show you the url.


Euh… Ah?
Can you screenshot a sample for me pls, Darren? I did’nt know you can ref an image without its complete url in an HTML/CSS.

Sure, here is an example.

Note that the URL in that example references an image column.


Oh! Right! Like the Title Component (or of your inline list) that never shows your image even if you want to, but only its url!
OK! So you ref the image col as if it were already a text with url, et voilà!
So I can store my shared images in the same table than my keywords (to populate choice components), for ex. To save the nb of rows and remain within the 500 rows quota.
And ref them as text to catch their url. With a Template Col if need be, in the same Table.

1 Like

Ahem. There’s still sth I don’t get, @Darren_Murphy & Jeff.
From a Detail Screen, the only Tables I could access are
1/the Current User’s Profile
2/the “Current” Table (whose columns are in the [Data] tab on bottom left).
It does not matter whether I insert multiple inlines from different tables, there’s still only 1 single Table’s Data I can reach

And in this capture, I actually access the Profile 2 times! Which does not help.

How do you access the URL of the image of another table than what Glide considers your “current” one?
Thks, both of u

Like this :arrow_down_small:


If I manage to get this: as my screen cap shows, there’s no way I see and get directly another table. So does that imply that I have to create a column to look for that table col. In EACH table from where I may need that shared images table?
Screen → fetch current table col with lookup? formula → fetch shared images table
and not
Screen → fetch shared images table (provided it’s not the current table)
As you can lookup from a col any table col, but you cannot lookup a col directly from a Detail Screen UI. You have to work it out in “backstage”.


If that seems like a lot of work, think about the alternative.
You’d need an image column in every table where you want to use your images, and then you’d need to duplicate your images in all these tables. Doing it this way means you just have a single copy of each image in a single location, which you then reference from many other locations.


I understand, Darren. It’s just like an address or a shortcut phone number you register for emergency cases or everyday convenience. You do it once. Tediously. But once. And for maintenance, the image is still updated only from one centralized column.


I use two sheets:

  • lookups
  • images

(Though I now try to do most things in a single long lookups sheet)

I have a template column in these sheets called TP-link - with a string ‘link’. I have that column also in the user profile sheet, and I make a relationship column in user profiles to connect the two.

Then I add lookup columns in the user profile sheet.

And that means I have access to all the common resources I need across the app.


If you absolutely need to get the URL to do something else, change the column type to text, grab the URL, then change it back to image.


So if I draw my conclusions from the 4 of you (sounds like the “musketeers” whose punchline could be: “All for Glide, and Glide for all!” :grin: French literature inspirational writer’s reflex) @Darren_Murphy @Jeff_Hager @ThinhDinh & @Mark_Turrell

  1. there’s no existing component that can directly lookup in any table: really?

  2. there’s no read-only url that can do that like
    /my app/mytable/mycol&param=

  3. the one and only magic directly shareable table and hence columns are the User Profiles

  4. if you want to access any column outside your current table (whose DATA are editable in the Builder), you create a column with a lookup or any formula to catch the column value of another table/the User Profiles. And you ref your current column in your component.

  5. If the desired ref is an image url, display it in anything that does not render as image and copy the generated url to your component.

  6. If the User Profiles is so supercharged to share all desired values/resources, you’d better think of backup strategy like exporting to CSV, if the User Profiles Table is not a Google Sheet. An IT file can always be corrupted…

  7. any performance, display latency differences? between

  • ref directly from User Profiles column

  • ref from current table column with direct uploaded image

  • ref from current table column with lookup to User Profiles column

  • ref from current table with lookup to any other table column

Any Feature Request to have

  • Shared Tables
  • Shared Columns
  • Component that Lookup any column in any table?

Unless that impact performance? And is not “Glide-smart/compliant”?

Oh, I miss low code Lotus Domino (now called HCL Domino) so much: almost everything could be shared (subforms, fields, any resources: images, flash files, html, head, columns) and updated/refreshed from its source.
Sorry, Nostalgia moment :teddy_bear:

Thks to complete, correct, adjust, anything.

Not really, although Lookup probably isn’t the correct word when referring to components. But you can use components to display data from tables other than the current one. List components, for example.

The closest we have to this are Deep Links

Yes, but generally I find that adequate. I don’t disagree though that it would be useful to have tables that could be marked as globally accessible. A good use case for this would be a place to store “global variables” or app level settings, both of which usually wind up in the User Profiles table.

Yes, more or less.

I’m not sure why you would want/need to, but yes you can certainly do this.

I don’t really see this as a concern.
I do personally almost always use a Google Sheet for my user profiles, but for other reasons:

  • I think it’s good practice to always have a Google Spreadsheet as the data source for your Glide app, due to some of the current limitations of Glide tables. Most notably the difficulty in importing/exporting in bulk, and integrating with external sources (API’s, etc). So when I start a new app, the first thing I usually do is create a Google Spreadsheet with a single sheet, which becomes my User Profiles table.
  • Often some of the data in my User Profiles is sourced and/or shared with other applications, so it’s easier to do that if it’s based on a Google Sheet.
  • I use a lot of Apps Script in my projects, so I always need a Google Spreadsheet.

Nope, not that I’ve noticed. Glide computed columns are incredibly powerful, and because everything happens locally on the user device there is rarely any noticeable degradation in user experience as the number and/or complexity of computed columns increases. I have one app that has roughly 1500 computed columns, and it works fine.