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
For reference, @GoogleMaps weighs in at ~296 MB (7% smaller)
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 π΅οΈ
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 π§
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 linked
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 π€