Kodeco Forums

React Native Tutorial: Building iOS and Android Apps with JavaScript

In this React Native tutorial you'll learn how to build native iOS and Android apps based on the hugely popular React JavaScript library.


This is a companion discussion topic for the original entry at https://www.raywenderlich.com/485-react-native-tutorial-building-ios-apps-with-javascript
2 Likes

As kind of a meta question, isnā€™t React Native falling out of favor? Some reasons I saw are from multiple sources and were like:

  • Daunting patent license
  • Tools are not as good
  • Documentation issues and people having trouble googling for solutions
  • ā€œuncertainty about its long-term roadmapā€

The patent license concern is expressed in this quote:

Iā€™m not a lawyer, so Iā€™ve asked a lawyer to help me clarify this (and if youā€™re not a lawyer you should too). According to him, that clause boils down to this: if I initiate any lawsuit alleging patent infringement against Facebook, my license to use React Native would be immediately terminated.
By implication, it also seems to give Facebook a good deal of breathing room to infringe my patents

Quotes:
ā€œā€¦for much of the functionality that an app may require, you have to resort to third party components or build your own.ā€ ā€“ https://kelvinpompey.me/tempted-to-abandon-react-native-for-native-android/

Thereā€™s a follow up article talking about the performance and the authorā€™s confirmation that heā€™s ā€œā€¦still determined to explore native Android further. ā€

ā€œā€¦documentation may be lackingā€¦ā€

As another experienced developer said to me, (paraphrase): In generalā€¦ If you write something with a JavaScript framework, be prepared to rewrite it to work with a new framework in just a couple (few?) years.

Summary
Sorry this is so long. However, I want to really understand where React Native is going in a few years and the long term vision.

IANAL so I wonā€™t tackle the license question.

ā€œTools not as good.ā€ Iā€™m assuming youā€™re comparing to Xcode? I like Xcode a lot but I also love how fast I can spin something up using React Native. I find developing with React Nativeā€™s tools works well for me. Features like the Redbox that shows you errors while debugging are great for quick feedback and being able to debug via Chrome-like developer tools is sweet. I personally use Sublime, Atom or the Nuclide editor. Microsoft has integration for RN in VSCode. Expo has built tools around developing with RN. JetBrains added support for it in IntelliJ. It may help to know more about what tools are lacking. I find this to be a continually improving area.

The docs were revamped last year and thereā€™s constant work going on to improve them. The community is also doing a great job pitching in and helping out.

A roadmap was published last year. I heard this complaint in the past before that was done. So that may be a throwback complaint.

Thereā€™s a lot of threads here that Iā€™ve seen answered on the web regarding performance, long term support, whether RN is right for you, etc. RN may not always be the right solution for a given problem, however many people have adopted it for the speed of iterative development, native app user experience, and cross-platform support. Itā€™s worth exploring, so you can try it out and ultimately youā€™ll have to make up your mind to see if itā€™s the best fit for your use case.

Thank you for addressing the concerns so rapidly. This is exactly the kind of information I was looking for. Itā€™s too bad about the license situation. That stops it dead right away for any commercial work I do. However, perhaps it will change down the road.

I canā€™t successfully build the initial setup. I keep getting this error:ā€˜React/RCTBundleURLProvider.hā€™ file not found.

Is this after youā€™ve ran the command:

react-native init PropertyFinder

And are building from Xcode?

Could you also comment with your Xcode version, the version of React Native running (you can find this by looking at the package.json content).

You could also try following the proposed fix mentioned in this issue.

Another good resource to check is some of the answers on Stack Overflow.

Hi yes I am using Xcode beta 9 version 4.

The fix that you mentioned worked. Thanks!
Another issue that I had was being thrown by a space in one of my sub directories.

Hey guys,
Thanks for the awesome tutorial.

I am a web (non-react) developer but not an app developer and have gone through tens of tutorials over the web.
Some of them would break majorly at a particular step or would jump over important bits ā€“ or would be too simplistic.

Your tutorial was perfect! It covered enough to build a proper app and worked every step of the way.
Kudos to the everyone who worked on this. You guys did an awesome job!

Hi - thanks for the great tutorial. I was hoping that you could help me troubleshoot a problem I am having - I am sure that I missed something simple, but I am pulling my hair outā€¦ :slight_smile:

I am using XCode beta 4, and my node and react native versions are up to date. When I press ā€œGo,ā€ the simulator tells me that the location is not recognized. The XCode debugger has the following message:

2017-08-08 10:07:13.432 [info][tid:com.facebook.react.JavaScript] https://api.nestoria.co.uk/api?country=uk&pretty=1&encoding=json&listing_type=buy&action=search_listings&page=1&place_name=undefined

I canā€™t figure out why the place_name is undefined! The text field for the search is filled with ā€œlondonā€ when the simulator starts. Any ideas?

Thanks a bunch.
Regards,
Mike

That is odd. Does it work if you change the text in the simulator to something else, say ā€œmanchesterā€ before tapping Go?

You may also want to compare your project with the final project to see if they match, specifically the SearchPage.js file.

Yes, I changed the city, and still no luck. I used Kaleidoscope to diff my Search.js file vs the completed project, and there were no differences. The only thing I can think of is that I am running Little Snitch, and it may have blocked the attempted connection from the simulator to the API, but I temporarily stopped the Network Monitor and tried again - and I got the same result.

Very perplexing.

Regards,
Mike

While I think of this more, are you able to run the completed project included in the tutorial and does that give you the same error?

Good question. Tried that - same result.

I figured it out! I did have a typo in _onSearchPressed. The second argument for urlForQueryAndPage was this.setState.searchString, not this.state.searchString. I feel foolish. Thanks for helping!

Regards,
Mike

Ok, good that you figured it out. I was stumped since you said the final project downloaded gave the same result.

Thatā€™s true, it did. Maybe I thought I was running the downloaded project when I was actually running my project (same name). I feel even more foolishā€¦ :slight_smile:

Hi, thanks for making the tutorial itā€™s been really helpful. I am trying to do the challenge without checking the answer. I managed to navigate from a listview item to a new component but I canā€™t figure out how to access data in this component. Here is my component when I select the cell.


Hereā€™s my code.

My question is, I how do I access data in the cell component? When I try and pass props to it such as this
passProps: { listings: response.listings } it doesnā€™t recognize the object

Hi, thanks for the tutorial but Iā€™m facing an issue while trying follow it step by step, Iā€™m totally new and I donā€™t know how to deal with it. The error occur after I create SearchPage class and edit render function of PropertyFinder class. Can you take a look?

@cabernathy Can you please help with this when you get a chance? Thank you - much appreciated! :]