Like everyone else, we got excited about the launch of Meta's Threads and decided to quickly assess the app's performance. Unlike many in the industry, Meta did an impressive job by releasing both the Android and iOS apps simultaneously without any delays or feature discrepancies. Users have praised the Android version for its so-better-than-usual performance, and we can understand why. Threads performs exceptionally well on Android, surpassing expectations. This is significant in ensuring a great user experience across the so-called long tail of Android devices.
To evaluate performance, we rely on visual cues. With extensive experience profiling some of the most popular apps with PS Tool profiler, we can predict the reasons behind almost every noticeable delay that the human eye can perceive. As science teaches us, anything above as little as 50 ms is noticeable and annoying. In Threads, we have observed delays that are as much as hundred times longer than that, which has allowed us to make some interesting observations. Hopefully, one day we'll get a chance to instrument the Threads app with our ML-powered instrumentation and see how close our predictions were to reality. We will continue to monitor the improvements as the excitement around Threads grows. You can follow us on Threads and find a shortened summary of the below there.
Threads for iOS. Profile loading
Let's see what happens when a user clicks on an interesting profile to read more of its threads. Profiles that are filled with content, such as the popular @instagram account, often take a long time to load. One possible reason for this is that the app attempts to display all the content (text, images, reactions) at once, leading to multiple network requests and causing the user to wait. These requests can sometimes experience delays due to dependencies on each other, further prolonging the loading time. Profiling the code with PS Tool can provide a comprehensive view and allow for the rescheduling of requests to run in parallel.
Before we instrument the code, it is challenging to estimate the potential time savings, but it is reasonable to expect that at least half of this significant delay can be reduced. For more examples of delays like this in other apps, including a video showcasing the profiled code in action, you can check our webinar recording on the Secret Life of Network Requests.
Another example of a fixable delay is in the Profile section of the app. When we tap on the "Replies" section, the content is delayed because it wasn't preloaded. Whether this is an intentional product decision or a scheduling issue, both the Twitter and Instagram apps preload the "Replies" section, and even Threads' own Android app does the same. Why not to follow their lead?
Threads for Android. Bio loading
Although the Android app performs better than iOS, there is still room for improvement. For example, when opening someone's profile in the Android app, it is common to experience a noticeable delay in the loading and appearance of the bio. The delay does not occur consistently, so sequential loading is not the issue. Nevertheless, it takes too long to fetch a short text, indicating that either the request was scheduled too late or something is blocking the main thread during the update that displays the bio.
Watch our webinar recording on Mobile UX-design: performance-oriented content loading to see more examples of common optimization opportunities noticeable by the bare eye.