Before React Native, developing applications for mobile devices typically involved a lot of code duplication; Android applications are typically written in Java, whereas iPhone apps are written in Objective-C or Swift. This meant that the same code could not be reused on different platforms. An alternative was developing a website application—YTEC’s specialization—that would run in a browser on the device. However, currently it is difficult to achieve the same level of integration and ease of use with an application running in a browser as with a natively running app. Examples of limitations of browser-based apps are the lack of an application icon and limited support for gestures.
Besides taking more time to develop, having to maintain different application target platforms has an additional downside: programmers have to invest time to familiarize themselves with these different platforms and programming languages. YTEC continuously strives for as great a degree of overlap and redundancy between programmers’ skill sets as possible, because a skill which is mastered by only a single developer would compromise flexibility of planning. This is why YTEC is picky about which technologies are picked up and only embraces that which can be committed to company-wide.
Initially, we could not develop apps for Apple devices by ourselves, because we had limited experience with Swift and Objective-C. For iOS versions of our apps, we then had to hire external programmers, causing a longer lead time. – Ying Hao Ma, YTEC
As soon as React was mature enough for production use, encouraged by its large and expanding user base, YTEC started to adopt it for some new projects, like the website on which you’re reading this blog.
Development—especially the development of highly interactive web applications—is made easier by rolling all the user-interface logic into React components, which makes it easy to track state. (State is what has happened and how the application should respond; this has always been notoriously difficult to do well in web applications, because HTTP, the protocol over which web pages are transferred, is essentially stateless.) When a component’s state changes, all its child components are updated, and components can signal each other about changes as well. For simple web applications, this is not a huge time-saver compared to how fast and clean we were already delivering features by leveraging the excellent Django Python web development framework, but React Native’s ability to build multiple apps for different mobile platforms with a single code base should tip the balance towards this choice also for projects which are not very complex UI-wise, but which do require a native application
To sum up the advantages of React Native:
- We can leverage our existing skill-sets to deliver mobile apps to our clients.
- We can target multiple mobile platforms and the web simultaneously.
- As a nice extra, React Native gives the developer is a debugger that reloads the code on autopilot after each change. A real time-saver, which is why, at YTEC, a similar ‘hot-reloading’ feature is also used for regular React work.
- To the customer, this translates to: shorter development times and a smaller investment.
With React Native in our tool belt, YTEC has become a more reliable partner for the development of mobile apps.