MOBILE DEVELOPMENT
13/02/2024 • Jurgen Geys

Xamarin support discontinued as of May 1, 2024

Why you should consider Flutter or React Native over .NET MAUI or .NET for Mobile

Xamarin has been one of the key cross-platform frameworks for mobile apps in the past 10 years. Over 15,000 organizations worldwide have built and used Xamarin applications.

However, Microsoft has decided to discontinue support for Xamarin from May 1, 2024, and replace it with .NET MAUI and .NET for Mobile. The impact will be noticeable starting from April 1, 2024, as distribution of updates for iOS will cease from that date.

Migrating Xamarin to .NET MAUI or .NET for Mobile?

The decision to migrate existing Xamarin apps to .NET MAUI or .NET for Mobile is less straightforward than it may seem. Our experience at ACA Mobile teaches us that a rewrite to another platform is often a better choice. In this blog, we present arguments in favor of this advice.

Why .NET MAUI and .NET Mobile are not a good alternative to Xamarin

  • The roadmap for .NET MAUI and .NET for mobile (https://github.com/dotnet/maui/wiki/Roadmap) provides little clarity and certainty in the long term. Microsoft's decision to retire Visual Studio for Mac, an essential tool for iOS and Mac development, reinforces these concerns and sends mixed signals about their commitment to cross-platform mobile development. Furthermore, Microsoft itself uses React Native for critical mobile applications such as Microsoft Teams and Outlook. Therefore, Microsoft lacks a strategic focus on .NET MAUI and .NET for Mobile.
  • Our experience with migrations to .NET MAUI and .NET for Mobile reveals that there are still many issues in these frameworks. Further stabilization and development are needed to bring them up to the level of the competition. However, we observe only a very limited number of developers actively engaging with the framework. On frameworks like Flutter and React Native, we see 3 to 4 times more activity.
  • The LTS (Long-Term Support) releases of .NET MAUI do not meet the standards we are accustomed to from mature frameworks. Although the release cycle of .NET MAUI follows the standards of .NET, the support period is shorter. This results in the need to constantly update .NET MAUI to newer versions.
  • There is a significant decline in the number of developers actively using Xamarin, .NET for mobile, and .NET MAUI. This trend indicates diminishing confidence in the community, which could potentially lead to reduced support and innovation in the long term.

The challenges of migrating from Xamarin to .NET MAUI or .NET Mobile

Contrary to expectations, migrating from Xamarin to .NET MAUI or .NET for Mobile is not a standardized process. Documentation is very limited, and issues must primarily be discovered and resolved through trial and error. This leads to regressions, where certain functionalities are no longer supported, code obfuscation ceases to work, tooling is unavailable, and existing packages are no longer compatible. Additionally, bugs in the .NET framework itself are frequently uncovered.

Furthermore, the app is not technically better after migration; all technical debt is retained and may even get worse by bug resolution.

The cost of migration, including all bug fixing, can therefore become significant. For some of our larger projects, this entails a process involving multiple developers over several months.

Finally, the question arises whether this migration justifies a long-term investment, considering our doubts about the future of .NET MAUI and .NET for Mobile.

The alternative: rewriting the Xamarin app in React Native or Flutter

From our experience, we are convinced that rewriting the Xamarin app using React Native or Flutter provides more value for your money than migrating to .NET MAUI or .NET for Mobile.

Firstly, both frameworks offer a mature foundation with a long-term vision and support, making the rewritten application easy to maintain, scalable, and future-ready. More details about each of these frameworks can be found at the end of this article.

The rewrite also offers the perfect opportunity to adapt the app to changing or new business needs. It is not just a technical project but also delivers tangible business value.

Moreover, the cost difference between migration and rewriting is smaller than one might think:

  • We rebuild only the app itself, allowing integrations with backend systems to be retained, resulting in significant savings. Even if a Backend-For-Frontend has been used, it can still be preserved.
  • We base the rebuild on the design of the old app, eliminating the need for new analysis work.
  • By starting with a new architecture, we can address all existing technical debt at once. This means that maintenance and future expansions become significantly simpler and therefore cheaper.

In summary, we see that rewriting the Xamarin app in React Native or Flutter does not necessarily have to be fundamentally more expensive than a migration to .NET MAUI or .NET Mobile with bug fixing. Especially when considering the improved maintenance costs, the extended lifespan of the app, and the added business value.

The Benefits of Flutter

Are you considering migrating from Xamarin to Flutter? A wise choice, as Flutter offers several strategic advantages:

  • Future-Proof Technology: Flutter enjoys strong support from Google, serving as the primary contributor with a highly active development community (1313 contributors, of which 72 have made more than 50 commits). Google applies the framework in their own application development, including applications like Google Classroom, YouTube Create, Google Ads, and recently in their AI application Gemini for generating customized UIs during runtime. This provides companies with the reassurance that Flutter is a technology stack maintained in the long term.
  • Popularity: Since its launch in 2018, Flutter has steadily gained market share in cross-platform development. In 2020, 1% of apps in the App Store and 3% in Google Play were written in Flutter. In just three years, this has risen to 9% and 19%. In contrast, Xamarin's share has remained at 4%.
  • Unified User Experience: Flutter utilizes its own rendering engine, managing the UI entirely from Flutter itself. This ensures a consistent user experience between iOS and Android, even across different operating system versions. Older OS versions can also benefit from new features, providing a uniform experience.
  • Access to the Latest Features: While not everything is available out-of-the-box due to Flutter's unique rendering engine, new features are rapidly supported through updates to the Flutter Framework. It is always possible to write native components and make them available within our Flutter code, ensuring essential features are immediately accessible.

The Benefits of React Native

Migrating from Xamarin to React Native is also a smart choice due to the numerous strategic advantages that React Native offers:

  • Future-Proof Technology: React Native was originally developed by Meta to position itself as a mobile-first company in the market. There is a highly active development community contributing to its future (2604 contributors, with 89 having made more than 50 commits). Meta uses React Native for its own applications, such as Facebook, Facebook Ads Manager, Oculus, and Messenger Desktop. Microsoft also invests a significant amount of energy and time in React Native, using it for the development of applications like Microsoft Office, Microsoft Store on Xbox, and Power Apps. This instills confidence in the stability of the framework.
  • Popularity: Since its launch in 2015, React Native has experienced a rapid rise in popularity. It has maintained a stable market share in mobile application development for several years. In 2020, 8% of apps in the App Store and 10% in the Google Play Store were developed with React Native. In just three years, these percentages have increased to 13% and 18%, respectively.
  • Use of JavaScript/TypeScript: Thanks to the use of highly popular programming languages, React Native is very accessible for developers. This results in an abundance of available developers who can easily maintain the application since they are familiar with the language used.
  • Access to the Latest Features: As React Native maps to the OS components, applications developed with it can directly and effortlessly leverage new features upon their introduction. For example, out-of-the-box support for a 120 Hz refresh rate is provided. Additionally, it is also possible to write and integrate native components for use within React Native.

Conclusion

In light of the discontinuation of Xamarin and the complex challenges associated with migrating to .NET MAUI or .NET for Mobile, rewriting Xamarin apps in React Native or Flutter emerges as a strategic and cost-effective alternative. Both frameworks provide reliable solutions with long-term support, ensuring easy maintenance and scalability.

ACA Group is ready to assist your business in making informed decisions. Let's shape the future of your applications together!

Do you want to ensure the long-term success of your Xamarin mobile applications

Contact us