Very slow response with Airtable

Hi. I am testing the Airtable function for source data within a DataViewerList. It works fine but I noticed that it is really slow in it’s response. I was thinking if maybe I could “download” the material from Airtable somehow, and then update a local sourceList for the DataViewerList. Then let the user work locally, and some how pass back that new updated data to Airtable again…

I was trying something like this:

But that won’t work…

Is there anyone with any ideas what I can do? I hope you understand my request :).

  • myItemList = a local data source for DVL.
  • The rows-block I put for value in “update-block” is the output from “Airtables GetAllRows-block”

Thanks!

2 Likes

The green “rows” block is an object. And I believe it’s a list of objects, actually. I haven’t worked with it all that much but I think you’ll find this post and this whole topic useful:

One other thing to note is that when you stack blocks that take some time to run such as “delete all rows” or “update value”, the blocks run in parallel. So even though it looks like the blocks you have will delete all rows and then update a value, in reality they will attempt to run at almost the exact same time.

To ensure that the update happens after the rows are deleted, put the “update value” block inside the “delete all rows” block’s “do” section. That block should really say “then do” but it just says “do”.

2 Likes

Hi Tatiang. (I’ve heard of you, you have good reputation here :grin:)

Thanks for your answer. I will try to put the block in the “do”section and see if that will make any different.

Thanks for the link! I will check that out as well.

Some backgrounds in my thinking:

I have used listView in my project earlier, talking to (save and get) firebase. This worked fine,

Then I came across a few issues with the listView:

  1. I want swipe-delete function in my list. That is not possible.
  2. The styling for the listView are really limited. I want for ex have another weight in the displayed text, and also to colour and set transparency to the rows bottomborder. (It looked really 90s with thick white borders on my app :blush:) but none of these settings seem to be available for listView.

So…I ended up with data listView which is much more flexible in that matter.

But then I can’t use firebase for save/get any longer as dvl have three source options.

  • local
  • airtable
  • google sheets?

So, I ended up with airtable and it works great, except for the slooooow response, which is not that user friendly in my opinion :woozy_face:

If you (or any one else) has any idea how I can speed up things, or if I should setup the app another way, then please give some advice .

Thanks !

1 Like

Is this how you ment with the block-setup?
This still gives me a empty list, so nothing from the Airtable, which I am gettingAllRows for - an use as Value in my local list, is viewed in my DVL.

Thanks

1 Like

I don’t understand what you’re trying to do, but the columns in Airtable should match the columns in your local database. The record needs to indicate from which cell in the airtable it is taken and in which cell to write to the local database.
PS: Do your experiment and visualize the result of Airtable (rows) in a label. You are also setting a strange text value for a Row ID!

I appreciate that!

Firebase is faster than Airtable or Google Sheets but I don’t think you can use it with a data viewer list.

This might be something to check out: Data Source Performance Workaround FOUND!

The problem with your newest blocks is that the row id has to be an actual ID (a long string of characters) or an integer.

But also, you’re going to have to look into how to use the “get property of object” block to parse the green rows block value. That’s the link I provided earlier.

1 Like

Thanks! I will take a deeper look into the tonight!

Thanks for your answer. I will try to figure out what the proper text in that “row id ” should be.

Well, in short what I’m trying to do is to go from airtable to local source when user is working/active, then update the airtable with the locals data (to store the data). All this to kind of get around the slow response I get directly from airtable.

Thanks again…

Ok, so I have watched the links provided and googled and tried like a thousand variants in my project :blush: As I am new in Thunkable I find it a bit hard to get what I read in context and to see how that could help me in my project… So it ends up with me just drag blocks and see what happens 🤦🏼:)

So, may I ask you guys, if what I am looking for is very advanced and “tricky”, or if its doable for even me, and if so, could you give me some practical guidance at least where to start ?

So:
I’ve got a Data Viewer List which views data from an Airtable “base”-sheet, called “Untitled Base”… This works great for me but I feel its to slow in response which gives a bad experience for the user. I have also created a local data source for the DataViewerList, called “myItemList”.
When working with that the APP feels exactly how I (and people in general) are expecting this kind of APP to feel.
So I would like to:
some how, when screen 1 starts, grap the data from “Untitled Base” and update “myItemList” with that data. Then, some how I would like to go the other way to store my data…

Is this very tricky?

My Airtable:

Thanks for any guidance…
(its a shame Firebase does not work with DVL, or that you even have this problem with Airtable when its so easy to setup. I refuse to believe that I am the only one who see this as a problem. But there is not much to find regarding this when googling, so hopefully this could be a useful thread for others in my situation :blush:)

You were dead on with that. The firebase real time data bases way faster than using air table. Plus you’re not stuck with that five Hits per second on their API. I’ve used fire base to transfer large amounts of data very rapidly and it’s super convenient. You get your data in a flash. It may be faster to bind to the viewer from airtable than it is to call the real time data base throw that data and your local DB and then display the data on the screen but I doubt it.

3 Likes