Akamai Diversity

The Akamai Blog

The State of Mobile App Performance

In our previous blog, we saw how a new generation of users are increasing the expectations of a mobile app like never before and identified the three key success criteria for mobile apps: 1) increase customer conversions, 2) drive installs and 3) increase customer loyalty. For this blog we profiled the Top 100 retail apps in the app store to explain how you can leverage Akamai features to meet the three success criteria for mobile apps.

We had three key goals in our mind when profiling these mobile apps:

a) How many first party domains are going over Akamai from a mobile app
b) How many mobile apps serve oversized images to user's devices
c) How many mobile apps are leveraging IPv6 and HTTP/2

Here's what we learned.

API Analysis: First Party vs Third Party
A mobile app consists of two categories of APIs:
1) APIs that are critical for app load and responsible for user experience.
2) Third party APIs responsible for collecting analytics, collecting crash information, enabling ad tracking, and social media integrations. This category of APIs are not critical for user experience.

Our analysis shows that on average, a mobile app consists of 8 third party APIs and 4 first party APIs

The State of Mobile App Performance Fig1.png

We also discovered the top third party APIs used inside a mobile app are:

The State of Mobile App Performance Fig-2.png

73 of the top 100 retail apps use Google Analytics and Ad SDKs in their mobile app

Why is this important?

This goes to show that third party SDKs are used predominantly for analytics and tracking app crashes for a mobile app. Keeping a tab on how many third party APIs your app requests for is critical since having too many third party SDKs and API in your mobile app can harm mobile app performance.  For example we observed that mobile apps that have a webview page as part of the user journey in a mobile app gets bombarded with third party ad tags which leads to socket contention between critical APIs and non-critical ones.  

Mobile App Performance Analysis

To learn more about mobile performance struggles today, we analyzed the .har files in each app to identify performance gains. Our findings are as follows:

Why analyze .HAR files?
.HAR files provide insight into every request that the app makes and also provides us with timing data for DNS connections, TCP and TLS connect times, Time to first byte and Time to total download for each individual request. Apart from scanning timings data we also looked for cacheability of content and the size of content served to the mobile app users as well. Looking at .HAR files gives us an exhaustive view into the network chatter that an app makes upon launch.

Not enough Mobile Apps use IPv6

84.2% of mobile apps today are not leveraging the benefits of having an IPv6 connection

Using IPv6.png

Why is this important?

Discovering what percentage of apps use IPv6 connections vs. IPv4 was step one of our analysis. The reason is simple - an IPv6 connection over a cellular network is relatively faster than an IPv4 connection. For more on the performance improvement between IPv6 and IPv4, Akamai's own Erik Nygren addressed this in his blog which references RUM (Real User Monitoring) studies conducted by Facebook and Linkedin that show significant performance improvement for the top-4 US mobile networks.

Too many mobile apps have a non-standard User-Agent string when requesting content

What's a Non-Standard User-Agent String?

A well formed User-Agent string contains device information and the browser type that the mobile app uses. Non-standard User-Agent strings are malformed User-Agent strings that do not relay information about the device or browser. For example, the most common android non-standard User-Agent are okhttp/2.X, CFNetworking, etc.

STD UA.png

67.9% of mobile apps has a non-standard User-Agent string when requesting for content

Why is this important?

A lot of mobile apps today make decisions - like resizing images based on device type, redirecting API requests based on app version - but when a mobile app has a malformed, or Non-Standard User-Agent String, all logic based on User-Agent strings fails. Based on our findings we learned that most of the image manipulation services do not resize images based on device type which leads to downloading really large images to the device.

Pro Tip: The Akamai Image & Video Manager is immune to this problem. We are able to apply perceptual quality settings to images which means we are able to compress the image without sacrificing on any visual fidelity

Mobile Apps CDN Usage

We evaluated CDN usage for all the domains used by a mobile app and found that it was very much in line with recent data published by a startup in the mobile app accelerator space. When we examine this data it becomes clear that there are many inaccuracies in this graph and their logic was flawed, two main points being:

a) Most of this data are caused due to repetitive API calls from Crashlytics, Leanplum, Crittercism SDKs, which are pointing to AWS

b) Third party domains are typically non-blocking APIs and not critical for user experience

The State of Mobile App Performance Fig5.png

In order to analyze performance for a mobile app we need to understand what domains are crucial for user experience, since most of the apps contain Crashlytics, Facebook and Google analytics beacons we decided to ignore all third party domains that are not crucial for a user experience from our CDN usage calculation.

Below is the CDN usage of user critical domains inside top 100 retail apps

The State of Mobile App Performance Fig6.png

41.7% of user critical domains are being served out of Akamai today

Fewer than 10% of Mobile Apps leverage HTTP/2

Why is HTTP/2 important?

HTTP/2 has features like header compression and socket reuse to avoid you from creating a new TCP socket and negotiating TLS for every request which adds to content download time for resources within your mobile app.

The State of Mobile App Performance Fig7.png

90.9% of top 100 retail apps do not use HTTP/2

We have enabled HTTP/2 on our domain, shouldn't our app be able to speak HTTP/2 as well?

No, your mobile app need to speak HTTP/2 for it to work, that means you will need to upgrade your mobile app's networking library to support HTTP/2. Your mobile app developer should be able to help you with this question.

Three Key Takeaways:

  • 85% of android mobile apps don't leverage IPv6 today, which means these apps are slower on a cellular connection compared other apps that are IPv6 ready
  • 60% of android mobile apps have a non-standard User-Agent string, which means these apps are likely being served an oversized image leading to high user abandonment
  • 91% of android mobile apps don't leverage HTTP/2 today, which means there are unnecessary time spent creating TCP sockets and negotiating TLS for every mobile app request.

So, what can you do to improve your mobile app performance today?

a) Visit Akamai Control center and create a new IPv6 enabled edge hostname for your mobile app APIs

b) Ask your developer to upgrade your mobile apps networking library to support HTTP/2 and ensure they are sending the correct User-Agents string to upstream servers

c) Reach out to you Akamai Account team if you are interested in increasing customer conversions in your mobile app

d) Sign up here for a personalized mobile app performance report

Our methodology

We leveraged a vendor called Headspin.io for this exercise, as they provide a platform to profile mobile apps and analyze their performance over real devices and over a real cellular network across the globe. Think of it as webpagetest for mobile apps. Next, to understand what apps to profile and analyze, we used App Annie statistics to narrow down to the Top 100 retail applications in the app store.

The State of Mobile Performance Fig8.png

*Credits to Eric Fullerton, Paul Calvano, Damian Danchenko, Dhruv G., for helping with the content for this blog.


Enjoyed reading this blog! Everyone really needs to know something about the application they are using and how to get the better performance out any kind of app being used by the user. With this information, one can have good knowledge about the performance of his application and it can also get better by using the proper technique in the most pleasant way!!

Thanks for sharing this important information till now i'm searching for the solution this blog reduce all my time. Keep posting the intresting articles like this.