It’s finally time to start building apps with JS
During one of our hack days at GoSquared I decided to play with one of the latest of Facebook’s numerous open source endeavours. Having already gained a reputation in my team as a React fanboy, I decided to take my enthusiasm a step further and attempt to build an iOS app in a day using React Native.
An appropriate response imho
Native isn’t really native
What you do get is an actual native app. The
- My fellow React fans will rejoice in the simplicity of React’s UI management applied to a native app
- Facebook have covered 90%+ of the typical app needs and the open source community is busy building the rest
- If your team uses React in your web application and the wonderful Redux then React Native will be music to your ears. You might not use the same codebase between your web and native apps but all the proficiencies and techniques apply.
- Live reloading is awesome and fast. Going back to having to wait even a few seconds for Xcode to build makes me shudder…
Remember that React and React Native are still 0.x releases so these are likely (I would think certain) to be remedied with Facebook’s aggressive development.
- Your app will feel native but you’ll struggle to match the default style. I personally don’t mind this as most popular apps often work hard to deviate from the default UI but if you want your app to look like a stock Apple app then it is probably better to stay fully native.
- Animations are sometimes painfully slow. Whereas in most cases my hackday app felt snappy and native, implementing animations was far trickier and janky. This is high priority for Facebook however.
- Navigation is still awkward. Version 0.21 added a new experimental Navigation component that might be the start of the solution but it is arguably the most un-native part of a RN app.
- Android has come slightly later to the game. It is certainly catching up (and adding the cool Android specific abilities) but its not quite as impressive as the iOS side yet…
In React Native’s current state, it is really a question of your team. If you have dedicated Android or iOS devs then you should probably stick with that. If however you are mainly a JS team, especially if you’re already using React, then the speed at which you can build a quality native app is staggering and the ecosystem is only getting stronger. I urge anyone who is on the fence to take a hackday out to build an MVP of your product and I think you’ll be pleasantly surprised by the results.
P.S. If you’d like to see a production example of what can be done with React Native check out the fantastic Discord iOS app, that I believe is built entirely with React Native. It gives some of the best fully native apps a run for their money…