Overview
Summary: We rely on React Native for our mobile app development and believe it is the best choice available. In the remainder of this white paper, we’ll explain why.
As a mobile app developer, we are consistently focused on offering our customers a perfect union of quality and efficiency. To that end, we have found React Native to be the best development tool available.
React Native1 is a cross-platform framework that makes it as simple as possible to develop mobile applications for both Android and iOS. While it is not the only such tool available, we believe that its strengths still beat out the competition. With React Native underpinning our projects, we’re confident that we can offer you a superior product to accomplish your business goals.
In this white paper, we’ll cover the following topics:
- The benefits of building mobile applications over mobile websites
- The benefits of utilizing cross-platform tools rather than native solutions
- A summary of three of the most promising cross-platform solutions
- Why we recommend React Native for cross-platform app development
Benefits of Mobile Apps Over Websites
Summary: Mobile applications are often a superior choice to websites given the benefits they offer to both developers and users, such as improved speed and personalization.
When it comes to reaching users on their phones, you have two options: designing a website to display on mobile or creating an independent mobile application.
Initially, the idea of a website might be tempting. A well-designed website that can be accessed on any device does simplify the work needed to reach users across both mobile and PC. This can potentially result in a greater initial audience and a reduced cost of development.
However, there is a reason many traditional websites like Amazon or Reddit have opted to invest in the development of their own standalone applications for mobile users. Users are increasingly turning to mobile apps as an integral part of their daily lives, investing most of their time into applications over websites. As Apple famously said, if you can imagine a potential use case, “There’s an app for that.”2
There are at least five key benefits to pursuing a mobile app over a responsive website:
- Speed: Applications are often much faster to load and update than a website. Since data is stored locally on the device rather than on a remote server, delays in communication can be reduced. This is especially true for operations requiring heavy quantities of data.
- Personalization: Applications make it easier to monitor user preferences and present customized content specific to that user’s experience. This, in turn, can help increase and maintain user engagement.
- Offline: An added benefit of storing data locally is that the app can still at least partially function even without an active internet connection. This way, the user can continue accessing the app no matter where they are.
- Design: With an app, you potentially have more control over how the interface is designed as an extension of your brand. Features of the mobile operating system can be easily leveraged to create a smooth, clean experience for the user. You can also more reliably utilize functions of the mobile device such as the user’s camera or GPS via your application.
- Notifications: Finally, one common mobile feature many apps leverage are the built-in phone notifications. With an application, it is far easier to send regular updates or prompts to users without disrupting their routine. This may, in part, be why mobile apps tend to result in more customer conversions.
Benefits of Cross-Platform Tools
Summary: Despite some of the benefits afforded by native app development, cross-platform tools simply make mobile app development cheaper and easier than ever before.
If you’ve decided to pursue a mobile application over a mobile website, you are once again faced with a choice on how to proceed. This time, the choice is between native development and cross-platform development.
Native Development
Native development utilizes the same programming language as the appropriate mobile operating system. For iOS, this has historically been Objective-C; however, Apple has since embraced Swift as a modern alternative3. For Android, Java has long been the language of choice. But, similarly to iOS, Google now advocates for the newer Kotlin language as an improvement over Java4.
There are certainly some advantages to developing applications natively:
- Integration: Since native development uses the same language as the OS, it’s easy for it to fully communicate with the device. This, in turn, makes it simpler to access native features of a given operating system, making the application feel more like a program developed by Apple or Google themselves.
- Performance: Native applications can run faster and more smoothly than non-native apps for graphic intensive apps. However, this increase in speed only matters for a small percentage of developed applications such as games.
Cross-Platform Development
Rather than develop one version of a native app for Android and another for iOS, cross-platform development uses one toolset to create a universal version of the app. The universal version, with some minor tweaks, can then be deployed across each OS.
This is our preferred approach for three main reasons:
- Affordability: When utilizing a cross-platform solution, developers only need to master one set of tools. This makes it faster—and subsequently cheaper—to develop new apps. Similarly, while some changes do need to be made for each OS, this process is still far quicker than creating two separate applications, dramatically reducing development time.
- Maintainability: If any updates need to be made to the app, they can be performed in one centralized place rather than split across two separate development environments. This makes it a lot simpler to track changes over time. It also makes it easier to ensure that users have the same quality experience regardless of their platform of choice.
- Responsiveness: Cross-platform solutions similarly simplify the process of adjusting to different factors such as screen size. Rather than redesigning the app for each supported screen size, designs can instead be made responsive to accommodate a wider array of device screen sizes and shapes. This can dramatically reduce the cost of development.
In short, while native development does offer some benefits related to integration and performance, cross-platform development presents a more cost-effective solution.
Summary of Cross-Platform Tools
Summary: Three cross-platform tools to watch are Kotlin, Flutter, and React Native.
Given the clear benefits of cross-platform solutions, they have become an increasingly popular alternative to native app development. There are at least a dozen different cross-platform tools now available. We have chosen to highlight three of these here that we feel are representative of the rest: Kotlin, Flutter, and React Native.
Kotlin
Kotlin was first developed by JetBrains in 20115. It was built as an offshoot of Java, redesigning features to encourage cleaner, more responsible coding while remaining fully interoperable with existing Java code. These new features, however, have made Kotlin even more complex than Java already was.
As we mentioned above, Kotlin has primarily been used as a replacement for Java in Android development and is now the default language to develop for Android. Despite this, JetBrains has tried to position Kotlin as a true multi-platform solution6. They have developed the language into a software development kit (SDK) that allows programmers to take their Kotlin code and easily modify it so that it will be compatible with iOS. Because of how this SDK allows for the smooth integration of platform-specific code, it’s capable of displaying native UI elements and adapting to any changes across native platforms. This allows it to quickly support features as soon as they are added. However, it’s currently only the business logic that is truly cross-platform, not the UI or other libraries. This severely limits the usefulness of the platform unless you’re designing a highly complex application.
Kotlin is a relatively new force in cross-platform development. Still, it has started to prove itself a popular alternative. As of 2018, Kotlin had reached over 1.5 million active users7. Over the past two years, this number has reportedly increased by another 1.1 million developers8. Notable apps built with Kotlin include Pinterest, Coursera, Trello, Evernote, and Uber. While it may not be as popular a choice yet for IOS, companies including Yandex, Quizlet, and Autodesk have adopted Kotlin Mobile Multiplatform as part of their production process. We expect that more companies are likely to follow suit if these early adopters prove successful. However, a big problem with Kotlin is the lack of a cross platform UI framework. The lack of libraries in the UI is a huge negative because most of the development work for mobile apps resides in the UI.
Flutter
Flutter was released by Google in 20179. Unlike Kotlin, it was designed from the start as a true cross-platform tool to create applications that could run not just on Android and iOS but across Windows, Mac, and Linux as well. It utilizes Dart, a language similar to Java, that was developed by Google specifically for the platform.
Flutter provides several benefits for cross-platform development. Like Kotlin, it emphasizes integration with native functionality for both Android and iOS. Much of this is made possible by Flutter’s status as a UI development framework built on its own widget library. This also helps improve performance and ensure that applications look the same across different operating systems.
Despite its relatively new status, Flutter already has a reputation as developer-friendly. Its extensive widget library makes it easy to customize functionality, while its documentation makes setup and use as simple as possible. Additional features like a “hot-reload” functionality to test code in mid-development further enhance this reputation.
Notable apps built with Flutter include Alibaba, Google Ads, Reflectly, and Birch Finance. Since it’s relatively new, it hasn’t had as much time to pick up a dedicated following. Still, Google has announced that over 2 million developers are regularly using Flutter for app development and claims that they expect this number to continue to increase as word spreads10.
React Native
React Native is perhaps the best known of these cross-platform solutions. React Native was first released in 201511. It is based on the React JavaScript library, originally developed by Facebook for web design as part of an internal company Hackathon. From the beginning, the goal with React was to find a way to render iOS elements using JavaScript. This lessens potential barriers for adoption since so many developers are already familiar with JavaScript for web development.
Unlike Kotlin and Flutter, React Native’s reliance on Javascript requires the use of a bridge to native OS elements. While the use of a bridge can potentially result in some minor losses in performance, it makes up for this by allowing the legions of existing JavaScript developers to leverage their skills while writing mobile apps. Where React Native really shines, however, is in its sheer size and longevity. React Native has been around as a cross-platform solution for longer than either Flutter or Kotlin, and it shows in the breadth of available libraries and other supporting resources. The fact that React Native is built on one of the most popular programming languages also helps ensure that there is no shortage of available developers or tutorials.
One can clearly see the popularity of React Native in the long list of companies that have chosen to adopt it. Companies using React Native for development of their mobile apps include Facebook, Instagram, SoundCloud Pulse, Walmart, and Bloomberg.
Why We Use React Native
Summary: While Kotlin and Flutter each offer their own unique benefits, React Native has a proven track record and wider support that still makes it the safest choice
If you’re looking to reach mobile users, a mobile application often has clear benefits over a mobile website. When designing a mobile application, however, you need to decide between native or cross-platform development. While native solutions might integrate the most seamlessly with Android and iOS, cross-platform solutions can cost less time and money to both develop and maintain over time. That is why we advocate for cross-platform development. After examining three of the most promising choices for tools, we believe that React Native remains the clear winner.
We have chosen to utilize React Native for one crucial reason: its proven track record. Kotlin has established itself in Android development but is only just now starting to gain traction as a cross-platform solution and lacks crucial UI support. Similarly, Flutter is already making waves among developers and we are interested in watching how it develops over the next few years. It does appear to have an easier learning curve than React Native and with the power of Google behind it, it seems likely that it’s here to stay. However, when it comes to creating the best possible app, we trust in the tool that is already well-established, with the most popular libraries and an abundance of tutorials and existing developers..
Get in Touch
If you’re looking to build a new mobile application, we’d love to leverage our expertise to help. Please reach out to us at https://ideamaker.agency to discuss the next steps we could take to bring your vision to life. With React Native powering our mobile app development, you can rest easy knowing that your app is in the best possible hands, with all the support it needs to succeed
2https://www.wired.com/2010/10/app-for-that/
3https://developer.apple.com/swift/
5https://www.jetbrains.com/opensource/kotlin/
6https://www.jetbrains.com/lp/mobilecrossplatform/
7https://www.jetbrains.com/research/kotlin-census-2018/
10https://medium.com/flutter/flutter-spring-2020-update-f723d898d7af