Emerge Tools Profile picture
Mar 25, 2024 10 tweets 4 min read Read on X
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
First off, the 2 plugins + VoyagerLibs are all shipping ArtDecoIconsResources.bundle (~8 MB). This bundle is already in the Voyager Framework, so it should be possible to share with the Plugins...but LinkedIn is still duplicating it A highlight of ArtDecoIconsResources.bundle (7.9 MB), which is included 3 separate times in the LinkedIn app.
If you look into TodayExtension, NotificationExtension, & VoyagerLibs, they share many class names (one example in screenshot)

While we don't know for sure if they are duplicates from public build analysis, it appears like the extensions are a subset of the VoyagerLibs library Screenshot showing duplicate named treemap nodes across plugins and framework
Here's something else that jumps out - in March 2023, the TodayExtension was < 400 KB. Today its ~60 MB...

Seeing as Today Extensions have been deprecated, its doubtful that they added THAT much functionality to them
Screenshot showing Today Extension was 372.7 kB in March 2023
Screenshot showing Today Extension was 60.8 MB in March 2024
It seems there's a chance that LinkedIn is statically statically linking dependencies in their Plugins rather than using the resources from VoyagerLibs

If that's the case, then the Plugins (109 MB total) have a significant amount of unnecessary size bloat
Separately, here's ~75 MB of insights that we're picking up Emerge Insights for the LinkedIn App. In all, there are close to 75 MB of potential savings from: Stripping binary symbols (36 MB), removing duplicate files (21 MB), minifying localized strings (7.9 MB), removing binary symbol metadata (5.5 MB), removing unnecessary files (3.0 MB), and optimizing images (2.2 MB)
If you want to explore our analysis on the latest version of LinkedIn, you can check out this page
emergetools.com/app/example/io…
And coincidentally, @jacobs_handle wrote a blog post for us just last week about how to avoid duplication in Plugins

Please RT this thread if you enjoyed it 😁
emergetools.com/blog/posts/mak…

• • •

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

Mar 24
When we tweet about RN apps that have room for improvement, we often used the General Motor apps as an example

WELL NO MORE 👏👏👏

🧵 How General Motors shrunk app size by ~70% Image
We wrote a deep dive on the four GM apps roughly a year ago

In it, we detailed how they could reduce EACH app by ~200 MB
The apps went above that, reducing app size by ~300 MB

The main optimization came from renivubg TardisHybridContainer, which is where the vast majority of bloat came from in each app. Basically this was a mess of a dynamic framework w/ inefficient assets + a large jsbundle
Read 7 tweets
Mar 18
What's truly wild here is that at the beginning of 2024, the T-Life app was 37.3 MB

It's now at 475 MB

🧵 How to 10x your app size Image
Image
General breakdown

Dynamic Frameworks: 195 MB
Main app binary: 159 MB
Asset catalog: 69 MB

fwiw, each of those are bigger than the entire app was ~14 months ago 🕵 Image
basically this is what T-Life did over the last year

The app used to have a few UI & Games bundles + a slim binary and that was it

Now it's largest dynamic framework (AzureCommunicationCalling) is bigger than the entire app used to be at 65 MB
Read 9 tweets
Feb 6
Got a few requests for this!

Let's break down the @binance crypto app 💰 Image
So there's two versions of the app we're looking at, the US version and another version shipped under "Binance Switzerland"

From what we saw, the US app is only for the US, and every other country gets the app from Binance Switzerland, probably due to different regulations Image
Image
🇺🇸 US version weighs in at 303 MB
Main app target - 98 MB
Plugins - 94 MB 👀 we'll come back to this one
Frameworks - 55 MB Image
Read 16 tweets
Jan 23
We got multiple tags to analyze the Tapo @TPLINK app for being over 760 MB 👀

Let's see what we find in here 🤭🔎 Image
Total install size is 764 MB

204.6 MB
171.5 MB frameworks
45.4 MB main app target
27.7 MB plugins
a whole bunch of assets and localizations assets.carImage
We actually found that the current app version increased by ~162 MB compared to its previous version 🤔 so what changed?

They added @Unity along with a bunch of other stuff, mostly assets Image
Read 11 tweets
Jan 21
It's always the banking apps huh 🤦‍♂️

Figuring out why the @UBS banking iOS app is almost 800 MB 🥲 Image
First up, an overview

Frameworks - 336 MB (43%)
Main app target - 180 MB (23%)
Plugins - 55 MB (7%)

But what really sticks out is all that red, which signifies duplicate files ❌ Image
There's a handful of really simple optimizations here which could reduce install size by 102 MB or by 13% of total install size 📉 Image
Read 15 tweets
Jan 16
Customer: “Why is this app so big?”

Company: “Very cool features & lots of them + you have no way to check what I’m saying”

Not today corporate. Not today.

🧵 Why @ouraring is ~450 MB Image
This might be a bit long, so TL;DR

Oura is just duplicating a bunch of images, json, & localizations. The size isn’t b/c it’s “powerful with many features”

Here’s what the size actually is 👇

Assets: 207.8 MB
Localizations: 49.2 MB
JSON: 35.5 MB
Audio: 26.5 MB Image
The Oura app is mostly different bundles:

OuraImages (90.4 MB): Images
OuraComputeModels (26.1 MB): PyTorch models
Insights (16 MB): JSON files to score “sleep”, “readiness”, etc.
OuraLocalizations (12 MB): Localizations
OuraIcons (9 MB): Icons Image
Read 9 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!

:(