Mercado Libre Android app is on a diet: Dynamic Features

First things first. Let’s talk about what is an Android Dynamic Feature, what can we do and what we wanna achieve.

Rodrigo Pintos
Mercado Libre Tech
3 min readNov 23, 2022

--

Read this story in Spanish.

Hello everyone! Welcome to our series of articles on dynamic features.

On this occasion, we would like to tell you about our path for improving our users’ experience by gradually lowering the installation and download weight of our Mercado Libre and MercadoPago applications.

You may already know, be it as users or application developers, how important it is for applications to take up as little weight as possible on our phones.

Currently, Mercado Libre has at least 5 native applications aimed at users of which roughly 120 million are active. This is the reason why we pay special attention to the evolution of the weight of our applications.

Until 2018, we had been successfully attacking the points related to the weight of applications with optimization and obfuscation tools for code and resources such as images or assets, xml, etc.. Yet, we all know applications are evolving but this evolution comes with new features that go hand in hand with the side effect of increasing their weight.

That same year, Google released Dynamic Features, a tool that has allowed us to continue improving the weight of our applications while at the same time enhancing UX experience.

What is Dynamic Features?

It is a Google service that, together with Android App Bundle, offers users the possibility of downloading part of our code and resources dynamically to their device. This functionality is provided by Google through the dependency: com.google.android.play.core

What is App Bundle?

We have been working with App Bundles for some time now so in this section we are going to provide you with reference to the official documentation in case you want to do further research. App Bundle is the upload format with .aab extension that includes all the resources and code of an application, but unlike the APK, it is not an installable.

For more information, we leave you the link to the official Android documentation.

But what do we achieve with this?

Increase speed and build time, resulting in higher install conversion rates and a better user experience. And best of all, we ensure that the user can download the application even if they have little space on their device or do not uninstall us for consuming the most space.

What types of dynamic installations does Google offer?

When Google released the functionality of Dynamic Features, it did so with 3 different types of installations that adapt to different needs: install time, conditional delivery and on-demand. Let’s see each in detail.

Install Time

Installation of packages at the time the end user downloads the application from PlayStore; generally this mode is closely related to Conditional Delivery to be able to apply certain filters at installation time.

Conditional Delivery

It allows you to set certain device configuration requirements so that feature modules are automatically downloaded during app installation.

OnDemand

On-demand feature modules allow you to separate certain resources and features from your app’s base module and then include them in the app package based on a controlled action.

For more information, we share the official Android documentation.

To sum up

We were clear about the need to improve user experience with this new Google tool, aiming at the end user having at their disposal only what they can use within the application without consuming unnecessary resources or space.

How do we apply this definition bearing a clear objective?

Now, taking into account the objective we are aiming at and our knowledge about the tool and its different types of installation, we set out to put together the plan to apply in our applications.

Do you want to know how we’ve put all these concepts into practice within not only one but two large applications such as Mercado Libre and Mercado Pago?

In our next story, we will be telling you:

  • how we’ve applied Dynamic Features in Mercado Libre,
  • what changes we’ve implemented at the architecture level,
  • how we’ve analyzed general points such as external navigation and dependency management,
  • how they coexist between dynamic modules and the base application, different modes of compilation with assembly and bundle,
  • when and how we know when a module should be dynamic among several other things.

Enjoy!

--

--