Is React Native a Viable Framework for Financial Applications?

Ryan Sailor
The Product Blog
Published in
5 min readOct 24, 2016

Your mobile financial app is critical for user acquisition and retention. In the mobile age, every company has an app, and app creators compete on quick updates, the latest features, and consistent user experience.

Driven by the nightmare of app maintenance, budget constraints, and agile/lean processes, a class of javascript-based, cross-platform frameworks aim to improve the mobile development experience. Notable frameworks are PhoneGap, Apache Cordova, and Ionic. These frameworks are meant to bring mobile development to a wider range of developers with prior javascript experience (that’s a lot more developers than those with iOS or Android specific skills), reduce budget, improve iteration, and make the codebase more maintainable.

These benefits are not without drawbacks: the application logic built in javascript arguably performs worse than native code, and probably without argument the UI just doesn’t feel as good. Recall using your mobile browser and wondering why it felt so sticky compared to an app. It’s the same issue with PhoneGap et al. Apps built with them are essentially webpages on your phone, but not on a browser.

In 2015, Facebook released React Native, which promises to address the performance and feel issues with javascript-based apps and hopefully be the next hot cross-platform mobile framework. React Native is based on a popular web app technology called React. In fact, it’s almost the same. (Facebook knew they had a good framework and just wanted to make it work with mobile devices.)

The trick with React Native is that while it’s still a javascript, cross-platform framework like the others, it uses a “bridge” technology to display and control actual native UI elements instead of displaying a webpage that looks like an app. That means the user sees and interacts with a real mobile app Graphical User Interface (GUI). It looks great and feels even better. It’s a massive improvement in user experience over alternatives.

But is React Native the right option for all mobile projects, particularly those with firm budgets and timelines? To help answer this question, at Arcweb Technologies we put it to the test and built out our own app on React Native. Here’s the story and what we learned…

Stock Alert

Given our focus on the financial services space, we decided to build Stock Alert, a simple mobile application allows a user to set price notifications for their favorite stocks. When a stock reaches or falls to a certain price, the app creates a notification so the user can take action. (Check out Stock Alert on iPhone or Android!)

Ultimately, our team of three engineers with experience in web development, but without prior experience in React.js or React Native, were able to write a working app in less than four weeks. We even had time to include forward-thinking features beyond the initial scope of our first prototype.

React Native is so quick to learn and use that we were able to add more features and still hit our target deadline. It’s the catalyst of reverse scope creep.

What We Learned Building in React Native

Cut Past the Cruft
With React Native, you spend way less time setting up and more time building. A javascript backend allows for on-the-fly updates which means an app update doesn’t always require recompilation. This results in a very quick iteration cycle.

Code Reuse
For an app that runs on both iOS and Android, our code reuse exceeded 99 percent. The large plugin ecosystem helped fill the gaps in the standard framework too. That’s a 50 percent cost savings on engineering budget when building for both platforms.

Maintainability
When it comes to maintenance and extensibility, the biggest factor is whether a new programmer can quickly understand the code and make meaningful updates with little downtime. Any web developer who knows javascript can readily understand React Native.

Cohesive User Experiences
Users expect mobile applications to feel performant and look good. By using native components, React Native delivers.

Downsides of React Native

As with all frameworks, React Native has its shortcomings…

Still in Alpha
React Native is young. That means the framework is updated frequently and is liable to cause breaking changes. A good development team will only carefully upgrade their React Native version during development at this time.

Native Code Still (Sometimes) Required
React Native already has an impressive ecosystem of developer-created plugins that offer a lot of functionality on top of the base framework. That said, there are pockets of missing functionality that require developers to write native code.

Device Consistency
While React Native apps look very consistent across devices, there can be some extra development time required to fix small differences that occur between platforms.

Learning Curve
A team experienced in mobile development is unlikely to benefit from React Native. Learning a new framework is still learning: it takes time. Development tools for the respective platforms, once mastered, are more robust and intuitive, especially XCode’s Interface Builder. Unless your project will hop around to teams of unknown skillsets, don’t switch horses mid-race.

Developer Hardware Requirements
As with all cross-platform frameworks, in order to build for iOS, you need to develop on a Mac. This isn’t a problem exclusive to React Native, but it’s worth making sure your team has the right hardware.

Bottom Line

Based on our experience with Stock Alert, we can confidently say that React Native provides the same benefit as other javascript-based mobile frameworks with the addition of a much better UI experience for the end user. An easy to understand codebase means development and maintenance budget savings as well. So for financial applications substantially larger than Stock Alert, going the React Native route could minimize spends and accelerate time to market.

Have questions? Let’s talk about how React Native might be a good fit for your mobile application.

--

--