DEV Community

I've seen heaven. And it's written in JavaScript.

devtouser432 on October 24, 2017

Why React Native is the Future I have a weird way of describing software. And you’ll either know what I mean, or you won’t. It’s sort of...
Collapse
 
ben profile image
Ben Halpern

I definitely feel you on the "feeling" thing. Software development can be visceral.

Collapse
 
devtouser432 profile image
devtouser432

It's tricky because weight is the end result and as far as I can tell, cannot be controlled during development. Standard Notes feels very light on Desktop, and I'd actually like for it to feel a little heavier. But there doesn't seem to be any one thing I can change to take it towards that.

Collapse
 
ben profile image
Ben Halpern

I've started using Standard Notes (and will probably become a paying customer in the near future) so I'll be sure to provide feedback and/or code contributions.

Thread Thread
 
devtouser432 profile image
devtouser432

Awesome!!

Collapse
 
nadangergeo profile image
Nadan Gergeo • Edited

Ditto :D

Collapse
 
a_reiterer profile image
Andreas Reiterer

This article literally made me want to create a React Native app 😀
Great Read! Thanks for that!

 
ben profile image
Ben Halpern

What do you think of the prospects of being an early Flutter adopter? I'm willing to play with it but I'm not sure how invested I want to be in an alpha project at this point.

Collapse
 
kayis profile image
K

Could you elaborate?

I read about Flutter, but while Dart seems superior to JS, it somehow didn't really catch on.

On the other hand, FB has re-written >50% of its Messenger in Reason, a language which is also superior to JS and not wide spread.

Collapse
 
slmyers profile image
Steven Myers

Determining language superiority sounds hard. How do you do it? /sarcasm

Collapse
 
twigman08 profile image
Chad Smith

Good article. The thing that keeps me from going all in with React Native, or really any other JavaScript application is the setup.

Set this congig file up, set this json file up, run this command. Make sure you have this set. But If use a totally different set of tech those configs and json files are totally different.

Example: I tried to get started learning react native on my windows machine. I have done plenty of mobile work before. Native Android, Xamarin, and even Flutter. In all 3 ways I was up and going pretty quickly. No issues. React Native on Windows? I have followed documentation from Facebook on Windows (horrible, and there are plenty of articles online about that) plus other articles on setting it up. Spent 8 hours on it to finally get a hello world app going on Android using Windows. It kept complaining that Android was not installed, yet Android Studio, Xamarin, Flutter, had zero issues finding the default installation directory. It also didn't seem to like the latest version of the JDK I had installed.

Honestly setup is a very important feature for a piece of tech or language. If it's frustrating I don't want to fight with it. I want to develop and solve actual programming issues.

Next time I try React Native out again, hopefully it won't take me 8 hours to get it setup and running and I can actually roll my sleeves up and spend time learning it. Until then I think I'll stick with Xamarin for my enterprise level apps and Flutter for experimenting.

 
zoechi profile image
Günter Zöchbauer

Flutter seems to be about to go beta.
I'm working on a Flutter project since 09/2017 and it's working great and you get real native apps.

Collapse
 
cmilr profile image
Cary Miller

Really nice write-up... while I don't find Swift particularly esoteric or difficult (it feels really intuitive to me,) I've been intrigued by React Native, and you've piqued my interest even more. Thanks!!

Collapse
 
sahilakos profile image
Sahil Saini

Nice work Mo. I couldn’t agree more. We launched an iOS+Android App build on React Native within 10 weeks (including ideation and all pre-dev setup). There were challenges and seemingly moments of doom, but nothing that couldn’t be fixed with a little extra effort. We had considered using other frameworks or even separate code bases but with a tight timeline, budget and resources at hand, we took a chance on React Native without any prior experience in it. At the end, it worked out really well. Product was launched right on dot for both platforms and better yet, maintenance has been a breeze.

Collapse
 
devtouser432 profile image
devtouser432

I did forget to mention that—maintenance is blissful! (So far)

Collapse
 
danielw profile image
Daniel Waller (he/him)

What are your thoughts on the whole ecosystem surrounding Javascript?
Personally the thing I find most off-putting about react native (and js projects in general) is that rarely anything just works right away and I spend a lot of time in config jsons using trial and error + copy&paste from the web with no real idea what I'm doing.

Collapse
 
devtouser432 profile image
devtouser432

That wasn't really my experience. Everything just worked for me. I ran into obstacles, but nothing that eventually stopped me from shipping the product. The great part is you can always fall back on native code if it starts acting goofy.

Collapse
 
jpenuchot profile image
Jules Pénuchot

In 2018, having a bunch of React Native apps that take seconds to load with an SSD and an i7 when all they do is sending messages and editing text makes me feel like we've taken a few steps backwards.

