WPF App Modernisation: A Pragmatic Approach
Tags: wpf, dotnet, csharp, xaml
Published: 2023-10-13 08:37:55

In the world of desktop application development, continuity and stability often trump the allure of new frameworks. Notably, 58% of professional desktop developers stick with the familiar, avoiding radical  changes to their applications. The predominant drive is maintaining or modernising applications within the familiar confines of their existing UI technologies. This preference is not without merit; developers find comfort in the known, and a lower developmental cost comes with familiarity. Rewriting an application is a significant financial and operational risk.

## Cross-Platform UI Toolkits
That's not to say some teams aren't seriously considering their modernisation strategy. While WPF is stable and proven, it is limited to Windows at a time when more and more applications need to run on various operating systems and form factors. Before [Avalonia XPF](https://avaloniaui.net/XPF), WPF developers had limited options. One option would be to migrate to a cross-platform UI toolkit, such as [Avalonia](https://avaloniaui.net/), [Qt](https://www.qt.io/) or [Flutter](https://flutter.dev/), with the best-case scenario enabling some code reuse and the worst case requiring a complete application rewrite.

## Web
The alternative to a cross-platform UI toolkit has been embracing Web technologies, whether [Electron](https://www.electronjs.org/) or moving to the cloud. It's hard to ignore the allure of web technology's ease of deployment, albeit at the potential expense of performance and productivity. 

## Why modernise
With so many mission-critical WPF applications in active development, the discussion of modernisation is buzzing. Why the discourse on modernisation, you ask? The answer is twofold: new platforms equate to an expanded target market and a resilient, future-proof application portfolio. The pathway to modernisation, however, is a strategic decision. Rewriting is an expensive endeavour, irrespective of the technology chosen. The crossroads broadly split into native cross-platform (embodied by Flutter, QT, Avalonia, etc...) or the web. Amongst the native cross-platform contenders,  Avalonia emerges as the frontrunner in facilitating code reuse, a significant cost and time efficiency advantage. That isn't to say that Avalonia (our open-source, cross-platform UI toolkit) doesn't require some changes to your WPF app. It's WPF-inspired but not binary-compatible. 

## Avalonia XPF
If you need WPF binary compatibility, then [Avalonia XPF](https://avaloniaui.net/XPF) has emerged as a solution to modernisation. It offers a path to new platforms without necessitating a seismic shift and rewriting existing applications. We typically see customers running their complex WPF application on new platforms within only a few hours of receiving a trial license! The attraction towards Avalonia XPF stems from a pragmatic standpoint; it's a fast and affordable conduit to broader market reach without the enormous risk of rewriting applications from scratch in a different technology. 

[Avalonia XPF](https://avaloniaui.net/XPF) shines distinctly, enabling full reuse of existing WPF code and 3rd party controls while providing performance improvements and new platforms. It's a proposition of extending the life and reach of your applications without a daunting overhaul.

There isn't a one-size-fits-all answer to app modernisation. It's a journey tailored to individual applications and a team's long-term vision. Engaging in a dialogue on modernisation, understanding the nuances and making informed decisions is the essence of staying ahead. We at Avalonia are at the helm to discuss, advise, and help you navigate the modernisation maze. 

## Next Steps

If you'd like to test your WPF applications on macOS or Linux, then [sign up for a 30-day trial of Avalonia XPF](https://avaloniaui.net/XPF/Interest). 

---

> Remember to download our XPF Sample app, [FamilyShow](https://avaloniaui.net/FamilyShow). The classic WPF sample app is now available on macOS and Linux! 

![FamilyShow App on macOS](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/vh555ee580zt4zrcvc7q.png)