Multiplatform: Apple AppStore Thoughts

Apple has always valued great user experience. Its App store is guarded by App store reviews with the authority to reject anything that does not meet its standards. This must be considered when selecting a multiplatform solution. Jobs himself was known to have strong opinions about cross platform development and it’s effect on the user:

“Allowing Flash to be ported across platforms means things get dumbed down to the lowest common denominator. We spend lots of effort to make our platform better, and the developer doesn’t get any benefit if Adobe only works with functions that every platform has. So we said that we want developers to take advantage of our better features, so that their apps work better on our platform than they work on anybody else’s.”

Steve Jobs from “Steve Jobs” by Walter Isaacson

At the time Adobe had a tool to cross compile Flash code to native iOS. Apple banned apps from the App Store that used it. The same argument can be applied to Hybrid web apps, Flutter, Xamarin, or the handful of other crossplatform frameworks.

However, Jobs argument does not hold for Kotlin Multiplatform. It stands out when considering “not dumbing things down to the lowest common denominator”. Shared Kotlin code allows sharing logic, networking, models, and other abstractions while allowing developers to take full advantage of the native platform. Fully native iOS UIs are created with Kotlin multiplatform.

Jobs opinion is one well worth consideration when looking at multiplatform solutions. We should be asking ourselves:

  • Are we dumbing things down to the lowest common denominator?
  • Are we comprising UX by going with X solution?
  • How will this approach effect the user?

Keeping this mindset is best for your product and the users, but also will also keep you meeting the high bar of Apple’s standards and avoid being rejected by the App Store.

If your looking for a way to share code between iOS and Android (maybe even backend & web too) I recommend looking into Kotlin Multiplatform.

Software Engineer, Husband, and father of 2 amazing kids. Android, iOS, Kotlin multiplatform!! Maintainer of ReduxKotlin.org