Performance Guidelines and Best Practices

Are there guidlines or best practices to keep your app’s performance to an acceptable level?

I’ve been doing a lot of trial and error to keep my app performing well. It’s getting bigger every day as I add more functionalities and components. Would love to have some tips and guidance to keep the app performing well. Right now it’s getting really slow and clicking a button to navigate to another screen sometimes takes 2 secs which is very slow already.

Some of my initial questions:

  1. What’s the maximum number of blocks to keep your screen performing well?
  2. What’s the maximum number of UI components to keep you screen performing well?
  3. What components to avoid? (e.g. Accelerometer really made my app super slow so I removed that functionality)
  4. What blocks or type of storage to avoid and what’s the suggestion?
  5. Adding components with absolute positioning affects the performance of the screen?
  6. Any minimum iOS or Android version or phone model to advice for users to use?

Any tip would help. Thanks!

Hi @maptheunknown,

I think it depends largely on the specs of the device you are installing on to be honest?

Have you considered refactoring your app to reduce the block count? Is there something that your app is “waiting” for (Data from the cloud?) before the screen can open? Are you getting complaints from your users about your app performance?

Thanks.

1 Like

Hello @domhnallohanlon,

I was able to figure out the 2 secs. delay when clicking on a button. It was caused by the Accelerator during that time and that issue was fixed already by the Thukable team. Here is the thread about that: App became a really slow today

To answer your questions,

  1. I already refactored the app so that each page will only have less than 2,000 blocks. I used Any Component blocks, removed unnecessary functions, and sometimes I had to remove some functionalities or split into a different screen.
  2. I refactored the app to not use Cloud variables and Stored variables as much as possible. I made sure to use local variables if the variables are not needed to be on the cloud or across sessions.
  3. My app doesn’t wait on data from cloud. My app is designed to work offline (I used storied variables for the user data so it can be accessed offline) and manually syncs to the cloud after rendering the first screen (when the user is idle or scrolling). I have a splash page with a 5 sec. animation and I initialize and and render the first screen while the Splash page is visible.
  4. I’m getting complaints from iPhone 6 to iPhone 8 users especially when they are on Low Power Mode.
  5. I get lots of complaints from Android users from multiple types of devices (The only device e haven’t tested is the latest Samsung S20. Basically, my app cannot be released for Android users because it’s just really slow on Android. Most blocks (cloning, set label text, etc.), is at least 5x slower on Android. Any help on this would be appreciated. After doing all the refactoring, it was still slow on Android unfortunately and the app is still not acceptable for public use on Android. I’m out of ideas and the next step is to move to a different platform (e.g. Flutter) or native platform which will cost more money.

What I need now are general recommendations and guidelines to follow so I’m not guessing if I designed or implemented something that’s not recommended or won’t perform well. Also, is there a way to get a code review from the Thunkable team to know if I’m implementing my app with the best performance it can get?

Thanks,
Marco

2 Likes

It is also much slower for me on android , a lot !

Agreed Android has been noticeably slower for me with API calls and screen cloning/generation.

Cloning blocks is very slow, even on my S20. It becomes progressively slower the more blocks are cloned. It is a huge problem. I’ve tried just creating DOZENS (even hundreds) of elements at design time then making them visible at runtime. This helps runtime performance slightly, but makes the designer so slow it is almost impossible to use. :frowning:

1 Like