Microsoft support for Xamarin ended on 1 May 2024. If your organization still relies on Xamarin software, the decision can no longer be postponed indefinitely. The practical choices are to upgrade to .NET, rebuild with a native or cross-platform framework, move suitable business software to a managed platform, or retire what is no longer needed.
The best path depends on the code and dependencies you can reuse, the device features the product needs, its integrations, the skills available, and who will own it after migration. Microsoft's Xamarin support policy makes .NET the most direct vendor-supported route, but no tool can remove the need to assess, test, and plan the cutover.
Key takeaways
- Xamarin support ended on 1 May 2024, so compatibility, security, store-submission, dependency, and staffing risks increase over time.
- .NET MAUI is the closest continuation for Xamarin.Forms, but a native, cross-platform, or managed rebuild may fit better.
- Compare credible options with an application inventory and one representative migration slice before retiring the old software.
What changed for Xamarin?
Xamarin was Microsoft's C# and .NET approach for building mobile software across Android and Apple platforms. Xamarin.Forms provided a shared UI layer, while Xamarin.Android and Xamarin.iOS exposed platform-specific APIs.
The product reached end of support in 2024. Existing apps do not stop running on that date, but Microsoft no longer supplies Xamarin product fixes, updates, or technical assistance. The official policy identifies Android API 34 and Xcode 15-era SDKs as the final target versions from the Xamarin SDKs. That creates growing compatibility, security, store-submission, dependency, and staffing risk for software that remains unchanged.
Xamarin replacement options
Use this neutral framework before selecting a technology:
| Path | Best fit | Reuse potential | Main risks to test |
|---|---|---|---|
| Upgrade to .NET MAUI or current .NET platform projects | Teams staying in C#/.NET with reusable business logic and supported dependencies | Potential reuse of project logic and some UI patterns; Microsoft says projects do not all need a rewrite | Dependency compatibility, custom renderers or handlers, platform APIs, build pipelines, UI differences, and test coverage |
| Rebuild natively | Software where platform-specific experience, APIs, performance, or release control is central | Business rules and service contracts may transfer; UI code usually does not | Two platform implementations, specialist skills, duplicated testing, and long-term coordination |
| Rebuild with another cross-platform framework | Teams accepting a new ecosystem for a shared codebase | Product requirements, APIs, data contracts, and tests may transfer; Xamarin UI code generally will not | New language or runtime, package maturity, native escape hatches, accessibility, upgrades, and operations |
| Rebuild on a managed software platform | Business processes that fit configurable platform capabilities and need managed delivery | Information model, content, roles, and integration contracts can transfer | Platform fit, source-code expectations, data and identity constraints, extensibility, commercial model, and portability |
| Replace or retire | Duplicated, low-adoption, or obsolete software | Data and records may need migration or retention | User disruption, record retention, integration shutdown, and change management |
Best fit
- Upgrade to .NET MAUI or current .NET platform projects
- Teams staying in C#/.NET with reusable business logic and supported dependencies
- Rebuild natively
- Software where platform-specific experience, APIs, performance, or release control is central
- Rebuild with another cross-platform framework
- Teams accepting a new ecosystem for a shared codebase
- Rebuild on a managed software platform
- Business processes that fit configurable platform capabilities and need managed delivery
- Replace or retire
- Duplicated, low-adoption, or obsolete software
Reuse potential
- Upgrade to .NET MAUI or current .NET platform projects
- Potential reuse of project logic and some UI patterns; Microsoft says projects do not all need a rewrite
- Rebuild natively
- Business rules and service contracts may transfer; UI code usually does not
- Rebuild with another cross-platform framework
- Product requirements, APIs, data contracts, and tests may transfer; Xamarin UI code generally will not
- Rebuild on a managed software platform
- Information model, content, roles, and integration contracts can transfer
- Replace or retire
- Data and records may need migration or retention
Main risks to test
- Upgrade to .NET MAUI or current .NET platform projects
- Dependency compatibility, custom renderers or handlers, platform APIs, build pipelines, UI differences, and test coverage
- Rebuild natively
- Two platform implementations, specialist skills, duplicated testing, and long-term coordination
- Rebuild with another cross-platform framework
- New language or runtime, package maturity, native escape hatches, accessibility, upgrades, and operations
- Rebuild on a managed software platform
- Platform fit, source-code expectations, data and identity constraints, extensibility, commercial model, and portability
- Replace or retire
- User disruption, record retention, integration shutdown, and change management
No option wins on a feature count. Test the same high-risk slice on each credible path and include the people who will operate the result.
Path 1: Upgrade to .NET MAUI
.NET MAUI is the closest continuation for Xamarin.Forms teams that want to remain in Microsoft's development ecosystem. Microsoft's upgrade overview lists upgrade paths for Xamarin.Android, Xamarin.iOS, Xamarin.Mac, Xamarin.tvOS, Xamarin.Forms, Xamarin.Forms UWP, and several extension or binding-library project types.
The same guide makes 3 boundaries clear:
- projects need to become SDK-style;
- projects do not all need to be rewritten;
- multi-project solutions do not have to become one multi-targeted project.
Microsoft also warns that its Upgrade Assistant performs common project and code changes but usually leaves additional work. Treat automation as the start of the migration, not acceptance evidence.
What to inventory for .NET MAUI
- Project types and target platforms. Identify Forms, native Xamarin, UWP, extensions, bindings, and platform-specific projects.
- Packages and SDKs. Confirm that each dependency has a maintained .NET-compatible version or a supported replacement.
- Custom renderers and effects. Map them to handlers or another current implementation and test behavior.
- Platform services. Review notifications, background work, deep links, files, camera, location, authentication, and device integrations.
- UI and accessibility. Revalidate layouts, focus order, text scaling, screen-reader output, gestures, themes, and device sizes.
- Build and release. Update signing, CI/CD, store targets, provisioning, telemetry, and rollback procedures.
- Tests. Preserve useful domain tests, then add coverage for changed APIs and critical platform behavior.
Choose this path when the .NET skills, code, architecture, and dependency set still support the product's future. Do not choose it only because it looks closest on an architecture diagram.
Path 2: Rebuild the software
A rebuild can remove accumulated architecture constraints, but it is a product and data migration, not only a framework change. Start with current user outcomes and production evidence. Do not reproduce every old screen without checking whether the underlying task still matters.
Native development
Native iOS and Android development can be appropriate when the software relies heavily on platform-specific UI, device services, or performance characteristics. The cost is separate implementation and release work for each platform unless the scope is deliberately narrow.
Test staffing, parity, shared service contracts, release coordination, accessibility, monitoring, and incident response before committing.
Another cross-platform framework
Frameworks such as Flutter or React Native can support shared mobile development, but they introduce a different language, runtime, package ecosystem, and upgrade path. Review the Flutter architectural overview and React Native architecture documentation as primary starting points, then verify the exact libraries and native modules your software needs.
Do not estimate reuse from screenshots. Prototype authentication, the most difficult device integration, offline or background behavior, one complex screen, and a production build.
Path 3: Use a managed platform
A managed software platform can fit internal tools, portals, directories, training, events, forms, field data collection, approvals, and similar business processes. The value is not that migration becomes effortless. It is that the team may be able to replace custom application infrastructure with configurable platform capabilities and managed publishing.
Evaluate the path with the same rigor as code:
- Can it represent the required roles, states, data, and exceptions?
- How do authentication, permissions, audit, and data residency work?
- Can it integrate with the systems of record and handle failures?
- Which web, mobile, offline, and distribution models are supported?
- What can be extended, exported, or moved later?
- Who approves changes and supports users after launch?
- Which capabilities or controls depend on the commercial plan?
Fliplet helps teams create web and mobile software from a prompt, refine it quickly, and launch with governance, security, and integrations built in. For a managed rebuild, teams can review and edit the first version, manage data and access, and choose the right publishing path. Business teams can shape the experience while IT keeps oversight of security, integrations, access, and release decisions. Fliplet's current platform and features pages do not document Xamarin source import or conversion, so treat this option as a rebuild. Validate a representative part of the old product against the current features, integrations, security, and pricing before committing.
Build a migration evidence pack
Before choosing a replacement, create one evidence pack that every option must address.
Application inventory
- supported platforms, minimum OS versions, stores, and distribution methods;
- active users, critical tasks, and business owners;
- source projects, packages, SDKs, and build pipelines;
- platform APIs, custom renderers, native modules, and background services;
- integrations, credentials, data stores, retention, and offline behavior;
- accessibility, security, privacy, and regulatory requirements;
- analytics, crash reporting, service levels, and support volumes.
Representative migration slice
Choose a flow that includes a signed-in user, important data, one difficult integration or device capability, an error path, analytics, and a production-like build. Avoid a homepage-only prototype.
Acceptance gates
| Gate | Evidence |
|---|---|
| Functional | Critical tasks and exceptions pass agreed tests |
| Data | Records reconcile; retention and deletion rules are understood |
| Security | Identity, permissions, secrets, dependencies, and threat scenarios are reviewed |
| Accessibility | Keyboard, screen reader, text scaling, contrast, and touch interactions are tested |
| Operations | Build, release, rollback, monitoring, support, and ownership are documented |
| Commercial | Licences, infrastructure, migration effort, and ongoing staffing are compared on the same horizon |
A practical migration sequence
- Stabilize the current app. Capture the last known working release, dependency inventory, store configuration, and production metrics.
- Confirm business ownership. Decide which functions to retain, change, replace, or retire.
- Map data and integrations. Identify systems of record, migration rules, reconciliation, and cutover dependencies.
- Prototype the high-risk slice. Test the hardest assumptions on each credible path.
- Choose with recorded evidence. Document why the selected path meets requirements and why alternatives were not chosen.
- Migrate in controlled releases. Run old and new paths in parallel where risk requires it, and define rollback.
- Retire safely. Archive required records, remove credentials and integrations, communicate support changes, and close the old operating model.
Common migration mistakes
- Assuming all Xamarin code will transfer because both paths use C#.
- Choosing a framework before inventorying dependencies and platform-specific code.
- Recreating old navigation without validating current user tasks.
- Migrating screens while postponing identity, data, integrations, and release operations.
- Comparing licences without engineering, cloud, testing, support, and maintenance cost.
- Treating a generated or converted build as production-ready without security and accessibility review.
- Leaving the old app, credentials, and data flows running without a retirement owner.
Sources
This guide compares migration options. The sources below support its current platform and migration guidance:
- Microsoft: Xamarin Support Policy
- Microsoft Learn: Upgrade from Xamarin to .NET
- Flutter: Architectural overview
- React Native: Architecture overview
If a managed platform is one credible path, book a Fliplet demo to test a representative part of the Xamarin product against data, integration, access, publishing, and governance requirements.
Ready to see Fliplet live?
Build the software you actually need.
Book a demo to walk through your workflow goals, governance requirements, integration needs, and rollout model.



