r/dotnetMAUI

Installing Maui workload on Mac OS installs and then uninstalls the tools with no errors

Hi,

I'm trying to install the Maui tooling on my (M1 Max) MacBook Pro and it's behaving very strangely. It appears to install, but then before it finishes it uninstalls everything that was just installed. No error messages. Just fails to install.

Current setup:

.Net SDK v10.0.301 installed
Mac OS X v26.5
RID: osx-arm64
Microsoft.AspNetCore.App 10.0.9 runtime installed
Microsoft.NETCore.App 10.0.9 runtime installed
no global.json file

When I run this command ... sudo dotnet workload install maui ... I get a log filled with lines like:

Installing workload manifest microsoft.net.sdk.android version 36.1.69 ...

followed by a bunch of lines like:

Installing pack Microsoft.MacCatalyst.Sdk.net10.0_26.0 version 26.0.1107 ...
Writing workload pack installation record or Microsoft.MacCatalyst.Sdk.net10.0_26.0 version 26.0.1107 ...

and then followed by a bunch of lines like:

Uninstalling workload pack Microsoft.MacCatalyst.Runtime.maccatalyst-x64.net10.0_26.0 version 26.0.11017...

and finally a line that says:

Successfully installed workload(s) maui.

But if I then run this command ... dotnet workload list ... I get the following response:

Workload version: 10.0.300-manifests.b0c14421

Installed Workload Id Manifest Version Installation Source
---------------------------------------------------------------------

Use 'dotnet workload search' to find additional workloads to install.

So the dotnet cli reports that the workload was installed, but it actually wasn't. And there are no error messages. I have no idea why this is failing.

I have tried rebooting. No change.

I also tried installing the tooling inside the Rider app (when you try to create a Maui project it will prompt you to install Maui). I press the button but nothing seems to happen.

Can anyone tell me what I'm missing?

reddit.com
u/No-Butterscotch9483 — 1 day ago
▲ 9 r/dotnetMAUI+1 crossposts

Anyone running gRPC in a MAUI app for an internal warehouse/logistics tool? Looking for real-world experience

I'm building an internal warehouse operations app in .NET MAUI or (Blazor Hybrid) and want to use gRPC instead of REST. The main reason is I like the tight coupling gRPC gives you — a shared .proto contract between client and server means the API shape is enforced at compile time, no drifting DTOs, no guessing field types from JSON. For an internal app with one team owning both ends, that contract-first discipline feels like a real advantage over REST.

The devices are roaming handheld scanners used for pick and pack on the warehouse floor, moving between WiFi APs throughout a shift, so connection stability is a real concern, not just a theoretical one. My plan is to stick to unary calls rather than long-lived streaming, so each request/response can complete and recover quickly even if the connection blips between APs.

Would love to hear from anyone who's actually shipped something like this — what worked, what bit you, anything you'd tell yourself before starting. Thanks in advance!

reddit.com
u/SachinRBali — 2 days ago
▲ 2 r/dotnetMAUI+2 crossposts

Missing Debug/Release dropdown in .NET MAUI project (only shows Any CPU)

https://preview.redd.it/1mi7lx7f8zah1.png?width=571&format=png&auto=webp&s=bbec54ffb418fc5a030fd25aeb1a0462eb6a939a

Hi! I'm working on a .NET MAUI project, and I've run into a strange issue.

As you can see, the configuration dropdown only shows "Any CPU". If I want to switch between Debug and Release, I have to open Configuration Manager and change the Active Solution Configuration manually.

https://preview.redd.it/9vkwydal8zah1.png?width=822&format=png&auto=webp&s=83bc7da738a342f184766dddd4ed967c02ac2f2d

Previously, the Debug/Release dropdown was located exactly where the "Any CPU" dropdown is now.

I've already tried resetting Visual Studio to its default settings, but the issue persists. At this point, I suspect it might be something specific to my project's configuration.

Do you have any ideas on how to solve this?

reddit.com
u/FranTimo — 3 days ago

Looking for Public .NET MAUI Repositories to Beta Test MemoryToolkit: Intelligence

