Syndicode
Contact Us
Maryna Medushevska
March 21, 2023

Is Native to Cross-Platform Application Migration the Right Move?

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.

Cross-platform app development
The growing interest in cross-platform app development

What is application migration?

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.

Why migrate in the first place? 

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.

Benefits of mobile application migration

Having a unified tech stack across the company comes with several benefits:

  • Opportunity to leverage the capabilities of the target cross-platform technology across all company applications;
  • A single development team instead of separate Android, iOS, and non-mobile teams, which results in smoother communication between development and design teams;
  • Faster development and testing due to shared codebase;
  • Lower maintenance costs compared to native development. This is especially true for multi-product companies.
Benefits of cross-platform app development
Why invest in a cross-platform app?

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 mobile app migration process at Syndicode

The following is a high-level example rather than a strict procedure, as the implementation can vary for different projects and team structures.

1. Project discovery

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.

2. Selecting an approach

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.

3. Assembling a project team

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: 

  • We determine the expertise and skills required to achieve the project’s objectives and decide on the number of specialists by looking at the project’s scope;
  • Our HR department selects the best matching candidates from our pool, and a team is assembled;
  • A project/account manager ensures the team members are familiar with the project details, know their responsibilities, and understand their tasks;
  • A responsible person on the Syndicode’s side reaches out to the client regularly to ensure their satisfaction with the team and their work.

You can find a detailed description of the hiring and candidate screening process at Syndicode in our earlier publication about team augmentation.

4. UI/UX design

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.

UI design for iOS and Android

5. Creating a migration strategy

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.

6. Migration execution

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.

  1. Building the cross-platform code as a library or package and importing it into the native project. This method yields clean repositories, and the native team not having to go deep into the cross-platform code. However, testing is more challenging in this case.
  2. Including cross-platform code inside the native code. This imposes equal responsibility for the migration on the native and cross-platform teams and fosters communication. On the other hand, it may cause confusion about responsibilities in the teams. Hence, more complicated management.

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.

7. Follow-up tests and maintenance

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.

When is it better to keep things native?

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

  • Interrupted business flow. To effectively plan and execute the migration, an organization must shift its processes from a platform-based approach to a multidisciplinary team structure.
  • The development speed will go down before it goes up. The team will need time to adjust to the new technology fully, and people might feel like their productivity has dropped.
  • High cost of migration. The typical approach to migration is to do it slowly, replacing a small part of the application and repeatedly testing it. For a while, a company will have to deal with more complexity while working towards improving the situation.

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:

  • Complex product with several large apps. Maintaining three environments for the entire time necessary for migration can be very expensive and difficult from technical and organizational perspectives.
  • Limited access to talent experienced in cross-platform development. A company needs a core group of experienced developers to plan and make the shift. Moreover, it must have the resources to maintain this expertise by hiring new engineers and training those in-house with missing skill sets.
  • You want to keep some of the native technology. Refusing to shift to cross-platform fully will likely complicate maintaining proper communication between native and cross-platform in terms of providing the same layout, navigation, delegate methods, and versioning.
Native to cross-platform migration pros and cons
The pros and cons of app migration

Conclusion

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!