This article was originally posted on https://ayusch.com/9-points-to-consider-before-using-flutter-for-mobile-development/
Flutter is making headlines these days in the mobile development space. Its popularity can be estimated by the fact that it is still not in its stable release but has already been adopted by some of the most famous companies such as Alibaba, Google Ads, Birch Finance, App Tree, Hamilton Musical and many more.
And since more and more companies are adopting flutter, it has seen a rise in the job market as well. More and more jobs for flutter development are being posted each day. Startups who were once enthusiastic about React Native, are now tingling with flutter. And rightly so, it has many benefits and I believe it is a much better alternative to React Native.
I am sure you must have heard about Google’s new operating system for mobile devices Fuchsia OS. Google didn’t make any public announcements but silently rolled out an open source repository on GitHub named Fuchsia. Many videos of Fuchsia OS running no a real device have popped up.
Here is a video of Fuchsia OS in action:
And, you know what?
ALL THE APPS FOR FUCHSIA OS WILL BE DEVELOPED USING FLUTTER!!
Yes, you heard it right. All the apps for Fuchsia OS will be written using the Flutter SDK. So, it’s better to prepare yourself for the next wave of technology hitting the markets where cross-platform development will be the next big thing.
Here are all the points why I think Flutter is the next big thing, and you should be looking into it:
- It is actually native (and not React Native native).
- It is the default programming language for all the apps for Fuchsia OS.
- More and more startups are looking into it.
- It is being supported and promoted by Google XD
So, you might wanna jump into flutter development right now and start developing your first app right? But wait. Now that I have told you what flutter is, and can do, let me tell you what it isn’t and can’t do.
Things you might wanna consider before moving to flutter development
1. It is not a LANGUAGE, it’s an SDK:
Flutter is not a language, rather an SDK just like Android SDK. For android development Java/Kotlin are the programming languages, for cross-platform development using flutter, DART is the official programming language.
According to the official website of flutter: “Flutter is Google’s mobile app SDK for crafting high-quality native interfaces on iOS and Android in record time. Flutter works with existing code, is used by developers and organizations around the world, and is free and open source.”
An SDK (Software Development Kit) is really a toolkit. It contains all the libraries, tools, documentation etc. required to build a software. It is an accessory and not a programming language. If you want to learn flutter development, you have to consider learning DART language, which is pretty easy if you’re already familiar with any OOP language.
2. It is still in RELEASE PREVIEW
Although it is being used by companies such as Alibaba, they are only using it in some parts of their app. Flutter is in its RELEASE PREVIEW and will have a stable launch on 4th December, 2018. This is one of the reasons why some developers are still skeptical towards going all out with flutter and porting their apps to flutter.
Having said this, I personally did not find any bugs while developing an app using flutter. I can’t say about other developers. If you found any bugs or hiccups, do mention in the comments below.
3. It does not have a very large support community
You might have to wait a little longer to get your questions answered on Stack Overflow XD. Flutter is still relatively new and does not have a community as large as other cross-platform solutions such as React Native or pure native apps.
The community is growing day by day and I believe after it’s stable launch on 4th December, 2018 it would really explode.
But if you are someone who is afraid of documentation (although I believe Flutter has one of the best documentations present online. I personally didn’t need to refer to any other source than the official docs) than this might be a setback to you.
4. Everything is a Widget
Now this one might take some time getting used to. Everything in Flutter is a widget. Even the app itself is a complete widget.
It is not intuitive for anyone getting started, to think widgetly (yes, I just made that up :P). The layouts are widgets, the typography is a widget, color is a widget, button is a widget.
It doesn’t sound intuitive. When we think of widgets the first thing that comes into our mind is that it might be a part of an application. It might be a module. But to think that it is a complete app itself is something that’s going to take some time to wrap your heads around.
It might take you a few days to a month to get comfortable with flutter. Adding margins, paddings and other attributes is not intuitive at first. Also, you’ll need to spend some time understanding Box constrainsts.
But once you get a hang of it, you’ll get to know that it was totally worth the pain.
5. DART is the official programming language
Say what DART!!
That’s the reaction of most of the people when they first hear about DART. DART is a general-purpose programming language developed by google in 2011. It is a client optimized language used to build beautiful mobile and web applications.
Developers at Google and elsewhere use Dart to create high-quality, mission-critical apps for iOS, Android, and the web. With features aimed at client-side development, Dart is a great fit for both mobile and web apps.
The apps built using DART are real native apps whose code compiles down to JAVA byte code, so at the machine level, it is indistinguishable from real native apps.
Having said all that, it is still not a very popular programming language and you might have to spend some time understanding all the syntactical sugar.
6. A bigger APK size
Don’t be surprised if you see your newly created, fresh out of the oven flutter app bigger in size than it’s native counterpart by 50–60%.
Flutter apps (even React Native apps) have a considerably larger size than its native counterparts. I have even seen some trivial flutter apps 6–7 MB in size.
So, this is something you might wanna consider if your app is already large in size. You don’t want to scare off your users with a huge bloated APK.
7. Not all features are supported
If your app communicates with any hardware via Bluetooth then you’d have to develop these features separately for iOS and Android and integrate them into flutter. In this case, one of the major selling points of cross-platform development i.e. time, will not be much beneficial as you’d end up spending time to create these features natively for both the apps.
8. Still not comparable to a pure Native App
This is a point that’s applicable to not only flutter but all the cross-platform solutions such as react native etc. Their performance is not even near to that of a native app.
In comparison to native apps they use approximately 30% more memory and are also less CPU efficient.
9. The Job market
Flutter is really popular among startups, but among established companies, I’m not so sure. I haven’t seen any job opening for a flutter developer (or as a matter of fact, any cross-platform developer) on the career’s sections of companies such as Google, Facebook, Amazon, Quora etc.
They are all looking to hire Native Developers. Basically, if money is not a concern for your startup, then you’d be inclined to develop a native app. There is no reason to bog off your users with bloated APK size just to adopt something rad.
Cross platform apps are way behind native apps in terms of performance and if you have the budget to setup two different teams for iOS and Android, then you might wanna consider going native.
Flutter is a great cross-platform solution and is growing day by day in popularity. More and more developers are adopting flutter for mobile development and startups are also looking to hire flutter developers for building their mobile application. It’s definitely worth looking into, if you are considering to enter cross-platform development space.
Having said that, if you can afford to have a native app for iOS and Android, you might wanna refrain away from going cross-platform. It still has a long way to go before it can match the quality of a native app.