Is Flutter the Future of Mobile Development?
Tags: flutter, mobiledevelopment, appdevelopment
Published: 2020-02-05 06:21:23

---
title: Is Flutter the Future of Mobile Development?
published: True
description: Even some of the big companies (who already have developers for both native Android and iOS) are using Flutter in their production app. So, how is this drastic change coming?
tags: Flutter, Mobile Development, App Development
---
![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/g8t0pdywzs07vi8hd2vm.png)
Most of the companies try to adopt a cross-platform app development framework so that they have to hire a small number of developers who would be handling both the iOS and native Android part. But, this mindset of people is slowly changing now, with the introduction of Flutter. Even some of the big companies (who already have developers for both native Android and iOS) are using Flutter in their production app. So, how is this drastic change coming? Let's explore it in more detail.

## What is Flutter

On the [official Flutter Website](https://flutter.dev/), **Flutter** is defined as the Googleâ€™s UI toolkit for building beautiful, natively compiled applications for **mobile**, **web**, and **desktop** from a single codebase.

On December 4, 2018, **Flutter 1.0** was released at the [Flutter Live](https://developers.google.com/events/flutter-live/) event, denoting the first "**stable**" version of the Framework. Since then Flutter has improved a lot in terms of performance. 

Recently, on December 11, 2019, [Flutter Interact](https://developers.google.com/events/flutter-interact) took place and it brought a number of improvements to the Framework with the introduction of **[Flutter 1.12](https://medium.com/flutter/announcing-flutter-1-12-what-a-year-22c256ba525d)**.

> A summary of all the announcements in **Flutter Interact** is available [here](https://blog.codemagic.io/flutter-interact/).

In the initial phrases, most of the developers were only designing prototype apps for their company with Flutter. But now, some of the well-renowned companies have started using Flutter throughout their app. 

> You can explore the innovative apps created using Flutterby visiting their official **[Showcase](https://flutter.dev/showcase)** webpage.

If you are an **Android developer** and want to try out **Flutter**, then there is a full [documentation](https://flutter.dev/docs/get-started/flutter-for/android-devs) available, for helping you apply your existing Android knowledge in Flutter app development.

## Flutter vs Native Android

Native Android has been in the market for a really long period of time. Also, it is very **stable** and gives a great **performance** across various sizes of Android devices. So, why should you look at some cross-platform solutions, like **Flutter**? Though native Android provides a satisfying performance, it comes at a cost of a huge amount of **boilerplate** code, which restricts the innovation and creativity of a developer. Let's discuss it in more detail.

At **Google IO 19**, Android officially became **Kotlin** first for developers, which focused on improvements in terms of code compactness and readability. Rather than introducing new features, Google mostly worked on improving the developer experience across Android Studio and it's tools. Also, Google launched **[Jetpack Compose](https://developer.android.com/jetpack/compose)** to enable developers to create **declarative UI**, which requires less code, and it provides powerful tools and intuitive Kotlin APIs.

The biggest advantage that **Flutter** gives in comparison to native Android is the **cross-platform** support, i.e., you can use the same codebase for different platforms like **Android**, **iOS**, **Web**, **Desktop**, etc. 

But can it deliver the same performance and stability as the native app does? When it comes to cross-platform this is the most important question that all developers have in their minds. So, let me say that **cross-platform** apps still might not be as **stable** as **native** apps nor it can give the same level of **performance** like native apps in certain situations. But in comparison to other cross-platform solutions, **Flutter** is able to bridge this gap to a large extent. And, now after so many years of improvements, Flutter is able to reduce this gap to such an extent, that you might never be able to tell the difference between a cross-platform and a native app running side-by-side.

Now, the question comes, how can a cross-platform app be as performant as a native app? This is due to the excellent **architecture** of Flutter Framework and due to the language used by Flutter, i.e., **Dart**. 

I will talk about the architecture of Flutter in a bit.

## Flutter vs iOS

In the initial days of iOS development, the programming language used by Apple was **Objective-C** which most of the developers hated at that time but were forced to use as it was the only option available if you wanted to carry on with iOS development at that time. But fast-forward to 2014, **Swift** was introduced which was type-safe and used concise but expressive syntax, and developers just loved it. It was also fully compatible with Objective-C and the existing iOS APIs. Though the APIs that were used by Swift were not that good initially, they are a lot improved now.

Flutter was initially released keeping in mind these four pillars: **Beautiful**, **Fast**, **Productive** & **Open**. And after one year it has proven to hold onto it. 

Most of the cross-platform app development frameworks that are present suffer from bad **performance** and **stability** issues. They are easily identifiable when they are run beside a native app. Flutter has bridged this performance gap to a large extent in comparison to other cross-platform frameworks, like React Native and Xamarin.

How did Flutter become as performant as a native app? Again the answer lies in its **architecture**.

> As an iOS developer if you want to try out Flutter then there is a nice [Official documentation](https://flutter.dev/docs/get-started/flutter-for/ios-devs) available.

## Architecture

### Native Apps

In the native apps, whether it is Android or iOS, the **native app** code talks to the **Platform** to create **OEM Widgets** or for accessing various **Services** like audio, sensors, camera, etc. The widgets are rendered to a **screen canvas**, and events are passed back to the widgets. This architecture restricts the widgets to be reused across all platforms as they are **OEM specific**. And, this is the reason we have to write the whole app for each platform separately.

Before moving on to Flutter, let's check out the architecture of another popular cross-platform solution, **React Native**.

### React to Native Apps

React Native apps are written in **JavaScript**, so to access the OEM widgets it has to use a bridge to talk to the **Platform**. This is where the bottleneck of this Framework lies. 

So, the solution from React Native developers:

> In order to architect performant **React Native** apps, we must keep passes over the bridge to a minimum. 

### Flutter Apps

Now, coming to the Flutter apps. **Flutter** solves the most challenging part of the other cross-platform frameworks, i.e. getting rid of the **BRIDGE**. Flutter does not use the OEM widgets, it provides its own widgets. Flutter moves the widgets and the renderer from the **Platform** into the app, which allows them to be customizable and extensible. This also helps Flutter to maintain the consistent **60 FPS**.

## Dart

Another reason that developers love Flutter is because of the **Dart** Language. 

> Dart is an object-oriented, class defined, garbage-collected language using a C-style syntax that trans-compiles optionally into JavaScript.

Some of the features that separate **Dart** from the other languages are as follows:

* Dart uses **AOT** (Ahead Of Time) compilation, which gives the fast startup and fully customizable Flutter widgets.

* Dart also uses **JIT** (Just In Time) compilation, which is the main reason that **Hot Reload** exists. I will talk about it in a bit.

* Dart has a **garbage collector** built in the language. This enables Flutter to achieve smooth animations and transitions that run at 60fps.

* Dart allows Flutter to avoid the need of a separate declarative layout language like **XML** in Android or separate visual interface builders because Dartâ€™s **declarative**, **programmatic** layout is easy to read and visualize.

* Dart has an **easy learning curve**, because it has similarity with various other languages. It is the combination of the features of these languages that makes **Dart** so powerful.

> At **Flutter Interact**, Dart was updated to **version 2.7** with support for extension methods, character package and null safety preview. You can get more info from this [article](https://medium.com/dartlang/dart-2-7-a3710ec54e97).

## Can Flutter dominate over native apps?

Flutter is full of features and it promises a good performance, but it still not production-ready for certain applications. 

It lacks in the availability of certain **plugins**. Some of the important plugins that are available, are still buggy and are not usable in large scale production applications. But this highly depends on the kind of app you or your company would be working on, if you get good plugins and it satisfies your app's **feature** needs, then Flutter might be the best choice for you.

As you might have already understood till now, **Flutter** takes a very different approach as compared to other cross-platform solutions, which enables it to achieve nearly native performance and the **Dart** language makes it really easy for developers to show their creative skills, by making the apps beautiful and intuitive to use for the users.

> At this point in time, you shouldn't ignore Flutter. If you haven't yet tried out Flutter then go and try it now, because it is better late then never.

Some other strong points of Flutter that separates it from other frameworks are listed below.

### **Octoverse report**

According to the GitHub's [OCTOVERSE](https://octoverse.github.com/) report of 2019, **Flutter** is one of the fastest-growing open-source projects and it has climbed to the **2nd position**.

**Dart** has become the fastest-growing programming language on GitHub.

![](images/dart_octoverse.png)

### **Fuchsia**

Fuchsia is an open-source operating system currently being developed by **Google**. 

Flutter was developed in the early phases keeping Fuchsia in mind. **Fuchsia** uses Flutter as its UI rendering engine.

What makes Fuchsia so unique is the ability to run on any CPU architecture. It is based on their own micro-kernel called **Zircon** which they claim is able to run on smartphones, desktops, embedded systems and more.

> There is an official [Fuchsia](https://fuchsia.dev/) webpage, which contains some documentation on how to get started with Fuchsia.

At this point in time, it is not known when the **Fuchsia OS** will be available and what kind of devices will it support.

### **RIVE**

Rive (previously 2Dimensions) is a powerful design and animation tool, which allows designers and developers to easily integrate sophisticated animations into their platform. You can import **Rive** animations directly into your Flutter apps which run smoothly at 60 fps.

> For more info check out their [official website](https://rive.app/).

### **Ambient Computing**

At **Flutter Interact '19**, Flutter was introduced as the UI platform designed for **[ambient computing](https://developers.googleblog.com/2019/12/flutter-ui-ambient-computing.html)**. By this they meant to say that initially Flutter was introduced as the cross-platform solution only for **mobile devices**, but now it is expanding to even **web**, **macOS**, **embedded devices**, etc. You can say that the Flutter framework is showing its true powers now, and I can't wait to see what it can do in the future.

### **Community Support**

As [Flutter](https://github.com/flutter/flutter) is totally an open-source project, the developer community plays an important role in its success. There are a number of awesome Flutter plugins that came from this community and developers are experimenting with new things in Flutter every day, pushing its limits.

## Conclusion

**Flutter** has become a really powerful framework and can't be ignored anymore. Even if you are a professional **native Android** or **iOS** developer, you should definitely try out Flutter and Dart to understand their true powers. 

Whether Flutter will replace **native apps**, still remains a question. While we wait for this answer, it is safe to say that Flutter has a very bright future. Even if it fails to replace native app development, it has already proved to be the best UI design framework available at this point of time.