A talk I presented at the Mobile DevOps Summit 22. In this talk I show ways to optimize native development to ensure that developing an app for the iOS and Android platforms natively doesn't mean that you have double the cost.
platform vendors intended it ‣Direct integration of device features ‣An Android UI that Android users expect ‣An iOS UI that iOS users expect ‣Best performance ‣No leaky abstractions ‣Small binaries ‣Large development ecosystem ‣Long term support 4 ‣Cross platform benefits ‣One codebase to rule them all ‣Common abstraction of device features ‣The same UI on all platforms ‣(Unless you spend additional time) ‣Not limited to iOS/Android ‣e.g. Flutter on web
to maintain ‣Needs separate testing for Android and iOS 5 ‣Cross-platform drawbacks ‣3 stacks to master ‣Needs separate testing for Android and iOS ‣The same UI on all platforms ‣Feels ‘off’ to experienced users ‣Performance ‣Lack of longevity ‣Cordova now considered ‘legacy’ ‣ReactNative losing ground to Flutter ‣Reduced older OS version support
engineer cooperate on the technical design: ‣One datamodel for Android and iOS ‣One definition of business logic ‣One approach for backend integration 11
/ ViewControllers ViewModel ViewModel Repositories / Data Classes Storage { } Swift Kotlin { Some shared language Device features Device features { Swift }Kotlin
stacks to master ‣ Relatively complex ‣ Very performant ‣ Small footprint ‣ Tough to find devs Go ‣ 3 stacks to master ‣ Bigger binaries ‣ Popular language ‣ Good performance ‣ Easy to learn Rust ‣ 3 stacks to master ‣ Good performance ‣ Suitable for backends too ‣ Tough to find devs
but overlap ‣If shared core pushes the native code mostly to the UI, then the porting effect of async development is damped a bit In our experience a 1.3-1.6 factor is definitely feasible! 28
the total size of a project: ‣4 person project + separate iOS / Android devs = meh. ‣Additional cost factor of doing native (without the optimisations in this talk) = ~ 2 ‣60 person project + small number of programmers , doing +2 devs to be able to remain native = sure, why not. ‣Additional cost factor of doing native (again without optimisations) = ~ 1.03 30
platform is also determined by: ‣Existing skills in team ‣E.g. a team coming from web development will be faster in React Native ‣Nature of the project ‣A throw-away… marketing… ui-only project will benefit more from cross platform ‣A strategic app with years of support will benefit more from native 31