I’ve been working on a new commercial AI Skill for .NET MAUI developers called MemoryToolkit: Intelligence.

Its goal is to review your MAUI application source code and identify places where your app may be intersecting with known memory leak-prone conditions in the MAUI framework.

Before releasing it, I’m putting it through its paces against real-world, open-source MAUI applications to see how well it performs.

If you have a freely licensed, publicly hosted, open-source .NET MAUI application you’d like me to review, post a link in the comments and I’ll reply with the generated report.

I’m particularly interested in testing against a wide variety of application architectures, coding styles, and control groups.

Why build something like this?

One of the frustrating things about debugging memory leaks in MAUI is that many of them don’t actually look like bugs.

Sometimes the problem is clearly application code. If you create a repeating timer or subscribe to a long-lived event and never clean it up, that’s on you.

But there are also many cases where perfectly ordinary-looking code can accidentally wander into a known leak-prone area of the framework.

Examples include things like:

  • assigning a long-lived ObservableCollection to the wrong control’s ItemsSource
  • dynamically rebuilding certain visual trees
  • interacting with particular handler lifecycle behaviors
  • replacing content in ways that have historically retained native handlers
  • using combinations of controls or features that have known framework retention history

None of those are obviously “wrong” when you’re writing the code.

You might say that developing a MAUI application can sometimes feel like navigating a minefield--but that's not quite right.

When you step on a landmine, at least you have the benefit of immediately knowing something happened.

With most MAUI leak conditions, nothing obvious happens at all (not at first). You quietly arm the trap, everything appears to work perfectly, and then minutes later your app is sluggish, Android is complaining about GREF pressure, and you’re left trying to remember what changed nine navigation flows ago.

Why does this matter?

Regardless of where a leak originates, the user-facing symptoms are usually the same:

  • progressively increasing memory usage
  • UI sluggishness and animation jank
  • increasingly aggressive garbage collection
  • growing native resource pressure (especially Android GREFs)
  • eventually, the operating system terminating the process

How much this matters depends entirely on your application and your users.

Some apps are only used for a few minutes at a time and may never encounter a problem.

Others are expected to remain open all day. I once consulted for a field-services customer that literally had a written requirement stating the application had to complete a specific number of consecutive workflows before crashing! (spoiler alert: GREF exhaustion)

How is this different from MemoryToolkit.Maui?

A while back I released MemoryToolkit.Maui, which helps detect leaks after they’ve already happened. It can help tell you what leaked and when it leaked, making those invisible tripwires much easier to spot at runtime.

This new Skill is intended to be proactive instead of reactive.

Rather than trying to magically determine whether your application definitely leaks, it starts from a curated knowledge base of 400+ verified MAUI memory retention conditions, organized into more than 20 architectural leak families.

It then reviews your source code looking for places where your application appears to intersect with those known conditions.

Importantly, it doesn’t say:

“You definitely have a memory leak on line 123.”

Instead it asks:

“Does this code closely resemble a historically leak-prone framework condition?”

For each finding, the report explains:

  • Why the pattern was flagged
  • The technical impact if the condition is real (retained pages, visual trees, BindingContexts, native handlers, Android GREF pressure, etc.)
  • Why the chosen severity and confidence levels make sense
  • The closest matching known framework condition
  • Links to relevant repro projects and MAUI issues
  • Suggested mitigations
  • How I would empirically validate the finding with runtime profiling
  • What successful validation should look like after the mitigation

The goal isn’t to replace memory profilers.

It’s to teach AI years of hard-earned .NET MAUI memory debugging experience and help developers identify historically dangerous patterns before they become production issues.

Again, if you’d like me to run the preview against your public .NET MAUI repository, post a link below and I’ll reply with the generated report.

I’m especially interested in repositories that make the Skill look silly 🙂

u/scavos_official — 5 days ago

Show text in camera view? Or maybe a popup?

Long story short: I hired a .NET Maui to create a simple app that lets a user take a picture of the ATM machine at a business and the app automatically sends me an email with the picture. The app's for iphone and android.

