For many years now the mobile landscape has been divided between Android and iOS, and neither is going anywhere. If you want to make all your users happy with your digital product, you will release apps for both platforms. But how you develop them is still up to you.
Native apps are always an option, but for those of us who want to optimize for cost, speed and maintainability, there are some very good cross-platform (aka hybrid) frameworks available that can go head to head with natively developed ones in terms of both user and developer experience. When you think about it, there aren't many reasons to stick to native development nowadays, especially when you consider that most frameworks allow you to integrate some native code or library if you really do need it.
The few situations where you might still prefer native development are highly custom apps (UI heavy ones) like Google Maps, cutting edge AR or AI apps, or high-performance gaming.
Cross-platform development starts with the promise of ‘write once, run everywhere’. In reality it’s not that straightforward, but you can come pretty close. So what can you really expect to gain?
Maintaining a single code base is obviously easier than maintaining two. Do be aware though that in reality, all apps will have some platform-specific elements (about 5%), whether they have to do with the size of your assets, slightly different layouts or even functional differences that might exist between platforms.
One trait that cross-platform frameworks share is that they are component-based (some call them widgets, looking at you Flutter), which neutralize the platform-specific aspects. Especially for the UI this can be a real timesaver, as a developer only has to implement the designs once. (Xamarin Native is the odd one out here, since it does not support common UI components. However Xamarin Forms does, by the way.)
When implemented well, with a good modular architecture, your developers can make sure that the business logic (often one of the most complex areas of an app) can be completely shared across all platforms.
One thing to note is that as these frameworks depend on the underlying mobile platform, there might be some delay between when the mobile platform updates and when the framework catches up to support the latest and greatest features (although most do catch up very quickly: Flutter announced iOS 13 support the same day the new iPhone OS was released).
Opting for cross-platform development has an impact on almost all areas of your app development process and the people involved, app architects, developers, testers and designers.
You need developers who are familiar with your chosen framework, ideally with either Android or iOS experience as well. And with newer frameworks like Flutter, finding skilled people is not always that easy. Having said that, LinkedIn mentioned on its blog in March 2019 that Flutter was the fastest growing skill among software engineers, so expect more Flutter developers to become available soon.
Some frameworks use native elements either directly (Xamarin) or through a bridge (React Native, NativeScript with Angular or Vue), whereas others use a browser environment (Ionic, Cordova) or even their own rendering solution like Flutter does with Skia, a high-performance graphics engine. These different methods have an impact on your quality assurance engineers and testers, who need to have the tooling in place to test and verify your app across a wide variety of devices.
In order to apply industry best practices in continuous integration and continuous deployment, you'll need a reliable build & deploy pipeline that supports your chosen framework to validate, compile, test and deploy your code.
If your design department is set up well, ideally using design systems, your designers should be the least impacted by the framework you choose. In the end it’s up to your developers to translate their design into the framework’s approach to UI. One word of caution about Xamarin Forms from our own experience is that its UI framework (which depends on native renderers) can take longer to implement. This may even affect performance (mainly on Android).
All of these aspects impact your approach to app development, so this is not a choice to make hastily.
Below you can find a brief overview of some of the most relevant cross-platform frameworks you can consider, with some relevant traits that can help you to choose one. We won’t go into too much technical detail here, as there are plenty of articles on the web where you can find more of that.
One more question you should ask yourself is: do I actually need a mobile application at all?
Especially if your service gets most of its traffic through a browser. And the latter is what both mobile platforms (and desktops as well for that matter) have in common: a powerful browser.
Browsers rely heavily on web standards which have come a long way since Netscape Navigator. (Remember that one?) Recent evolutions in these web standards like Service Workers, Web Storage and Push Notifications have enabled a new breed of apps, called Progressive Web Apps or PWAs.
A PWA can do many things native apps can, such as offer a full screen experience, work offline, receive push notifications and take a spot on your phone’s home screen, straight from your browser, eliminating the need for an app store.
As PWAs are not distributed by the App Store or Google Play, SEO (search engine optimization) becomes important to get your app and service to the end user. On the other hand, the fact that your app is not distributed through in a store, means it is not subject to their fees either, so you are free to choose your monetization model and reap the full benefits of it.
There are still some limitations that prevent PWAs from running properly everywhere. For example not all browsers – yes that means you, Safari – are up to speed with the latest web standards (no push notifications). There may also be limited features for hardware (NFC, Bluetooth, Biometric Identification, sensors, etc) or storage (Safari on iOS only allows 50 MB of offline storage).
For your next mobile project, consider a cross-platform framework approach. They can definitely be on par with native-developed applications when implemented well, and have proved to be well-suited for commercial, marketing, entertainment or business apps, especially if you are on a budget.