r/dotnetMAUI

After 1.5 years, I finally shipped my first real iOS app built with .NET MAUI

After 1.5 years, I finally shipped my first real iOS app built with .NET MAUI

For the last 1.5 years, my friend and I have been building an iOS cocktail app using .NET MAUI.

My night workplace

The app is called Craft & Serve: Cocktails and currently contains 250+ cocktail recipes with features like:

  • personal home bar tracking
  • shopping lists
  • cocktail recommendations and ingredient substitution suggestions.

From the technical side:

  • .NET 10
  • .NET MAUI
  • Community Toolkit
  • iOS only for now

The interesting part for me is that before this project I had basically no real iOS development experience.

I mainly come from the traditional .NET ecosystem, so MAUI gave me an opportunity to build and ship an actual iOS app while still using C#, Visual Studio, and a familiar stack.

Being able to develop most of the app on Windows in Visual Studio still feels kind of amazing to me.

Things I liked:

  • very easy entry into mobile development for existing .NET developers
  • shared language/tools/ecosystem
  • relatively fast development for business logic
  • straightforward deployment flow once everything was configured

Things that were difficult:

  • CollectionView performance issues
  • package/version instability after updates

Since this is my first serious mobile app, I honestly still can’t always tell where the boundary is between: “this is a MAUI limitation” and “this is just me lacking native iOS experience.”

But overall, I think MAUI absolutely made this project possible for me. Without it, I probably would never have attempted native iOS development at all.

Curious to hear from other developers who shipped real MAUI apps:

  • What were your biggest production pain points?
  • Did you run into performance issues on iOS?

If anyone is interested, I can also share more details/screenshots from the app or specific MAUI issues we hit during development.

App Store:
https://apps.apple.com/us/app/craft-serve-cocktails/id6749594395

reddit.com
u/Aliaksandr_Ha8h — 1 day ago

.NET Maui for Linux

.NET MAUI officially supports Android, iOS, macOS, and Windows but not Linux desktop. I wanted to ship MAUI apps to Linux without rewriting the UI layer, so I built the platform backend myself.

It’s called OpenMaui. The short version of what’s in it:

• 47+ controls wired up… Button, Label, Entry, CollectionView, CarouselView, RefreshView, SwipeView, NavigationPage, Shell, MenuBar, and the rest of the usual suspects
• SkiaSharp rendering, hardware-accelerated, with native X11 and Wayland support
• HiDPI scaling for GNOME / KDE / X11
• 12+ platform services: clipboard, file picker, notifications (libnotify), global hotkeys, drag & drop (XDND), system tray, secure storage
• AT-SPI2 accessibility so ORCA and other screen readers actually work
• IBus/XIM for international input methods
• Standard MAUI XAML, data binding and MVVM behave the way you’d expect
• dotnet templates for both code-first and XAML-first projects

Install is just:
add package OpenMaui.Controls.Linux

I’m a solo dev on this, so I’d genuinely like to hear where it breaks for you, especially on Wayland and on less common distros.

Happy to answer questions about the handler architecture or the SkiaSharp rendering pipeline if anyone wants to know how it fits together under the hood.

openmaui.net
u/MoneyObligation9961 — 10 hours ago
▲ 14 r/dotnetMAUI+1 crossposts

I migrated a Xamarin app to MAUI last year and it was a nightmare so I'm building a tool to fix the worst parts. Would love your honest feedback.

Hi everyone,

About a year ago I went through the Xamarin → .NET MAUI migration on a real production app. I started with Microsoft's Upgrade Assistant expecting it to do most of the heavy lifting and it really disappointed.

Some things converted fine, but in some areas it really seemed to struggle, especially when it came to our custom renderers and third party NuGet packages. It took me a ton of hours to finish polishing it up and getting it ready for release. Many hours digging through Stack Overflow threads and Github issues.

I've been working on something to try to fix that problem, specifically, it's a web tool that focuses on the parts of the migration that the Upgrade Assistant doesn't handle very well. It's still in development, but to give a broad overview:

