Egor Tolstoy@igrekde@jetbrains In the last couple of months we’ve interviewed dozens of mobile developers. We wanted to understand why they choose (or don’t) to use some cross-platform technology, what are their goals, intentions and pains. And that influenced a lot how we see Mobile Multiplatform today.13:59 PM - 05 Dec 2019
This is an important discussion, not just for the people making the technology, but the people evaluating them too. Business context matters; team membership, recruiting and retention matter; technology, language, architecture, matters; and the community matters too. What else? And what matters to you?
Top comments (4)
I choose React-Native, a cross-platform technology, because of multiple reasons.
My customers want to save money when porting apps from one platform to another.
I only read bad things about cross-platform technologies like Xamarin and Cordova/PhoneGap.
I already used React for two years, when a customer asked if I could build them a native app, so React-Native was the natural next step for me.
I read that the React-Native approach brings good UI performance, because it uses native UI widgets.
I think, I would use a different technology for complex apps with custom UI interactions etc.
React-Native UIs can look very much the same on different platforms and many component libraries try to get rid of all the platform idiosyncrasies, but when the UI gets really custom (think "expert systems" like Ableton Live, Fruity Loops, Photoshop, Illustrator, etc.) it's better to render your own components that are the same on all platforms.
For such custom UIs I'd use something like Revery or Flutter.
Fantastic explanation, thank you.
We must also note that the cross platform solutions will never prevail over Native solutions. And I'm not talking about apps that have some CRUDs to do in specific servers but apps that have to do with Camera, Audio Support and other hardware support stuff (and for some platforms even maps).
However, if I client can't wait and the logic behind an app is not hard and complicated (even in architecture), the cross-platform solution server pretty well.
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.
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:
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.