loading...
Cover image for Will Native Development be dead for good in 2020?
SoluteLabs

Will Native Development be dead for good in 2020?

karan_shah89 profile image Karan Shah Originally published at solutelabs.com Updated on ・6 min read

With the advent of cross-platform toolings such as React Native and Flutter, does it make sense for companies to invest in multiple native apps on iOS and Android?

That's the reason why such questions have arisen-

"Will native apps die?

"Is native app development a dead-end career path?"

"Is native app development dying?"

And, more.

Well, we've got answers to all such questions.

------

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?

TL; DR

It probably won't die - but will face fierce competition.

Long Version

We have developed more than 100 mobile apps in the past five years, many of which have gone viral, got funded, and ranked in top #10 lists. We started developing apps in 2010 with Objective-C in iOS and Java with Android and transitioned to Swift and, in recent years, to Kotlin.

We 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. We had started using AngularJS (1.x) in 2015 much before v1.0 was launched and then came along React - as it matured, we embraced it and are using it to power most of our frontend systems, including our website (built on GatsbyJS).

With React already being used in our production systems and clients wanting us to work in React Native, we decided to give it a go. While we were working on RN, 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, I guess it's time to debunk some myths and establish some facts around mobile app development.

Flow chart to decide what to use!

Myth #1: Your code can be 100% in React Native/Flutter

This is wishful thinking. Just like how humans are social animals, mobile apps 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.

Due to the very nature of how features are created and support is rolled out, cross-platforms continue to be second class citizens. Thus, if you're working on a cross-platform app, you will need to integrate with third-party SDKs. In doing so, you will need to write native code to interface with iOS and Android.

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.

Myth #2: 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, it wasn't a wise move (we can all be Warren Buffets in hindsight 😉). 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, a language created by Jetbrains. Kotlin can create not only cross-platform native apps (like Flutter) but also can work on Web (Flutter supports it too) and backend systems too. A true promise of writing with one language on all platforms.

Considering the above, I would advise that if you're in a business wherein, you have a very long and extensive product roadmap, you should ideally choose something that will stand the test of time. But if you're a startup that can move fast, iterate, fail, and re-invent - I would suggest going with a framework that can save your time (and costs) - at least in the short run.

Myth #3: 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.

For example, because Google is promoting Flutter, Firebase as a native SDK, but giants such as Twilio and Stripe are yet to come out with official SDKs for Flutter.

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

Myth #4: My Flutter/RN team need not know any native development

O how I wish this were true! 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 (if you're lucky to have some!)

And now, time for some facts!

Fact #1: 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)

Fact #2: 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! :)

Fact #3: 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 (and I'm sure other products too) - 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.

Conclusion

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.

If you're already investing in RN or have invested a considerable amount in time, costs, and building a team on native development - stay on course!

Discussion

pic
Editor guide
Collapse
jonasbarka profile image
Jonas Barkå

Why do you feel Microsoft has "dropped" Xamarin? I haven't used it myself but this is not the impression I've got from watching the overall Microsoft space.

On the separate issue of how wise it was to buy Xamarin, it is important to consider that cross platform Android/iOS development was only part of the reason for the acquisition. Experience and technology from Xamarin were crucial for creating .Net Core and thus making sure .Net remains relevant going forward.

I personally belive buying Xamarin has paid off tremendously.

Collapse
karan_shah89 profile image
Karan Shah Author

I agree on using Xamarin experience for creating .Net Core but recent updates and version upgrades from Xamarin, IMHO, haven't been up to the mark.

Also, while I might have gone hyperbole on dropping it like a hot potato - it's hasn't received the kind of attention that other products like Azure or 365 are getting - both in terms of the advertisement or quality of builds. Compare it with tools like React, Angular or those on the lines.

Collapse
theomarshawqy profile image
Omar Shawqy

"Microsoft dropped Xamarin like a hot potato in recent years and has instead moved its focus on Machine Learning."

I don't think you thought this one through friend. Makes no meaningful sense.

Notice how many people you triggered by this weird statement.

.NET Core and C# developers are potentially the most valuable in the market with Xamarin.Forms in the Microsoft arsenal.

As a business, it makes sense not to hire single trick ponies (native only, mobile only, web only etc.) and instead invest in upskilling my .Net/C# team to target a plethora of platforms with the mature Microsoft tech stack.

Xamarin is very mature and actually outperforms Flutter/React in many ways, and even native platforms in certain aspects. You read that right. Google is your friend to confirm.

Happy new year to all 🥳🥳🥳

Collapse
rogerwcpt profile image
Roger Weiss

Great article, well written, thanks for posting. Agreed , React Native and more recently Flutter are great Cross Platform technologies.

However, you made one false statement: “ Microsoft dropped Xamarin like a hot potato in recent years and has instead moved its focus on Machine Learning. “ . Microsoft has in fact invested more effort in the last year in Xamarin like never before to close the gaps. Hot Reload, Xamarin Form 4.x.

I think Xamarin popularity is in fact picking up.

Collapse
crazylegend profile image
CraZyLegenD

Native won't die.

That's it.

Collapse
karan_shah89 profile image
Karan Shah Author

True, it won't - all frontend frameworks we've seen so far have been a fad, some longer than others.

Collapse
thekeviv profile image
thekeviv

I liked the article overall but strongly disagree with your comment on Xamarin. Xamarin in my opinion offers the best of all the cross platform dev platforms. If you like the flutter approach, take that in Xamarin using Skia or use the amazing Xamarin Forms or even go fully native with better tooling! I think the biggest advantage with Xamarin is the huge collection of pre built packages already built for you!

Collapse
bpedroza profile image
Bryan

First off, great article! I agree with almost everything here.

I think a missing piece here is PWA. Hopefully, as the browser becomes more powerful, more companies will realize they don't need a native solution at all.

At work we built/maintain an app built with xamarin forms. We really don't have any features that require a native app, and keeping features up to date is really painful. That along with trying to juggle all the different payment models while trying to make access seamless for users across platforms had been a nightmare.

I'm happy to say the CEO agreed to retire it next year. All the developers are ecstatic about not have to maintain the project along side the web app anymore.

All that said, xamarin is getting better. It's a great choice for people familiar with C#. It's actively maintained and doesn't seem to be going anywhere.

Collapse
karan_shah89 profile image
Karan Shah Author

Thank you, Bryan, for your kind words :)

