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 @Fidelity 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
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?
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
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
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
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
Saw this post on Reddit... this is our bat signal
v3.86.1 of the @Fidelity 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 yearHere'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?They added about 227 MB of dylibs
`FTTrade`
`FTFeatureViews`
`FTMarketData`
`FTAuthentication`
...
Got to love ✨ modularization ✨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 symbolsIncluding 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 userOther 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 usersA 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 differenceIf you want to know 8 things about iOS performance, here's a recent video Emerge's @itaybre did w/ the amazing @v_pradeillesThat's it for the plugs 😉
Here are links to our analysis + original reddit postThreads on binary symbolsv3.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 appOriginal Reddit postDocs on stripping binary symbols
yes
Saw this post on Reddit... this is our bat signal
v3.86.1 of the @Fidelity 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 ... 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? ... They added about 227 MB of dylibs
`FTTrade`
`FTFeatureViews`
`FTMarketData`
`FTAuthentication`
...
Got to love modularization ... 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 ... 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 ... 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 @itaybre did w/ the amazing @v_pradeilles ... That's it for the plugs
Here are links to our analysis + original reddit post ... Threads on binary symbols ... 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