4 ms·
I can speak in favor of Avalonia from experience [1] for exactly this use case: - You want to target Windows, macOS, Linux, Android, iOS, and browser from one
by sltr 3y ago
I can speak in favor of Avalonia from experience [1] for exactly this use case:
- You want to target Windows, macOS, Linux, Android, iOS, and browser from one codebase.
- You've already decided to use .NET / XAML. (So you're not comparing to e.g. Flutter)
I chose Avalonia over the alternatives [2] that also match this criteria. It's been a good experience, and I'm overall happy with the app. The solution template "just works" on all platforms, and iteration from it to my finished app was straightforward. I found libraries for everything, whether Avalonia-specific or just .NET. The Avalonia community is active, and the devs are responsive on GitHub. Avalonia as a company will be around as they have a strong business model selling XPF.
Some downsides are:
- Mobile is not as polished. Avalonia started on desktop and expanded to other platforms. Some controls feel awkward on mobile, because they were originally for desktop. Example: TextBox. If Mobile is your primary concern, consider Uno or Xamarin [2].
- The "non-native controls" approach has pros and cons. Your controls render the same everywhere, but they can feel out of place, depending on your styling. For example, buttons in my app don't look like iOS buttons, which Apple cares about a lot. However, my users already familiar with the look on Windows or Android can easily use the app on iOS and vice-versa.
- Build times for mobile and web are slow. I mostly edit-compile-debug on desktop and then smoke test on other platforms.
- You still have the usual deployment and distribution challenges for each platform: desktop installers; macOS requires notarization; iOS requires App Store review. For most of that, Avalonia has excellent docs [3] and there are supporting libraries [4].
[1] I created FitEdit. https://github.com/endurabyte/FitEdit/ https://github.com/endurabyte/FitEdit/
[2] https://github.com/robloo/PublicDocs/blob/master/XAMLFrameworkComparison.md https://github.com/robloo/PublicDocs/blob/master/XAMLFramewo...
[3] https://docs.avaloniaui.net/ https://docs.avaloniaui.net/
[4] https://github.com/velopack/velopack https://github.com/velopack/velopack