Even though the app has a step-by-step buide of what to look for when taking a picture, it seems users are still getting confused when opening the camera in the app.

WIth that said, I wanted to add some text to the actual camera view, but the developer says I would need to change to the CameraView custom control. I don't want to do this now.

An alternative is to display a popup right in the middle of the camera with a brief text telling the user to find the ATM machine and take a picture of it.

I simply want to show text while the user has the camera open. What other alternatives do I have?

reddit.com
u/East_Sentence_4245 — 5 days ago

MAUI UI July Day 1: Easy Custom Navigation with Flagstone UI

It's the first of July and that means it's time for MAUI UI July!

Kicking things off this year with a new feature in Flagstone UI: FsShell. It's a drop-in replacement for Shell, it's sub-classed and works exactly the same way, except it lets you completely replace the UI with your own.

Check out the link to see more, if you're keen for the challenge at the end let me know!

goforgoldman.com
u/matt-goldman — 6 days ago

Chip In - Couples Finances

Few years in development my heart and soul poured into .NET MAUI iOS and Android, Web (blazer), and Azure (full backend ecosystem). Single handedly trying to compete with monsters such as Monarch, Rocket Money, Origin, yet focusing more on couples. Wish me luck! 27 years in the biz, full time working salaried job, and countless mornings seeing the sun come up. That's what we do, right!

appscreens.com
u/Confident_Foot_3053 — 7 days ago

Pair to Mac build host suddenly having a Xcode Installation location issue

I use the Xcodes app to manage my Xcode installations so I can easily install specific versions as needed for my Maui application development.

I just installed Xcode 26.5 yesterday. I set it as the active version. Something I've had to do several times during development. I checked the path using the xcode-select -p command and it reports back correctly '/Applications/Xcode-26.5.0.app/Contents/Developer'. When I pair to mac I can see in the Maui logs that it detects the correct path:

https://preview.redd.it/pqagkvjoc89h1.png?width=732&format=png&auto=webp&s=d71a13eec3d016aed96ddd1dbcb51178e4a73518

Xamarin.VisualStudio.IOS.RemoteSettingsProvider Information: 0 : Server Settings:
- mlaunch path: /Users/pairtomac/Library/Caches/maui/PairToMac/SDKs/dotnet/packs/Microsoft.iOS.Sdk.net10.0_26.5/26.5.10284/tools/bin/mlaunch
- Xcode version: 26.5
- Xcode path: /Applications/Xcode-26.5.0.app/Contents/Developer
: 06/24/2026 12:25:47Z
    DateTime=2026-06-24T12:25:47.0236216Z: 06/24/2026 12:25:47Z

But inexplicably, when I actually build I keep getting the following exception before building begins and I cannot for the life of me figure out why it's still attempting to use an old xcode location.

C:\Program Files\dotnet\packs\Microsoft.iOS.Sdk.net10.0_26.5\26.5.10284\tools\msbuild\Xamarin.Shared.targets(2091,3): error : A valid Xcode installation was not found at the configured location: '/Applications/Xcode-26.3.0.app'
1>C:\Program Files\dotnet\packs\Microsoft.iOS.Sdk.net10.0_26.5\26.5.10284\tools\msbuild\Xamarin.Shared.targets(2091,3): error : A valid Xcode installation was not found at the configured location: '/Applications/Xcode-26.3.0.app'
1>C:\Program Files\dotnet\packs\Microsoft.iOS.Sdk.net10.0_26.5\26.5.10284\tools\msbuild\Xamarin.Shared.targets(2091,3): error : Could not find a valid Xcode app bundle at '/Applications/Xcode-26.3.0.app'. Please verify that 'xcode-select -p' points to your Xcode installation. For more information see https://aka.ms/macios-missing-xcode.

I checked that the $DEVELOPER_DIR and $MD_APPLE_SDK_ROOT env variable are not set. I cleared every cache I could find related to Maui. I now only have Xcode 26.5 installed. I reinstalled the command line tools. I verified the right Xcode command line tool was selected in Xcode settings. I can see after connecting to the mac that it properly sets the setting in VS : .NET MAUI > Apple SDK Xcode Path.

