Cross-platform mobile app development has been one of the best options for startups; while Flutter is very popular too, there few problems with Flutter.
When considering the cost of using native platforms, which include paying two or more developers to develop your app for iOS and Android with a shoestring budget, especially with startups.
It’s safe and wise to go for the less costly option and efficiently provide your desired result.
Cross-platform app development like React-native and Xamarin have been getting a lot of adoption lately for their peculiarity. One of them is Flutter, Google’s Open source SDK (Software development kit) platform, which shipped its first stable release in 2018.
Flutter is a mobile app SDK that gives developers a simple way to build and deploy visually attractive, fast-loading mobile apps on both Android and iOS platforms.
Flutter is good for startups that want to dive into the app development world of both Android and iOS. Undeniably Flutter is an exceptional framework and offers tradeoffs that allow mobile app development teams to build apps across all platforms (iOS, Android, and Web) with a minimal budget.
The problems with Flutter
Like any relatively new technology, Flutter has some drawbacks, which we’ll briefly discuss below.
Limited support for platform-specific APIs:
One of the problems with Flutter is the platform-specific APIs:
Because of the differences in hardware and on-device features unique to each platform, every platform has its way of implementing and handling things like media, location, foreground/background services.
Flutter does not provide the ability to use and customize some native APIs out-of-the-box. A developer with insufficient experience in native mobile development may have more difficulty building certain features.
This lack of experience could ultimately add more time to the software development life cycle (SDLC) than a native approach would have, completely negating the speed up-sides of Flutter.
Technical Debt:
There’s a popular saying that goes; “The size and amount of external codes your project depends on constitutes a large chunk of its technical depth”. By anonymous
It is true that flutter had thousands of packages in its arsenal so one might ask, what could possibly go wrong?
I would share an experience:
So recently we pushed an app to Google Playstore and it was rejected.
What went wrong!
They mentioned we used permission that wasn’t necessary for the kind of projects we were building.
We looked through our app’s android manifest but could not find that permission. Could this be sorcery? We thought, lol, but then this is code; it’s not voodoo, so if Google’s internal review team flagged it, something was wrong.
So we looked through plugins related to the functionality and found the culprit! The developer of the plugin added an unnecessary permission request.
What did we do?
We created a copy (fork), removed the permission request from the android manifest, and used our own copy, and the app was approved.
The question is, What if we didn’t have someone on the team with native android development experience to detect the problem and make the fix?
So, regardless of the number of plugins, if you want to build complex mobile apps with Flutter, your team will still need native app developers to keep the technical depth at the barest minimum.
Relatively bigger app size:
We can not overlook the file size of Flutter, which is one deficiency in Flutter. Due to the importance of storage, developers try to minimize the size of their apps as much as possible.
Developers try their best to develop apps with reduced size so that their app does not get uninstalled by users due to limited space.
Flutter’s Android release APKs are way larger than that of native apps by a wide margin. It currently sits at around 5MB instead of Java (539KB) and Kotlin (550KB) apps — and that’s for the bare minimum app.
Although, to be fair, its competitors share the same problem, and probably even more so — the release version in Xamarin will take almost 16MB and 7MB in React Native.
No support for CodePush:
CodePush is a cloud service that enables Cordova, Ionic, and React Native developers to deploy mobile app updates directly to their users’ devices. This can help push bug fixes and performance enhancement quickly.
Unlike its counterparts, Flutter does not support this feature out of the box; developers must submit changes to the app stores before getting to users no matter how miniature, even if all you have to do is correct a typo or fix a button’s padding.
Conclusion
Although Flutter is new compared to its counterpart and has its drawback, Flutter is still one of the fastest-growing cross-platform applications.
Even with the problems with flutter, Flutter is an excellent option; if you are looking to develop a mobile app for your company, you need to outsource to a software development team that has all the problems covered to save your company the stress of handling them internally.
Let us know in the comment section the challenges you’re facing using Flutter as your cross-platform mobile application development technology.