Improving the performance of a language mobile app | How we do IT #2

Performance problems in mobile apps compound quietly — by the time users notice, the damage is already done. This "How We Do It" episode from Merixstudio covers the tools and methods the team uses to catch performance issues early, fix them systematically, and keep them from returning.

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.

Let's connect and build together