Android slower than iOS

We have been building a retool mobile app internally (great experience so far, works really well) and are now testing different devices and it looks like retool mobile runs much smoother on iOS than on Android.

So far, we have tested iPhone 12 mini, Samsung A14, Samsung S20 and Zebra TC21.

All Android devices have shown a clear delay in responsiveness (compared to the iPhone) and feel much less snappy. The app still works, but testing any of the Android smartphones against the iPhone, the app experience really suffers and I would not feel comfortable rolling out the app to our employees on Android. This is most notable when interacting with collections and navigating to new screens (both in modal and navigating to new screen).

Is there anything we can change to make it work better on Android? We would prefer to use e.g. a Zebra TC21 device to use the in-built scanner.

As we have now tested some more devices, my conclusion is that Android seems to be slightly slower when interacting with collections that contain a lot of data and navigating between screens, but it also largely depends on devices. Newer and faster Android devices outperform older devices by quite a lot.

We now also tested iPhone SE (1st gen), which felt similar to the Samsung S20 as well as Zebra TC22, which comes much closer to the iPhone 12 mini performance.

We will be using Zebra TC22 devices going forward due to the in-built scanner functionality.

@cjschmedt your average Android device will definitely be slower than your average iOS device, unfortunately because the Android device is relatively underpowered. However we regularly ship performance improvements for Android, so we expect this issue to be alleviated for all but the lowest-end phones at some point.

A couple questions:

  • How many items are you rendering in your collection? Have you tried using server-side pagination?
  • What kind of collection are you using, a regular Card/List Collection or a Custom Collection? If Custom, can you share the structure of the repeated child components?
1 Like

Thanks for the information and feedback. Would be great to get even better performance, but for now it works well enough for our usecase.

Items: Can be between 20 and 100. But performance difference is felt for quantities > 5 already.

Collection: we are using a custom collection that is based on a query from our MSSQL database. Structure is more complex (not sure if this helps, let me know if you require more detailed info):

The output looks like this (missing the image, which for some reason is not correctly shown in the browser, but works in the app):

1 Like

Got it, thanks for the info!

I am adding this to the thread in order to provide help for people who might be facing similar performance issues.

We were now experiencing worse app performance with the Zebra TC22 as well, so we re-built our app to use server-side pagination for bigger queries. The performance difference is massive. The only down-side is that server-sided pagination is not (yet?) available for custom collections, so we switched to list collections instead.

We also split our functionality into separate apps (before we had like 15 screens in 1 app, and now we have max 5 screens in 1 app). But I think this had less of an impact.