11/06/2025, 21:39 How I reduce the iOS Banking app size by 50% | by Tuan Hoang (Eric) | Level Up Coding
Open in app
Search
Get unlimited access to the best of Medium for less than $1/week. Become a member
Level Up Coding · Follow publication
How I reduce the iOS Banking app size by 50%
5 min read · Dec 1, 2024
Tuan Hoang (Eric) Follow
Listen Share More
Photo by claudiotesta
TPBank is my daily use Vietnam banking app, and I’ve used it for 6 years. Recently, I
looked at its app size for the first time and I was shocked.
file:///home/anderson/Área de trabalho/Pasta sem título/iOS Coding.html 1/17
🫨
11/06/2025, 21:39 How I reduce the iOS Banking app size by 50% | by Tuan Hoang (Eric) | Level Up Coding
650 MB. 2x bigger than the average Vietnam banking app size
I was curious, and I dug into it.
In this article, I will write about things I’ve found and some solutions to cut the app
size by half. I hope you can learn something and apply these techniques to your iOS
project.
Shout out to Emerge for their awesome tools.
1. Unused heavy resources
When checking their bundle, I realized they use specific mp4 files and images for
special events, such as the New Year and Christmas. However, it’s December now.
Keeping the 2024 New Year event resources in the app is unnecessary and we should
remove it.
I found these New Year resources by filtering the keyword “tet” (New Year in
Vietnamese). Removing all of these resources can reduce the app size by 30MB.
2. Non-optimize resources
The asset size of the TPBank app is 200MB. It’s even bigger than some other banking
apps.
file:///home/anderson/Área de trabalho/Pasta sem título/iOS Coding.html 2/17
11/06/2025, 21:39 How I reduce the iOS Banking app size by 50% | by Tuan Hoang (Eric) | Level Up Coding
I noticed 2 problems when I analyzed the app:
2.1. Not compress images
The TPBank app has a lot of big images. Lots of image sizes are greater than 2MB.
We can reduce the image sizes through lossy compression or convert it to HEIC
format. It can reduce the app size by 159.7 MB 🤯
2.2. Using iPad image for iOS app
Filtering the resources with the “iPad” keyword gave me these results:
The TPBank iOS Bundle contains resources for iPad. This is because they configured
the images as Universal. We can change it to iPad for these images, and Apple will
help us to remove it for the iOS App (App Thinning). Doing that will help to reduce
the iOS app size by 20MB.
file:///home/anderson/Área de trabalho/Pasta sem título/iOS Coding.html 3/17
11/06/2025, 21:39 How I reduce the iOS Banking app size by 50% | by Tuan Hoang (Eric) | Level Up Coding
2.3 Can’t utilize App thinning
Some of the modules of the TPBank app are built by using Flutter.
However, the assets in the Flutter module can’t be optimized by using 1x/2x/3x
assets and App thinning. That leads to a huge asset size (17.1 MB assets just for the
Flutter module).
3. Duplicate resources
file:///home/anderson/Área de trabalho/Pasta sem título/iOS Coding.html 4/17
11/06/2025, 21:39 How I reduce the iOS Banking app size by 50% | by Tuan Hoang (Eric) | Level Up Coding
A bird’s-eye view can easily see that TPBank contains a lot of duplicated resources:
images and fonts.
lots of duplicated resources
Upon examining the bundle, I noticed that some of the frameworks include their
own embedded fonts.
We can transfer these duplicated resources and fonts to a shared UI bundle. The
potential savings calculated by the Emerge tool is almost 28MB.
file:///home/anderson/Área de trabalho/Pasta sem título/iOS Coding.html 5/17
11/06/2025, 21:39 How I reduce the iOS Banking app size by 50% | by Tuan Hoang (Eric) | Level Up Coding
We can also integrate some tools to help us detect duplicate resources, which I have
mentioned in my previous article.
4. Unstrip Binary Symbols
Swift binaries include large amounts of symbols in a segment of the binary used by
the dynamic linker. These are generally not needed in production builds. The
TPBank app doesn’t strip these unnecessary symbols, which increases the app size.
To strip binary symbols, we can refer to this guidance from Emerge. The potential
savings for the app size are 55 MB
5. Low exposure rate resources
I used Emerge Tools and Asset Catalog Tinkerer to examine the assets more closely.
I found numerous advertisement-heavy images that I have never seen used in the
app.
file:///home/anderson/Área de trabalho/Pasta sem título/iOS Coding.html 6/17
11/06/2025, 21:39 How I reduce the iOS Banking app size by 50% | by Tuan Hoang (Eric) | Level Up Coding
advertisement image for Sunlife
99% of users will not see these event images because they are not in the core
business flows of the app. These images have a low exposure rate.
Due to their heavy size (lots of images are ~4MB), we can consider moving them to
CDN to help reduce the app size and benefit 99% of users.
These simple, low-hanging fruit solutions can reduce the app size by more than
300MB (~ 50% of the original size).
There are still many other improvements we can make, such as:
Removing unused images (I believe they have many)
Change to use static library (Strip unused code)
Enhancing the app’s security (I better not mention it here 😂)
…
file:///home/anderson/Área de trabalho/Pasta sem título/iOS Coding.html 7/17
11/06/2025, 21:39 How I reduce the iOS Banking app size by 50% | by Tuan Hoang (Eric) | Level Up Coding
Now, where can I submit this article to TPBank Bounty Bug to get some cash?
If you find this post helpful, please hit the like button and leave a comment so that
Medium can recommend the article to others.
Thanks for reading.
Swift IOS IOS App Development Mobile App Development
file:///home/anderson/Área de trabalho/Pasta sem título/iOS Coding.html 8/17
11/06/2025, 21:39 How I reduce the iOS Banking app size by 50% | by Tuan Hoang (Eric) | Level Up Coding
Follow
Published in Level Up Coding
245K followers · Last published 9 hours ago
Coding tutorials and news. The developer homepage gitconnected.com && skilled.dev && levelup.dev
Follow
Written by Tuan Hoang (Eric)
423 followers · 90 following
In Medium, I write about the advanced topics in iOS Software Development. Free and more content for
Software engineering at my blog: ericsspace.com
Responses (6)
Anderson Silva Software
What are your thoughts?
Niaaz Wahab
Niaa
Dec 5, 2024
Great article! I’d always wondered why apps like DBS, UOB, HSBC were so huge. I assumed it was because of
extraneous features or security obfuscation… I didn’t expect things like duplicate assets 😂
6 Reply
sonvuhwg
sonv Feb 28
file:///home/anderson/Área de trabalho/Pasta sem título/iOS Coding.html 9/17
11/06/2025, 21:39 How I reduce the iOS Banking app size by 50% | by Tuan Hoang (Eric) | Level Up Coding
Nice article
5 Reply
Baldeagle
Bald Feb 19
I used to have the Facebook app on my phone. It's about 250MB and they update it every couple weeks. I
never used it and I realized I was using GB of data to update this app regularly. So I deleted it, which is the
best way to cut down on data usage. 😀
1 1 reply Reply
See all responses
More from Tuan Hoang (Eric) and Level Up Coding
Create a XCFramework for iOS
Tuan Hoang (Eric)
Create a XCFramework for iOS
I’ve switched from an outsource company to a product company recently. This is the first time
I’ve worked in a product company, so there…
May 31, 2021 100 3
file:///home/anderson/Área de trabalho/Pasta sem título/iOS Coding.html 10/17
11/06/2025, 21:39 How I reduce the iOS Banking app size by 50% | by Tuan Hoang (Eric) | Level Up Coding
In Level Up Coding by Rahul Sharma
SQL Is Dead, NoSQL Is Dying, and NewSQL Is Quietly Taking Over
You are developing the backend infrastructure of an extensive financial system. The system
operates as either a hedge fund, payment…
May 12 785 104
In Level Up Coding by Fareed Khan
Building a Multi-Agent AI System with LangGraph and LangSmith
A step-by-step guide to creating smarter AI with sub-agents
file:///home/anderson/Área de trabalho/Pasta sem título/iOS Coding.html 11/17
11/06/2025, 21:39 How I reduce the iOS Banking app size by 50% | by Tuan Hoang (Eric) | Level Up Coding
Jun 1 1K 16
In Level Up Coding by Tuan Hoang (Eric)
Modular Navigation in SwiftUI: A Comprehensive Guide
How I handle navigation in a Modular SwiftUI application
Oct 31, 2023 428 6
See all from Tuan Hoang (Eric)
See all from Level Up Coding
Recommended from Medium
file:///home/anderson/Área de trabalho/Pasta sem título/iOS Coding.html 12/17
11/06/2025, 21:39 How I reduce the iOS Banking app size by 50% | by Tuan Hoang (Eric) | Level Up Coding
Thomas Ricouard
Building iOS apps with Cursor and Claude Code
My refined, almost perfect workflow
Jun 4 303 6
file:///home/anderson/Área de trabalho/Pasta sem título/iOS Coding.html 13/17
11/06/2025, 21:39 How I reduce the iOS Banking app size by 50% | by Tuan Hoang (Eric) | Level Up Coding
Shobhakar Tiwari
Crack Your First iOS Interview with Confidence 🎉
Introduction
Jan 15 21 1
file:///home/anderson/Área de trabalho/Pasta sem título/iOS Coding.html 14/17
11/06/2025, 21:39 How I reduce the iOS Banking app size by 50% | by Tuan Hoang (Eric) | Level Up Coding
Koti Avula
Why Swift Is 2.5x Faster Than Objective-C (Interview Question)
🎉 Article Published: 73
May 30 78 5
In Swiftfy by Baljit Kaur
Writing Swift Like Apple: Best Practices for Clean and Elegant Code
Mastering Swift the Apple Way: Writing Clean, Safe, and Efficient Code
Mar 2 423 4
file:///home/anderson/Área de trabalho/Pasta sem título/iOS Coding.html 15/17
11/06/2025, 21:39 How I reduce the iOS Banking app size by 50% | by Tuan Hoang (Eric) | Level Up Coding
Tanishq Arora
Meta iOS Interview Experience and Questions
It was scheduled to be a 45-minute technical round, but the conversation ended up going for
about 50–55 minutes, which was a good sign. The…
May 2 102 2
Ashit Ranpura
Code Review for Mobile Apps: A Senior Engineer’s Guide to Quality and
Velocity
file:///home/anderson/Área de trabalho/Pasta sem título/iOS Coding.html 16/17
11/06/2025, 21:39 How I reduce the iOS Banking app size by 50% | by Tuan Hoang (Eric) | Level Up Coding
Boost code quality, ship faster, and mentor better with a proven mobile code review workflow
for Flutter, iOS, and Android teams.
May 26 14
See more recommendations
file:///home/anderson/Área de trabalho/Pasta sem título/iOS Coding.html 17/17