Latest Articles

Mobile Tech Lead is written by .NET engineers who ship MAUI apps to the App Store and Google Play every sprint. We publish field notes from real codebases after the deadline lands, so the patterns here have survived TestFlight, Play Console review, and a few angry crash reports. No screenshots of the File → New Project dialog.

The .NET 10 and 11 MAUI Upgrade Survival Guide

Every November the team faces the same question: do we jump to the new .NET MAUI release the week it ships, or wait for the first servicing patch? Our answer has gotten more nuanced since the .NET 8 cycle. We track the dotnet/maui release notes, the Mono runtime changes that land in the iOS workload, and the AndroidX dependency bumps that quietly break binding libraries. Then we map each known issue to a workaround before touching the global.json.

Our upgrade write-ups cover the unglamorous parts: regenerating Resizetizer assets without losing crisp app icons, migrating away from deprecated Handlers, and dealing with the Hot Reload regressions that always sneak into a .0 release. We also benchmark cold start before and after the move, because a faster runtime is wasted if your Shell flyout adds 300ms back.

Production MAUI Performance

Most MAUI performance advice on the open web stops at "use CollectionView instead of ListView." That is the easy 10%. The other 90% is profiling a real app with dotnet-trace, reading Instruments time profiles on a physical iPhone, and understanding why your XAML inflation cost doubled after adding a single ControlTemplate. We dig into layout passes, the cost of Bindings versus compiled bindings, and how AOT settings on iOS interact with trimming warnings you have been ignoring.

We also publish concrete numbers. When we recommend switching from a Grid-of-Grids to a custom ILayoutManager, we show the frame timing before and after on a mid-tier Pixel and a four-year-old iPhone, not just a flagship device that hides every sin.

MAUI Memory Leak Hunting

Memory leaks are the silent killer of long-session mobile apps, and MAUI inherits a lot of the historical Xamarin.Forms patterns that leak by default. Event handlers on static services, Page subscriptions that outlive navigation, and platform Handlers that hold strong references back to managed objects are the usual suspects. We walk through reproducing each one with dotnet-gcdump, opening the snapshot in dotMemory or PerfView, and reading the GC roots to find the real culprit.

Our memory series also covers the diagnostics built into recent MAUI releases, including the HandlerDisconnectTracker patterns the team has been pushing, and how to write tests that fail when a page is not collected after navigation. Leaks should be regressions you catch in CI, not Sentry tickets you triage on a Sunday.

Browse the latest articles below for new write-ups every week, or jump into the upgrade and performance archives when you need them. If you would rather read in another language, we publish each article in ten, picked using the same BCP 47 tags your CultureInfo already speaks.

Latest Articles

View all articles →

Read in Your Language

Choose your preferred language to explore our content