Scaling Up: Prioritizing Performance on Adalo

FYI to everyone, this is how long it takes to load a web app with only a horizontal card list and some minor ‘detail’ screens, connected to a simple database in Airtable. The app’s practically empty here.

Now you get why every other update is useless in Adalo for users who go through this

Just wanted to add that people who’re going through this aren’t really waiting for just optimizations to performance, because what will that save, 2 seconds. An almost empty app takes over 10 seconds to load (and 20+ seconds on the first try), where everything else on the same PC and net connection loads within 1-2 seconds. Optimizations can only do so much here. If there’s no performance overhaul, then I’m pretty sure many users won’t bother with using this anymore.

@David @anon78309838 just wanted to bring this to everyone’s attention, because hope this will be addressed in the upcoming town-hall meeting.

1 Like

Thank you for the update David! I’m really looking forward on the townhall meeting this march 31st!! Where can we sign up for the said event?

2 Likes

This!!! Yes this is one of my frustrations as well.

1 Like

@minriemacapugay The registration link is coming soon.

4 Likes

Meeting? Wdym? :thinking:

From Singapore too. I feel for you too :disappointed_relieved:
I recall a survey somewhere where it was reported people leave after 3 sec max…

2 Likes

I fell the improvements in building speed and relaybility. The platform is really getting better. Performance still a problem that I have to deal with every day knowing that the team is still working on it and that at some point it will be addressed as so many past issues was.

2 Likes

I have questions regarding performance, and hopefully answered after improvements.

What is the delay cost in terms of seconds when an app runs in best connected network at the nearest possible cloud server using normal browser or popular smartphone ?

This is needed to calculate how much further cost and delay in real world app which is skewed to internet connection delays or client’s browser delays or mobile’s users delays.

  1. Showing custom list of collection that have 1000 records with filter to just 1 record, using text filter
  2. Create new record of that 1000-record collection with filling 50 properties in a record
  3. Update a record of that collection with all 100 properties
  4. Showing count of relational of that collection, to use it in empty states
  5. Showing all records of that collection with filter of toggle true/false
  6. Opening 3 related collections at the same time with cascading from logged in user, 1-to-m relationship, all three collection have 1000-records too each.

the list can go on, but for now, these can be our benchmark.
we could begin with 1000 records, and can go up to whatever number later.

Thanks.

1 Like

It’s been almost 3 months since our last town hall so we’re getting together again with David & Ben, the co-founders of Adalo.

For those of you who are new around here, each quarter our co-founders host a town hall where we answer your questions about the product, the roadmap, or anything you’d like to know!

This quarter’s town hall will take place on March 31st at 10:00 AM CST.

There are limited spots — so make sure to RSVP as soon as you know you can make it here :point_right::point_right: Sign up for the Webinar

To help make the most of this conversation, please make sure to send in your questions here :point_right::point_right: Send in Questions

Thank you & hope to see you all there!

10 Likes

5 of 6 app projects are on hold currently due the performance issues with Adalo. Adalo may be good for prototyping and deliver the programmer a working prototype but if you need a database function you should program it native since Adalo is sooooooooooooooooooooooooooo slow. Sadly I don’t have much hope that this will soon be fixed. I assume there is a fundamental problem with how Adalo works.Its not just “add xxx server to it”.

2 Likes

@David And you guys thought getting product-market fit was the hard part… :slight_smile:

Just curious…Was Adalo ever fast for anyone?
If it did, what happened to make it so slow now?

1 Like

Dear Adalo Team

I have just noticed that even external collections and custom actions seem to also go through Adalo domain. External API endpoints must be accessed directly, and data must be pulled directly to the end user device. If the data goes through Adalo, it is TWENTY TO FORTY TIMES SLOWER than retrieving the data directly from apps created in Appgyver, Draftbit, etc. In Postman or in the apps implemented without Adalo, there is 40-90ms latency to completely retrieve my lists. In the Adalo app, same lists from external collection take 2000ms. I have created a custom backend (PostgreSQL database, REST API endpoints and background tasks with SQL triggers) with hope to use Adalo JUST as a frontend for the time being. However, it didn’t pay off because one cannot avoid the backend, even with custom actions, external collections, custom CDN with images as URL, etc.

What is the reasoning to send external collection through the adalo.com domain please? Is this going to be solved any soon? I tested this in PWA and Previewer. I didn’t debug the iOS app explicitly to confirm this — I assume it works the same because the performance is not better there. If it is for Analytics, we don’t need that - our USERS cannot really USE the app and we all know it :confused:

