Native or cross-platform development? Which one do you prefer?January 27, 2021
Native or cross-platform development? Which one do you prefer?
Native or cross-platform development?
The answer (in most projects) is clear for me, so I can tell you right now: I am 100% for native development. Which is the separated development for each platform.
Why? I’ll tell you the real story of our client.
It isn’t about comparing the pros and cons of both approaches. I was thinking more about its benefits and risks. I see a risk of big losses in cross-platform development.
You may see it differently. If so, please tell us your opinion on Facebook or Linkedin.
So why am I a fan of native development? (or not a fan of cross-platform?)
Cross-platform development has its benefits, but...
To be fair, I will summarize the main pros of cross-platform development. I see three of them.
- Multiplatform transfer. Once you develop the app you have a version for Android and iOS.
- Time savings. That corresponds with the first point.
- Better maintainability of the code.
That’s why cross-platform development is so attractive. But I think that these three things are the only pros. It isn’t a bad way to develop but it isn’t always ideal.
Cross-platform frameworks are made as a layer above the operating system. That’s why it has to have some limitations. For example in the power or capability of devices peripherals access.
A potential client came to us last year. He wanted to unite his already existing native apps.
He has already had few developed native apps and wanted the new one which will unite them. He wanted to build this app up on the Flutter, which is a google made tool for cross-platform app development. At this moment, we started to think that it’s not the best choice for our client.
The official release of the first stable Flutter version was in May 2019 which was only 2 months before the situation we are talking about right now. That means that it was still in a development process and he very likely obtained many errors.
The risk of a new framework
Our client’s goal was, of course, to save time. The whole process of app development is not only about main functions. There is also a phase when the RC (release candidate) is being prepared. This is a version of a mobile app that must be well-tuned. After that, you can release a public version which will be able on Google Play and AppStore.
The length of this phase depends on how grown and tuned the framework is. If we choose a cross-platform framework like Flutter, this is the phase in which the main problems will come.
The errors don’t have to be caused by a developer so It’s often very complicated to delete them. They are often in the framework itself because it’s simply not tuned enough.
It can happen that no one is able to delete the error, so it has to be left in the app.
The development team of the cross-platform framework is not and cannot be as big as the development team of the main operating system for Android and iOS. That’s why it cannot react fast enough and has no time to solve all problems that can appear in the project.
The community around the cross-platform is smaller than around a native platform, so the solution to any specific error is a problem.
The Bluetooth library has no stable version
Let me tell you something about communication through Bluetooth.
You need to add a library into Flutter for Bluetooth. The best which we were able to find and which the community-recommended is a Flutter blue. When we were (last year) looking at this library’s Github, we had discovered that it has a 0.6 version so it’s still in the development phase and has not a stable version.
They haven’t done any work on this version for a long time and more importantly, we have seen 122 open issues and 19 pull requests which no one resolves.
There are no experienced developers for the new platform
If the framework is older there are also more experienced developers. It’s not possible that there are senior developers with 3-5 years of experience for a 2 years old framework. Most recent Flutter developers came from native Android and iOS developers and their only experience is mainly from one small project.
Does it make sense to start developing a project which is important for the further growth of the company with a team full of junior developers? I don’t think so.
There is no way back.
If our client will choose the Flutter, he will be risking more than u think. If you once choose the Flutter, there is no way back. If the project can’t be revealed everything can be thrown away and you can start again from the beginning.
There are also hybrid frameworks that you can use in the project with native code for example React Native but Flutter is not one of them.
We have suggested that the development in Flutter will be faster than native but if the project will fail for example because Google will close Flutter or because of technical limits of the Flutter, we could have thrown our code into the trash.
Small benefit, huge risk
We would risk so much for a relatively small benefit. We also wouldn’t have used existing apps that were good to use as a default. That would have saved us a lot of time.
We recommended our client to not risk using a cross-platform development. We can speed up the development process in other ways. We can build it on the already made apps just like in this client's case. Or we can define priorities, make up MVP (minimum viable product), public this product, and finish further functions dynamically. That’s how we can release the product sooner.