I agree with you on PWAs, but unless iOS rolls out first-class support - native apps can't be ruled out. Things like having limited storage space, removing the space used if other apps start taking too much space, not having a default - add to home screen button and more. This could prove to be a non-starter for many.

Also, I believe it's not in Apple's best interest to support PWAs wholeheartedly else they will lose out on the service revenue that they are banking on since the dip in sales of iPhones. Let's see what the future holds :)

Collapse
bpedroza profile image
Bryan

Totally agree. Hopefully 2020 shows Apple adding those missing features.

Collapse
f666uct profile image
Gray Hattus

I remember being young and naive making outrageous tech claims. It's one thing to be a fanboy and another to truly understand markets outside your own and business needs.

Not disrespecting your article. I do wish you the best on your ventures ahead. And keep an open mind.

Collapse
juanmendez profile image
Juan Mendez

Back in 2012 I started learning Android but faced frustration due to Sencha, Cordova, and hibrid apps using Angular. Until end of 2015 I went deep into Native while doing web developpment during the day. This possibility of alternative technologies taking over soon had alarmed new native developers since then.I dont regret my decision. I can feel confortable if I have to learn now Flutter whose language was a hipster back in 2012 with the rise of Angular, or learn Nativescript which is known for hitting Native libraries directly. Anyways there is room for any learning goal, just dont get trapped like in my case. All technologies are meant to die just like Adobe Flash and Flex. We need to be always flexible

Collapse
karan_shah89 profile image
Karan Shah Author

True, your best bet is to learn and implement what is most suitable at the moment.

But because Native Development is not going away anytime soon, nothing is safer than that :)

Collapse
simonschubert profile image
Simon

I like the kotlin multi platform part but I wish you would have written a whole section about it.

Collapse
karan_shah89 profile image
Karan Shah Author

Simon, you're right. Kotlin Multi Platform deserves much more mentioning - I'm currently doing some of my own digging on the same and would probably come up with some blog dedicated to just that in the coming weeks.

But thanks for pointing it out and thanks for reading my blog :)

Collapse
simonschubert profile image
Simon

That sounds great. I'm looking forward to it :)

Thread Thread
piannaf profile image
Justin Mancinelli

My post comparing Kotlin Multiplatform (KMP) to Flutter, React Native, and Xamarin is a bit old now (KMP and Flutter are improving quickly) but I think it is still relevant dev.to/touchlab/how-does-kotlin-mu...

Please also have a look at other articles we've written focused on KMP dev.to/touchlab.

Thread Thread
simonschubert profile image
Simon

Thanks for the article, it was a good read.

Greetings to you guys at Touchlab. Some time ago Kevin Galligan introduced me to the KotlinXcodeSync plugin.

Collapse
stereoplegic profile image
Mike Bybee

Every Expo SDK release (and the growth of the React Native community in general when it comes to packages with native as well as pure JS integrations) makes it easier and easier to never worry about writing native code. Add in Expo updates or CodePush, and you don't have to upload new IPAs/APKs to app stores and await their approval processes for updates which only touch non-native code.

