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...
For further actions, you may consider blocking this person and/or reporting abuse
I definitely feel you on the "feeling" thing. Software development can be visceral.
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.
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.
Awesome!!
Ditto :D
This article literally made me want to create a React Native app 😀
Great Read! Thanks for that!
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.
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.
Determining language superiority sounds hard. How do you do it? /sarcasm
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.
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.
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!!
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.
I did forget to mention that—maintenance is blissful! (So far)
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.
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.
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.
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.
"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!
Nice article, thank you for introducing me to react native. What would you name as arguments to use react native instead of Phonegap/Cordova?
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.
Not too familiar with either of those, but if I recall correctly, both of those are webview based wrappers, and not actual native code.
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 :-)
Thanks!
Fun read! Excited for you :)
Thank you!
I prefer Flutter with Dart by far
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
how do you style your application for both Android/iOS? something like IONIC or Framwork 7?
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. :)
🙏
I am feeling light now. lol
Everything you had written, I can relate.
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...
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
Perfect title :)
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!
Glad it's useful!
Hi Mo,
Any recommendations for learning React Native for React DOM devs?
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.