What about these apps demands such a large footprint? (Larger than say Notion, Amazon, messaging, navigation/maps, etc etc)
1. Additional security frameworks to help with anti-tampering, often from 3rd parties who have little desire to decrease their frameworks size. Surprising amount require frameworks for mapping/location, photos, camera, bluetooth etc due to anti-fraud and fingerprinting checks
2. Many bank apps obfuscate their binaries/code which increases size
3. Many have huge backwards compatibility requirements so end up always having older frameworks or multiple versions in some cases
4. Often large number of devices need to be supported as such they may have interface files and image assets for say iPhone and iPad, these can and should be stripped out but often aren’t
5. Many banks also have single codebases supporting multiple brands of their banks and subsidiaries, or for their business vs personal vs premier/VIP/platinum customers, they use asset catalogs etc to reskin each but theres often bloat from the overlap
6. Lots and lots of legacy code which often never gets removed. Many still have Objective-C code/dependencies for example
7. There’s often a surprising amount of functionality in banking apps that goes amiss by most users who only really use it to check their balances, eg Cheque scanning/OCR, biometrics (beyond Face ID / Touch ID), receipt management, business or premier customers may have chat or video facilities with their relationship manager etc
Almost all of them are outsourced as well, so you get the cheapest solution done by cheapest developers combined with box ticking compliance.
Home Banking 1: - App Size 129MB - Docs & Data 19MB
Home Banking 2: - App Size 98MB - Docs & Data 8MB
Insurance: - App Size 102MB - Docs & Data 12MB
< 150MB seems somewhat reasonable to me
And since you mentioned other apps: Telegram is 98MB, Airbnb 218MB, Spotify 143MB, 1Password 128MB just to name a few I have on my phone right now. So Around 150 seems about normal.
All three the apps I mentioned are for Italian based companies, not sure if the situation is different in other countries.
These apps reflect the complexities of the organization. Each sub feature can have an entirely different stakeholder and not being a tech-first company means outsourcing to a an army of devs that will pile on code for more profit or internal devs who will pile on code upon code back and forth because the stakeholder's vision is rarely is communicated accurately or efficiently to whoever writes the code. And then that work has to go through security, qa,marketing,etc.... back and forth. Essentially, it will probably feel like a miracle that they managed to make a functioning app if you're used to tech-first companies.
Not "React Native with redux rerendering" slow, but "like a slow webpage disguised as app with lagging frames after tapping simple buttons for basic actions" slow.
- Used React Native
- More features than you'd expect from a typical bank (card issuing/ management, sending payments, invoicing, CRM of contacts to pay/invoice, push debit to fund your Creator Cash account from your brick and mortar without having to send from the brick and mortar, data viz for earnings by platform, earned wage access aka cash advances, and more)
- Uses Stripe Treasury for BaaS
I could speculate, but I'm not really sure what causes that much bloat in other banking apps.
Just checked, the app is 34 MB on my Galaxy S10.
Incidentally I was maintaining a cross platform mobile app for a major UK company. Between Android versions of the fairly ancient framework the app size grew 2 or 3 fold. There were a couple of issues, one was js minification was failing before it was wrapped into a native app by the framework, I think I fixed that in the build file. Also both the ARM and x86 libraries were being included in the APK even though we were only targeting one particular device series. Removing one of these almost halved the file size. It was only really the guy managing the devices and device builds that cared about this, the business wouldn't have noticed.
The Chase customer service though, had been excellent. Just thought I'd mention that.
I don't remember how much we shelled out for our 3PAR SAN, which hosted Exchange data in a CCR cluster, but it wasn't a pocket change AND we had 14000 mailboxes at that time.
"Don't attribute to malice..."
Assets, and the ability to update them. banking apps are typically pretty simple, where you're essentially wrapping all of the 'core' behavior in another API, and that API is doing all the heavy lifting, and sending JSON like they all do.
I think the real reason is around asset templates, and transpiling
Very few banks I've worked with have much in the development department.