Migrating Existing Native Mobile App to Flutter

Kharelpankaj
4 min readSep 29, 2021

--

With the introduction of flutter in 2017, its popularity has widely spread among the developer community till now. It has been adopted by many big companies like Tencent, Google Assistant, Square & many more for their app development.

Implementation of Flutter for small, medium & large projects has been explained in many posts & I recommend going for it. So, we won’t be discussing whether the flutter is applicable for different types of projects or not. Today I will be focusing on migrating the existing native mobile app-Android/iOS to Flutter.

Suppose you have a product with two different native applications Android/iOS and a user base of more than a million users. In such a case, it is always a tough decision to migrate those native applications to a flutter app. Achieving a million users takes time & during this time, your native app has gone through real user testing and many bug fixes cycles. As a result, your code is stable. The introduction of a new platform and presenting the brand new app to millions of users is very volatile and introduces many bugs to millions of users.

“Waiting hurts. Forgetting hurts. But not knowing which decision to take can sometimes be the most painful…”

There are many approaches to mitigate those issues. With proper QA, Alpha & Beta testing most of these issues can be resolved. But, we all know the real QAs are the real users who use the application on different devices with different use cases. So until we go to the real users, we can’t consider our application to be stable.

Let’s take a scenario. Suppose, our Android & iOS application is in the play store & app store respectively. We have developed a flutter application with all features of the native app. We have completed all our Alpha & Beta Testing. Everything seems fine and we are ready to upgrade our native app to a flutter app on both platforms.

Before we upgrade to the flutter app, here are few tips that we have implemented in one of our app with more than 2 million users- Speak English Online.

  1. Knowing your users based on platform

First, we have to separate the platform with more users. In most cases, the app that focuses on South Asian countries has a higher percentage of android users whereas the European countries have more iOS users. So, let’s select the platform with fewer users.

2. Upgrade for the platform with fewer users

Once you come up with a platform with less user base, we will plan for the up-gradation in the selected platform. Suppose, we are upgrading the flutter app to the iOS platform only.

3. After up-gradation to a single platform

Once we upgrade the flutter app to a single platform with less user base, we will be observing the performance of the app & bugs. For a certain time, we can increase the frequency of updating the app in a selected store, in our case App Store. Generally, we update our app to store once or twice a month, of-course the critical issues need to be resolved and updated ASAP. During the migration process, we can increase this number to once a week or three times a month. This way all the early bugs from the flutter app will get resolved & the code can be made stable in lesser time.

4. Integrate the feedback part

Feedbacks from the users is the most valuable resource for any organization. Every app should have this feature to know the user expectation, experience, and issues related to the app. Since it is more likely to have more bugs, new flow & new UI/UX experience during the migration process, collecting feedback from the users is highly recommended in this early stage. Hearing the users & implementing the relevant feedback in an early stage will help the app to be more stable & user-friendly.

5. What if a new feature needs to be integrated during this process

We have successfully updated our native app in the app store with the flutter app and are in the process of stabilizing our code. During the period, there comes a situation where we need to add a new feature to the android app. Should we develop the feature in native android?

Stabilizing the code might take a long time mostly between 1 -2 months. During this time, it is most likely that your business team will have a new feature requirement. In this case, I recommend you to develop the new feature in flutter & integrate that into the native app. This way all the new development that takes place after the flutter app is released for one of the platforms will be in the flutter.

Once all the above process is implemented, after a certain time when we feel confident about our code stability, we can go for full-fledged up-gradation of the flutter app on both platforms.

The above tips were based on my personal experience and what I implemented in one of our products. Our android app that occupies around 70% of our user mass is in native android- “Speak English Online” and our iOS app “Speak English Online” is in a pure flutter. One of the module-Reward & Earn, from the native android app of “Speak English Online” is written in a flutter. Once the code is stable in the app store, we will be upgrading it to the play store ASAP.

--

--

Kharelpankaj

Mobile Application Engineer, Traveller & Pure Vegetarian