We are in the mobile era where number of mobile users today are greater than the number of desktop users. For attracting customers it is necessary for the businesses to have Mobile apps along with the website. Various studies have shown that users prefer using mobile app than mobile website on their phone.
We have two major platforms; iOS and Android for which app need to be developed.
What are the options we have to develop a Mobile app for both iOS and Android?
- Using platform specific native tools and technology stack.
- For iOS it would be using iOS SDK with XCode as the editor, Objective-C or Swift as the programming language.
- For Android it would be Android SDK with Android studio , Java/Kotlin
- Cordova family of hybrid frameworks like Ionic.
- Using Semi hybrid technologies like Xamarin, React Native or Flutter.
Native Development approach.
- User experience will be great as you will be using platform specific API’s without any intermediate layer.
- Consistent platform specific user controls.
- Direct support for any hardware interaction like Camera, Audio, Bluetooth.
- Integration with third party SDK’s will be easy.
- Code will run faster and will be more secure.
- It will be guaranteed to work with minimal or no changes with new OS releases.
- It can take advantage of native platform specific features and hardware accelerations.
* All the pro’s mentioned above depends on the developer. A poor developer with bad code can negate all the above mentioned advantages of native development.
- We need to develop separate codebase for iOS and Android.
- We need 2 separate team’s or developers doing the parallel work on 2 platforms.
- Any changes/bugs need to be communicated and implemented in both the platforms.
- Any brand specific UI need to be implemented on both the planforms with exact specifications of dimensions and color codes.
- Any communication gap between iOS and Android Team will make the things even worse.
- QA team need to test 2 version of the app.
- It will be difficult to maintain and support 2 versions of the app.
In native approach, finally it will come to cost and maintainability of the app for each platform. If you have the right team, streamlined processes and budget then native would be perfect approach.
- Team setup is easy as you can onboard any web developer to the team without the need to learn any new language.
- Single code base will work for both iOS and Android.
- Enable quick development and iteration.
- Can re-use lot of libraries used for web development.
- App performance depends on device’s browser capability.
- Since app is a HTML page wrapped inside a WebView, user experience will not be good as native.
- You may encounter some strange issues on older devices or specific device model due to the difference in implementation of HTML/JS species.
- Using any native feature will depend on plugins availability.
- Implementing any complex feature will be difficult as we need to develop native plugin for both iOS and Android.
Apps developed using React Native/Xamarin Forms/Flutter.
Recently frameworks like React Native, Xamarin Forms or Flutter have matured enough to be good competitor for native development. These frameworks use single codebase and will have native UI components.
- Single codebase for both iOS and Android.
- Fast intuitive apps with performance close to native user experience.
- Can leverage existing teams to develop mobile apps.
- Easy to maintain as we need to maintain only one version of the app.
- Great tooling support and vast community of developers.
- Learning curve for the developers.
- Hardware support depends on the community to develop platform specific modules.
- New OS releases might break some of the features.
Unless you have budget for native development, it is wise to go with technologies which provide native experience with single codebase. React Native is in the market for almost 3+ years has matured enough to develop production ready apps. Even though flutter is there for some years, it has picked up the pace after Google IO 2018. We should wait for some more months before developing production apps in Flutter. If you have team of C# developers in your organization then Xamarin Forms would be a good choice to consider