- You upload your `csproj file(s)

- It scans every NuGet dependency and tells you: Compatible / Needs Replacement / Now Built Into MAUI / Abandoned

- For each incompatible package, it suggests the MAUI alternative with context on *why* and links to the replacement

- It flags custom renderer patterns and gives you guidance on converting them to handlers

- You get a structured migration report you can actually work from (or hand to a client)

The point of this is not to replace the Upgrade Assistant, it's just to handle a lot of the research-heavy part so you spend less time down Github rabbit holes and more time actually migrating.

As I mentioned, this is still in development. I wanted to share the idea here first and get honest feedback from people who've actually been through this, before I go further.

Some things I'm unsure about:

- Is NuGet compatibility the biggest pain point, or is there something else that cost you more time?

- Is there a specific part of the migration you wish you'd had better tooling for?

Happy to answer any questions or just commiserate about renderer migrations. 🙂

Thanks!

reddit.com
u/Chewiey72 — 22 hours ago

List/tab component that will render 10,000 items efficiently

Hey guys

currently I am implementing screen that needs to be able to render 10000+ list items in a tab layout.

Can you recommend me what (ideally official) components will work for this scenario?

  1. component for “buttery smooth” scrolling list with up to 10 000 items (they all contain images)

  2. component for tab layout in MAUI.

Additionally: what’s in your opinion best way to render such a huge dataset on the screen ? I am considering using pagination & loading data using infinite scroll.

Thanks!

reddit.com
u/random_guy14680 — 3 days ago
▲ 30 r/dotnetMAUI+1 crossposts

MAUI UI July 2026

The calendar for MAUI UI July 2026 is now up and spaces have already started filling up quickly! We've got 10 slots filled already. You can see the calendar here: https://goforgoldman.com/posts/mauiuijuly-26

If you're not familiar, it was a tradition started for Xamarin and this will be the 5th year running it for .NET MAUI. Every day throughout July, someone from the community shares a blog post or video showing off something they've built or learned with .NET MAUI. Past contributions have included replicating the UI of a popular app, cool special effects and tricks, tutorials, personal learning experiences...there's no limit other than it has to be UI related and has to be in .NET MAUI.

Previous years' contributions have been amazing and it's been wonderful to see what people have produced. If you're looking to contribute something to the .NET MAUI community, I'd encourage you to get involved - whether you've done this every year or whether you're completely new to .NET MAUI, everyone has a perspective to share!

Comment on the post at the link or reply here if you're interested and I'll add you to the list.

u/matt-goldman — 3 days ago
▲ 24 r/dotnetMAUI+1 crossposts

Introducing Pulse — in-app conformance testing for Blazor

I’m building Pulse, a small .NET test runner for conformance tests that run inside a real app host.

For Blazor WebAssembly, the goal is to test behavior that dotnet test can’t honestly prove: real IJSRuntime, imported JS modules, browser storage, host HttpClient, DI, and runtime services while the app is actually running in the browser.

The pattern:

  • put shared specs in *.TestSupport
  • run them against fakes with dotnet test
  • run the same behavior inside a real Blazor app with Pulse

example:

public abstract class TokenStorageSpec
{
    protected abstract ITokenStorage Storage { get; }

    protected async Task RoundTrips(CancellationToken ct)
    {
        await Storage.StoreAsync("auth", "abc", ct);
        if (await Storage.RetrieveAsync("auth", ct) != "abc")
            throw new InvalidOperationException("Token did not round-trip.");
    }
}

public sealed class BrowserStorageSuite(ITokenStorage storage) : TokenStorageSpec
{
    protected override ITokenStorage Storage => storage;

    [PulseCase(TimeoutMs = 5000)]
    public Task LocalStorage_round_trips(CancellationToken ct) => RoundTrips(ct);
}

So the fake-backed test proves the rule in dotnet test, and Pulse proves the same rule through the real browser/runtime boundary.

Pulse is intentionally small: one NuGet package, no Blazor-specific package, no Test Explorer integration, no UI framework, and it returns a structured TestRunReport.

It’s preview-stage. I’m still figuring out the right direction before calling it stable. The focus is conformance testing for app/runtime boundaries, not replacing unit tests or UI automation.

Specs/rules: https://github.com/Circuids/Pulse/blob/master/docs/conformance-specs-and-rules.md

GitHub: https://github.com/Circuids/Pulse

NuGet: Circuids.Pulse

Feedback welcome, especially from people building Blazor apps with JS interop, browser storage, host wiring, or runtime behavior that is awkward to verify in normal tests.

u/Aathif_Mahir — 4 days ago

Since you all came in with some serious heat with my last question, I thought I'd ask another one here.

What's everyone using? Tell me what tools and software you are using to make your experience or work flow better.

For example, desktop or laptop? Why?

Ryder or VSCode?

Is there anything you'd change or would prefer to be different??

reddit.com
u/soop3r — 13 days ago

Hey everyone, I’m looking to benchmark how the community is actually building production-grade MAUI apps today. I’ve seen similar discussion on flow, so I thought to go deeper.

When things get complex—heavy state management, background sync, and rapid iterations—standard MVVM can sometimes feel like it's slow or even pushing against the framework.

I’m curious about any specific area of professional devs stack but three top areas for me are:

State & Logic: Are you sticking to Pure MVVM (CommunityToolkit), or are you opting for something like ReactiveUI to handle complex event streams?

Communication: How are your components talking? WeakReferenceMessenger, TinyMessenger, or strictly Constructor Injection and Events?

Iteration Velocity: What is your 'secret sauce' for moving fast? (e.g., Hot Reload, a custom 'Internal Dev' UI page, logging frameworks or perhaps a specific MvvmCross-style navigation wrapper?)

reddit.com
u/technololy — 13 days ago