Ever since Facebook announced at F8 that React Native was open and available on GitHub early in 2015, the framework adoption rate has never slowed down. React Native, the next-gen of React (a JavaScript code library developed by Facebook and Instagram), is one of those ‘treats’ few IT companies can go past without giving it a try. CodeTiburon wasn’t an exception.
The thing is, React Native aligns so well with key business goals:
- Code reuse
- Faster to market
- New dev experience
- High quality benchmark
Inspired by success stories and eager to join the ever-growing community, we decided to venture into the unknown.
First encounter with React Native
Software engineers always stay up-to-date with technology. So no wonder that the first encounter with React Native came not long after the code was released on Github.
Vitaliy
‘A surefire way of learning the technology was FB’s official documentation. Among the things that impressed me were:
- streamlined and developer-friendly IDE – with a CLI that enables to deploy, compile, and start a project by a single command;
- local dev server with hot reload support that allows to see change results at a fly;
- possibility of integration – to test on real devices.
That’s to name just a few.’
You won’t experience the lack of learning materials on RN. There are plenty of examples on Git, a forum with multiple live discussions on StackOverflow – in case you need a helping hand.
The learning curve for React Native is pretty steep, which is nice. Documentation study, a bunch of articles, video tutorials. And we’re all set for the first project.
First apps: our projects
Our two projects with React Native were Timeko (an instant messaging mobile app to facilitate a recruitment platform) and ProposNature, for which we used Redux. Their first versions were developed for iOS and Android platforms. With new versions, we opted for RN.
Alexey
‘The framework gives a huge advantage of speed by developing for several mobile platforms simultaneously.’
Switching from Titanium to React Native
Cross-platform frameworks weren’t some new experience for us. Before React Native, we worked with Titanium and PhoneGap. Some factors spoke strongly against the use of Titanium in new projects:
- community discontinued support for many components
- low performance, laggy user interface
- flexibility limitations
At first glance, you fall for Titanium’s well-defined API and the simple property to enable behaviors that would require several lines of code on Xcode. But not until you discover strange bugs and limitations. For example, if you want to apply a cell background gradient to a grouped table (a very common and easy task with Objective-C) you get that the grouped table becomes plain and the gradient color makes the table slow when scrolling, and you will have to use images… All in all, Titanium Appcelerator wasn’t our idea of a cross-platform framework. The simplicity and time economy are delusive and you splash out on fixing and workaround with more complex solutions.
It was time we looked for better solutions. React Native was a nascent framework. We decided to give it a try.
Alexander
‘We looked for something ‘live’ with vibrant community. Out of the two variants – React Native and Native Code – we chose the former, as it was used in many popular mobile apps, like Facebook and Twitter.’
Using Redux to solve complex problems
The use of tools is not a luxury but a necessity. Product evolution is dictated by real needs of its users, so over its lifecycle various problems arise and ask for optimal solutions.
Vitaliy
‘The increase in the complexity of business problems can challenge the integrity of the complex data structure. Redux has been just the tool to ensure that the same action breeds the same effect, excluding any side-effects.’
Challenges and solutions
With RN, we faced the challenges of pixel-perfect rendering and implementing complex computations.
Vitaliy
‘Since React Native is not a native platform, the problem of creating strictly identical look and behavior requires additional effort like writing custom native components. Another challenge is implementing complex computations in a mobile app – let’s not forget the peculiarities of the RN platform architecture.’
So does it mean we should abandon React Native like Airbnb did and go looking for better solutions? And are there universal solutions at all?
Vitaliy
‘Every business problem asks for individual tools and platforms of implementation. React Native is just right for the streaming, instant messaging, and content exchange apps we were engaged in creating.’
Learning is a lifelong process
We sent our RN team to a conference
4 developers passionate about RN attended a React Native Camp conference (2018) to further advance their knowledge and exchange experience. ‘An investment in knowledge pays the best interest’ is a quote we live by. In this spirit, CodeTiburon was among the sponsors of the conference. We truly believe the technology is worth the effort.
Natalia
‘We set two primary goals:
- Motivate our team (as part of team building), empower them with new experience, let them engage in a real-time dialogue and get first-hand knowledge.
- Support the technology development and build meaningful connections, even find partners.
I’m pretty sure we’ve achieved both.’
New impressions are always motivating
The conference was just one milestone on the long path to perfection.
Alexey
‘It was my first conference. The organizers did a great job with arrangements and inviting interesting speakers. It gave us some insights into how to apply RN in various new areas. So I got 100% positive emotions out of it. Hope events like that will give boost to the community growth and tech advancements.’
Vitaliy
‘Among the most captivating and promising is the topic of off-line mode with RN. Just imagine, you’re using an app on the go and then get into a dead zone. The connection is lost. What’s next? That’s a real use case. React Native and the existing solutions allow to tackle non-trivial problems like this. Or another use case like the necessity to restore a sequence of steps or an intermediary result at any given moment. Try event sourcing and the way it’s implemented with React Native.’
There are two sides to each coin
React Native works for some and it doesn’t for others. But it is surely interesting to master and its growing community is a proof of the pudding.
Alexander
‘The tech has been evolving. Ever since the start, there’ve been lots of new versions, new modules. The support for the current iOS and Android versions, too. Certain aspects, like navigation, have had serious revisions. There’s a dilemma though. Every transition to a new version consumes plenty of time. But you can’t ignore that aspect because the support of the latest version of iOS and Android is important.’
The future of RN @ CodeTiburon
Exciting times ahead
You can’t innovate a product without innovating the way you build it. React Native may be nascent, but it is here to stay. We are determined to use it in new projects and vary our use cases.
Alexey
‘I look forward to new projects on React Native. It’s an interesting and fast developing technology.’
Alexander
‘We have four RN developers so far. But since React Native is no arcain art – any frontend developer can master it pretty fast. If there’s a need to extend our team, this can be done in no time at all.’
How it evolves depends on everyone
Technology is only as live as its community. Its evolution rests on everyone’s impact.
Alexander
‘I have experience creating skeleton applications used by ecommerce companies. Creating features is another area of my expertise. To further advance in that direction, we need more hands-on experience in new projects.’
To see its worth, get outside the box
RN comes with merits and trade-offs. There are certainly use cases where RN is best suited. Still, you can only fully appreciate it by comparison. It’s better than Titanium. But is it the best there is?
Alexander
‘To state that RN is the best cross-platform framework, you need to get familiar with its competition. Currently, Native Script seems like one. I’m studying it in my spare time.’
What’s your experience with React Native? Tell us in the comments.