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 π«
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?
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
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
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
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
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
π§΅ figuring out why @telepass is almost half a GB
For those who are unfamiliar with it, Telepass is an electronic toll collection system used primarily in Italy and other parts of Europe. Here's the general breakdown
It's a flutter app πͺ½
Total install size - 457 MB
Frameworks - 417 MB π«¨
Main app target - 25 MB
91% of install size is due to frameworks, 293 of them to be exact
There are a number of reasons that apps would have so many frameworks, but usually it's to support complex functionality in the app, or to make the app more modular and independent for teams working in parallel
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