
Why should your android app speed matter?
I made a tweet some weeks back about how some mobile apps take long to load up. Asides the poor user experience, this can affect your bottom line.
In this article, I’ll show you how we upped Cowrywise android app speed. The app has tons of modules (Savings, Investments, Circles, Stash, Profile, etc). Hence, there’s a lot of data flows at any point in time. Given that, it won’t be fair to have a user wait for all pages to load before they make a specific action.
Android app speed starts with the SSOT (Single Source of Truth)
Simply put, the SSOT refers to having accurate data in one place. That way, any needed data is simply referenced from that source. This works better than having your data scattered around multiple places.
On the Cowrywise app, We always display the data from the app’s local database which lives on the user’s phone. Once the user logs in, We fetch recent (and most important) data in the background with the WorkManager API.
The WorkManager API makes it easy to schedule multiple tasks that are expected to run even if the app exits or device restarts.
Android Developer Documentation
That way, the load on the app’s interface thread is reduced. In turn, the user is able to switch between screens as fast as possible. Once the user gets to the page they are looking for, data required for that page would have already been fetched. We also offload certain one-off tasks to WorkManager.
The app fetches what is in the local database while displaying progress indicators/placeholders where necessary.
How we handle state changes
Using LiveData and Coroutines, We’re able to keep track of the loading, success and error states in the app. Data for UI is wrapped with a Resource class which has 4 states.
In the Fragment, we can then observe different states and update the UI respectively.
Placeholders and your android app speed
Sometimes your android app speed can be an illusion. When a task is going to take a while, there’s a need to inform the user without blocking interaction with other parts of the app. To do this, many make use of progress indicators and progress Dialogs. While these are good, they pose two problems:
- The user has no expectation of what is to come
- They are boring and plain
The combination of both problems can mess with the user’s mind. Yes, the process is taking time but it can feel longer with those. On the other hand, using skeleton screens, a mind game is played. As we move on, you’ll see how we have applied this approach.
Skeleton screens vs progress indicators
Skeleton screens are another way to focus on progress instead of wait times. A skeleton screen is essentially a blank version of a page into which information is gradually loaded. This creates the sense that things are happening immediately as information is incrementally displayed on the screen. With a skeleton screen, the focus is on content being loaded not the fact that its loading and that’s real progress.
Luke Wroblewski
Loading appears faster to the user because the focus has shifted from loading progress to the content that is being loaded. Some examples are shown below


Still on Placeholders: Spinners vs Progress Dialogs
We also got rid of 95% of all ProgressDialogs in the Cowrywise android app (iOS also). Then, we replaced them with progress indicators as recommended by Google:
ProgressDialog is a modal dialog, which prevents the user from interacting with the app. Instead of using this class, you should use a progress indicator like ProgressBar, which can be embedded in your app’s UI. Alternatively, you can use a notification to inform the user of the task’s progress.
Android Developer Documentation
The login screen is an example of this. We show the progress indicator on the button. That way, the user can still interact with the app despite the loading process.

Got questions for me? You can drop a comment or ask me on twitter. If you’d love to read more about my team’s work at Cowrywise, check out how we managed to keep the android app size small here.

Awemazing!
There should be a clap or like option or ‘Super freaking amazing’ tab to click on after reading such a breakdown like this.
Great work!
Awesome… Love the blue fam??
Amazing job! Well done team!
I read this about 7am. A very amazing to get me fueled up for the day!!! Awesome work ?
Cowrywise for life..
Wow..this was an amazing read!!! I feel like I was literally a part of the process.
Amazing job. I’m with you guys any day anytime ❤❤
Great job by the team. We needed some kind of encouragement.
???
Waw it was amazing Gud work cowrywise team ❤
Really impressed keep up the good job.but I think there are some other things u need to add.
Cowry wise.
Used to check your website all the time for design inspiration?
This is super amazing. Good job guys
I will be part of you. Very soon!
I love as easy it is to login and the look and fill is perfect for me… My best color is blue and love the color here
This is an awesome creation. I admire your team. Great job indeed!
Wow
Am mesmerized
Hope to join this team
This is really impressive. Great work guys.
Wow! So much technicalities involved, but then I am rested assured my moneys safe! Lol..Glad to join cowrywise!
Okay Ope of cowriwise now that you guys have disturb me sotay I want to join
Great work
This is commendable work from the team. This is the kind of workspace I’ll love to be in soon. Collaborative leadership at its core. ??
Congratulations to the team for pulling this off.
It’s a pleasure to be a member here
Hope to see more improvements and most of all make more money
Amazing job from the entire.welldone!
Amazing job from the entire team.welldone!
This was so dope. Nice one to the Cowrywise team and my guy, FEYI FOR LIFE ?
Thumbs up!
Great work guys
Wow. That’s great cowrywise
I started using Cowrywise during my Youth Service in 2018 June. It has been an wholesome experience since then.
Great job to the whole team
Beautiful story telling… and great job you all have done
Awesome read. Proud-a-y’all♥️
Wow, that was a great narration, I was practically glued to my device while reading his. I felt like I was part of the Cowrywise team. Double thumbs up
well done,great team work .
I was sincerely glad to see my progress overtime presented in such an engaging manner. I even enjoyed posting it on social media and finding other friends who could relate. Thanks for sharing the story as well. Keep up the superb work!!!
Awesome. I really like how you guys explained the entire process in detail. As a programmer, I learned some new techniques. Kudos.
Mhennnnn!
Mmmmmmmmmaaaaaaaaadddddd ooooooo!
This was an amazing read.. I am a developer, currently learning React.. and seeing most of the terms mentioned gives me a clearer picture of how these technologies work in the real world..
Thanks for this article.. Kudos to your dev team.
You know what, I have always been a low key cowrywise ambassador but after reading this, I just might want to join the team full time.
This is so juicy I’ll have to bookmark this page and read it again and again!
is just beautiful weldon guys
Beautiful post and nice team you guys have. Keep it up.
This is inspiring.
Y’all are amazing..
Love this! Thank you for giving us a front seat into the team’s efforts while creating this feature. I absolutely enjoyed reading this and I’m inspired to do more with your brand. Well done guys!????
One bottle of your favourite brand to everyone at Team cowrywise…
I enjoy the write up and the regular updates.
thank you
Great piece of work guys.
The beauty of working with a motivated team from scratch
The beauty of team work and perseverance.
Your team did an amazing job ??. I learned a lot from this article.
Amazing Story
Awwwwwn
This is inspiring
Very Interesting read! Keep it up.
Thank you, Joshua!
You are doing great job, my dear Ope.
I love Cowrywise;Cowrywise forever.
We love you too!