Reducing app size is a common challenge faced by developers across different platforms. Here are some strategies and best practices gathered from various discussions that can help you minimize your app's footprint.
Analyze and Optimize Resources
One of the first steps in reducing app size is to analyze what's taking up space. Tools like Android Studio's APK Analyzer can help identify large resources or unnecessary files [1:1]. For images, consider using formats like WebP instead of PNGs, which offer better compression without losing quality
[1:2]. Additionally, removing duplicate or unused resources can significantly reduce size, as seen when one developer reduced their app from 115 MB to 22 MB by cleaning up asset folders
[1:3].
Code Shrinking and Optimization
Enabling code shrinking tools like R8 or ProGuard is essential for removing unused code and optimizing the remaining code [1:5],
[2:6]. These tools help strip out unnecessary parts of libraries and dependencies, which can contribute significantly to app size. In iOS development, similar principles apply, such as enabling symbol stripping and removing redundant architectures
[3:3].
Use App Bundles
Switching from APKs to App Bundles (AAB) can reduce download sizes by delivering only the necessary components for a user's device configuration [1:9],
[4:4]. This approach ensures that users download only the code and resources they need, rather than a one-size-fits-all package.
Manage Third-Party Libraries
Third-party libraries can bloat app size, especially if they include features you don't use. Consider building custom solutions for specific functionalities or choosing lighter alternatives [3:1],
[3:4]. If certain libraries are indispensable, ensure they're optimized and stripped of unnecessary components
[3:5].
Deferred Components and On-Demand Resources
For apps with large assets, consider loading them on demand rather than bundling them with the app. This strategy is particularly useful for media files like images, videos, or audio [3:2]. Flutter offers deferred components, which allow parts of the app to be downloaded as needed
[2:8].
Platform-Specific Considerations
Each platform has unique considerations. For instance, React Native apps can see significant size reductions by targeting specific architectures and using app bundles [4:2],
[4:5]. Similarly, ensuring proper configurations for Android and iOS can prevent unnecessary bloat
[5:1].
By following these strategies, developers can effectively manage and reduce their app sizes, resulting in faster downloads, improved performance, and a better user experience.
Hi I'm currently developing an Android app, and the APK/AAB size has reached around 115 MB, which is way more than I expected.
I'm looking for effective ways to reduce the app size. Can anyone suggest some best practices to reduce the final app size?
Nowadays raw APK size isn't an interesting metric. You want to look at the download and install size from Google Play.
Anyway, here are a couple low handing fruits:
Thanks for the information. I noticed the real problem is that there are multiple replica folders inside the assets folder and a bunch of unwanted or unused resources increase the APK size .
The app size is now 22 MBs once again thanks for everyone ✌️
Thanks I will definitely check with the APK Analyzer to see what’s taking up space and R8 is properly enabled to shrink the code
Also use app bundle to publish so it can reduce download size based upon the users device and local context.
I'm currently using an APK, but I will switch to App Bundle for publishing. Thanks
I noticed the real problem is that there are multiple replica folders inside the assets folder. I have deleted them now the app size is reduced to 22mb.
The release version is 22mb. Thanks everyone
debug version is always a lot larger then the release one, just so you know for the future ones
First place I would look would be the resources. Any videos or large graphics files there?
Consider downloading or streaming them on demand if required.
Format of graphics? Are SVGs suitable instead of png files?
Thanks for the suggestion. The app doesn't have any fancy images or videos, but it includes a large JSON file that's inside the app
Large as in? 50 mb?
use proguard
Hey! a huge app size is the WORST. I feel your pain! Here's the stuff that's actually helped me shrink my apps:
minifyEnabled true
is turned on. It'll automatically get rid of unused code and stuff.That's the gist of it! Don't stress too much about the details. Just focus on those main things, and you should see a difference. Good luck! You got this!
How to reduce flutter app size.
I just made release apk of my app. Its 220mb😭. The assets are only 2 mb i have done shrink resources and minify enabled in the gradle file. I have used a lots of packages but all are important. What can I do to minimize the app size.?
Did you actually build the app or did you just measure the size of the debug build?
I used flutter build apk --release
I used flutter build apk --release
WTF? I have been working on an app for quite some time now, I am running it as debug on my phone, and it is working quite well. Arey you guys telling me I won't be able to release it because it may be too large in file size?
-Go with app bundle it's version used with google play But in my opinion it's not logical the release be like 100 mp it's a game with a huge assets folder
I assume you've just built a debugger version.
If we are talking about Android sizes:
- A small app built in debug mode is about 176 MB and can be laggy on an older Android device.
- If you use split APKs for different abis, the app size is reduced to about 9–10 MB (https://docs.flutter.dev/deployment/android#build-an-apk).
- In production mode, the app uploaded to the Google Play Console is even smaller at 7.4 MB, but you need to build and upload an app bundle that's around 40-50 MB.
- After installation on a phone, the production version is about 18 MB, while your own build is about 22–24 MB.
* The "small app" has seven screens, a local database, and uses some native plugins and UI libraries. assets <500kb
Thanks for the information. The app has more than 7 i guess around 30+ and it still has more to go. Iam using third party sdks for messaging, audio calls, video calls. Image croppers and then hive data and many kore
check this docs https://docs.flutter.dev/perf/deferred-components
Have an app (130mb in appstore)
the biggest part is a POD folder (100mb).
the most "heavier" pods are "Crashlitics", "DevToDev" and other important pods (around 40-50 Mb each)
​
What can I do to reduce the size?
Maybe start by measuring the binary size? Because the source code folder on your Mac does not correspond to what the user downloads.
The compiler strips a lot of fluff out already.
>Maybe start by measuring the binary size? Because the source code folder on your Mac does not correspond to what the user downloads.The compiler strips a lot of fluff out already.
What steps can I do?
I would --
Things to look out for are --
Those pods probably don't take up that much space on users devices because of app thinning and bitcode. You can strip out extra architectures, assets and bitcode to get a more accurate attribution per pod. There are likely many faster ways to reduce your app size like optimizing images, enabling symbol stripping and deleting duplicate files. I made a tool to show you what contributes to app size and automates finding some of these quick savings: https://www.emergetools.com
If you’re trying to reduce app size, don’t use third party libraries. They’re full of 90% fluff you probably don’t even use. Take the ideas and build your own utilities. Compress images, look into On-Demand Resources, or load data from the network at runtime.
Maybe keep Crashlytics, but the default crash reporting is decent, and much less privacy invasive. Especially since in the fall you’ll be required to fill out a privacy disclosure for any new app release/update, which details exactly what info your app (or any of its included frameworks) gathers from your users device. So anything google/Facebook-owned will probably add a lot of disclosures, most of which are probably unrelated to your core app’s features.
What about analytics frameworks? I can't remove it from the app
Well if you can’t remove it, you really can’t reduce the size of those, just gonna have to leave it in
First of all, Thanks everyone
But problem is still exist
The biggest piece of my app is a "Frameworks" folder
And as I told before most "heavier" pods are "Crashlitics", "DevToDev" and other important pods (around 40-50 Mb each)
I can't remove it or change with another one, cause need to see crashes in app and etc.
But how other apps use this frameworks and has just 30-40 Mb?
Ditch most of the libraries. I'm sure you can build the same app under 30Mb with the same functionality. Unless you have a lot of artwork.
I created one app with React native expo. It has just 6-7 screens. And the design is also simple not many assets. just api calls and displaying data. Now, after the release build application size is 82MB. Really, 82MB for a few screens!! Any solution for that?
Large apk size is due to building RN for all architectures (x86, x64, arm7, arm8)
You can reduce apk size by setting which target architectures you want in your eas.json
Don’t worry about that. When you’re deploying to the stores generate an aab or if you are using eas, expo will do that for you. After it’s published your app download size in the stores will be around 6 - 9mb
If you’re using a development build, you can enable proguard, it will shrink your bundle size too
It's an apk, it will be big. An aab will be way smaller in size like maybe 10-20 MB or more based on app complexity and size.
its important an app is efficient, but small or large i dont see the problem. Who really looks at the size of an app to decide whether to download it or not? no one., and in fact there is a case to make about not wanting people who look at the size, they are either cheap or techy, not great customers.
Point to be noted
The doc titled Understanding app size explains:
> Why is my app so big? > >It probably isn't, actually! When examining the resulting artifact of a release build for an app, it's common for developers who are unfamiliar with native Android and iOS development to be surprised by the file size — it's usually much larger than they would expect for an app if they were to download it from an app store. This is not the actual size of your app, which will be distributed on app stores! > > ... > > Typically, what app developers care about the "download size" on the Play Store (what the users see in the store listing when they go to download the app). This will be the size of the APK that Google Play generates from your AAB, which is tailored to the user's device. > > The only truly accurate way to see what your final app size will be shipped to users is to upload your app to the stores and download it on a physical device. Google Play also provides a reliable estimate for the expected download size on your developer dashboard.
Also, Google changed the default for a setting called extractNativeLibs
which increases APK/AAB sizes to improve runtime performance.
> React Native 0.73 bumped the Android minSdkVersion to 23. This had the side effect of changing the default value of extractNativeLibs to false. > > If set to false, your native libraries are stored uncompressed in the APK. Although your APK might be larger, your application loads faster because the libraries load directly from the APK at runtime.
My app on playstore has 67 mb, how can i reduce it or shrink it
You can enable app optimization https://developer.android.com/topic/performance/app-optimization/enable-app-optimization
If min sdk is set to 30 or more I believe, you should enable legacy packaging.
I would first look at using apk analyzer to get a sense of what to go after. Don't include resources if they can be downloaded asynchronously, prefer vectors over images, enable app optimization to remove unnecessary code.
Hello,
Another dev and I built a WPF app for our organization and were told that, ideally, it should not be more than 20mb due to how updates work for all the other users. After some researching, we realized the main culprit is the .NET SDK assembly bloating the app size. We removed it from the published file and re-ran it, and everything seemed to be fine. However, when a user poked around it a little bit more, it ended up crashing on them.. and the Event Viewer blamed the SDK file being missing.
This one dll file doubles our app size, bringing it to 44mb. It's still very small in general terms, but for our company and the amount of internal programs we have, it needs to be as small as possible. Is there any workaround, or is this just how .NET 8+ works?
That .dll contains the C# projections for the WinRT APIs from the Windows SDK. It's pulled in automatically when you target -windows10.0.XXXXX.0
in your TFM.
You have three options:
-windows10.0.XXXXX.0
TPM if you don't need itIf you're on WPF, you might be out of luck.
Trimming is definitely the answer. You can call out to illink directly in a post-build event and only trim the SDK DLL.
Yeah isn't that the thing that let's you implement progress bars on statusbar buttons, and auto-reload-on-reboot and other stuff like that? If they can give up on those features they can likely remove it.
> auto-reload-on-reboot
Can't speak to the other thing, but this part is easy to do with plain winapi
Remove multi-language support. Seriously, try it and come back.
do you mean removing all of the folders labeled es, fr, de, etc? i actually did remove those in an attempt to shrink it down as much as possible but it didn’t work. must be something else in there 😬 but good to know it’s not just a flaw of .NET 8
I guess if your machines already have the runtime installed you could use that. However keep in mind that you’ll have to ensure it is the correct version according to your application.
Maybe wasm could reduce it or DLL trimming?
If you don't bundle the runtime with the app, then you have to install and update it individually on every PC where the app runs.
Is there no deployment management tool used within the organization through which the SDK could be kept up to date as necessary on the workstations to meet your needs for your individual client users?
Anyone have tips for mobile app settings to keep the app from getting huge? Deleted 12GB Anki app (after clearing backups) to update my iOS. Reinstalled it’s now less than a gig. I guess I could just periodically delete and reinstall but figured you guys might have some insight. Thanks!
My initial impression is that, upon reinstalling, it's less than a gig because the media hasn't yet (fully) synced. If you have a large collection it's going to take up a large amount of space. That's probably not ultimately avoidable
Turns out this is it, exactly. Thanks!
Maybe you could reduce backup frequency in Anki preferences > backup. Other than that it should all be media and things right? Have you synced after reinstalling and it’s still that small?
It’s not small anymore. It’s the media!
Hi devs,
Kotlin developer here.
I have an app which has .db file embedded into app itself, but the .db file is too large 110MB and because of that my app size has increased significantly and it take too much time to download from play store.
To tackle this my idea is to keep app and .db file separate, host .db on cdn server and when app is installed, it downloads the db from cdn link
I even tried to compare the compression as follows:
app.db => 110MB (uncompressed)
app.db.gz => 32MB
app.7z => 13MB
I am wondering if I should use .7z compression or not
or you can suggest me the optimized way the currently industry players are using.
Your suggested implementation is fine. It'd also help if you ever need to update your DB and refetch it from your app.
Android doesn't have native support for 7z compression. You'd need to bundle binaries in your app for support, which may defeat the purpose of saving bandwidth, depending on how large those binaries are.
I'd suggest just sticking with a zip file.
Does it make sense to compress it? Since the apk itself is a zip already there might be not a lot of benefit of compressing it again
You can also use zip with 0 compression. I don't know what compression level android uses though.
.zip or .gz ?
Bundle binaries in a feature delivery module and unload it once it is not longer needed. But you need to calculate how much space do you save during the initial download from Google Play https://developer.android.com/guide/playcore/feature-delivery/install-time#make-removable
Previously, you would use obb for that, but now we uses play assets delivery. https://developer.android.com/guide/playcore/asset-delivery
Create rest API so that the backend can serve portions of the DB?
Use Google Play Asset Delivery
Use your own CDN and upon install ask for step of the user to download the DB in background
Can I ask what is stored in the database, without giving away sensitive information, that you need 110MB of space on every user's device?
That information I can't it give it here but the db is required to run the app offline with limited features.
That information I can't it give it here but the db is required to run the app offline with limited features.
No worries, thanks for the info though. Another question, is this an internal app for an organization or a public app?
Must you embed the db file? Can't you download it on first run?
...so are they basically killing compatibility for old apps ?
"Starting November 1st 2025, all new apps and app updates that use native C/C++ code targeting Android 15+ devices submitted to Google Play must support 16 KB page sizes."
Nothing about breaking old releases, at least not yet.
*points at pic showing 4KB page size apps won't work on 16KB page devices"
Why would an app even need to care beyond setting a bit in the app manifest (or whatever mechanism Android uses)?
I have already seen very old apps being blocked from installing in Google Play.
I cleared all the browsing data in the settings. I have nothing downloaded. Is the only solution to delete the app and reinstall?
what do you have the “Archive Inactive Tabs” option set to?
12 gb is excessive. I only use arc on my phone, and my document and data is just over 1 GB.
One (1) Day.
How many downloads do you have under Files > On My iPhone > Arc Search > Downloads
? I’d encourage you to double check to make sure there’s nothing located there
It’s empty.
Holy smokes
I mean, I think I'm just going to uninstall and re-install. But this is only after maybe a month?
I’ve been using Arc Search since day one. Never reinstalled it. There’s clearly something wrong on your end 😅
Mine was at 1.5GB.
Cleared browsing data, removed downloads and archive.
Now .2GB
how to reduce app size
Key Considerations for Reducing App Size
Optimize Images and Assets:
Remove Unused Resources:
Use Code Minification:
Implement Dynamic Features:
Optimize Dependencies:
Use Lazy Loading:
Review Build Configurations:
Recommendation: Start with image optimization and code minification, as these often yield the most significant size reductions with minimal effort. Regularly audit your app as you develop to keep the size manageable.
Get more comprehensive results summarized by our most cutting edge AI model. Plus deep Youtube search.