https://preview.redd.it/hd88mqr5b89h1.png?width=468&format=png&auto=webp&s=13503d61a45d8b21ec6dee5c855f6ee1e1e0c956

I'm completely stuck at this point, unable to build the app for iOS. I cannot figure out where it's getting /Applications/Xcode-26.3.0.app during the build process. Any help would be much appreciated.

reddit.com
u/Fine-Operation-9772 — 12 days ago

Title: .NET MAUI Android Shell crashes after returning from external browser / activity recreation (ShellItemRendererBase)

Hi everyone,

I'm facing a hard-to-reproduce crash in a production .NET MAUI Android app and I'm trying to understand whether this is a bug in Shell itself or something wrong in my navigation flow.

Environment

  • .NET MAUI 10
  • Android
  • Shell navigation
  • Bottom tabs
  • MVVM
  • Production app with ~33 affected users and 36 events (~40% of crashes reported in Play Console)
  • App version 2.8

App structure

I have a Shell with tabs.

The flow is:

ServicesPage
    ↓
OfferPage
    ↓
Open external browser (Launcher.Default.OpenAsync)
    ↓
User returns to the app
    ↓
Presses Back

Inside OfertaViewModel, the back command executes:

private async Task ExecutarVoltar()
{
    if (_isVoltando)
        return;

    try
    {
        _isVoltando = true;

        _loadCts?.Cancel();
        _isActive = false;

        await Shell.Current.GoToAsync("//ServicoPage", false);
    }
    finally
    {
        _isVoltando = false;
    }
}

Originally I was using:

await Navigation.PopAsync(false);

but I changed to absolute navigation and still get crashes.

Crash #1

Stack trace:

System.Collections.Generic.Dictionary<Element, IShellObservableFragment>.ContainsKey(Element key)

Microsoft.Maui.Controls.Platform.Compatibility.ShellItemRendererBase.HandleFragmentUpdate()

Microsoft.Maui.Controls.ShellSection.OnPopAsync()

Microsoft.Maui.Controls.ShellNavigationManager.GoToAsync()

MeuSesi.ViewModels.OfertaViewModel.ExecutarVoltar()

The exception happens inside:

ShellItemRendererBase.HandleFragmentUpdate()
line 135

Crash #2 (Play Console)

Play Console also reports another Shell crash:

Exception android.runtime.JavaProxyThrowable:
[System.NullReferenceException]

Microsoft.Maui.Controls.Platform.Compatibility.ShellItemRendererBase.GetOrCreateFragmentForTab()

Microsoft.Maui.Controls.Platform.Compatibility.ShellItemRendererBase.HandleFragmentUpdate()

Microsoft.Maui.Controls.Platform.Compatibility.ShellItemRenderer.OnShellSectionChanged()

ShellItemRenderer.ChangeSection()

OnNavigationItemSelected()

This one happens while changing tabs.

Important detail

I cannot reproduce these crashes normally.

The crash only becomes reproducible if I enable Android developer option:

Don't keep activities

With this option enabled:

  1. Open OfferPage.
  2. Launch external browser.
  3. Return to the app.
  4. Press back or switch tabs.
  5. App crashes inside ShellItemRendererBase.

Without "Don't keep activities" enabled, I cannot reproduce it on my device, but Google Play Console shows production users experiencing it.

Questions

  1. Has anyone seen crashes inside:
  • ShellItemRendererBase.HandleFragmentUpdate()
  • GetOrCreateFragmentForTab()
  • Dictionary<Element, IShellObservableFragment>.ContainsKey()
  1. Is Shell losing its fragment state after activity recreation?
  2. Are there known issues with Shell + external browser + Android activity recreation?
  3. Should I avoid Shell navigation and use NavigationPage for these screens?
  4. Has anyone solved similar crashes?

Any ideas or workarounds would be greatly appreciated.

Thanks!

reddit.com
u/Breakston — 14 days ago