Are you considering using Flutter for your next mobile app project? If so, you’ve come to the right place. The purpose of this blog is to give you the lowdown on Flutter, in particular whether it should be considered for your next mobile application project. In this article, we cover the considerations both a technical and non-technical decision maker will need upon making a call on Flutter for their next project.
A Disclaimer About Open Source Technology
Below are my thoughts on using Flutter. Please note that all mobile apps differ, as does the adoption of technologies. With open source technology being so heavily based on adoption, and my inability to predict the adoption of Flutter, please use the following at your own discretion.
What is Flutter?
Flutter is an open source technology allowing developers to create apps for mobile, web, and desktop from a single codebase. In other words, a developer can write code for a single application, and this code will be automatically compiled (or built) into different applications across multiple devices. The app can then be made available as a website or on the device’s respective app store.
Best of all, the app will compile into the native code recognised by the device. This means the experience is smooth and responsive, unlike other cross platform technologies you may have seen in the past.
Is Flutter a Native App, or Is It Hybrid?
If we rewind a few years, the question commonly asked in mobile app development was “shall I develop a native or hybrid app?”. Native apps are built using the device’s default programming language. For example, iOS’ native programming language is Objective C, and Android’s native programming language is Java. Programmers would build apps in these languages (known as “native apps”) as they led to the best experience on the device. The reason is that they were developed in the language most natively known to the device.
Then, due to the high cost of maintaining two mobile apps, developers created technologies that enabled them to develop within one programming language. The app would then be available across both iOS and Android. This was achieved by effectively building a unique website, which presided within a “frame” allowing it to be disguised on the app store as an app (and to have an icon on the device’s home screen). While this was a lower cost, the experience wasn’t as smooth as an app (as we have come to expect from websites on mobile devices).
Flutter is not a hybrid technology. It allows developers to code in one programming language, but it compiles into the device’s native code. This is very similar to React Native, a modern technology with similar attributes. However, to best understand where Flutter is positioned, it’s best to consider Flutter, React Native, and Ionic (a common hybrid framework).
Comparing Flutter with React Native and Ionic
These three technologies are the most commonly considered when a developer wants to build a new mobile app for iOS and Android, but with only one programming language.
The below diagram, courtesy of Nebojša Otašević’s Udemy course (here) shows the differences between Flutter, React Native, and Ionic.
Put simply, consider the following:
- Flutter: Compiles into a full native app.
- React Native: Compiles individual components into native code.
- Ionic: Wraps a website in a “frame”.
While this may lead you to believe Flutter is the best technology for a mobile app, this isn’t necessarily the case. With any new open source technology decision, there are always three considerations:
- Adoption of Technology
- Speed for Programmers
- Customisation of Applications
Let’s consider these respectively.
Adoption of Technology
Flutter is a new technology with its first stable release published on 4 December, 2018. In technology terms, this is extremely new, particularly because as an open source technology, this doesn’t allow enough time for developers to have more than 1.5 years of experience with the framework. Even then, this is assuming they started commercial projects with the technology upon its first release, which is incredibly unlikely. Open source technologies are only as valuable as the network of developers who have adopted the technology, so be weary that adopting this soon poses a technology risk due to the lack of knowledge. Further, it presents an operational risk due to the lack of talent available if you need to find new developers to support your project.
As a technology backed by Google, and being the first technology capable of compiling into native mobile applications, desktop applications, and the web, I predict this technology will be the standard in the next 2 to 3 years.
Speed for Programmers
It goes without saying that Flutter’s efficiency is maximised due to the speed of developing multiple applications from one code base. It is very easy to write applications with Flutter, and if your company has a website, Android, and iOS app, this has potential to amalgamate all code into a single piece of infrastructure.
Customisation of Applications
Having been developed by Google, Flutter comes prepackaged with an Android / Google default interface. This means that with minimal effort, you can create a very Android-friendly user interface. With more effort, you can configure all page elements and interactions to align them with your company’s branding and user interface design.
Summary on Flutter
Flutter is a strong technology backed by Google. It has the potential to be the industry standard in web, mobile, and desktop application development. While my prediction is that this will be the outcome due to the efficiency benefit it provides, ultimately the developer community will decide based on their own adoption of the technology.
If you have further questions regarding Flutter, or if you’d like to discuss an upcoming project, please don’t hesitate to contact us here.