A few days ago, I started using Facebook's React Native. I had an idea for an app, and decided to give RN a try. I installed it, and tried to run the "example application", and could not figure out how to open the Developer's Menu in the Android Emulator to reload the code. Looked it up, and couldn't still open the menu. (BTW: I was on the right page, but didn't read it properly) So I immediately quit the emulator, uninstall everything, and go back to the Android Studio. Spent an hour creating some layouts, and an adapter for a list view, and went to bed. Next day, I wake up, and decide to give React Native another shot, because the layout that I made was bad, and it took me an hour to make it... Install everything again, and here we go, let's test the example application, change some code and try to open the menu, I glance at the same page, that I saw the day before and voilà, there it is the shortcut to open the damn menu... Great, let's see how fast I will be able to create something.

First Steps

I fire up Atom, and start changing some code to see how everything works. Since RN is programmed mostly in JavaScript, it's not difficult to get started. I create a simple component, import it, and it works great. The hot reloading is very fast.

I decided I needed some way to organise the code for the app, because it will have many different views and components. With a quick search I found this guide by [Spencer Carli], on the structure of a RN & Meteor project, I reproduced the structure, and went to work. In a few hours, I had the application, with a list view, running great with a much nicer layout. The project is now stopped for a few days, because I went trough two different sortable list view components that did not work as well as I wanted them to, and I needed to reevaluate how to do the layout properly.

Getting More Advanced

In the mean time, I started working on another idea, for a more connected app. It uses web sockets to communicate with a server and fetches some data. It works really great. Except the part where it spawns a connection every time the component hot reloads, and it doesn't close the previous one, that is something that needs some work from my part. I even added text-to-speech to see how it worked, and it is great! I am now ready to try and create my own sortable list, with some special features that I need for the other app to work correctly.

Overall, the experience has been great so far, even though I think I waste so much time, looking at the application, because I save some edit, go check how it looks, change 1 or 2 lines of code, save, and repeat... Another thing I found, is that I don't like the separation between the logic and the view that the guide mention above does for the routes, it's much easier to write everything in the same file, in my opinion. Other than that, I think React Native, is great to develop applications easily, and offers the possibility of not having to right different code for different platforms (except if you want something that requires native functionality), which is great.

These are some of my thoughts about React Native right now. I will keep using it for the time being, and see where it leads. If you liked this post or have any question, please hit me up on twitter @AndreBaltazar.