Honestly, despite the efforts on your side, I still cannot imagine anyone achieving anything with Adalo YET. Please take it as a motivation to get things sorted out. Really. Others can do it within months. We need to talk about 20-40x performance upgrade to be competitive.

Many of us have invested lots of money in Adalo without being able to use it in production. We are paying for an alpha/beta version of Adalo while giving you a precious feedback, reporting bugs, and helping others to learn the platform.

Thank you for your understanding.

Best
Miro

8 Likes

Thank you for bringing this back and forth issue, it is difficult to move on once we feel comfortable, but this hope-to-be-resolved issue is continue scratching our head and confuse us.

Please don’t shoot me for bringing this, since draftbit is mentioned, and external collection is the focus, I hope it is still within our tolerance if we know other competitor’s recent capabilities, such as relational tables.

Nested Strings in Arrays - Making Linked Records in Airtable Easier to Use in the Front End - YouTube

I didn’t compare directly, but Adalo is far away ahead, but please don’t stand still or still using old workarounds while building MVP for the early startup life.

Others may start late and slow, but if enough momentum created, eventually will boost their speed, moreover if they do it in right way for scalability.

This comes from my humble opinion, because I still prefer this tool than any other, fortunately I don’t get cornered yet to move on.

5 Likes

Hey @Yongki thanks for sharing. Draftbit looks like a serious challenger to Adalo.

3 Likes

Completely agree @miro

3 Likes

Hey Yongki, thank you very much for your feedback. Absolutely, Draftbit is not mature enough to challenge Adalo in terms of features at all. I used this tool to test the latency to my Rest API without going through Adalo backend.

There must be a reason why Adalo is redirecting our data from/to external domains through their backend, but it is VERY QUESTIONABLE if that is correct due to 1.) performance consequences because it basically destroys all optimization in 3rd party backends we develop or pay for, 2.) data minimization (a key GDPR rule not to underestimate). I doubt there is any “legitimate interest”, GDPR speaking, to pass our data through their systems. From the software architecture view, this makes absolutely no sense.

@David, @Ben would you please address this in the meeting on 31st? Is it a bug? If not, isn’t it a “simple button” to make the Adalo blazingly fast with external collections, at least? :slight_smile:

Adalo is beautiful, has brave features, and I have my last hope it will be also usable any soon. By then, the performance and the time that has passed to sort it out will remain a fail, downgrading Adalo to a pure prototyping tool…

Personally I am still staying for a month or two to see if the time to retrieve (and display) a normal length list takes less than 200ms, in other words, at least 10x lower that it is now. Otherwise paying almost $500 / year for a screen drawing tool is not worth. A senior developer with a feeling for scalability would never ever allow this to happen.

9 Likes

@miro , would be very much appreciated if you can formally put this question into this form so that they address this directly: Q&A with the Founders — March 31st (typeform.com)

I’m not well versed enough with the backend systems to articulate your question through the link properly, but I’m sure the community will greatly appreciate it if you did.

2 Likes

Hi AddyEdwin, that is a good idea. I have raised the following question officially:

“Why do external collections get proxied by Adalo (database-red.adalo.com)? We need control over the data and performance, at least by using the external collections. Any reason why this is correct can’t stand against data privacy and performance. It makes our investments in the performance of our own backend useless (we are talking about a show-stopping, 20-40x performance decrease, compared to other no-code platforms). It also goes against a key GDPR rule — data minimization. We need to have this control. For Adalo, this could be an easy-win on performance before the performance of the internal collections gets sorted out. Thank you very much for your help and efforts to make Adalo great.”

If I don’t appear here in the next days, I got assassinated by the Adalo team for this question :smiley:

Just kidding… Let’s have a hope :slight_smile:

6 Likes

There is also a much more concerning part of this backend proxy mechanism. This is a pure demonstration of why communication with external collections should never go through the Adalo backend:

The content of the Authorization header (such as JWT tokens = commonly used authentication tokens) is exposed in a query string parameter because the app is using an HTTP GET response to an Adalo backend, before it is forwarded to the external API endpoint. While even an HTTP GET including query string is encrypted, it is considered less secure than HTTP POST. For example, URL including query strings are exposed in the web server log, whereas POST parameters are not. To be fair, exposing an authentication token is not a breach yet, it is an invitation to do so though.

2 Likes