Improving the performance of a language mobile app | How we do IT #2
00:00 → 00:03
Even the most comprehensive mobile application will not do
00:03 → 00:05
if it fails to operate smoothly.
00:05 → 00:09
So you may be wondering how to fix performance issues before
00:09 → 00:11
they drive your users crazy?
00:11 → 00:15
Let's take a look at a couple of tried and tested solutions.
00:18 → 00:22
I'm Alexandra, senior content marketing specialist at Merix
00:22 → 00:24
Studio, and this is how we do it.
00:24 → 00:27
In this series, we present you with specific design and development
00:27 → 00:31
challenges and explain how we deal with them at Merixstudio
00:31 → 00:35
Every case is based on our own experience and projects we've
00:35 → 00:36
worked on so far.
00:36 → 00:39
In this episode, we are going to take a closer look at the
00:39 → 00:42
EdTech language platform created for a company
00:42 → 00:44
located in North America.
00:44 → 00:47
The application helps users practice language skills
00:47 → 00:49
anywhere and anytime.
00:49 → 00:53
The product offers users a variety of language learning exercises.
00:53 → 00:56
Each module consists of different types of content from
00:56 → 00:59
word lists through audio recordings and video tutorials
00:59 → 01:02
to vocabulary based infographics.
01:02 → 01:05
However diverse and convenient it may sound for the user,
01:05 → 01:08
it actually makes app maintenance a struggle.
01:08 → 01:10
And that's just the tip of the iceberg.
01:10 → 01:14
How to ensure impeccable app performance regardless of the
01:14 → 01:17
abundance of features and other mobile development related challenges?
01:17 → 01:20
See how we do it at Merixstudio.
01:23 → 01:27
Let me go through the hardest nuts to crack in this project.
01:27 → 01:31
First of all, the app initialization time is rather lengthy.
01:31 → 01:34
Users need to wait at least five seconds for the launch
01:34 → 01:35
screen to appear.
01:35 → 01:39
Before that happens, all they can see is a blank space.
01:39 → 01:42
And I can tell you one thing, nobody likes waiting.
01:42 → 01:44
Then there's the content loading time.
01:44 → 01:48
Imagine trying to learn a new language by repeating words you
01:48 → 01:49
see in a short animation.
01:50 → 01:52
It's going pretty well and you're actually having a good
01:52 → 01:56
time, that is until the application crashes and not
01:56 → 01:59
once, but a couple of times in a row.
01:59 → 02:02
Processing this amount of data proves to be too much for the
02:02 → 02:04
application to handle.
02:04 → 02:05
You, as the user,
02:05 → 02:10
get frustrated and the entire language learning process is ruined.
02:10 → 02:13
That's not the outcome you would be happy with, is it?
02:13 → 02:16
The third challenge we need to face is that of too many
02:16 → 02:19
back end operations going on at the same time.
02:19 → 02:23
For example, the application needs to connect to the external server,
02:23 → 02:27
send requests to the API and transfer a lot of data
02:27 → 02:29
to display a picture.
02:29 → 02:32
The number of processes in the background causes performance
02:32 → 02:33
to deteriorate.
02:33 → 02:37
And lastly, the language platform in question works differently on
02:37 → 02:39
different devices.
02:39 → 02:42
The newer the phone, the better the performance.
02:42 → 02:45
However, users with some older models are not properly
02:45 → 02:49
taken care of, and that's something we need to revise as well.
02:49 → 02:51
Since we've already covered the challenges,
02:51 → 02:53
it's high time we found solutions to them.
02:53 → 02:57
Matthijs, our senior mobile developer and team leader,
02:57 → 02:59
will be our tech expert this time.
02:59 → 03:04
So Matthijs, how would you address the issue of long app initialization?
03:04 → 03:08
I've got a few tips on
03:08 → 03:11
improving initialization time.
03:11 → 03:13
The first one is creating a loader.
03:13 → 03:17
It's a type of animation that catches the user's eye while
03:17 → 03:22
the app is downloading all the data it needs to start working properly.
03:22 → 03:26
It can be for example a moving logo or a progress bar.
03:26 → 03:29
Any of these will make the waiting more bearable while the
03:29 → 03:33
preparation process is going smoothly in the background.
03:33 → 03:37
It's more of a visual trick than actual code improvement.
03:37 → 03:40
But it works for the user and that's what matters. Right?
03:40 → 03:44
The second thing is creating smaller data containers.
03:44 → 03:48
It's quite obvious that the big one will take way more time to
03:48 → 03:52
load so it's worth putting data into lighter packages.
03:52 → 03:56
Moreover, you can put all the icons into the font's container.
03:56 → 03:58
Thanks to this easy solution,
03:58 → 04:01
those elements will load almost instantly which might
04:01 → 04:05
significantly improve app's starting time.
04:05 → 04:06
Okay.
04:08 → 04:12
And what about content loading and back end operations issues?
04:12 → 04:13
How to improve those?
04:13 → 04:18
There are plenty of solutions we can implement in this case actually.
04:18 → 04:23
Firstly, we need to reduce the number of external operations.
04:23 → 04:24
We might cache the m p three,
04:24 → 04:28
j pag or m p four files directly on the device for at
04:28 → 04:32
least a few hours after the user sees them for the first time.
04:32 → 04:35
The app wouldn't need to connect with the external
04:35 → 04:39
server then and all the content would display much more fluently.
04:40 → 04:43
Secondly, we can reduce background processes.
04:43 → 04:47
We have lots of calculations going on while the video
04:47 → 04:49
or the picture is being displayed.
04:49 → 04:52
What may help is splitting the process into smaller
04:52 → 04:56
pieces and holding only those operations that are crucial for
04:56 → 04:59
now and the nearest future.
04:59 → 05:02
Why download five lessons at the start when we are not sure
05:02 → 05:05
if the user goes for more than one at a time.
05:05 → 05:06
Right?
05:06 → 05:10
Adjust the app structure to do only essential things as
05:10 → 05:14
holding so many background operations is not necessary.
05:14 → 05:18
And lastly, the size and location of files matter as well.
05:18 → 05:21
In case of our language application,
05:21 → 05:25
we don't need the four k resolution for a simple word animation.
05:25 → 05:29
It's better to keep the files as light as possible to not
05:29 → 05:31
overwhelm the product.
05:31 → 05:33
If we can't make the file smaller,
05:33 → 05:37
it's worth putting it into the cloud and linking it within the app.
05:37 → 05:41
This might significantly shorten the loading time.
05:45 → 05:47
Alright. Let's talk about the last solution.
05:47 → 05:51
How can we ensure better performance on all types of devices?
05:51 → 05:55
There is only one main option that clients don't really like
05:55 → 05:58
and unfortunately skip pretty often.
05:58 → 05:59
Conduct more tests.
05:59 → 06:03
It's extremely important to test an app on all kinds of the
06:03 → 06:04
devices and systems.
06:04 → 06:08
It will guarantee greater stability of the product and
06:08 → 06:11
give you broader perspective of its performance.
06:11 → 06:13
Apart from testing on different devices,
06:13 → 06:16
it's worth conducting user and stress test too.
06:16 → 06:19
There is no better way of finding space for improvements
06:19 → 06:24
than asking our users, not only when it comes to performance.
06:24 → 06:26
Stress testing, on the other hand,
06:26 → 06:29
might help us discover the robustness and limits of the app.
06:29 → 06:33
Thank you, Matteoj, for sharing your expertise and helping us
06:33 → 06:36
understand the intricacies of software performance.
06:36 → 06:40
By now, it should be way easier for you to boost your mobile
06:40 → 06:42
application performance.
06:42 → 06:44
Thank you for watching and don't forget to check out more
06:44 → 06:48
mobile development related content on our Insights.



.avif)

.avif)
.avif)
.avif)