With the advent of cross-platform toolings such as React Native and Flutter, does it make sense for companies to invest in multiple native development apps on iOS and Android?
In the mobile development space, there are many going all out with Flutter and React Native. Most of them claim that it could save up to 30–35% of your time (and thus costs) by working with Flutter or React Native. Let’s analyze as to how much of this is really true, and does this apply to you?
There are more than 100 mobile applications are developed in the past five years, many of which have gone viral, got funded, and ranked in top #10 lists. In 2010 there were Objective-C in iOS and Java with Android and transitioned to Swift and, in recent years, to Kotlin.
There were satisfied with the tooling and didn’t pick up Hybrid Apps (built on Cordova or any Web layer) as they reduced the User Experience to a great extent. AngularJS (1.x) appeared in 2015 much before v1.0 was launched and then came along React - as it matured.
With React already being used in production systems and clients want to work in React Native. In Dec 2018 - Flutter was launched!
The approach that flutter took was different from React Native, and it held a strong premise of overcoming the pitfalls that React Native (and other Cross-Platform apps had in general). Thus, It’s time to debunk some myths and establish some facts around mobile app development.
Your code can be 100% in React Native/Flutter
Mobile applications these days can’t be an island; depending upon the product features, one will need to interface with a lot of third-party solutions to integrate within the apps - more so for cross-platform apps than native.
There are different libraries for error tracking, performance monitoring to very specialized tasks such as video conferencing, and chat tools. Most of these libraries provide first-class support for Native libraries, and then, if they deem essential - create wrappers for cross platforms.
Depending upon your approach, you will have to choose between writing parts of your applications in native code or in Flutter/React - at times, causing more pain than ease.
Flutter is here to stay, now and forever
Huge corporations such as Google will never have a single strategy, and it has a history of knocking down projects (some even successful by many standards) if it doesn’t live up to their expectations. Also, frontend libraries and frameworks are notorious for having a short life cycle.
In early 2016, Microsoft acquired Xamarin for $500–600 Million - and in my opinion. Microsoft dropped Xamarin like a hot potato in recent years and has instead moved its focus on Machine Learning.
Google’s beloved AngularJS, once considered revolutionary came into existence, got a lot of fanfare, adoption; and then criticism all within a span of a few years.
Google is simultaneously also backing Kotlin; it can create not only cross-platform native apps (like Flutter) but also can work on Web (Flutter supports it too) and backend systems too.
You will always save costs upwards of 30% while working with Flutter/RN
Yes, there are cost and time savings when it comes to working with cross-platform apps - not just in development; but also in QA and Project Management; But these benefits are assuming that you don’t rely on too many third-party frameworks that have little to no support for your SDKs.
There are some animation effects, gradients, and such which are not available in React Native despite it being in existence for a long time.
So sometimes getting these to work with your apps can be a pain; but if you’re looking to build apps that aren’t heavily dependent on these services or if these SDKs form a minor portion of the app then yes; you will still save money working with Flutter/RN
My Flutter/RN team need not know any native development
It would be foolhardy to take a beginner, not knowing any native development to work directly on Flutter/RN. If you’re starting mobile development, learn Kotlin/Swift first - get a firm grip and then move on to Flutter/RN; also to know RN, you will first need to get acquainted with React - not a short learning curve, eh.
Again, depending on your application, you could do away with this requirement, but if you need support ; you will have to get your hands dirty in native code or get help from other native developers on your team.
And now, time for some facts!
Your Flutter app will be as performant as a native app
Flutter was built for performance, and our recent experience in building flutter apps has been a resounding success. We recently launched a Flutter app for the fifth-largest marine player in the world!
The only downside you can see upfront is the size of the apps developed in Flutter; they are usually 30MB+ (though it’s not a deal-breaker for most considering increased bandwidth and internet penetration around the globe)
You will be able to ship apps faster
While it might look to a developer at a macro level that he’s spending more time than needed; sometimes while working with React Native/Flutter as opposed to native development - they do save time overall.
With Flutter; you’re able to ship apps quicker, which means you can pack in more features in every sprint; so everyone’s usually happy.
You can add Flutter to existing apps!
With the launch of v1.12 of Flutter, the “add to app” functionality has finally gone mainstream; even within Solutelabs, we have started pitching to clients about creating new features in Flutter.
Adding Flutter to existing apps would mean that your native development team would have to reskill themselves in Flutter. This could be a deterrent factor for some teams and might not be for some.
If you already have a native iOS or Android app and don’t need many external SDKs; try adding flutter to the mix, it’s easy to learn, and there are some excellent tutorials on Flutter out there!
And if you’re starting from scratch; have a look at your app and see if it’s heavily dependent on SDKs that don’t have a Flutter/RN SDK. If not, and if you’re starting - go for Flutter.