Emerge Tools
Emerge Tools
@emergetools
Aug 5 • 6 months ago • 14 tweets • Read on X
AI Summary

This thread explains that the Fidelity app has grown a lot, mainly because of adding big code libraries and debug info called binary symbols. Removing unnecessary symbols, images, and dead code could reduce the app size by around 70 MB. The main lesson is to understand frameworks and avoid shipping debug info to keep apps lean.

Saw this post on Reddit... this is our bat signal

v3.86.1 of the app has an install size of 527 MB... and about 50% of that doesn't need to be there

🧵 Breaking down the Fidelity app + why it's grown 250 MB in the last year

Tweet image 1

Here's our X-Ray for the iOS app

The thing that jumps out is 382 MB (74% of total app) comes from dynamic frameworks

In September 2022 (v3.73), the entire Fidelity app was only 280 MB... so what did they add?

Tweet image 1

They added about 227 MB of dylibs

`FTTrade`
`FTFeatureViews`
`FTMarketData`
`FTAuthentication`
...

Got to love ✨ modularization ✨

Tweet image 1

The biggest issue though is that every single dylib is shipping binary symbols - bloat that doesn't need to be in the prod app

223 MB (42%) of the entire app is binary symbols

Tweet image 1
Tweet image 2

Including threads on binary symbols at the end

TL;DR binary symbols are debug info used to symbolicate crashes. If you're uploading dsyms to a crash reporter, you don't need them

Fidelity may not be sharing dsyms w/ 3rd parties, regardless its still bloat to the user

Other size insights - Fidelity could shave 35 MB from removing duplicated files + optimizing images

There's also a fair amount of dead code + Fidelity is shipping preview providers to prod - again, bloat that does nothing for users

Tweet image 1
Tweet image 2

A quick plug on previews - if you're using previews in Swift or Jetpack Compose, our Snapshots product can automatically turn them into snapshot tests - no test code needed 🪄

But plz don't ship them to prod 📿

If you want to know one thing about iOS performance, it's understanding the difference between static and dynamic frameworks + when to use them

P.S. ChatGPT didn't know the difference

If you want to know 8 things about iOS performance, here's a recent video Emerge's did w/ the amazing

That's it for the plugs 😉

Here are links to our analysis + original reddit post

Threads on binary symbols

@emergetools
Now, on Xcode 14...

At risk of being an Xcode 14 spam account, @chesscom and @MasterClass both had 40+ MBs in size regressions due to building with Xcode 14 for the first time

Here's a thread (with links to more threads) where we explain the regression

https://t.co/IQMnmMeeLR

v3.86.1 (Oct '23) vs v3.73 (Sep '22)

If you're curious about the "Other" increase - that's b/c these builds are from the public App Store and we can't break down the entire app

Original Reddit post

Docs on stripping binary symbols

Missing some Tweet in this thread? You can try to Update

More Threads by @emergetools

8 tweets • 9 days ago
Read Thread
11 tweets • 1 month ago
Read Thread
Most big iOS apps have huge localization files, taking up lots of space. Airbnb cut theirs by 82% using two tricks: comp...
21 tweets • 3 months ago
Read Thread
This thread explains why the iOS app is 699MB, mostly due to large dynamic frameworks (64%) and assets. They suggest qui...
7 tweets • 4 months ago
Read Thread
The Tesla iOS app is 760MB mainly because of a large Godot .pck file for 3D features, which can be decompiled and optimi...
13 tweets • 4 months ago
Read Thread

Unroll Another Thread

Convert any Twitter threads to an easy-to-read article instantly

Have you tried our Twitter bot?

You can now unroll any thread without leaving Twitter/X. Here's how to use our Twitter bot to do it.

  • Give us a follow on Twitter. follow us
  • Drop a comment, mentioning us @unrollnow on the thread you want to Unroll.
  • Wait For Some Time, We will reply to your comment with Unroll Link.
UnrollNow Twitter Bot
Modal Image
0:00 / 0:00