🕓 3 MIN State management patterns like …
Building a cross-platform application is challenging. This is where Uno Platform becomes essential.
Sure, we are biased – but hear us out! We’ve been at it for nearly 8 years, and of that 5 years in the open, racking up over 72,000,000 NuGet Package downloads. Along the way, the likes of TOYOTA, Kahua, Cineplex, the City of Ottawa, and more relied on Uno Platform to deliver.
This post is designed to spotlight the significant and subtle productivity boosts that might elude you without a deeper dive or a detailed PoC. But as we always say, you should try it for your scenario and see what works best for you.
The most up-to-date version of this document is on our docs site.
Uno Platform is a developer productivity platform and much more than just a UI framework. Build a single codebase, native, mobile, web, desktop, and embedded apps with .NET.
At the core is a cross-platform .NET UI framework that allows apps to run everywhere with a single codebase.
However, built on this foundation, it is also a rich platform, including libraries, extensions, and tools that accelerate cross-platform application design, development, and testing.
Uno Platform is free and open source under Apache 2.0.
It is well-funded and has a sustainability model built in so that the project is sustainable in the long term. In addition, it is fueled by support from a thriving community of users who regularly send feedback and contribute.
Uno Platform apps run as a single codebase for native mobile, web, desktop, and embedded apps, utilizing the full breadth and reach of .NET. Uno Platform ships its releases in lockstep with the latest .NET releases. So, you can always benefit from the latest and greatest advancements in the .NET world.
Need we say more? Use the IDE that works for you – Visual Studio, VS Code, Rider, as well as GitHub Codespaces & GitPod. Wherever you are, Uno Platform is with you.
Remain on the operating system that you are on. A detailed list of target platforms for which you can develop from Windows, macOS, or Linux is available. Our docs are designed to be OS agnostic, so every tutorial step works regardless of the system you develop on.
With Uno Platform, you have a choice of building polished cross-platform UI with concise declarative UI markup using a modern XAML-centric syntax or declarative-style C# Markup. Both approaches are supported right out of the box. Our C# Markup approach works with both 1st party and 3rd party controls and application-level libraries, mapping directly to the underlying object model. All thanks to real-time C# source generators doing the heavy lifting for you.
Our Hot Reload offers the most comprehensive solution for fast development loop – make a change and see it live everywhere is running in real-time without recompiling. Uno Platform Hot Reload works on:
Design handoff is one of the biggest time traps, as design envisioned by the designer needs to be manually translated to markup. With our plugin*, this process is automatic, and the result is well-structured and performant XAML or C#.
For more information, see Design and Build Uno Platform Applications with Figma.
*Note this plugin is optional
Our Uno Platform Template Wizard and its live version allow you to get to a working project quickly. You can select your preferred version of .NET, choose the target platforms you want to develop for, pick a design system that suits your app the best, pick from the MVVM or MVUX architectural pattern, and throw in any mix of the rich set of Uno Extensions as starting building blocks. Additionally, you can include support for PWA, first-party API server, UI tests, and even generate initial build scripts for GitHub Actions or Azure DevOps, alleviating the hassle of figuring out the complex, cross-platform YAML specifics.
Uno Platform allows you to control each pixel of your UI elements to match the experience you envision. This concept of lookless-controls is very similar to what is named “headless controls” in the React world. Each built-in and third-party control defines its fundamental logic (e.g. how it responds to interactions, handles data, or behaves once a property value is set) independently of a visual style and template. This approach means you can tailor the appearance of any control to fit a special use case, or to match your brand identity. Changes to control styling can even be performed at runtime. Uno Platform leverages this to offer multiple built-in design systems influenced by guidance from popular platforms.
Under the hood, your users benefit from a native app. That is, we are still using the built-in native UI primitives on each target. These build up a native view hierarchy and draws the visuals using native OS capabilities. That way, you still get all the benefits of the native world such as localization and accessibility, but without giving up the rich control of pixel-level details in your app experience.
All of the above remains possible without needing to replicate the same design for each target platform.
Uno Platform controls come pre-built with the Fluent design system, so your app looks the same across all platforms. The Uno Themes library is available to provide alternative styles for your controls and help with adapting them to the other design systems Material Design or Cupertino. All three design implementations take advantage of theme resources, enabling out-of-the-box support for light and dark color modes.
We recognize that many developers have existing WPF applications they want to modernize and offer such a path via Uno Islands, which allows you to host modern Uno Platform content within WPF UI. This means you can start modernizing your application and bringing it cross-platform step by step, not just all at once!
The islands of hosted content enable any app to take advantage of modern WinUI controls but preserve compatibility with its existing WPF experience. For example, an app using the list-details pattern can keep its robust, WPF-built details view while upgrading the list control to a WinUI ListView
. Support for DataBinding between both contexts allows a seamless transition between the two.
Uno Platform-built apps are native apps. As a developer, you can take advantage of each platform’s capabilities and features while enjoying the flexibility to adapt and optimize as needed.
Uno Platform provides access to the original APIs provided by the target platform, both for UI and non-UI functionalities. You will be able to use the UI controls that come directly from the respective target platform’s native SDK. This ensures that your app seamlessly incorporates the familiar look and feel of the platform it’s running on.
This versatility allows for a broader reach with compatibility across all supported platforms and devices.
Uno Platform provides “escape hatches” when needed. This means that you have the flexibility to utilize platform-specific features or optimizations when required, should that functionality not be provided by Uno Platform itself.
Uno Platform simply reuses default behaviors that come from the respective platform itself. This includes features like Input Method Editor (IME), spell checking, password manager integration, autofill, magnifier features (long press on textbox), accessibility features, voice-over, support for TTY (Teletypewriter) and native back swipe gestures.
The resulting app provides a consistent, native user experience your end-users expect.
Uno Platform gives you automatic access to all controls coming from Microsoft and its 3rd party ecosystem. All controls from WinUI, Windows Community Toolkit, or open-source projects developed for WinUI 2/3 or UWP will work with Uno Platform.
The Windows Community Toolkit (WCT) is a collection of helper functions, controls, and services designed to simplify and enhance Windows app development for developers. You can take those WCT features such as the DataGrid
or Expander
controls cross-platform when your project uses Uno Platform.
Uno Platform allows for embedding .NET MAUI-specific controls from all leading 3rd party vendors like Syncfusion, Grial Kit, Telerik, DevExpress, Esri, Grape City, and the .NET MAUI Community Toolkit. Keep in mind that this cross-platform approach works only for target platforms .NET MAUI reaches – iOS, Android, macOS, and Windows. We have 6 sample apps showing how to work with MAUI embedding by all leading 3rd party vendors.
Note: Uno Platform is not built on top of .NET MAUI.
In addition to hundreds of UI controls available from 3rd party UI vendors as described above, we offer our own set of higher-level UI Controls designed specifically for multi-platform, responsive applications.
Displaying consistent shadows in cross-platform apps was always a problem. We are confident that we have solved it! Our Shadow
Uno Platform offers charting components via integration with Maps UI (Open Source) on all targets.
Also, for targeting just mobile and MacCatalyst, you can use Esri Arc
In addition, we are looking into integrating the new WinUI MapControl into our core offering.
Uno Platform offers charting components via integration with Live Charts (Open Source) and OxyPlot on all targets.
Uno Platform offers DataGrid control via our support for Windows Community Toolkit (WCT). You can see the DataGrid implemented by going to nuget.info, which is the web implementation of the popular NuGet Package Explorer. Furthermore, you can see an implementation of it at Uno Gallery, then navigating to “Windows Community Toolkit” tab. Do note that you have options to performance-tune your Uno Platform web apps.
We will support Windows Community Toolkit DataTable once it reaches RTM.
It is a common misconception that Uno Platform is just a UI framework. Nothing could be further from the truth, however! Uno Platform comes with many non-UI APIs built in – ranging from various ways to retrieve device-related information, through access to user and application preferences, all the way to a range of sensors including GPS, compass, or even Accelerometer! All these APIs are fully cross-platform, so you just write once and run everywhere. For those who have a musical instrument, we even have MIDI!
How’s that for music to your ears?
Uno.Extensions is built on top of Microsoft.Extensions to set up and create a host for your application. The host allows access to a multitude of services for many app features, including Configuration, Logging, Serialization, and HTTP. You can even register your own custom services using the same pattern.
As part of Uno.Extensions, Navigation provides a consistent abstraction for navigating within an application. Whether it is navigating to a new page, switching tabs, or opening a dialog, navigation can be initiated from code-behind, XAML, or from within a ViewModel.
Uno.Extensions Authentication is a provider-based authentication service that can be used to authenticate users of an application. It has built-in support for Microsoft Entra ID (formerly Azure AD), OpenIDConnect, Web, and Custom.
The Uno Platform provides access to SkiaSharp as a render canvas for your app, enabling rich support to fine-grained drawing primitives. Uno Platform also uses SkiaSharp to render the UI for GTK, WPF, and FrameBuffer apps.
Based on SkiaSharp support, Uno Platform provides AnimatedVisualPlayer to give the ability to render rich Lottie files directly in your app, for all target platforms.
Uno Platform allows to use .NET 8 features such as Profiled AOT (Ahead Of Time compilation) and the Jiterpreter, to get better performance for your apps and balanced size. Profiled AOT is a powerful feature that allows to continue using the interpreter for code that is not often used, thus keeping your app’s size down.
Uno Platform comes with built-in support for accessible apps such as font scaling and support for screen readers. Support is provided for Windows Narrator, Android TalkBack, Apple VoiceOver, and browser-specific narrators when targeting the web. In addition, Uno Platform provides programmatic access to most UI elements, enabling assistive technology products.
Uno Platform supports localization from the x:Uid
feature in XAML, as well as using resource files from ResourceManager
in plain C# code. Localization is done once for all your target platforms.
XAML Trimming is a feature that allows for trimming the size of WebAssembly apps by removing XAML styles that are not used in your app, helping to bring down the size of your application
Lightweight styling is a way to customize the appearance of XAML controls by overriding their default brushes, fonts, and numeric properties. Lightweight styles are changed by providing alternate resources with the same key. All Uno Material styles support the capability to be customized through resource overrides without the need to redefine the style.
Overriding resources from Uno Material can be done at the app, page, or control level.
Resizetizer is a set of MSBuild tasks designed to manage an application’s assets. With this package, there is no need to worry about creating and maintaining various image sizes or setting up a splash screen. Simply provide an SVG file, and the tool will handle everything else.
Today’s apps run on such a wide range of displays, it is sometimes hard to make sure your icons always look crisp and sharp. To counter this, Uno Platform has a built-in support for the vector-based SVG format!
Your Uno Platform WebAssembly app can run as a Progressive Web App. This means users can install it and run as a normal application on their device. In addition, this gives you even more customization options and additional PWA-specific APIs like badge notifications. You can install the NuGet Package Explorer PWA like a local app!
When you need to display web content within your cross-platform apps, you can use our WebView2
control. Not only will it easily handle rendering of both remote and in-app HTML content, but it will also allow you to implement bi-directional JavaScript communication without any hassle. Note that WebView2
is currently available on mobile and WinAppSDK targets. We are working on an implementation for Skia targets.
Uno Platform provides the MediaPlayerElement
control which allows your app to play media files back in your app. It is supported on Linux through libVLC.
For all your in-app text and code editing needs, you can use our port of the Monaco Editor – the same that is used by Visual Studio Code. With full support for syntax highlighting, you could even build your own WebAssembly IDE!
Because Uno Platform apps are native mobile apps, you can embed any native control on a per platform basis into an Uno Platform app.
Uno Platform views inherit from the base native view defined in .NET binding or the native framework itself, you can incorporate native views into your app’s visual tree. For more information, see UnoConf 2021 – Using Native Controls in Uno Platform Apps.
Your app’s powerful visual tree can also render native components through embedding in Skia targets.
With Uno Platform, you get a choice of your favorite presentation framework – MVVM, Prism, or Uno Platform in-box MVUX/Reactive.
Uno Platform supports SQLite for all platforms, including WebAssembly, to allow for your app to use offline or local caching techniques.
In addition to providing 3rd party control MAUI Embedding, Uno Platform is a proven modernization path for Xamarin.Forms apps. We’ve collated numerous docs to aid you in the migration. Big brands such as TOYOTA have already migrated some of their apps to Uno Platform.
NOTE: Uno Platform is not built on top of .NET MAUI.
Watch Toyota’s video testimonial.
Uno Platform was designed to be source-compatible with WinUI APIs. This gives us the great advantage of being able to port existing code for even the most complex controls directly from Microsoft, preserving all their feature richness. And because WinUI sources are now publicly available, everyone from the community can help!
We are first and foremost app builders who have built hundreds of applications for consumer brands via our sister company – Nventive. We use our platform and tooling daily (dogfooding) and understand the pains of app development first-hand.
Uno Platform started as an internal project at Nventive over 10 years ago, which we have used to develop countless apps for top worldwide-recognized brands. In addition, many Fortune 500 companies use Uno Platform for their internal, line of business applications. Some of those can be found on the Uno Platform case studies page.
We are well known for a friendly and welcoming community which is always willing to help. If you need support time directly from the core team, there are also paid plans available which is how we sustain Uno Platform, a process explained in the Sustaining the Open-Source Uno Platform blog post.
To see your free & paid support options, see our official support page.
Getting started is easy with our workshops that will give you all the necessary intro into cross-platform app development. And the fact that we have multiple workshops means you can pick and choose based on the time you have available and the level of difficulty! Give our Simple Calculator or Tube Player workshop a go.
XAML for UI is a mature & well-documented technology – you’ll always find an example suiting your needs. In addition, there are dozens of training courses and books written to help you learn Uno Platform.
Uno Platform ships official releases 6-8 times per year and dozens of dev builds in between. This flexibility has traditionally allowed us to ship on day-0 alongside .NET, WinUI, and Windows App SDK.
As Uno Platform grows, the team behind it grows as well. The product is in good hands, with a group of focused and highly motivated experts in many areas. The project thrives because of this, as new features and improvements are added daily.
In addition to the UI components mentioned above, Uno Platform apps also integrate perfectly with your existing .NET libraries. This includes both .NET Standard 2.0 and libraries targeting .NET 6, up to the latest with .NET 8. Because of this, your Uno Platform app has compatibility with packages like Json.NET, LiteDB, SQLite, and SkiaSharp.
Welcoming, tight, and helpful community on GitHub discussions and Discord, with over 300 contributors to the project. Popular with over 60,000,000 NuGet downloads of its various packages and is used among the biggest companies. Our core team is always ready to help!
To show Uno Platform’s versatility, we tinker around with technology and share our full-blown apps and code samples you can learn from.
Check out: Cross-Platform Sample Apps with XAML and C# – Uno Platform
Kickstart your building journey by installing Uno Platform and running Uno-check, or dive into our beginner workshop. You’ll have your very first Uno Platform application running across various platforms in just 10 minutes.
Follow us on Twitter
Tags:
🕓 9 MIN Ever wondered how to …
🕓 3 MIN We are introducing over …
Uno Platform
360 rue Saint-Jacques, suite G101,
Montréal, Québec, Canada
H2Y 1P5
USA/CANADA toll free: +1-877-237-0471
International: +1-514-312-6958
Necessary cookies are absolutely essential for the website to function properly. This category only includes cookies that ensures basic functionalities and security features of the website. These cookies do not store any personal information.
Any cookies that may not be particularly necessary for the website to function and is used specifically to collect user personal data via analytics, ads, other embedded contents are termed as non-necessary cookies. It is mandatory to procure user consent prior to running these cookies on your website.
Uno Platform 5.2 LIVE Webinar – Today at 3 PM EST – Watch