This thread explains why some toothbrush apps are huge. Oral-B's size is mostly extra PDFs of toothbrush parts, while Colgate's app is bigger because it uses Unity and repeats assets and languages. Colgate could save about 60 MB by removing unnecessary files and symbols. Overall, much of the app size is avoidable and doesn't help users.
Ok so I guess we're talking toothbrushes today 🦷
🧵 Why @OralB is 290 MB + looking at an even bigger toothbrush app
(tysm for all the tags 🥲)
For OralB, 233 MB / 290 MB (80%) is coming from its asset catalog. Most of the assets are PDFs of different toothbrush models
The largest is `Sonos_M9_rose` at 7.8 MB. Most PDFs aren't even the whole toothbrush, its just the handle and buttons 🧐
The only other nodes that jump out is the `Comino.bundle` (15 MB), which has files like `20class_seqlen26_6p5h_20200302-095627_comino_android_production`
Guessing these are some sort of model weights
While we were tagged about Oral-B, we have to talk about @Colgate, which comes in at 378 MB
While Oral-B's size is mostly assets, much of Colgate is avoidable bloat 🧑🏫
👾 Colgate is using Unity, assumedly for their "guided brushing" feature. The Unity framework is 125 MB, totally fair if they think the feature is worth it
🚨 The problem is that Unity is 50 MB bigger than it needs to be b/c Colgate is not stripping binary symbols from their app
TL;DR binary symbols are used for symbolication. These don't need to be in production apps if you upload DSYMs to a crash reporter
In total, Colgate could shave off ~60 MB (15%) from stripping binary symbols
👯♂️ The other big issue is duplication. Colgate is duplicating 60 MB of assets and localizations in the main bundle and its widget extension
The nodes in red are duplicates
So basically what we're saying is that *at least* 120 MB of size in Colgate does absolutely nothing for users
Ok so I guess we're talking toothbrushes today 🦷
🧵 Why @OralB is 290 MB + looking at an even bigger toothbrush app
(tysm for all the tags 🥲)For OralB, 233 MB / 290 MB (80%) is coming from its asset catalog. Most of the assets are PDFs of different toothbrush models
The largest is `Sonos_M9_rose` at 7.8 MB. Most PDFs aren't even the whole toothbrush, its just the handle and buttons 🧐The only other nodes that jump out is the `Comino.bundle` (15 MB), which has files like `20class_seqlen26_6p5h_20200302-095627_comino_android_production`
Guessing these are some sort of model weightsWhile we were tagged about Oral-B, we have to talk about @Colgate, which comes in at 378 MB
While Oral-B's size is mostly assets, much of Colgate is avoidable bloat 🧑🏫👾 Colgate is using Unity, assumedly for their "guided brushing" feature. The Unity framework is 125 MB, totally fair if they think the feature is worth it
🚨 The problem is that Unity is 50 MB bigger than it needs to be b/c Colgate is not stripping binary symbols from their app
TL;DR binary symbols are used for symbolication. These don't need to be in production apps if you upload DSYMs to a crash reporter
In total, Colgate could shave off ~60 MB (15%) from stripping binary symbols👯♂️ The other big issue is duplication. Colgate is duplicating 60 MB of assets and localizations in the main bundle and its widget extension
The nodes in red are duplicatesSo basically what we're saying is that *at least* 120 MB of size in Colgate does absolutely nothing for usersWe wrote about fixing duplication here👇Here's a thread on binary symbols with links to more threads on binary symbols 🧠TL;DR of this entire thread+ link to the original post 🙂
yes
Ok so I guess we're talking toothbrushes today 🦷
🧵 Why @OralB is 290 MB + looking at an even bigger toothbrush app
(tysm for all the tags 🥲) ... For OralB, 233 MB / 290 MB (80%) is coming from its asset catalog. Most of the assets are PDFs of different toothbrush models
The largest is `Sonos_M9_rose` at 7.8 MB. Most PDFs aren't even the whole toothbrush, its just the handle and buttons 🧐 ... The only other nodes that jump out is the `Comino.bundle` (15 MB), which has files like `20class_seqlen26_6p5h_20200302-095627_comino_android_production`
Guessing these are some sort of model weights ... While we were tagged about Oral-B, we have to talk about @Colgate, which comes in at 378 MB
While Oral-B's size is mostly assets, much of Colgate is avoidable bloat 🧑 ... Colgate is using Unity, assumedly for their "guided brushing" feature. The Unity framework is 125 MB, totally fair if they think the feature is worth it
The problem is that Unity is 50 MB bigger than it needs to be b/c Colgate is not stripping binary symbols from their app
TL;DR binary symbols are used for symbolication. These don't need to be in production apps if you upload DSYMs to a crash reporter
In total, Colgate could shave off ~60 MB (15%) from stripping binary symbols ... ️ The other big issue is duplication. Colgate is duplicating 60 MB of assets and localizations in the main bundle and its widget extension
The nodes in red are duplicates ... So basically what we're saying is that *at least* 120 MB of size in Colgate does absolutely nothing for users ... We wrote about fixing duplication here ... Here's a thread on binary symbols with links to more threads on binary symbols 🧠 ... TL;DR of this entire thread ... + link to the original post
Missing some Tweet in this thread? You can try to
Update