A legacy Xamarin project either needs support or a transition to a modern stack. Microsoft documentation confirms Xamarin.iOS and Xamarin.Android provide direct bindings to native SDKs — no bridge, no intermediate runtime except Mono. This sets them apart from React Native or Cordova: you work with the same UIViewController, UITableView, RecyclerView, ConstraintLayout as in native development, just in C# instead of Swift/Kotlin. Xamarin.Forms adds a shared UI layer on top, but at the cost of losing direct control over each native widget.
Xamarin no longer receives updates from Microsoft, so support and migration require specialized experience. Our team maintains Xamarin-based applications and performs porting to .NET MAUI with documentation of each step and a 30-day warranty. Experience — over 30 projects on Xamarin over 5 years, saving clients up to 40% compared to maintaining two native teams. Typical migration costs start from $5,000 for small apps, with annual savings of up to $20,000 by consolidating to a single MAUI codebase. Our support packages start at $2,500 per year for small apps with up to 5 dependencies.
Supporting existing Xamarin projects
Maintaining a legacy Xamarin app today is a specific task. Key issues:
Outdated NuGet packages. Some packages are no longer updated for Xamarin.iOS 16+ and Android API 33+. A typical example is Xamarin.Forms.GoogleMaps: the last stable release was issued before active support ended, and on Android 13 runtime crashes occur due to changes in geolocation permissions. We must fork, patch, or replace with alternatives.
iOS breaking changes.** Apple continues to tighten requirements for privacy manifests — any app using NSUserDefaults, FileTimestamp, SystemBootTime and other APIs without PrivacyInfo.xcprivacy gets warnings when uploading to App Store Connect, then rejection. In Xamarin.iOS, PrivacyInfo.xcprivacy is added manually as a BundleResource.
Mono runtime and ARM64. Xamarin.iOS compiles to native ARM64 via AOT — no issues there. Xamarin.Android uses a Mono runtime with JIT on ARM, which means larger app size and slow cold start — .NET MAUI on .NET 8 AOT is 1.5x faster in cold start speed.
What's included in Xamarin app support?
When ordering support, we provide:
- Updating target SDKs (
TargetFramework,minSdkVersion/targetSdkVersion) - Patching dependencies and forking outdated packages
- Adding
PrivacyInfo.xcprivacyfor iOS - Fixing deprecated APIs (e.g.,
UIWebView→WKWebView) - Auditing permissions for Android 13/14 with the new model (
READ_MEDIA_IMAGES,POST_NOTIFICATIONS) - Configuring CI for Xamarin:
msbuild/xcodebuildvia Azure DevOps or GitHub Actions with Fastlane - Documenting all changes and providing a report
We train your team to work with the updated code. After the first year of support, maintenance costs decrease by an average of 25%. Contact us for a free audit of your project.
Why migrate from Xamarin to .NET MAUI?
Migration is not just running dotnet-upgrade-assistant. Yes, Microsoft provided a tool with the command upgrade-assistant upgrade --non-interactive — it rewrites csproj, updates namespaces from Xamarin.* to Microsoft.Maui.*, but requires manual fixes in 30–50% of cases. The decision to migrate depends on the app's future: if you plan active development, .NET MAUI is the better choice.
The migration process consists of five stages:
- Code audit – assess the workload, identify custom renderers, DependencyService, Xamarin.Essentials.
- Run upgrade-assistant – automatic update of project files and initial refactoring.
- Manual refinement – replace Renderer with Handler, translate platform-specific code, update build configurations.
- Testing – test on real devices (iOS 16+, Android 13+), including scenarios for push, deep linking, in-app purchase.
- Deployment – publish to TestFlight and Google Play Console, set up monitoring.
The most work-intensive parts of porting:
- Replacing Renderer with Handler
- Translating Xamarin.Essentials to MAUI Essentials (APIs are compatible, but namespaces changed)
- Working with platform-specific code in
DependencyService— in MAUI this is replaced bypartial classor nativeMauiProgram.cshooks.
Comparison Xamarin vs .NET MAUI
| Parameter | Xamarin | .NET MAUI |
|---|---|---|
| UI framework | Forms (shared) + native | Unified MAUI with Handler |
| Performance | Mono JIT (Android) | .NET 8 AOT (both) |
| App size | Larger (Mono runtime) | Smaller (NativeAOT) — up to 50% smaller |
| Support | Ended | Active, LTS |
| Migration tools | — | dotnet-upgrade-assistant |
| Cold start speed | Slower | 1.5x faster |
Xamarin.Forms is significantly outperformed by .NET MAUI — cold start is 30–40% slower on Android, which is critical for users.
What are the main migration stages?
| Stage | Duration | Description |
|---|---|---|
| Audit | 1–2 weeks | Check codebase, identify dependencies and risks |
| Automatic update | 1–2 days | Run upgrade-assistant, update csproj |
| Manual refinement | 2–8 weeks | Replace renderers, adapt platform code |
| Testing | 1–2 weeks | Regression tests, UI tests, manual testing on devices |
| Deployment and documentation | 3–5 days | Publish, hand over code, guide for further support |
Example: Migration cost for a medium app
A medium app with 10 screens and 3 custom renderers: audit $2,000, automatic update $500, manual refinement $6,000, testing $2,000, deployment $1,000 — total $11,500. Typical savings from consolidating two native teams: $20,000/year.
Transition timelines range from 4 weeks (small app without custom renderers) to 3–4 months (large product with deep native integration). Cost is calculated individually after auditing the existing code and assessing the volume of changes.
Typical mistakes when migrating Xamarin to MAUI
- Forgetting to update all
DependencyServicetopartial class— app crashes on first access to platform service. - Not adding
PrivacyInfo.xcprivacy— rejection in App Store. - Leaving outdated packages like
Xamarin.Essentials— they need to be replaced withMicrosoft.Maui.Essentials. - Not updating ProGuard/R8 build configuration (Android) — may cause shrink-removal errors.
Get a consultation on your Xamarin project. We will assess the scope, risks, and timelines. Contact us — we will conduct a free code audit and offer options: support or turnkey migration.







