The Xamarin acquisition was always about moving the platform into .NET.
According to a Microsoft development blog, the company intended to bring it into their .NET product from the start.
This move has sound logic behind it. Streamlining everything in the .NET ecosystem lets developers build experiences for any device using a familiar programming language and conventions. The goal is a technical utopia where code is ‘written once, run anywhere'. Microsoft is also benefitting from streamlining the SDKs (software development kits) they need to support.
At Shout, we’re migrating several apps from Xamarin to .NET 6. These projects have yielded some interesting insights, and we wanted to share them with the community.
What is happening to Xamarin?
Microsoft withdrew support for the Xamarin product because cross-platform app support is now part of its main .NET product. In their Support Policy, they made this statement.
“.NET 6 takes over from Xamarin for building Android, iOS, and cross-platform applications. Xamarin.Android and Xamarin.iOS projects should be upgraded to .NET SDK-style projects. Xamarin.Forms projects should be upgraded to .NET Multi-platform App UI (MAUI).”
Support will end on May 1, 2024, for all Xamarin SDKs. Android 13 and Xcode 14 SDKs (iOS and iPadOS 16, macOS 13) will be the final versions Xamarin will target.
What’s the deadline to migrate my Xamarin app?
Even though support won’t end until May 2024, migration needs to begin earlier.
The current versions of iOS and Android operating systems are the last ones Xamarin will support.
When newer versions of iOS and Android debut, a Xamarin-built app won't be able to use all the new features. iOS 17 should start shipping in September of 2023. There's no confirmed date for Android 14 yet but it's likely to be about the same time.
Ideally, developers will be working on updates between the iOS 17 preview (expected in June 2023, at WWDC 2023) and its public release in September.
The timeline for Android would be similar. A developer preview of Android 14 already exists, and developers should be able to begin testing in June after Android finishes tweaking it.
And it's not just about using the new feature sets - older iOS and Android SDKs will no longer have support once Microsoft ends its backing.
With a relatively short time until this date, migration is necessary.
How do you migrate a Xamarin app? How big a job is it?
Microsoft have provided migration documentation and a toolkit for developers, to assist with code migration.
Their docs state that 'you don't need to rewrite all the code'.... but also note that most projects will need 'additional effort' after using the automated tools.
Additional effort is rather vague.
Our experience so far shows that the effort depends on the combination of third-party tools, frameworks and SDKs used to build the app.
There is not always an equivalent combination that works with .NET 6. In these cases, some level of rethinking and rewriting will be needed.
For example, Shout has developed many apps with a bespoke in-house framework to enable some common app functionalities. Our framework depends on Xamarin, and is being rewritten. Other app developers will likely have followed a similar approach.
What other options are there for apps built with Xamarin?
You’ll need to analyse how much work will be required to update your app to the .NET cross-platform.
But is a cross-platform development approach right for your project? In the time since the app’s conception, things could have changed to make you reconsider this route.
You may decide it’s easier to rebuild your app as a native app, creating one each for iOS and Android. If the context has changed, you may now only have a commercial case for one or the other.
Hybrid platforms are another possibility.
You can learn about native, hybrid and cross-platform to see what’s the best choice for you in our post.
What are the risks of not upgrading a Xamarin app?
If you have an existing app that isn’t in active development, the temptation may be to leave it alone. But there are risks.
- Loss of third-party frameworks: If you use any third-party frameworks within your project, they’ll no longer support Xamarin. As a result, it will be extremely difficult and ultimately impossible to maintain the app, as time passes.
- No access to new features: With Xamarin no longer supporting new iOS and Android operating systems, you’ll no longer be able to access these features or optimise the app for these new versions.
What’s next for your Xamarin project?
Frameworks come and go, and Xamarin had over 10 years as a go-to for the mobile app development community.
Its acquisition put it in the hands of Microsoft, which decided it wouldn’t be available forever.
Now, there’s great urgency for Xamarin-based apps to migrate to .NET 6. It may be a big lift for some, and there are other options.
If you’re not sure what’s next, we can help. Our team has a strong track record of adopting and updating the work of others.
Get in touch to discuss your Xamarin project and how we can help with a mobile app migration.