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 🤓
Just for fun, we decided to look at a few other versions of the Santander app since it looks like they have one for each country they operate in
The app in Poland has an even larger install size than the UK one we've been looking at, coming in at 673.3 MB 🫨
The app in the US is a fraction of the size, coming in at 90.2 MB
So what are the differences? 🤷♂️
The Polish app seems to have the same issue as the UK app, where there are a lot of dynamic frameworks that include various string tables and metadata, leading to 204.7 MB of potential size savings
The US app looks very similar to Poland and the UK, just far fewer in numbers. Dynamic frameworks only make up 77.5 MB, but 8.8 MB could still be saved by stripping the binary symbols 😉
We've outlined this before in previous tweets, explaining that these binary symbols used to be automatically optimized by bitcode, which has since been deprecated by Xcode 14 💔
So there you have it! All we're saying is that this is an issue @Santanderuk and Santander Poland could fix pretty easily with the help of Emerge Tools 😏
Another day, another "How is this app so big tweet" 🤓
This time its the @DJIGlobal iOS app, which comes in at 1 GB
A lot of the comments speculated that the app was large due to assets & while there are 155 MB of .mp4 video files, the bulk of the size is coming from ML models
There's 264 MB of .mlmodelc files - these are compile Core ML Models which are designed to run on Apple devices. Some of the biggest models 👇
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
Finding accessibility issues in an app is an incredibly manual task that can take hours depending on the size. Which seems like a perfect place for ✨AI ✨
🧵Surfacing accessibility issues in the @Drizly app w/ AI 🧠
A quick background - our Snapshots product turns Previews into snapshots. A recent feature gives the ability to use AccessibilitySnapshot w/ one line
You don't need to write test code to get snapshot tests or to snapshot VoiceOver elements
We can take snapshots for any app leaking Previews into production, which @Drizly (and many other apps) are. We were able to generate 86 snapshots for Drizly
We then fed these images into an AI we're working on to detect accessibility errors. Here's what we found
How did the @Twitter iOS app change over the last 6 months? Why did the latest release of Google Translate Android reduce app size by 1/3rd?
We try to make these questions easier to answer, which is why we're very excited about our newest feature, AI summaries of build diffs
Jumping right in - Twitter v9.59.1 vs. v9.34.6 (iOS)
Overall size decreased by 34 MB, but how quickly can we identify what changed?
The summary is pointing to removals of plugins and bundles, which is easy to see in the X-Ray diff
T1Twitter.framework is also highlighted in the summary. Searching through the diff, we can see that many assets were modified or removed to reduce its size