A couple of days ago we were discussing new apps to be built for an investment platform that our team is releasing in a week. It may seem surprising, but neither of our mobile devs (Android and iOS) has brought a plan to a table to create native apps for this case. Nor the product owner is eager to invest in native apps.
React Native, Xamarin forms, Ionic were among honorable mentions during that meeting. And it logically overlaps with our nearest goal to hire more React-skilled people. What’s going on?
Bad news: people don’t quite download apps
OK, they do. And tons of new apps are hitting the stores. Just in May 2016, 48,231 apps were released; it’s around 1600 per day! About half of them (20,958) are games that have this “come-and-go” nature. But it takes looking at statistics to notice that 65,5% of smartphone users in the US account for 0 downloaded apps per month, in that ballpark. And only 8,4% of people get up to one application per month. Not that impressive.
According to SurveyMonkey, the most downloaded apps are Messenger, Snapchat, Facebook, and Instagram. For the most used apps, Facebook, Youtube, Messenger, and Google Maps are leading the race.
It’s easy to deduce that Youtube and Google Maps aren’t downloaded but are rather shipped out-of-the-box for phones. And mostly people use the handful of top apps. So if you’re planning to build a business solely around a mass app and you aren’t a monster player or a unicorn, your chances to show up on a user’s radar are humble.
It seems that we’ll experience some tectonic shifts in the mobile market soon. It’s hard yet to predict what direction mobile development is going be drifting. Chat bots, progressive web apps, accelerated mobile pages? But the high threshold for user acquisition will definitely make stakeholders rethink their investments. The technology will be adjusting to it as well.
Good news: corporate sector needs apps, badly
While mass-consumer applications are abundant and generally unwanted, enterprise software lacks mobile engineers. The Gartner’s bold claim - that demand for enterprise apps will outstrip available development capacity five to one - highlights the emerging trend. CRM, ERP, HR, and corporate e-learning users want to expand their workspace with more devices. Laptops and desktops shouldn’t remain the only access points to operate such complex software.
At corporate training, for instance, two of the core reasons of going digital are time and place, merely being able to access learning materials anywhere and whenever. Mobile is the obvious best fit to address these needs and raise the value.
If the gap is as wide as Gartner says, here are the most likely moves for corporate app development:
- Building stable back-end infrastructures and APIs that let apps smoothly communicate with databases and logics of a platform
- Focusing on client-apps that cover a presentation layer retrieving and delivering data to back-end systems
- Turning away from traditional native mobile development and focusing on tools that accelerate apps engineering
A couple of years ago, native mobile development was the only way to deliver high-performance solutions that behave and feel organic to their platforms. At that time, cross-platform hybrid tools were in their infancy and the only reason to opt for them was an affordable price tag. Today, things are changing. Perhaps, corporate stakeholders that struggle for bringing their software to mobile are the first in the line to start cross-platform development.
React Native is cross-platform, but not quite hybrid
React Native is a young JavaScript framework designed by Facebook for their own apps, which has been recently introduced to a wide development community. And it’s neither native to mobile platforms nor hybrid in a sense that we understand this concept from PhoneGap and Cordova. It takes the third path. So what’s the difference?
When you use hybrid frameworks like Cordova and PhoneGap your code doesn’t communicate straight with native mobile controls (as it works in Objective-C and Swift for iOS or Java for Android). Instead, you use web tools like HTML, CSS, and JavaScript to build a single-page app. Then the framework runs it inside the integrated mobile web browser, WebView, and wraps it as a native application. This allows for reusing the same web code across mobile platforms.
React Native is limited to JavaScript code without HTML and CSS. The logics are written and powered by JS, and the React JS interface components interact directly with operating system controls. This basically means that such components as Text, Slider or TextInput are rendered natively. As far as the number of components in React Native are cross-platform, you’re free to reuse some pieces of the code. However, the rest are meant to be applied only to their specific systems. So we can’t apply the entirely same code both for Android and iOS if we want the app to look and behave naturally to its platform. But the scope of efforts is dramatically lower than that of pure native development.
While the hybrid approach is articulated as “write once, run anywhere”, React Native adheres to the “learn once, write anywhere” philosophy, which yields the desired combination of fast development and native feel to apps.
Why React Native?
So here’s the list of major benefits of opting for React Native prior to “hybrids”.
It’s easy to maintain native look and feel. Hybrid applications are afflicted with the strange look and feel to user flow. The problems vary from lagging and delayed scrolling, to the lack of visual responses on tap spots. In order to avoid these issues, you have to implement native modules that would access platform controls. You can use the Ionic third-party library, which aids in implementing native modules, but they should be aligned with operating system upgrades. Otherwise, user experiences may become outdated in a while. React Native, on the other hand, supports access to native controls via its components, and many of them are cross-platform. This allows for tailoring an app to a specific platform keeping its look and feel.
The performance is high. The WebView engine, which wraps a hybrid app, puts its limitations to the performance score. And as far as JavaScript utilizes the only thread, overloaded JS code can result in slow or jumpy animations. React Native allocates a separate thread for UI elements as React components are mapped to native views. Thus we can achieve performance results that would be close or equal to native apps.
Native modules available. The out-of-the-box modules in React Native are already numerous. But if something is missing, you may want to reuse native modules instead of rewriting them in JS. Or you may want to go with lower-level languages like Objective-C and Java. This will help to achieve high performance with multi-threading in such advanced operations as image-processing or communicating with complex databases. React Native allows you to build native modules and inject them without losing any capabilities of the platform.
The best fit for corporate software. If a web-development team is building a SaaS platform, involving mobile devs to top it with an app would be a management hurdle. A new team should be introduced to the product, its architecture, logics, and APIs. It takes reasonable time and cost. Instead, we can engage same developers to deliver an app with React Native and maintain constant workflow. For instance, most of the DDI Development engineers are familiar with JS. So the learning curve won’t be that steep.
React Native is a great new environment that manages to reconcile cross-platform mobile development and attention to platform specifics. For now, it seems that delivering mobile apps for corporate software is the best fit here. React Native is fast, pleasant to work with, and some great tools are already around. Deco IDE, for instance, approaches the techniques of rapid mobile app development (RMAD) in some of its aspects. So there’s much room for exploration and fun programming. We’ll keep expanding our React Native team both with current developers and new hires.