It is a truth universally acknowledged, that a business in possession of a good mobile app, must be in want of an iOS and Android version.

Yay!

Business logic, implemented once, wrapped in a quick, native feeling user interface is what most businesses want.

But how difficult is it?

Until last year, my company only had a native iOS version of our main app, Easy Diet Diary. A general-purpose Australian diet tracker with special versions for research and for people unlucky enough to have renal disease. The app has:

75,000 lines of Objective C and Swift code as per cloc

an Amazon AWS backend: DynamoDB, Postgres and S3

22,000 daily users and 1.25 million downloads

Then Flutter came along (Beta 2 April 2018)

It ticked enough boxes (cross-platform, good performance, quick to implement, native feel, open-source) for us to try and build a single Flutter version for iOS and Android.

After six months I released a Google Open Beta without resorting to native code. I wrote about the experience here.

This article is about getting from Open Beta to a:

released Android version in Google’s Play Store.

drop-in replacement for the original native iOS app in the App Store.

This is what I found: