According to the latest data, mobile device users spend almost 90% of their time on apps and only around 10% on browsing the internet. With the growing popularity of mobile devices in general and apps in particular, almost everyone wants to make one, and as quickly as possible. Due to this hybrid development has been growing in popularity, as its advantages are primarily related to cost efficiency and faster time-to-market. However getting your app out quickly is far from a guarantee that people will want to actually use it and that's where a different approach might prove to be more sensible ie. native app development.
Native mobile apps - perks overview
Once you look past the basics native development does have quite a few advantages worth taking into account. Hybrid technologies have made great strides recently in the areas of optimization, security, and user experience, and are constantly working to definitively bridge the gap between native and hybrid approaches in these areas. A well-built React Native or Flutter application will not differ much from a native one, still native apps offer better benchmarks in some areas out of the box:
- Performance - native app performance is still significantly better as they are optimized for a specific platform
- User Experience - for the same reason they are more intuitive and interactive, resulting in an overall better user experience. Although the look and feel of UI components is more or less the same in native and hybrid applications, there are still some aspects where differences are noticeable such as visual interactions, gesture controls that are seamlessly integrated in native apps and match the style of the operating system to which a user is familiar
- Learning curve - once a user learns to use their device, they don't want to do it again with every new app they install, native app development results in an app that is more embedded in the feel of the particular platform
- Security - native apps offer the best in class security and that’s why they are still usually preferred by fintech apps
Initial app launch - does your app need to be available on both Android and iOS right away?
There is a common belief in the business world that their company's app must be immediately available on both iOS and Android.
Of course, it is true that being present on both platforms has its advantages and if you absolutely need your app delivered in the shortest possible time on both platforms, you should consider using hybrid technologies such as React Native or Flutter instead of native ones.
However, if you think that native technologies offer what your product needs, ask yourself if you really need to have your app available on both platforms at once?
No one is perfect and software development is a process. Be sure that no matter how well prepared you are, your application will need constant adjustments, the features will change after being confronted with the needs and preferences of users, it will also need to be improved and adapted to the constantly changing technological environment. Starting with one platform lets you avoid duplicating mistakes in the fields of functionality, technology and business assumptions on a second platform.
The platform question - which platform you should start with?
The first choice in regard to native development is obviously picking the platform you want to develop the app for: iOS or Android. iOS dominates the European and Asian markets with about 70-80% market share and the US market is split about 50-50. Obviously you don't have to pick one and can develop your app for both platforms, but this is where the costs and time constraints come in. While the overall product will have the above mentioned advantages due to being developed natively, it will take more time and effort and most likely will need separate devs or teams for iOS and Android. So if you’re targeting a market dominated by iOS it might be prudent to focus on that and leave getting out an Android version of your app for later.
Native mobile platforms - the overview
Apple ecosystem - iOS
If you’re picking iOS the first choice is picking the language, Objective-C or Swift. Good old Objective-C has been around since the 80s and Apple has been using it since the mid 90s, it still does have its uses and has been tried and tested over the years. The truth though is that everyone is moving on from it because Swift just has it beat. Apple developed it specifically as an improvement and it's faster (2.6 times faster according to Apple) safer, less complex and easier to maintain.
The choice obviously comes down to personal preference and if you want to stick with Objective-C because you or your team are familiar with it or you already have a project with a large Objective-C codebase you can do so, but Swift is simply better if you’re starting out. With the language picked you have a number of tools that will help you with development:
- Swift Playgrounds: a platform for learning to code with Swift in a fun way
- Xcode: the official integrated development environment (IDE) for iOS development, with extensive documentation, interface builder, simulator, graphical debugger and a bunch of other features
- iOS SDK: a package of tools which helps you with native app development by providing access to various functions and services of iOS devices, like hardware and software attributes
- TestFlight: an online testing service for iOS devs
Google ecosystem - Android
For Android the choice of language is somewhat similar, its Java or Kotlin and once again one language is much older and the other has some new improvements. It's not as easy here though, as although Kotlin has been gaining traction and has recently been adopted by Google as the official language for Android, it is still far less popular than Java and will likely remain so for the foreseeable future. Java is well established for good reason as it is a great multi purpose language, Kotlin on the other hand does bring in quite a few new features. It combines object oriented and functional programming, requires less code and is faster to compile. Java on the other hand has a much larger community, is way more widespread and supports almost every server, device and operating system. Even Android itself was written in Java, so while Kotlin is the better language for Android app development, sticking with Java is perfectly understandable. Whichever language you choose Android also has a few useful tools which will help with development:
- Android SDK: a package of useful tools which includes various libraries, a debugger, tutorials, documentation, a handset emulator and code samples
- Android Jetpack: a suite of libraries to help developers follow best practices, reduce boilerplate code and write code that works consistently across Android versions and devices
User experience vs time-to-market
If you’re looking to make a test or demo app hybrid is definitely the way to go. That said native does have many advantages especially considering user experience so if you know what you want and you’re looking for quality it will most likely deliver. Platforms and market dynamics are important factors to consider though, while many are scared off by the fact you usually need separate teams for Android and iOS you might not even need an Android version of your app if you’re targeting a market dominated by iOS devices. Additionally the tools are also getting constantly improved by two tech giants in Apple and Google, which will have a further impact on the time and ease of native development in the future. Plus with millions of apps already on the market it might be better to focus on how yours will compete with them, rather than simply looking at costs and development time.