The interest in cross-platform development has been growing.
More companies have realized the value of having an app that runs on two platforms for about the same time and effort as building a native app.
Besides, modern development tools alleviate the limitations commonly associated with cross-platform development. Today, cross-platform frameworks provide all the tools necessary to create applications with native-like performance, have built-in security means, and give easy access to Android and iOS SDKs.
The latter means the developers can build apps that can use all the native functions of the device.
This blog post will explain the legwork behind application migration, its benefits, and potential drawbacks and help you assess its value for your business.
Since the web provides varying terminology on the matter, we at Syndicode believe it is important to define what an application migration means.
Mobile application migration refers to moving an existing app from one environment to another. It often entails language or database conversions. In practice, it is also inseparable from other application reengineering approaches, namely wrapping and redeveloping individual parts.
Wrapping – or encapsulation – means writing interfaces for existing code in a preferred language without changing them. It is helpful in bridging platform-specific application parts with cross-platform.
Redevelopment means writing a new code from scratch to replace a legacy module.
For convenience, we will use migration as an umbrella term for wrapping and redevelopment in this post.
When a company decides to develop a mobile application, it faces a choice: whether to first launch on iOS, Android, or both. Historically, AppStore has generated more revenue than PlayMarket. That’s why many top popular applications, such as Facebook, Instagram, and WhatsApp, were first released for iOS. Their Android versions came years later.
Due to the specifics of native development, the same app version for different platforms has different codebases and structures. It leads to distinctions in maintenance, visual appearance, navigation, and even performance.
However, as we see a shift towards connected systems, businesses seek efficient ways to provide customers with unified UX across platforms and devices. Migration is a way to achieve uniformity quicker compared to development from scratch.
Having a unified tech stack across the company comes with several benefits:
A prominent example of a company pursuing these benefits is Shopify which decided to migrate all its native apps to React Native a couple of years ago. Alibaba is another big company that works to improve its business efficiency using cross-platform technology, namely Flutter.
The following is a high-level example rather than a strict procedure, as the implementation can vary for different projects and team structures.
Syndicode’s business analysts start a migration project by gathering information about the application’s current status and the project’s goals. They contact the client and closely cooperate with the sales and technical teams to specify the client’s vision, determine requirements and evaluate their technical feasibility.
You can find an example of discovery questions we ask in our blog.
Upon finding a balance between an ideal concept and practical limitations, the technical team decides whether to proceed with the migration. Sometimes, reimplementation from scratch is more efficient. It depends on the state of the legacy code, documentation availability, application architecture, project scope, and time limitations.
Selecting specialists to work on the project, Syndicode pays special attention to the candidates’ experience in mobile app migration and their ability to work in a team. We know that a migration project’s success largely depends on excellent communication between native and cross-platform development teams.
Our general process looks as follows:
You can find a detailed description of the hiring and candidate screening process at Syndicode in our earlier publication about team augmentation.
A cross-platform application must provide the same experience across devices. Therefore, some modifications to the original design might be necessary to accommodate the specifics of different platforms and screens.
The migration engineers start by studying what the system does and how. They may additionally interview the client’s team members with experience with the legacy system and perform Reverse Engineering.
Next, they define parts of the code that can be replaced and prioritize them according to the project goals. The team leader refers to the legacy system and the client’s requirements to create a map of the desired software architecture.
Technical decisions regarding certain technologies and their usage are made at this step.
Further, the team leader creates a general migration plan outlining the order of migrating system functionalities. The project engineers will further iterate on the plan per the Agile approach, detailing and scheduling individual tasks.
Depending on the project size and complexity, a pilot migration is often advisable. Starting with a minor feature is low risk and lets the development team build confidence in a migration project. It is also a way to recognize potential problems and get tangible evidence of the benefits of the move.
The project team migrates the native system to the cross-platform incrementally. In the case of high-coupling code, they refactor the crucial native modules, making those easy to access from the cross-platform side. Then they implement those parts in cross-platform code, focusing on properly integrating every feature before moving on to the next one.
The integration of cross-platform technology into the native app can happen in two methods.
Overall, migration implementation involves iterating on integrating portions of cross-platform code and repeatedly questioning and improving its setup. Continuous integration and delivery (CI/CD) practices help speed up migration by automating the testing of code pieces before they move to production.
It’s important to note that legacy software still has to be maintained during the migration process.
The risk of releasing unstable software as a replacement for the legacy app is high. Therefore, the migration team invests a lot of effort in testing and quality management.
In addition to the regular quality assurance routine at Syndicode, we can conduct thorough beta testing by releasing the first version of the cross-platform app to only a small percentage of users. After collecting feedback and bug fixing, the app can be fully released.
Post-release maintenance of a migrated application involves troubleshooting and updating, just like for a newly made app.
Despite all its advantages, migration from native to cross-platform development isn’t easy. Apple and Android sometimes evolve in disparate ways, creating difficulties for modeling features to work equally well on both platforms.
The biggest issues of native to cross-platform migration projects are
Thus, Airbnb had to call off its migration project due to numerous organizational and technical issues that hindered the implementation of its goals.
Dropbox is another well-known company that has found the time and cost of migration to outweigh the potential benefits.
Looking at these cases, we can conclude that a company should revisit its decision to migrate if it is in one of the following situations:
The world’s largest conglomerates, such as Facebook, Alibaba, and Shopify, prove that cross-platform development can cover all user needs and provide an excellent experience.
On the other hand, the experience of Airbnb and Dropbox shows that migration from a native application to a cross-platform one can come with serious challenges.
Therefore, one must carefully weigh all the pros and cons of migration to avoid overpaying for a project that won’t yield the expected results.
If you’re struggling, Syndicode can assist in assessing your current infrastructure, selecting an optimal tech stack, and collecting the data for an informed decision due to a pilot project.
As an end-to-end development company, we have the capability to plan and execute migration as well!