Mobile technologies
Choosing the right technology for your mobile app is a key decision to make while starting a new mobile project. There are two different approaches for creating mobile applications:
- Native - which consists of creating separate projects with a separate codebase for Android (using Kotlin and Java) and (using Swift and ObjC);
- Hybrid solutions - which are based on one of the popular cross-platform development frameworks like Flutter, React Native, etc.
Developing native applications is still one of the most popular approaches when it comes to mobile development because it is the most powerful tool for creating a complete application for a single platform, but nowadays, most of the mobile applications are targeting both Android and iOS platforms and that means separate projects for every platform when choosing native app development. With cross-platform solutions, there is no need for building separate projects, because both Android and iOS apps are using the same codebase which can be written by a single developer.
Currently, the two most popular frameworks for cross-platform app development are Flutter and React Native. Each of them has its own pros.
Flutter
- Created by Google, officially released in December 2018
- Flutter does its own UI drawing - apps look and behave similarly on every Android and iOS version
- Uses Dart (created by Google) (client-optimized language for fast apps on any platform) as the main programming language
- Increasing community
- Great documentation
- A lot of open-source libraries
- Allows sharing the code even on Web and Desktop.
React Native
- Created by Facebook, officially released in March 2015
- A native look of the app - React Native views maps directly to the native view equivalent on whatever platform it is running
- Uses a popular programming language - JavaScript (you can use TypeScript as well)
- Huge community
- A lot of open-source libraries
- Allows sharing the code with Web using React Js.
Summary
Using one of the cross-platform frameworks mentioned above gives more benefits for both product owner and mobile developer:
- Time&cost optimization - there is no need to create an entirely separate codebase for each platform which means that the whole project (for both Android and iOS) can be written by a single developer
- Faster code writing - thanks to Hot-Reload Development Tool developers can quickly and easily experiment, build UIs, add features, and fix bugs without rebuilding the whole app which can take dozen of time
- One code for two platforms - one codebase means the same behavior on every platform, fewer bugs, easier and more efficient testing when it comes to automatic tests
- Fallback to Native projects - both Flutter and React Native consist of native Android and iOS projects underneath and because of that developers can still fall back to Native development when requires.
As a result, except for the cases where the applications are heavily relying on the native hardware components it is recommended to consider the cross-platform solutions for shortening the release cycle as well as cutting the budget for product development.