Ebay engineers worked with Google to rearchitecture and reimplement their mobile app to take advantage of several new technologies, including Android app bundles (AAB) and Kotlin. They also took the chance to improve test automation, Continuous Integration/Continuous Delivery (CI/CD), and overcome global infrastructure limitations.
Our goals focused on modernizing the tech stack; decoupling the code; and providing for areas with low Internet bandwidth. We outlined a plan to move towards a proven, reactive-based Model-view-viewmodel (MVVM) architecture, which drew clear lines between often CPU intensive background work and UI updates that demanded seamlessness.
Android App Bundles aim to make downloading and installing apps faster by separating the publishing format (AAB) from the serving format (APK). This enables reducing binary size, delivering only actually required modules, and producing optimized resources and code for each user's device.
One of the main benefits of reducing downloaded APK sizes, according to Google, is user retention and better install conversion rate. Indeed, Google engineers measured a 1 percent decrease in the install conversion rate for every 6 MB increase to their app's APK size. Additionally, larger APK sizes would also significantly reduce the download completion rate. In particular, APK size is a concern for all users from emerging markets, both due to data cost and to storage space. In Ebay's case, by adopting AAB engineers could achieve 30 to 50 percent reduction in total disk space.
This has a very real impact on download and install conversion for every customer. However, reducing APK size opens entire global markets where data can be expensive and users limit app installs based on download size and cost.
A related advantage brought by AAB adoption is better support for app modularization, meaning only required modules are eventually downloaded to a user's device. Built on top of AAB, this feature is known as Dynamic Feature Modules, and makes it possible to, e.g., download only the basic features of an app and leave more advanced and expensive ones to a later moment. This is where the effort to rearchitecture the app comes into play.
With this approach, the application will comprise independent and interchangeable modules, each rigorously tested. Highly decoupled layers will have clear boundaries, a clean API and a single responsibility. This is preferable to monolithic framework libraries that are tightly coupled.
Thanks to AAB, modularizing an app does not only help its maintainability and understandability, it also directly benefits user experience.
Ebay engineers have been working for years to create new foundations for their mobile client and will continue exploring the possibilities offered by app bundles and dynamic feature delivery.