Tips to Migrate Existing Native Mobile App to Flutter
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. Focusing on migrating the existing native mobile app-Android/iOS to Flutter, we may face different kinds of challenges.
Suppose you have a product with two different native mobile apps; 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 mobile apps 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. 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 while migrating native mobile app to Flutter.
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 a 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. An app that focuses on South Asian countries has a higher percentage of android users compared to apps that focus on Western countries. 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. During the migration process, we can increase this number to once a week or three times a month.
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.
Author: Pankaj Kharel | Mobile Applicate Engineer