Collapse
 
sambenskin profile image
Sam Benskin

Great read, thanks for sharing your experience.

I totally get the light and heavy feeling. For me it's user interfaces in software. If it's hard to use, navigate or understand, it feels heavy and more like work. When it's clean, well designed, looks good and is properly architected it feels "light" and fun.

Definitely going to use React in future projects.

Collapse
 
richjdsmith profile image
Rich Smith • Edited

"Chrome is very light. Safari feels heavier. And Firefox feels the heaviest."

Haven't tried the new Firefox then, have you? Ever since the Quantum upgrade in November, it has become my daily driver. Chrome feels fat comparatively. Give it a whirl, it will likely surprise you.

Thanks for the great article though!

Collapse
 
bernhardwebstudio profile image
Bernhard Webstudio

Nice article, thank you for introducing me to react native. What would you name as arguments to use react native instead of Phonegap/Cordova?

Collapse
 
stecman profile image
Stephen Holdaway • Edited

We had a project that was originally written using PhoneGap/Cordova + React, and later rebuilt using React Native when Android support first came out. From that experience, I'd highly recommend staying away from Cordova for any serious projects.

The biggest pain with Cordova for a sufficiently complex app is that you end up fighting the same browser support battles as regular web dev, except it's much harder to support all the WebViews because there are so many variants and versions in use with their own feature support limitations, rendering bugs and behaviour quirks. You end up with a whole lot of targeted CSS to get roughly the same appearance on a range of devices (that you have to keep going back to each time a new inconsistency is spotted on a popular device), and rewriting behaviours in different ways to work around quirks on specific devices (Samsung devices with their Samsung browser were notorious for touch, input and rendering issues in our experience).

On top of this, even with decent lag-free touch handling like React-Tappable offers, the app still looks like a website stuffed in an app; unless you're targeting one device, not having physical units means the app always looks different on different devices due to different DPI.

Interfacing anything native with Cordova was also a bit unstable in our experience, but that's nothing compared to the maintenance hell it led us to.

React Native worked consistently and performantly across devices of all types and versions for us.

Collapse
 
devtouser432 profile image
devtouser432

Not too familiar with either of those, but if I recall correctly, both of those are webview based wrappers, and not actual native code.

Collapse
 
danidee10 profile image
Osaetin Daniel

I think i understand what you mean by Heavy...Heavy == Smooth For me, Even though Chrome uses more RAM than Firefox, It still Manages to be smooth and Responsive.

Firefox can be very clunky sometimes (When multiple tabs are loading content)

Btw Nice Article :-)

Collapse
 
devtouser432 profile image
devtouser432

Thanks!

Collapse
 
cassidoo profile image
Cassidy Williams

Fun read! Excited for you :)

Collapse
 
devtouser432 profile image
devtouser432

Thank you!

Collapse
 
zoechi profile image
Günter Zöchbauer

I prefer Flutter with Dart by far

Collapse
 
adrian5692 profile image
adrian5692

There's also the Xamarin Forms alternative for .NET developers, but I found it pretty tricky to do certain cross functionalities. It compiles native too

Collapse
 
alejandrofdiaz profile image
Alejandro

how do you style your application for both Android/iOS? something like IONIC or Framwork 7?

Collapse
 
ryhenness profile image
Ryan

Great read! I’ve taken a glance at Electron before, and this article has definitely opened my curiosity back up for cross platform JS, thank you. :)

Collapse
 
devtouser432 profile image
devtouser432

🙏

Collapse
 
darshansharma profile image
Darshan Sharma • Edited

I am feeling light now. lol
Everything you had written, I can relate.

Collapse
 
brunolm profile image
BrunoLM

I've had quite some issues to create unit tests and with the navigation component that doesn't work for some people.

Native feels way too beta...

Collapse
 
ezequielfalcon profile image
Ezequiel Falcón

I'm into Angular right now... and sometimes this feeling of never settling with one framework and going through all of it scares me.... but then I think... 'Never settle' ;)

I buy it

Collapse
 
danakachan profile image
Dana Kachan

Perfect title :)

Collapse
 
avinasha profile image
Avinasha Shastry

I love the way you explain the light --> heavy application! I feel it too! Thanks for a great article! I am getting into React Native. Your source code is a great way to learn!

Collapse
 
devtouser432 profile image
devtouser432

Glad it's useful!

Collapse
 
musa profile image
Musa Barighzaai

Hi Mo,

Any recommendations for learning React Native for React DOM devs?

Collapse
 
devtouser432 profile image
devtouser432

Hey, I've only dabbled briefly with React, so couldn't offer specialized advice. But, they're mighty similar, so you should feel right at home.