# Keeping 170 Libraries Up to Date on a Large Scale Android App

[Grab](https://yomu.fyi/company/grab) · Lucas Nelaupe · Oct 30, 2020

**Type:** Problem & solution

## Summary

Grab's passenger Android superapp relies on more than 170 in-house and open-source libraries, incorporating five to ten library bumps into each weekly release. Although developers often avoided updates due to the fear of leaking defects or crashes into production, the engineering team established a risk-assessment framework based on codebase usage and the volume of incoming changes. To minimize update diffs and avoid accumulating large issues, libraries are updated incrementally on a weekly cadence matching upstream release schedules. Automated UI test cases written in Gherkin syntax execute on CI for every merge request, while high-risk bumps trigger targeted QA manual testing. This structured updating process prevents defect leakage while keeping the application compliant with evolving Google Play target API requirements.

## Context

Managing over 170 external and internal libraries created risks of regressions and crashes during app updates, leading developers to avoid library bumps despite awareness of new releases.

## Approach / What changed

Adopted weekly incremental updates aligned with vendor release trains, automated UI tests written in Gherkin on CI, a risk assessment framework based on usage and change size, and targeted QA sign-offs for high-risk changes.

## Takeaways

- Updating dependencies incrementally on a weekly cadence reduces diff sizes and prevents the accumulation of breaking changes over time.
- Evaluating update risk based on library usage volume and incoming diff size determines whether additional QA manual sign-offs are necessary.
- Automated UI test suites running on CI provide the baseline confidence needed to merge library updates without relying solely on manual regression testing.

**Tags:** [Android](https://yomu.fyi/topic/android), [CI/CD](https://yomu.fyi/topic/ci-cd), [Testing](https://yomu.fyi/topic/testing)

[Read original post](https://engineering.grab.com/keeping-170-libraries-up-to-date-on-a-large-scale-android-app)
