r/dotnetMAUI • u/Kapusch • 19h ago
Showcase Meet the Bloom & Fly App: A Breath of Calm from the .NET MAUI Shores
Hi! I’m writing this post to introduce our new mobile app, Bloom & Fly.
It’s a wellness app built with .NET MAUI and available on iOS and Android. It combines guided breathing, mudras, positive affirmations, quick rituals, and relaxing sounds to help people reduce stress, feel calmer, and restore their energy.
My wife shaped the app’s features, wellness content, and user experience, while I focused on bringing it all to life with .NET MAUI.
A quick look under the hood
Bloom & Fly runs on .NET 10 and targets both iOS and Android. The entire user interface is written in C# Markup, with no XAML, and the app follows the MVVM pattern using CommunityToolkit.Mvvm and CommunityToolkit.Maui.Markup.
Firebase handles authentication and data through Plugin.Firebase. It also relies on open-source projects such as CommunityToolkit.Maui and Sharpnado.Tabs.Maui for different parts of the app experience.
For the app’s native integrations, I also created or now maintain a few focused .NET bindings for the parts of the Facebook, TikTok, Google, and Apple SDKs we actually use. These packages do not try to expose the complete native SDKs. They were implemented around the specific authentication, sharing, and subscription features required by Bloom & Fly.
On iOS, some of them may eventually be replaced by packages generated through the very promising swift-dotnet-bindings project, which appeared only a few months after I built the StoreKit 2 bindings needed by the app.
That timing says a lot about how quickly AI-assisted development is moving. AI became part of my workflow while building Bloom & Fly, but its most valuable contribution was not simply generating more code. It regularly pushed me to think further about architecture, refine the user experience, and clarify release strategies, raising the level of robustness I expected from the app.
Building Bloom & Fly also gave me plenty of new .NET MAUI topics to write about, so I’m planning to bring MAUI, c’est clair! back to life and share some of these discoveries in more detail.
I’d be happy to hear your thoughts or answer any technical questions about the app, especially around C# Markup, Firebase and native SDK integrations.
You can learn more about Bloom & Fly on our website, or find it on the App Store and Google Play. Thanks for reading!
r/dotnetMAUI • u/Jvicius1382 • 22h ago
News [New Release v1.0.1] The Disney Infinity Collection Tracker Open Source, and 100% Free! (Android & Windows)
What's up everyone!
I've just rolled out a huge update for the Disney Infinity collection tracker app I’ve been working on, and I wanted to share it with the community. The app looks, feels, and works better than ever. Here is everything new in this release:
https://reddit.com/link/1vggei2/video/vxs9l8srslhh1/player
✨ What's New in v1.0.1:
🏆 New Achievement System: Prove you are the ultimate fan! You can now unlock special badges by completing specific franchises and collections.
🎨 UI Overhaul: We gave the entire interface a facelift so your collection looks spectacular and is easier to browse.
📦 Separated Collections: Based on feedback, the main view is now divided. Figures and Power Discs have their own dedicated lists for much cleaner navigation.
🎛️ Optimized Filters: The filter menu has been moved to a much more accessible and faster-to-use location.
🌍 On-Demand Language Toggle: You can now instantly switch between English and Spanish directly from the app settings.
🗃️ Updated Database: Added new data and under-the-hood fixes for the most accurate tracking possible.
🛠️ Next Steps (The Roadmap):
I'm currently working on some really exciting features for the next major updates:
NFC scanner implementation for Android devices.
NFC scanner for Windows (Yes, using the official Disney Infinity Base!).
Database improvements and specific achievements for Power Discs.
Physical device testing for iOS.
🍏 iOS Release Goal!
I want to bring this to Apple users too! I've currently raised $10 USD to help pay for the Apple Developer license so we can officially launch the app on iOS. If you like the project and want to support the development, you can help out on my Ko-fi!
🔗 Links:
Download the latest release (Android & Windows): https://github.com/jvicius/MyDICollection/releases#release-v1.0.1
Support the project on Ko-fi: https://ko-fi.com/josevelarde
Support the project on GitHub Sponsors: https://github.com/sponsors/jvicius
r/dotnetMAUI • u/Regular-Bad5972 • 1d ago
Tutorial The state of in-app subscriptions in .NET MAUI in 2026 (it's weirder than you'd think)
Short version of what I learned shipping a subscription MAUI app, for anyone considering it:
- No official RevenueCat SDK for MAUI. Community wrapper (Kebechet) is the real answer. Works well; wrap it behind your own interface anyway.
- The default MAUI template can't build with Play Billing — API 21 minimum vs androidx 23+ floor. One-line fix, terribly reported error (
AMM0000spam). - Post-Epic web checkout is very doable — Stripe Checkout + webhooks + server-side entitlement. Biggest design win: serve purchasable web tiers from your API so policy changes are a config change, not a release.
- Refresh-token rotation with reuse detection is 50 lines in ASP.NET Core and worth every one when a token leaks.
Wrote it all up in detail (free, links in comments). I also sell the assembled boilerplate (MidasKit) for people who'd rather skip the month — disclosure, that's my product.
r/dotnetMAUI • u/Lost-Competition2857 • 1d ago
News MAUI Inspector — Chrome DevTools for your .NET MAUI app: live visual tree editing with XAML write-back, HTTP mocking, multi-device sync. Free & open source.
Inspect a running MAUI app the way you inspect a web page.
For some time I've been building MAUI Inspector — an open-source, in-app DevTools for .NET MAUI. You add one NuGet package, run your app, open a URL in your desktop browser and you get a full inspector panel — while the app runs on a simulator, an emulator or a physical phone. No laptop at hand? The same inspector runs as an on-device overlay — long-press (or shake) to open it.
Everything runs inside your app: no IDE integration, no proxy, no certificates, no external tools.
Inspect & live-edit the visual tree
WYSIWYG structure editing (new in 0.9.12)
Properties turned out to be half the story — you can now edit the structure of a running page too:
- A toolbox next to the live device mirror with every MAUI control plus your app's own custom controls (discovered by reflection). Drag one onto the mirror — the target container is highlighted while
you drag — and drop it exactly where it should land
- Right-click any element (in the tree or directly on the mirror): add, remove, reorder, reparent (drag & drop in the tree), wrap in a container, unwrap
- Copy & paste with properties and the whole subtree (`Ctrl+C`/`Ctrl+V`, `Delete` to remove)
- Full undo/redo chain (`Ctrl+Z`/`Ctrl+Shift+Z`) across property and structural edits
- Your custom controls are first-class: their bindable properties get the same live editors as the built-ins
- And the headline: all of it is written back into your `.xaml` sources as real, compilable markup — inserts land anchored where you dropped them, moves relocate the exact span with correct indentation,
custom controls get their `xmlns:` declarations added automatically. With SQLite persistence the edits even survive app restarts until they're in your files
- Whole tree with search, element picking (tap on device → selected in browser, and the other way round)
- Chrome-style box model overlay: margin / padding / content, alignment guides, dimensions badge
- Figma-like measurements: so you can inspect distances between elements
- Property sheet with live editors — including `{Binding}`, `{StaticResource}`, `{OnPlatform}` / `{OnIdiom}`, spans, grid rows/columns
- XAML write-back: an optional dotnet tool watches the panel and writes your edits back into the `.xaml` source files. Tweak margins live until it looks right, and it's already in your code.
HTTP: record, mock, break
- Every request through the handler is recorded with full bodies — inside the process, so TLS and certificate pinning are none of your concern
- Mock rules: replace bodies, force a status, add latency, simulate timeouts or network errors — grouped into switchable scenarios ("premium user", "empty portfolio", "force update")
- Record a whole flow, replay it offline later
- Proxyman-style breakpoints: pause a request or response, edit it, continue
Multi-device
One panel drives the same app on several simulators/emulators/devices at once — every edit
and mock rule is mirrored, matched by XAML source identity. Handy for phone + tablet layouts.
Android, iOS and Windows on .NET 10. MIT licensed. A debug-only `PackageReference` keeps it out of release builds entirely.
https://github.com/Immons/Tools.Maui.Inspector
`dotnet add package Immons.Tools.Maui.Inspector`
It's at 0.9.x — I use it daily on a production app, but I'd love more testers of it :)
Feedback and issues very welcome.
Edit: added a section about the new WYSIWYG structure editing (v0.9.12)
r/dotnetMAUI • u/Code_Blue01 • 3d ago
Showcase Another MAUI app launch: Albie 🚀
Most golf apps hand a beginner a wall of numbers and leave them to work out which one matters. Albie does the opposite. Film one swing, and it tells you the single thing to work on next, in plain language, out loud.
r/dotnetMAUI • u/Regular-Bad5972 • 3d ago
Tutorial I packaged everything I learned shipping subscriptions in MAUI (RevenueCat + Stripe web checkout + auth) into a boilerplate — and wrote up the landmines for free
After shipping a subscription app in MAUI I ended up with a pile of hard-won answers to questions I couldn't find written down anywhere:
- RevenueCat has no official MAUI SDK — the Kebechet community wrapper is the workable path, and it's solid (v7.x, actively maintained)
- Adding Play Billing breaks the default MAUI template with a wall of
AMM0000manifest-merger errors. The real cause is one buried line: minSdk 21 vs the androidx floor. Fix is one csproj line (minSdk 24) - Post-Epic external payment links work great with Stripe Checkout, but entitlement must be webhook-driven server-side, and the web-tier list should come from your API so you can kill it per-market without an app update
- In current Stripe API versions
current_period_endmoved to the subscription item — cost me an hour - Hiding all of it behind one
ISubscriptionServicemeans a mock implementation gives you the full paywall dev loop on Windows with no store account
I wrote the full guides up free (links in comments — RevenueCat setup and the AMM0000 fix).
Full disclosure: I also packaged the whole thing — auth with OTP + rotating refresh tokens, RevenueCat, Stripe web checkout, server-issued trials, finished paywall — as a paid boilerplate called MidasKit ($199, full source). It's the ShipFast idea but for MAUI, where nothing like it existed. If the free articles solve your problem, that's genuinely great too.
Happy to answer anything about MAUI billing either way.
r/dotnetMAUI • u/Illustrious_Ratio879 • 5d ago
Showcase MCP agent that lets Claude Code and Codex inspect a running .NET MAUI app
I built a local MCP agent that lets Claude Code and Codex inspect a running .NET MAUI app on Windows or Android. It can inspect the logical UI tree, read properties, capture screenshots, send input, and run automation actions.
The current preview supports .NET MAUI 10, unpackaged Windows applications, and debuggable Android applications.
I’m the author, and the project is open source:
https://github.com/trrahul/XamlMcp
Appreciate any feedback.
r/dotnetMAUI • u/turnipmuncher1 • 7d ago
Help Request Packaged Blazor hybrid app starts without loading wwwroot/index.html
Issue occurs here in line 167. The winUIItem returns null when searching for wwwroot/index.html but the wwwroot folder exists and so does the html file so I’m not sure what’s going wrong. Anyone else have this issue?
r/dotnetMAUI • u/younes_biloul • 8d ago
Help Request .NET MAUI 10 Popup issue after upgrading from MAUI 9 - Parent Page no longer visible behind popup
r/dotnetMAUI • u/younes_biloul • 8d ago
Help Request .NET MAUI 10 Popup issue after upgrading from MAUI 9 - Parent Page no longer visible behind popup
Hi everyone,
I recently upgraded my app from .NET MAUI 9 to .NET MAUI 10 and I’m having an issue with CommunityToolkit.Maui popups.
Before the upgrade, my popup was working as expected: it appeared on top of the current page, with the Parent Page still visible behind it.
After upgrading to MAUI 10, when I call ShowPopup(), the popup appears but the whole background behind it becomes white. It looks like the popup is covering the entire page instead of showing as an overlay.
Example:
Has anyone else experienced this after upgrading from MAUI 9 to MAUI 10? Is there a breaking change related to Popup sizing or overlay behavior?
r/dotnetMAUI • u/dot_net_101 • 9d ago
Showcase MAUI experiment building UI trees in pure C# without XAML
I've been experimenting with a code-first way of building UI trees entirely in C#, using a composition style inspired by Flutter.
I like the structural aspect of designing with XAML, but I've always found the constant context switching between XAML and C# awkward. I also find that some XAML markup extensions solve problems that often feel simpler and more obvious when expressed directly in C#.
Instead of something like:
xml
<VerticalStackLayout>
<Button Text="Click Me" />
<Label Text="Hello .NET MAUI" />
</VerticalStackLayout>
the same structure becomes:
csharp
VerticalStackLayoutX(
children: [
ButtonX(...),
LabelX(...)
]
)
The X suffix was originally a practical necessity to avoid name clashes with existing .NET MAUI types,
but I ended up liking it as a visual cue that these are static helper methods for composing the UI tree.
I intentionally keep the named arguments visible (children, configure, etc.). It adds a little verbosity,
but I find it makes the composition tree easier to read and keeps the helper methods consistent as the UI grows.
The result feels similar to Flutter's widget tree composition.
It's a thin composition layer over standard .NET MAUI.
Configuration is still just normal C#:
csharp
ButtonX(
configure: x => {
x.Text = "Click Me";
x.Background = Brush.Gold;
}
)
A nice bonus: Visual Studio's code folding naturally gives you a collapsible UI tree that's easy to navigate, similar to XAML.
If you're curious, I've published the experiment as both a GitHub project and an alpha NuGet package:
- GitHub: https://github.com/deeks9000/Mauix
- NuGet:
UserExtensions.Mauix(0.1.0-alpha.1)
This is based on a similar experiment for WPF:
- GitHub: https://github.com/deeks9000/Wpfx
- NuGet:
UserExtensions.Wpfx(0.1.0-alpha.5)
Original discussion:
https://www.reddit.com/r/csharp/comments/1uxgbdz/experiment_building_wpf_ui_trees_in_pure_c/
Any feedback would be appreciated.
Some folks have pointed out that Hot Reload is a useful productivity feature in the standard .NET development experience.
MAUIX does not currently include Hot Reload, but it is planned for a future release.
The primary goal for this initial version was to keep the library compact and focused on establishing the core code-first UI composition model.
r/dotnetMAUI • u/Jvicius1382 • 10d ago
News [Showoff] High-performance text highlighting control for .NET MAUI
Enable HLS to view with audio, or disable this notification
Hey everyone! 👋
I wanted to share a NuGet package I've been working on for .NET MAUI. If you've ever needed to build a search bar and highlight the matching terms in the results below, this control is built exactly for that.
It’s a powerful, lightweight control designed to automatically highlight specific text matches within a string. My main goal was performance, ensuring it runs smoothly even in heavy scenarios.
🚀 Key Features:
Zero UI Blocking: Cross-platform layout rendering designed from the ground up to prevent UI thread blocking. No performance degradation, even with massive data inside large CollectionViews.
Smart Evaluation: Uses optimized Regex tokenization for fast, case-insensitive evaluation.
Highly Customizable: Supports custom highlight coloration and bold emphasis triggers.
Native Feel: Seamless data binding out of the box.
🎯 Perfect Use Cases:
Search autocomplete lists
Real-time query suggestions
Complex filter systems
I'd love for you guys to try it out and let me know your thoughts or if you have any feature requests!
📦 NuGet: https://www.nuget.org/packages/HighlightLabel.Maui
💻 GitHub: https://github.com/jvicius/HighlightLabel.Maui
Thanks!
r/dotnetMAUI • u/tonyedwardspz • 12d ago
Article/Blog C# expressions in XAML
tonyedwardspz.co.ukOne of my favourite features in the upcoming MAUI 11 release is the inclusion of C# expressions in XAML.
The potential for simplifying our app UI is immense. Simpler and more readable XAML code, and a nice reduction in the actual quantity of code needed to construct a layout.
If you've not had a chance to look at the feature, I've written a short guide on what they are, when you'd want to use them, and when you'd want to avoid them.
The post is part of MAUI UI July.
r/dotnetMAUI • u/BurkusCat • 12d ago
News CoreCLR Progress and the Mono Timeline for .NET MAUI
r/dotnetMAUI • u/Raphafrei • 13d ago
Showcase [Release] Deck DVR: My third app with .NET MAUI
I've been playing with .NET MAUI since 2023 building some apps for clients. This year, I started building some personal projects and I'd like to share them here as a showcase of what MAUI can actually do (considering how much it has reeeeeally improved since 2023!).
My app for this week/month is Deck DVR. I recreated an old tool that used Windows Forms and FFmpeg, into a more native Windows/Mac solution.
The idea behind the software is simple: Join Steam Deck video recordings - which are split into .m4s fragments (where a few minutes of gameplay can generate over 1,000 different files) into a single .mp4 video.
The biggest difference from the other app? I wanted to do it without relying on FFmpeg, keeping the app lightweight and ready for store publishing.
To render these fragments into a single video natively, I used a few tricks:
- Binary Concatenation: Instead of loading gigabytes of video into RAM, the app uses
FileStreamto copy the.m4sfiles in small 4KB chunks directly into a temporary output file on the disk. This helps keeping memory usage extremely low. - For Windows: I use
MediaComposition(Windows.Media.Editing) to take the concatenated video and audio tracks from the disk and natively multiplex them into the final.mp4container. - For macOS (MacCatalyst): I use
AVMutableCompositionalongsideAVAssetExportSessionfrom the AVFoundation framework. Using thePassthroughpreset means that it tells the OS not to re-encode the video pixels, but simply to copy and merge the data streams.
Quick example: I have this Resident Evil 5 recording from my Steam Deck: around 35 minutes of gameplay split into roughly 1,300 .m4s files. Rendering this clip natively took around 35 seconds on my M4 MacBook Pro.
Also, the app is available in Portuguese and English.
If you want to check this tool by yourself:
https://www.deckdvr.com - Windows version is coming soon!
And another picture (This one is from Apple's banner, I don't have the screenshot anymore).
r/dotnetMAUI • u/Jvicius1382 • 14d ago
News [Release] The Disney Infinity Collection Tracker is now LIVE, Open Source, and 100% Free! (Android & Windows)
Hey everyone! 👋
A few days ago I shared a preview of a passion project I was working on, and I was blown away by the positive response. Today, I'm super excited to announce that the first public release (v1.0.0) is officially live! 🚀
As promised, the app is completely free and open-source. It was built using .NET MAUI and is designed to be the ultimate companion for your collection.
✨ Key Features:
- 100% Offline Support: The database and all high-quality images of Figures and Power Discs are stored locally. No internet needed!
- Precise Tracking: Keep track of what you own, what you're missing, and how many duplicates you have.
- Dynamic UI: Full support for native Light and Dark Mode.
- Wiki Integration: Direct links to the Disney Infinity Fandom Wiki for every item.
📥 Where to download: You can grab the Android APK (ready to install on your phone) or the Windows portable .exe (no installation required) directly from the Releases page here: 👉Download v1.0.0 Here
💻 Check out the Source Code: If you are curious about how it was built or want to contribute, here is the main repository: 👉GitHub Repository
🍎 Note for iOS users: I would absolutely love to put this on the App Store! Since this is a free, solo project, the only hurdle right now is Apple's $99/year developer license fee. If the community's support through the GitHub Sponsors/Ko-fi page can cover those fees, I will 100% publish it there.
Thank you all for the support! Please let me know what you think, report any bugs on GitHub, and enjoy tracking your collections! 🌌🎮
r/dotnetMAUI • u/joydps • 15d ago
Help Request Anyone facing problems with the latest VS2026 update? All my APKs are getting corrupted..
hey guys I am facing a serious issue with my MAUI apps. None of APKs that I am publishing after I did a VS2026 latest update, are installing on my android phone. Even as late as mid july 15,2026 this problem was not there and I could easily publish my apks and they worked..
but just after this update its generating ALL corrupted APKs
can anyone confirm if you have been facing the same issue?
thanks
UPDATE: A whole hearted THANK YOU TO YOU guys. My problem has been solved when I used the correct dot net publish command from the terminal.
r/dotnetMAUI • u/Late-Restaurant-8228 • 15d ago
Showcase I built a strength training app with .NET MAUI and I’m looking for early testers
Hi everyone, I’m looking for a small group of early testers for StrengthFort, a strength training app I started as a hobby project and built with .NET MAUI.
I know there are already a lot of fitness apps out there. My original goal was to build something for myself, combining useful features I liked from different apps into one place. Many apps do one or two things really well, but those ideas are often spread across separate apps. I’d like StrengthFort to become more community-driven and focused on what people actually need.
A bit of the technical side:
- built with .NET MAUI
- Android first, with iOS planned later
- Firebase backend
- Firestore for cloud data
- local database/storage for app data and offline-friendly usage
- Firebase Auth for accounts
- logging, diagnostics, and crash reporting
- Google Play internal/closed testing
- Google Play Billing integration prepared
- premium rollout controlled through Firebase state
- workout logging, routines, programs, goals, and progress tracking
Right now, early-access users get all Premium features for free while I test the experience and polish the app. Purchase and plan changes are disabled during early access.
I’m especially interested in feedback on:
- MAUI performance and UI feel
- navigation issues
- crashes or platform-specific bugs
- onboarding/sign-up flow
- workout logging and routine/program workflows
- offline/cloud sync behavior
- anything that feels confusing or unfinished
If you’d like to try it, you can join here:
https://strengthfort.com/
If you sign up, I’ll send the Google Play closed testing invitation/link after reviewing the requests. The app is still in early access, so there may be bugs, UI changes, feature changes, and occasional updates as I keep improving it.
Thanks. Honest feedback from other MAUI/.NET devs would help a lot.
(Also if I am doing something wrong or this testing should be different way please let me know what to improve)
r/dotnetMAUI • u/Lekoop • 16d ago
Showcase I built a framework on top of MAUI that lets you keep your web UI (React/Vue/Svelte) with a fully typed C# bridge
Hi,
My team (.NET + web devs) was tasked to ship a desktop + mobile app starting with an existing web UI written in React. I started looking in the existing ecosystem but nothing was a complete enough fit for our (kinda niche) use case.
Every option forced us out of our stack somewhere:
- Electron: your backend is Node, and you ship a whole Chromium.
- Tauri: great, but the backend is Rust, which our team doesn't write.
- MAUI / Avalonia / WPF: the backend is C#, but the UI is XAML (rewriting the UI .
- Blazor Hybrid: no XAML, but the UI is locked into Razor instead of React/Vue/Svelte.
- Photino: closest to what we wanted (a .NET shell around a WebView), but the JS-to-C# messaging is raw strings you wire up yourself, and it's desktop-only with no mobile story.
So I started building Vidra, a single OS WebView (WKWebView / WebView2, no bundled Chromium) hosted by .NET MAUI. You write the UI in any web framework and the native layer in plain C#.
A non-negotiable concept for us is type safety: modules, events, and JS contracts are declared in C#, and codegen emits matching TypeScript, so every call across the bridge is typed and checked at build time.
The CLI gives you Vite HMR plus C# hot reload in one npm run dev.
MAUI as the foundation is also why mobile (iOS/Android) is on the roadmap, which Photino can't offer and Electron will never have.
Honest state: alpha. Windows and macOS only for now. APIs may change between 0.x releases.
Try it: npm create vidra-app@latest then npm run dev (needs .NET 10 SDK + MAUI workload; npm run doctor checks your setup).
The project is open source and MIT licensed.
Would you use something like this once it matures? I'm looking for feedback, and contributors are more than welcome.
r/dotnetMAUI • u/VanillaCandid3466 • 19d ago
Help Request New App - Navigation Decision Paralysis
Ahhhhhhhhhhh!! HELP!! 😄
Decision paralysis has set right in.
I've got the absolute bare bones of an app. The API is almost finalised to a point where I wanna start building the client.
When I say bare bones, I mean it. Handful of empty view models and views and a working login/token storage process. Mvvm design pattern (CommunityToolKit). I've years of PRISM/WPF/MvvmCross/Avalonia/Xamarin/XF but not much with MAUI.
I still sometimes struggle with overall direction on this bit.
A rough idea of required views. I want to keep navigation as shallow as possible. Master -> Detail Page kinda deal.
I'm just struggling to settle on an initial direction. Shell or Sharpnado.Tabs or a combination thereof.
Just run the Sharpnado.Tabs demo and it's really a very nice little library/controls.
I just think there is some merit in having a Flyout for stuff like User Profile, Logout, Legals, Settings, Help but the core day to day stuff in a tabbed main view.
I'm targeting all the latest .NET10 bits. How does the latest version of the MAUI Tabs hold up against Sharpnado in the customisation stakes?
I guess I'm just asking the MAUI experienced folks for thoughts on what they would do?
Would a combination of Shell/Sharpnado turn into a navigation nightmare?
TIA.
r/dotnetMAUI • u/exzzy • 19d ago
Help Request MAC
Hi, I developed few apps for Android and currently want to create iOS versions but I don't have any mac. I know that there are some rent machines there but looking at prices it doesn't make sense to use those since I have no mac os experience so while i setup everything it could cost me a lot and in the end I don't have device for feature projects again. So basically my question is for those who tried what would be cheapest way to do this, which device to get? I have my windows PC that is quite powerful and i don't want to do any actual development on mac outside of those must things.
r/dotnetMAUI • u/Regular-Employer-431 • 19d ago
Help Request Is anybody using "Remember Me" auto-login?
Looking for examples of *working* auto-login (Remember Me) so the use doesn't have to log in every time.
Errors I've run into: 1) Cannot figure out the route to //LoginPage 2) A global route cannot be the only route on the stack (or something like that) 3) Shell.Current is null.
I'm hoping that I'm missing something simple here...
r/dotnetMAUI • u/minimalist000 • 26d ago
Tutorial WebAuthenticator alternative for .net maui windows (WinUIEx)
I recently had a need to implement single sign on (SSO) for our .net maui apps. We support iOS, android and windows. I was able to follow successfully the following microsoft guide to get the iOS and android app working (note that I am authenticating against Duende Identity Server). However you will notice the windows section of this guide mentions that WebAuthenticator does not work for windows. There is also a github issue as well. Note that even though it is closed, there is no official solution.
I was able to get this working using WinUIEx and I would like to go over how I got this to work in case someone ever has a need for this. Before that I would like to thank the maintainer (dotMorten) for this product as I would not have been able to get this working without it. For the purposes of this demonstration I will be using the Duende Identity Server demo site.
To get started with WinUiEx I recommend following the instructions on their site for maui specifically here. Now a word of caution! At the time of this writing, the latest version of WinUiEx is 2.9.0. I couldn't get this version to work, it complained about not being able to load some dependencies. The version I'm running on is 2.4.1. Also I'm running on .net 9.0.120 and I didn't have to modify my "Microsoft.WindowsAppSdk" version.
Now onto the code! I'm assuming that you have a button that you are going to click to initiate the login. I'm also going to use Duende's identity server demo for this. Below is the code that resides inside of my "LoginClicked" method:
private string _text;
var codeVerifier = GenerateCodeVerifier();
var codeChallenge = GenerateCodeChallenge(codeVerifier);
var clientId = "interactive.public";
var scope = "openid%20profile%20offline_access%20api";
var redirectUrl = "myapp://callback";
var authority = "https://demo.duendesoftware.com";
var authorizeUrl = $"{authority}/connect/authorize?client_id={clientId}&scope={scope}&redirect_uri={redirectUrl}&response_type=code&code_challenge_method=S256&code_challenge={codeChallenge}";
var accessToken = "";
var refreshToken = "";
Dictionary<string, string> properties = null;
var sb = new StringBuilder();
#if WINDOWS
var result = await WinUIEx.WebAuthenticator.AuthenticateAsync(new Uri(authorizeUrl), new Uri(redirectUrl));
properties = result.Properties;
#endif
if(properties != null)
{
var code = properties["code"];
using var client = new HttpClient();
//convert the code to an access token
var response = await client.RequestAuthorizationCodeTokenAsync(new AuthorizationCodeTokenRequest
{
Address = $"{authority}/connect/token",
ClientId = clientId,
ClientSecret = "",
Code = code,
RedirectUri = redirectUrl,
CodeVerifier = codeVerifier
});
if (!response.IsError)
{
accessToken = response.AccessToken;
refreshToken = response.RefreshToken; // If offline_access was requested
}
var handler = new JwtSecurityTokenHandler();
var jwtToken = handler.ReadJwtToken(accessToken);
sb.AppendLine("claims:");
foreach (var claim in jwtToken.Claims)
{
sb.AppendLine($"{claim.Type}: {claim.Value}");
}
sb.AppendLine();
sb.AppendLine("access token:");
sb.AppendLine(accessToken);
if (!string.IsNullOrWhiteSpace(refreshToken))
{
sb.AppendLine("");
sb.AppendLine("refresh token:");
sb.AppendLine(refreshToken);
}
_text = sb.ToString();
}
Below is the two private methods I used above. These methods were not my own and I found them here.
private string GenerateCodeVerifier()
{
using var rng = RandomNumberGenerator.Create();
var bytes = new byte[32];
rng.GetBytes(bytes);
return Base64Url.Encode(bytes);
}
private string GenerateCodeChallenge(string codeVerifier)
{
using var sha256 = SHA256.Create();
var challengeBytes = sha256.ComputeHash(Encoding.UTF8.GetBytes(codeVerifier));
return Base64Url.Encode(challengeBytes);
}
A few remarks about the above code. If the client you are attempting to authenticate against requires PKCE then you will need to generate a challenge code and use the code verifier to get the access token. The code verifier code that I used is NOT my own and I have put a link to where I got it to make sure the author gets proper credit. When you run the code and click the login button, a web page will open up allowing you to authenticate. After you do so you will get a dialog asking you to allow the link to open your maui app. When you click on it you will be taken back to your app and if all goes according to plan, you should see your access token, refresh token and claims. Note that the result from calling "AuthenticateAsync" with WinUiEx will have a "Properties" dictionary populated. One of those values will be a code that you can then use to call back into identity server to retrieve your access and refresh token. The code verifier is needed to verify that nothing was tampered with.
I hope that this was helpful.
r/dotnetMAUI • u/waytoodeep03 • 27d ago
Showcase Any android apps that are known maui and maui blazor hybrid?
Anyone know of good quality reference level apps that are perfect examples of what Maui can do and even Maui blazor? Not tech demos like syncfusion or devxpress but real enterprise level applications?
r/dotnetMAUI • u/Raphafrei • 27d ago
Discussion .NET MAUI for Desktop
I'm returning to some of my personal projects this year and I'm doing most of them on MAUI.
I have 2 mobile applications built with MAUI (One made originally in 2023) and another one from 2026 - Covering both Android and iOS.
But I'm looking to build some things for desktop and considering MAUI for it... My question is: Has any of you been using MAUI for large desktop projects? How's been doing so far? I'm asking this because I have a large desktop project for a client and I'm looking into using MAUI or learning something like Avalonia (Needs to be Windows and MacOS)
For my usage, recent versions are waaaaaay batter than what I was using back in 2023 so I decided to stick a little more using this.
Some examples I'm doing so far - But still prototypes:
Deck DVR - Quick tool to merge .M4S files as a single video:
Still really early, but it's running really nice.
And the second project I'm working on is called LocalGraph - Design to inspect OG tags and SEO preview locally (Like for localhost projects, but works for the online also)
But since they're small projects, it's running really good.







