Mobile Connectivity and App Optimisation: A Snapshot of 6 Countries

Sophia Ng
08 Nov 2018

Network data optimisation matters more than ever, because the next billion smartphone users will come from emerging markets, where poor mobile connectivity and entry-level devices have been the norm. This 'next wave' of users will mostly come from India, as well as Southeast Asian (SEA) countries.

With SEA slated to become the leading region in mobile internet usage, it is worth taking a closer look at the infrastructure and cost of mobile connectivity in various countries from the region, as they are not made equal. Here is a simple snapshot of the mobile connectivity in 5 SEA nations and India (we have decided to include India asides from our regular APAC/SEA coverage, as that demographic is set to contribute significantly to the next billion users)


A brief word about the datanew1

Indian’s mobile internet has also become incredibly affordable in the past 2 years, due to the establishment of Jio, a “state-of-the-art-telecoms network” launched by Reliance Industries. We are using 1GB of prepaid data as a universal benchmark; post-paid data is likely to cost less, but there are many more factors involved and can make comparison impossible. The base unit of 1GB is also the average amount of data needed to stream for an hour in standard definition on Netflix. We have also used the Big Mac index for comparison, to serve as a standardised cost for a meal.

mobile connectivity and app optimisation relationship
Sources: Salary Explorer | We Are Social | Big Mac Index | GSMA

Writer's Note: We realise the income data for India appears contentious, in relation to Singapore's. The monthly incomes for India should be approximately one order of magnitude smaller, as compared to what has been listed on Salary Explorer. This could be due to exaggerations in the user-submitted salary data, for which the site has no control over. In choosing this source, we wanted to standardise our information where possible, and besides India, the incomes for the other countries are consistent with other sources we cross-referenced. Interested in average income per capita? Consider the CIA World Factbook.


Face-off: Singapore vs Indianew2

In Singapore, it takes the average person about 10 minutes of labour to pay for 1GB of data. In India, 1GB of data will require less than 3 minutes. Which sounds amazing, until you consider the quality of the infrastructure. The average mobile internet speed is only 9.14mbps in India. Singapore’s mobile internet is about 6 times faster (54mbps) at only 4 times that of India’s cost. 

Another point of note is Singapore’s score in the Mobile Network Infrastructure Index – 86.5/100, which takes into account various factors like network coverage, tariffs, and handset pricing. For now, India lags behind at 53.7/100; however, that will likely improve rapidly, as the Indian government is targeting 2020 for nationwide implementation of LTE. They are also made a strong stance against data discrimination, providing a level playing ground for all app developers and internet platforms.

In Indonesia, Malaysia and Philippines, 1GB of data is a lot less affordable than a Big Mac. For the average person in the Philippines, it will take at least 2 hours of labour to stream 1 hour of videos from Netflix. And that’s before other costs, such as the price of handsets, subscriptions for video streaming apps, etc. All before the in-app purchases for your app. It is precisely because the price of network data can strongly affect an app's adoption that the whole net neutrality debate exists.

It's not rocket science then, that apps should be made as light on network data as possible, to encourage better app retention rates. 

Fortunately, there are a wide variety of means to reduce network data usage. Some strategies for data usage optimisation fall within 3 broad categories, which we will explain in detail below.

1. Making the app usable offline, and using wifi instead of mobile data
2. Reducing overall app size
3. Loading only what is necessary

Strategy 1: Making the app usable offline and using wifi instead of mobile datanew3

  • Batch up non-vital network requests, and execute when on wifi.

  • Have syncs and automated background downloads occur only when on wifi.
    Even better – if your app can track when your user tends to launch the app, and when the phone is on wifi, it becomes very possible to pre-emptively download fresh content for the user. For an example, if your user will read 15 blog articles on his/her commute to work at 8 am every morning, why not download 25 new articles for him/her at 6.30am when they are still on wifi at home?

  • Have at least partial local databases/content indexed.
    This allows the user to get straight to what they want as soon as they launch the app, and buys you a little time to load the necessary assets.

  • Provide users with the option of caching videos, images and music.
    Thank you, Netflix and Spotify for doing this. We appreciate the guilt-free movie binges and head-bobbing on our commutes home.


Strategy 2: Reducing the overall app sizenew4

  • Set maximum file sizes. Or reduce file sizes. By lowering the resolution, and/or compressing the image/video.
    revention is better than cure. If someone in a chat group uploads, say, a 100mb video of paint drying (or a toddler crawling… you get the idea), and someone did not deactivate automatic media downloads in chat groups, that’s n times 100mb of data squandered. Once this occurs enough times, your app will unfairly acquire the dark “data-intensive” label.

  • Having videos/images of different sizes.
    Is there a need to download super hi-res images/videos for a 5K retina display onto a 5-inch smartphone? Optimally, you could go for the previous tactic, of reducing file sizes across the board. (Bonus: It helps reduce cloud storage costs.) However, if your app has a version for smart TVs, having different image sizes will accommodate them too.


Strategy 3: Loading only what is necessarynew5

  • Pagination.
    This is now the standard for most established shopping/listing apps. Loading a thousand listings (and their thumbnails!), when the user is searching for “plastic boxes” is not the way forward.

    But there are many other types of apps that can benefit from pagination but aren’t using it. Internal communications/content platforms for large MNCs, _gag meme sharing apps, just to name a few. There are sometimes good reasons for this design decision; encouraging users to consume more content being one. Which brings us to the next option. 

  • Modelling your API to deliver only what is currently visible in the app.
    Let’s use free-to-use blog publishing apps as an example. Because there is typically no curation in the content, the readers on the app may wind up with sub-par posts, and tap out mid-way when they are disengaged. Why increase your server costs, and have your users download content that they won’t consume? Download the next chunk of data only when the user has passed a certain point in the previous chunk. 

  • Push vs Pull.
    Compared to pushing out updates on an as-needed basis, apps that pull for updates often re-download the same content multiple times, thus significantly increasing the amount of data used. 

  • Reducing update frequency.
    Plan your updates to ensure each release has significant changes for the app. This will prevent your users from wasting data every week on minor updates that do not have discernible improvements.


Bonus: Considerations for Android developers


Since Android 7.0, users can optimise their device’s network data usage by enabling Data Saver device-wide. A good litmus test to monitor your apps’ data optimisation will be to track user changes to data saver preferences. For more details on how to execute this, you can read the basic documentation here.


We have recently released some research on the state of browsing in Singapore. You should check it out if you want more actionable insights to improve your mobile strategy.

More insights
Modern websites need modern browsers

To enjoy the full experience, please upgrade your browser

Try this one