Emerge Tools Profile picture
Jul 9 β€’ 11 tweets β€’ 4 min read β€’ Read on X
Good question @VishalMalvi_ ! Here's what's going on behind the scenes of the @gmail iOS app πŸ‘‡ Image
Here are the biggest chunks of the app

Main app target - 225 MB
Plugins - 99 MB
Dylibs - 46 MB
Localizations - 130 MB πŸ‘€
Image
Image
The Localization size might shock people, but its a frequent problem in iOS

When downloaded, iOS apps contain all languages that an app supports, whereas on Android, a user will only download the languages they need

This is *one* of the reasons that Android apps are typically smaller than iOS
If you're interested in a deep dive in localizations and want to know how they can be optimized, well we have the thread for you πŸ€“

For the plugins (99 MB), most the size is coming from the ShareExtension at 70.5 MB Image
As far as optimizations go, one of the more interesting ones comes from the sheer number of files in Gmail

There's over 20k files in the app, 17k of which are under 4 kB. In iOS, the minimum file size allocation is 4 kB, so having many small files causes unnecessary size bloat. Gmail could save 56.4 MB by moving their small files to an Asset catalog

(again a reason why iOS apps are bigger than Android apps πŸ€·β€β™‚οΈ)Image
Small files are actually something we've covered in depth before in the @CandyCrushSaga app + the difference in iOS vs. Android
emergetools.com/deep-dives/can…
FWIW, it seems like all the popular mail apps on iOS are big, but Gmail takes the cake πŸŽ‚

Gmail - 544.2 MB
Microsoft Outlook - 320.5 MB
Yahoo Mail - 300 MB
Here's a link to the original tweet, thanks to @SwiftDev_UI for tagging us!
Here's the link to our Gmail analysis, there's more goodies if you want to investigate πŸ”Ž
emergetools.com/app/example/io…
For people wondering what tools we used 🫣

β€’ β€’ β€’

Missing some Tweet in this thread? You can try to force a refresh
γ€€

Keep Current with Emerge Tools

Emerge Tools Profile picture

Stay in touch and get notified when new unrolls are available from this author!

Read all threads

This Thread may be Removed Anytime!

PDF

Twitter may remove this content at anytime! Save it as PDF for later use!

Try unrolling a thread yourself!

how to unroll video
  1. Follow @ThreadReaderApp to mention us!

  2. From a Twitter thread mention us with a keyword "unroll"
@threadreaderapp unroll

Practice here first or read more on our help page!

More from @emergetools

Nov 11
We've got to stop meeting like this πŸ˜…

🧡 taking a look under the hood of the @Yelp iOS app Image
Install size weighs in at ~318 MB, but ~4 MB of that is the watch app ⌚️

High-level breakdown:

130 MB dynamic frameworks
47 MB assets
34 MB main app target binary
26 MB localizations

For reference, @GoogleMaps weighs in at ~296 MB (7% smaller) Image
Emerge found 245 images that could be optimized to help save 21 MB (~7%)

We found two nearly identical images of this woman with her dog β€” one with a vignette and one without. Are both images used in the app? Only Yelp could answer that πŸ•΅οΈ Image
Read 8 tweets
Oct 3
Did someone say app size?!

Here's why @thetrainline iOS app is so big 🧡 Image
Total install size is 342 MB

Basic breakdown:

115 MB of Plugins
109 MB main app target binary
34 MB sqlite file πŸ‘€ (more on this later)
23 MB Dynamic Frameworks

The rest is assets, localizations, misc. Let's start with the Plugins πŸ”Œ Image
115 MB for two app extensions is a lot 🫨

We see two Plugins that look almost identical (58 MB vs. 57 MB) with many of the same modules in each.

They can likely use a Dynamic Framework to share code between these two app extensions to help reduce total Plugins size Image
Read 9 tweets
Sep 24
Do you want a paid wallpaper app from @MKBHD?

Maybe not? Well do you want to know how its made πŸ€“

🧡 Looking inside the new @Panels_art app, starting with ads Image
🎀 Ads have been a big topic

Panels is using Google Ads in both iOS (GAD) & Android

On Android, is the largest dependency in the dex com.google.android.gms.internal.ads

Image
Image
☠️ Looking at it another way, we're monitoring over 16k classes in the entire Android app with Reaper

Of that, 4,172 (25%) of classes are related to Google Ads 😬 Image
Read 11 tweets
Sep 5
Oohhoho this one looks fun!

Let's take a look at why the @SantanderUK iOS app is at a whopping 613.3 MB and how 35% of it does nothing for the user 🧐 Image
Right off the bat, it looks like most of the app (587.6 MB) is dynamic frameworks

Dylibs let you share code between targets, but are larger than static frameworks b/c static let's the compiler strip dead code. It's likely that Santander doesn't need ALL of those to be dynamically linkedImage
Also, note the "String Tables" in the dynamic frameworksβ€” these are unnecessary binary symbols that can be stripped out and save 215.5 MB (35% of install size) for Santander UK πŸ€“Image
Image
Read 10 tweets
Jun 24
Another day, another "How is this app so big tweet" πŸ€“

This time its the @DJIGlobal iOS app, which comes in at 1 GB Screenshot of tweet of the DJI Mimo app store with the text "New app size recrod"
A lot of the comments speculated that the app was large due to assets & while there are 155 MB of .mp4 video files, the bulk of the size is coming from ML models Pie chart of app size showing 155 MB (15%) are coming from videos
There's 264 MB of .mlmodelc files - these are compile Core ML Models which are designed to run on Apple devices. Some of the biggest models πŸ‘‡

face_feature.mlmodelc - 68.7 MB
inpainting_l2.mlmodelc - 50.8 MB
pet.mlmodelc - 30.5 MB Screenshot showing .mlmodelc files in a treemap
Read 8 tweets
Mar 25
These are the best πŸ₯²... breaking down why @LinkedIn iOS is half a GB

Here's a top level view of the latest version of LinkedIn

300 MB for just dynamically linked frameworks & Plugins is...a lot. In fact, just the Dylibs & Plugins today are bigger than the entire app was back in November 2022 🫠
Emerge X-Ray of LinkedIn App showing 187.5 MB of Dylibs, 109.9 MB of Plugins, and a 110.6 MB main app binary
Size tracker of LinkedIn iOS app showing the app was 292.9 MB in November 2022 and is now ~450 MB
And the Plugins and Frameworks seems to be where the greatest inefficiencies lie. Here is a more detailed look at the LinkedIn Plugins + the dynamically linked VoyagerLibs.framework

Notice anything fishy?
Treemap of VoyagerLibs.framework. Many of the nodes are in a dark red, indicating duplicate resources
Treemap of two LinkedIn app extensions. Many of the nodes are in a dark red, indicating duplicate resources
Read 10 tweets

Did Thread Reader help you today?

Support us! We are indie developers!


This site is made by just two indie developers on a laptop doing marketing, support and development! Read more about the story.

Become a Premium Member ($3/month or $30/year) and get exclusive features!

Become Premium

Don't want to be a Premium member but still want to support us?

Make a small donation by buying us coffee ($5) or help with server cost ($10)

Donate via Paypal

Or Donate anonymously using crypto!

Ethereum

0xfe58350B80634f60Fa6Dc149a72b4DFbc17D341E copy

Bitcoin

3ATGMxNzCUFzxpMCHL5sWSt4DVtS8UqXpi copy

Thank you for your support!

Follow Us!

:(