When starting off with a small app, manual testing each release is a viable path. As the app grows, this effort gets more tedious. At scale - an app that’s releases weekly, with a large number of engineers working on it - this approach will break down. The goal at scale is to always have a shippable master with zero - or as close to zero - dependency on manual testing.
...
Both iOS and Android offer opinionated ways to implement localization. iOS supports exporting localizations for translation, while Android builds on top of resource strings. The tooling is slightly different, but the concept is similar. To localize your app and define the strings, you want to localize and ship the localized strings as a separate resource in the binary. Still, with large apps and many locales, you quickly run into challenges with this workflow.
...
Navigation within mobile apps is an underrated problem, similar to deeplinking. This is an area that engineers tend not to pay attention to with a small app - only to realize it’s a beast that needs to be tamed, as the number of screens and transitions grow. Both iOS and Android provide basic navigation concepts and leave putting navigation architecture up to developers. In turn, we tend to reinvent the wheel on navigation, both out of necessity, as well as due to the not invented here syndrome.
...