So. I am a proficient iOS/Swift developer and I am keen to develop an app on the Android platform.
However. I am also a realist and I know that the time available to me is limited.
Q : Will my time be better spent learning React-Native - or - Android Java/Kotlin?
Top comments (14)
Thanks everyone for the comments so far.
I've been clicking the links and watching and listening.
I decided I'll have a go with each - just for a day or two. I am sure one or the other will strike a chord with me and that's the direction I'll head.
To mention.....
In a past life I managed a Cordova mobile project. It went well. However It was not until later when I managed a native iOS project and that I came to realise that the Cordova project had used more than twice the effort we required for something similar with the native iOS project. My tendency since is native. Not hybrid. Or interpreted to native.
Some feedback on my playing with each so far.
The ceremony regarding how to configure my laptop for React-Native. Poor. Very poor. Confusing and too many fragile dependencies. I was not liking that until I came across Expo - and that has made it possible for me to continue investigating React-Native. I'm following the course that @Aaroh recommended - it's pretty good.
Android Studio. Without doubt they need to cut AT LEAST 50% of the cruft from that interface. Terrible. That alone will put me off. I've yet to begin a tutorial series. If someone has a recommendation please let me know.
Again. Thanks for the feedback and comments so far.
If you aren't into ceremony, look at expo.io
As someone who has tried to learn Android development from scratch with both approaches (native Android and React Native), I preferred React Native by far!
To me, React Native just has a much nicer ecosystem to develop around. The folks at Expo make some of the best development tools I've seen, and as an added bonus you get the awesome open source component library of React and React Native.
If you want to get started with React Native, I can't say enough good things about this course: React Native Basics: Build a Currency Converter
Thanks Aaron - I'll check out the link.
You cannot beat the native development when you have a CUSTOMER FIRST approach. The performance and user experience provided by native development cannot be provided by any other forms of abstractions.
If your time is limited, then I would say React Native all the way. I started doing mobile with Java and Android Studio, but when I changed to RN, I was amazed by how easy it was to start building the app. Expo makes it all really quick, since you can just go to snack.expo.io and start coding without having to import/setup anything. And if you need to import something, you can do it directly on the code, and it's immediately added to package.json (same if you delete a dependence)
Also, I don't know what kind of computer you have available, but with mine it was absolute hell every time I needed to open Android Studio (leave alone debugging or using the Simulator)
This question is never going to be fully answered because there are so many variables that will be defined by whether you should build using React Native or the Native language itself, if you're really interested in how the field of React Native differs from Native Android I'd recommend listening to this episode of Fragmented (fragmentedpodcast.com/episodes/108/). With Native development which is where I focus my time you can do a lot of really awesome features that React Native would not allow you just because of the ecosystem that surrounds Android development.
After that novella, I'll just say that I lean more towards to Native Android development unless you dont have the resources to dedicate a devoted iOS team to an iOS application for cross platform use.
Has a lot to do with the kind of app you're building.
If you're going to be relying on a lot of native device features : camera, bluetooth and that kind of thing, I'd say you go in and build your first app as an Android Java one.
If not however, then I think React Native would be the thing to dive in to, especially if you have Javascript framework experience beforehand, because it's just much more fun to do.
If you've done stuff with JavaScript before and are familiar with some of the build tool ceremony required around it then I'd say you'll be quicker in getting results trying react-native.
If you're completely new to both I'd say probably better try kotlin. It'll probably be less of an uphill battle especially when you've used swift before.
My situation is the other way around. I'm an Android dev familiar with both Java and Kotlin and some general js experience as well as some react-native under my belt.
Personally, if I would be tasked with writing an Android app I'd go with native cause I know how to do it and will be more productive. But if you ask me to write an iOS app I'd rather use react-native than learn the whole native stack + a new language.
This is of course only from the angle of productivity. If it's more about what's interesting and maybe a more valuable skill in the future, I'd personally rather go with kotlin/swift respectively.
It depends on your background and the type of app you are building.
Here is an interesting comment on reddit that might help you.
Depend on cases.
In case of building an MVP fast to study the viability of a concept. Ill run to React Native without thinking. Its styling is so good to work with.
In case of production where maintenance is key (boring work) im confortable in dealing with java android apps.
+1 on this question; I would love to hear answers on this!
(Also, adding a #help or #discuss tag would probably generate more answers :)
It is better to learn Kotlin/Android cuz it is native language for Android .