DEV Community

Discussion on: Why did you (or not) choose cross-platform mobile technology?

Collapse
 
piannaf profile image
Justin Mancinelli

cross platform solutions will never prevail over Native solutions

For UI: I agree. For logic: C, Python, Ruby, Java, etc prevail over asm...until you get into very specific performance or system architecture issues (e.g. the linux kernel is cross platform, but there is also some asm for some things)

As @kpgalligan likes to say "Shared UI is a history of pain and failure. Shared logic is the history of computers."

Kotlin Multiplatform took the shared logic approach.

  • It is first-class on Android so you already have that platform covered.
  • It compiles to a standard ObjectiveC framework on iOS so it's like any other external native iOS library (Swift support in the works).
  • It transpiles to JS (kinda like TypeScript) for use on the web so it fits in with "native" web development too
  • And besides all the other compilation targets, JetBrains just announced much improved Wasm support for anyone who's interested in Wasm as the next important layer of a cross-platform stack.

apps that have to do with Camera, Audio Support and other hardware support stuff

Definitely, and that's something learned by Kotlin Multiplatform. "Unlike other "cross platform" ecosystems, Kotlin is designed to embrace the native platform it is integrating with."

From UI to hardware, no matter the solution, I totally agree with Ellen Shapiro:
Cross-platform is not an excuse to ignore the platform

if I client can't wait

Totally agree in this case. If the client can't wait and your core skills are JavaScript or .NET or Dart then it will be faster to make a Cordova, or React Native, or Xamarin Forms, or Flutter app than learn Kotlin and swift and the rest of the native ecosystems. It will then be up to the client to continue with those technologies or to port to a fully native app (and I have seen first hand when clients wait too long before porting to native)

There are increasingly more native mobile developers (those who develop for both iOS and Android). I have worked with a few, met many at conferences, and seen many on Twitter. It will be faster for them to develop fully native apps than learn (and deal with the issues of) a new tool. And, when they learn to architect for common Kotlin code, they'll be even faster.