Telerik blogs

One developer shares from his experiences with WinForms and .NET MAUI—what do you need to consider before migrating your legacy app?

Technical decision-makers facing the challenge of migrating legacy systems from old .NET Framework 4.x WinForm apps face a common thread: whether to continue with traditional WinForms or something modern and promising, like .NET MAUI.

I have done some migrations, and I’m sharing the main points I consider to help you navigate this challenge for your own apps.


WinForms is a long-standing and efficient platform for the Windows environment supported by Microsoft. Its ecosystem is mature and has had a long path with decades of evolution—including running on the latest .NET runtimes, like 6, 7 and 8.

Staying on WinForms is definitely an option if Windows support is all that is needed. And more options are available all the time for bringing in islands of modernness with Blazor, for example. (More on this in an upcoming post.)

If you have a legacy WinForms application that needs to be moved to a new technology, it’s necessary to consider how much it is integrated into the Windows platform and whether it makes sense to continue with it or if new technologies will aggregate the latest performances and gains for the end users according to the solution requirements. Consider that migrating the runtime from .NET 4.x to .NET 8 is also refreshing to a modern UI with Telerik Themes.

You can use Progress Telerik UI for WinForms, which provides 160+ control for your enterprise.


.NET MAUI is relatively new, but it is the future of application design because it generates cross-platform applications with the same code base.

Today, it supports macOS, Windows, Android and iOS. However, it will soon be possible to use it on Linux distros (it’s not natively supported yet), bringing a new era for UI application development.

You can use Telerik UI for .NET MAUI controls, with 60+ UI components for your enterprise, and more coming with every new release. With these controls supplied by Telerik, you can build your solutions with great visual appeal and deliver high quality.

If you don’t know, Progress worked closely with Microsoft as they brought .NET MAUI to the market so Telerik UI could be in sync.

.NET MAUI Patterns

.NET MAUI has a new pattern design that may sound strange for classic WinForms developers and will need to be learned. Here are the main patterns:

MVVM (Model-View-ViewModel): This separates UI and business logic. This style encourages a clear separation of concerns, which makes it easier to maintain and test.

XAML (eXtensible Application Markup Language): XAML is a declarative markup language for defining user interfaces. It enables us to construct UI layouts more intuitively and expressively, like HTML for web development.

Data binding: This support connects UI elements to data sources. It enables dynamic alterations to the user interface based on changes in the underlying data.

Styles and templates: They support defining, making it simple to keep a consistent look and feel throughout our application. Styles define characteristics that may be applied to various UI elements, whereas templates define the structure of more complicated UI elements like lists and grids.

Features animations and transitions: This allows us to create fluid and interactive user experiences. We can utilize animations to provide visual feedback during user interactions or to generate more engaging UI effects.

Material Design: It can benefit from the principles and components supplied by the Material Design Library. It combines clean, minimalist design to produce intuitive and visually appealing user experiences.

Responsive design: It enables us to develop user interfaces that adapt to any screen size and orientation. This is critical for developing cross-platform programs that must function on various devices, including smartphones, tablets and desktop PCs.

Accessibility: It contains accessibility capabilities to ensure that individuals with disabilities can use your apps. This includes support for screen readers, high-contrast options and other accessibility features.

Most of these patterns are not available in WinForms.

Pitfalls You Should Care About

If your legacy app strongly depends on custom components, you may need to rewrite 100% of the code independently of your chosen technology.

Your current team will have time to learn how to work with .NET MAUI, so you will need to provide training or hire new, already skilled developers.

Is the migration intended to run in the future on a platform other than Windows? Are you considering running it on macOS or Linux?

And, just as importantly, does the migrated system need new and improved UI attributes unavailable on the Windows platform?

WinForms vs. .NET MAUI

This comparison table demonstrates some of the pros and cons of each technology.

AspectWinForms.NET MAUI
Platform supportWindowsCross-platform: Windows, macOS, iOS, Android
ModernityLimited modern UI featuresSupports modern UI patterns and design
DevelopmentRapid development with drag-and-dropSingle codebase for multiple platforms
Learning curveFamiliar for teams with WinForms experienceNew concepts and patterns may require new skills
EcosystemA matured ecosystem with extensive resourcesThe ecosystem may still be evolving
PerformanceGenerally stable but may face scaling issuesMay introduce some performance overhead
Future-proofingMay face limited future supportStands as the future of cross-platform UI dev
Tooling supportComprehensive tooling support is availableTooling support is still evolving


Here is a quiz to help you decide whether to use WinForms or .NET MAUI for your solution. Each question is worth 10 points.

  1. Is your legacy application firmly integrated into the Windows platform? (10 points for Yes, 0 points for No)
  2. Is it essential for your migrated system to have new and improved UI attributes? (0 points for Yes, 10 points for No)
  3. Is the migration intended to run in the future on a platform other than Windows? (0 points for Yes, 10 points for No)
  4. Is your team already familiar with .NET MAUI? (10 points for Yes, 0 points for No)
  5. Is future-proofing a concern for your application? (0 points for Yes, 10 points for No)
  6. Does your legacy application depend on custom components? (0 points for Yes, 10 points for No)
  7. Is cross-platform support necessary for your application? (0 points for Yes, 10 points for No)
  8. Is modern UI design important for your application? (10 points for Yes, 0 points for No)

Check Your Result

0 to 30 points: Preference for WinForms
31 to 50 points: Indifferent
Above 50 points: .NET MAUI


If you already use Telerik UI for WinForms, the answer would be more straightforward: You would have to consider other points that are not only technical. Migrating from WinForms .NET Framework 4.x to .NET 8 will be smooth without significant surprises. You can find a guide to do it here:

The quiz might not be as effective as desired if you don’t have a team to explore the .NET MAUI framework or your sponsors don’t want to continue with WinForms.

Sponsors and end users must be listened to in order to confirm whether the cost is justified and verify whether the new implementation will be well received.

Several factors must be considered, including platform support, UI modernity, development speed, learning curve, ecosystem maturity, performance, future-proofing and tooling support.

The choice of a modern framework depends on the solution’s specific needs and technical and functional requirements.

Feel free to discuss this and other subjects related to migrations and which technology to use on my LinkedIn, and we can exchange ideas about it.

About the Author

Jefferson S. Motta

Jefferson S. Motta is a senior software developer, IT consultant and system analyst from Brazil, developing in the .NET platform since 2011. Creator of www.Advocati.NET, since 1997, a CRM for Brazilian Law Firms. He enjoys being with family and petting his cats in his free time. You can follow him on LinkedIn and GitHub.

Related Posts


Comments are disabled in preview mode.