
‍
‍
Cross-platform development has always promised efficiency.
Write once, run everywhere. Faster delivery. Lower costs.
But in practice, most teams still struggle with the same trade-offs: performance, maintainability, and user experience across platforms.
In the .NET ecosystem, frameworks like .NET MAUI and Uno Platform have become the default choices for mobile development.
But there’s another player that’s been gaining a lot of attention lately: Avalonia.
So we decided to explore a simple question:
image
Yes! Avalonia can be used to build cross-platform applications, including mobile scenarios.
But the more interesting question is not if it can, but when it makes sense, and what trade-offs come with it compared to other .NET frameworks.
That’s exactly what we set out to explore.
‍
image
‍
At UXDivers, we’ve been working on cross-platform .NET applications for a long time.
About 10 years ago, we launched the first version of Grial UI Kit with a simple goal: help developers improve their app design, accelerate development, and build well-structured applications using XAML and C#.
Since then, we’ve worked across multiple platforms and environments — from WPF and Xamarin to modern frameworks — often dealing with complex user interface challenges in real-world products.
Over the past few years, we’ve been increasingly working with Avalonia — a framework we genuinely enjoy using. Not just because of its technical capabilities, but also because of its growing community and the clarity of its long-term vision.
We’ve already used Avalonia in real-world projects, including mobile applications in demanding environments like medical and scientific software, often targeting platforms such as Linux, Windows, and macOS.
But in many of those cases, we can’t publicly share the results.
So, in true UXDivers fashion, we decided to build something we could share.
That’s how Expenso was born.
image
Expenso is a simple cross-platform expense tracking app.
It’s not meant to be feature-heavy or production-ready.
Instead, it’s a focused experiment — designed to explore what building a mobile experience with Avalonia actually looks like today.
We deliberately kept the scope small, so we could focus on what really matters:
image
‍
Expenso is not just a conceptual demo — it’s something you can actually explore.
We’re making the app available through TestFlight, so you can experience how Avalonia behaves in a real mobile scenario, including interaction patterns, performance, and overall UI behavior.
If you want to explore the full experience, including screenshots, features, and access to the demo:
👉 Explore the Expenso demo → https://uxdivers.com/expenso
At the same time, we’re also working with the Avalonia team to make this demo part of their ecosystem, where it will be included as part of selected plans for developers evaluating the framework.
For teams that are actively exploring Avalonia for real-world projects, we’re also sharing access to the full implementation of the app.
Rather than distributing the code openly, we’re making it available to teams that are evaluating how Avalonia could fit into their architecture.
If that’s your case:
‍
👉 Request access to the source code
‍
👉 Try the app on TestFlight
‍
Rather than building a complex product, we used Expenso to validate a few key ideas:
This includes evaluating how Avalonia handles tooling, layout systems, and UI composition within a real development environment, compared to more established frameworks.
Cross-platform development is not just about sharing code.
It’s about building something that feels right in every context.
image
We approached this project the same way we would approach a real product.
We also paid close attention to the development environment and overall tooling experience.
Understanding how Avalonia integrates with existing .NET workflows, editors, and debugging tools was a key part of this evaluation, especially for teams coming from WPF or MAUI.
image
One of the biggest challenges in cross-platform development is not technical.
It’s conceptual.
Designing for multiple platforms doesn’t mean forcing the same UI everywhere.
It means understanding how interactions translate across contexts.
In Expenso, we focused on:
Even in a simple app, these decisions make a big difference in how the user interface behaves and feels across platforms.
Another interesting aspect is how the Avalonia community contributes to evolving UI patterns, controls, and best practices, which plays a key role in how quickly teams can adopt and extend the framework.
image
When evaluating cross-platform development in the .NET ecosystem, most comparisons stay at a surface level.
But the real differences only become clear when you look at how each framework approaches UI rendering, architecture, and long-term maintainability.
If you're currently exploring options, you’ve probably already come across Avalonia, .NET MAUI, and Uno Platform.
Each of them solves a similar problem — building applications that run across platforms — but they take fundamentally different approaches.
Before jumping into conclusions, it’s worth grounding this comparison in their official positioning:
Here’s a simplified way to understand how they differ:
image
‍
‍
image
What stands out is that Avalonia is not trying to compete directly with mobile-first frameworks.
Instead, it takes a different approach — one that prioritizes consistency, control, and long-term architecture across platforms.
This makes it particularly interesting for scenarios where desktop, embedded, and mobile experiences need to coexist as part of the same product.
If you're dealing with complex interfaces, industrial systems, or applications that need to scale across environments — including Linux, Windows, and macOS — this kind of consistency becomes a key factor.
We’ve seen this especially in projects involving embedded interfaces and HMI systems, where UI behavior needs to be predictable across devices and operating systems.
→ https://uxdivers.com
If you're interested in how we approach cross-platform UI architecture in real-world scenarios:
→ https://uxdivers.com/about
At the same time, it’s important to recognize that .NET MAUI remains a very strong choice for mobile-first applications.
Uno Platform also plays a relevant role, particularly in enterprise environments.
The key is not choosing the “best” framework — but choosing the one that best fits the constraints and goals of your product.
If you're currently evaluating a migration from technologies like WPF or modernizing legacy systems, this decision becomes even more critical.
→ https://uxdivers.com/blog/avalonia-ui-review-comprehensive-insights-from-2025
image
After building and testing this demo, a few patterns became clear.
Cross-platform development is not just about sharing code.
It’s about making intentional decisions around architecture, interaction, and long-term maintainability.
Frameworks like Avalonia open interesting possibilities — especially when your product goes beyond mobile and starts to span multiple environments.
But they also require a different mindset.
Instead of thinking in terms of “mobile vs desktop”, you start thinking in terms of systems, consistency, and control.
And that shift changes how you design, how you build, and how your product evolves over time.
image
If you are dealing with cross-platform architecture challenges, legacy migrations, or platform inconsistencies, you are not alone.
Most teams encounter the same patterns as systems grow.
What matters is how early you recognize them, and how intentionally you design around them.
If you're exploring technologies like Avalonia, MAUI, or Uno, taking the time to understand these trade-offs can make a significant difference.
image
It depends on the use case. Mobile scenarios are still evolving and require careful evaluation.
image
Avalonia and Uno Platform offer alternative approaches with different strengths.
image
Yes, using frameworks like Avalonia, MAUI, or Uno Platform.
image
They serve different purposes. Avalonia focuses on consistency and control, while MAUI focuses on native mobile experiences.
image
When you need strong cross-platform consistency, especially across desktop, embedded, and mobile.
image
Balancing performance, user experience, and maintainability across platforms.
image
‍