Throw in React Native Web (already in Expo since SDK 33, though only truly useful IMO since 36 or 37) and Electron (at least until a desktop alternative can stick around to match in feature parity and stability, and easy to add to Expo), and you can build not only Android/iOS apps, but also PWAs and Windows/MacOS/Linux. For RN CLI or bare Expo projects, there is also Microsoft's React Native for Windows and MacOS (or you can build MacOS apps with Catalyst). NodeGui and Proton Native are options for all three desktops, mapping to native desktop UI primitives similarly to how RN does to mobile primitives.

I have built several projects with 100% JavaScript codebase (custom code, obviously not native community modules or the native scaffolding that you get just like you would with Flutter as I understand it) and up to 95% of it shared between all platforms.

As for Flutter, I have no interest in trying to hunt down or train Dart devs, just as I have no interest fragmenting my team into separate languages for each platform. I can go MUCH faster and cheaper than a 30% reduction with a tiny team of junior devs I can quickly ramp up, from the largest available talent pool (JS devs) on Earth.

Collapse
jswhisperer profile image
Greg, The JavaScript Whisperer

I started mapping out simple examples for nodegui react too if anyones interested in getting started :P dev.to/jswhisperer/nodegui-react-c...

Collapse
stereoplegic profile image
Collapse
tensorprogramming profile image
Tensor-Programming

This is a funny little article. It's also a bit misleading because technically flutter is a native development platform (though react native isn't). The whole xamarin thing is wrong but enough people have said something regarding that.

The only technology that might potentially kill native wasn't even discussed in this article and is still a long way from that point (at least a decade). That would be WASM. In the future, wasm could define entire operating systems and could potentially be faster. With wasm sandboxing, you don't have to worry about kernel vs app memory or the different execution rings. But then if the OS uses wasm then everything written on top of it would also be native.

Collapse
karan_shah89 profile image
Karan Shah Author

While Flutter is a native dev platform, it is still new so while the community is growing, a lot of tools, third party SDKs and others are still missing. Unless you're using google backed tools like firebase, you will still need to get your hands dirty with native code like one has to do with RN.

Also, WASM is still too far away to talk about. It's a great tool - like PWA but unless it receives first-class support from the OS and adoption by developers, it remains a fad.

There are and have been numerous technologies which possess the potential to disrupt but very few actually do!

Collapse
tetsuoii profile image
tetsuoii

Thanks, I've been waiting for this question and the answer is NO. C is and will continue to be the most direct, performant, compatible and standardized language for all forseeable future. C compiled (machine code) binaries run faster in emulators than any of the competitors on native systems. C bindings have direct, uncluttered access to more systems functions than any other API. They can be recompiled for any hardware. They do outperform all lesser languages by a degree of magnitude. We don't use middleware upon middleware, we access the buffers and parse the data directly based on the most common standards. The loss of convenience pays back sevenfold in degree of control and level of detail. Native rules because it is directly corellated to how machines work. I know this because I've programmed computers since they came with basic shells, and I've seen every development. Nothing will replace C any time soon, and any investment in other languages is futile because native will prevail as it has for the last forty years. You just can't reach that level of control and performance any other way.

Collapse
dsadnick profile image
dos-dylan

No, but I hope click bait will start to die.

Collapse
karan_shah89 profile image
Collapse
gsgarces profile image
Sebastian Garces

What about PWAs? No mention at all?

Collapse
karan_shah89 profile image
Karan Shah Author

PWAs like I mentioned in one of my previous comments still isn't a first class citizen on iOS platforms.

While I'm not denying the support for PWA, I believe it's not in Apple's best interests to do so as well. It wants to control the user experience better and wants that 30% revenue real bad as well.

PWAs are currently more of complimentary partners to mobile apps. I've not seen a single major product or marketplace which would have a PWA but not have a native mobile app

Collapse
pavermakov profile image
Pavel Ermakov

I can't express how much i dislike react-native. It's so hard to develop something other than a simple to-do or fetch/display data app.

The dependencies hell is a thing.

Collapse
karan_shah89 profile image
Karan Shah Author

It works for some, and not for others. I'm sure it has its pain areas!

But as an agency, we have been developing apps natively, with RN and Flutter and first class support has always been for Native.

Collapse
rpalik profile image
Radovan Palík

Xamarin is a dead end just like UWP. The sooner you accept it, the less it will hurt you.

Collapse
f666uct profile image
Gray Hattus

Would have to greatly disagree with you there. Remember when folks stated WPF was dead over 10 yrs ago? Still here. The ability to maintain your business logic, front and backend with C# holds quite the advantage for prototyping and enterprise alike

Collapse
markbrents profile image
Collapse
dirisujesse profile image
Dirisu Jesse

Blatant lies about Flutter app sizes