Blog

Notes from product delivery, engineering strategy, and mobile innovation.

We publish lessons learned from building production apps, shipping features under real constraints, and helping teams move faster with confidence.

You Migrated Xamarin.Forms to .NET MAUI and the App Got Slower
MaboaSoft Engineering Team

You Migrated Xamarin.Forms to .NET MAUI and the App Got Slower

The migration compiled, the app shipped, and it is worse than the Xamarin.Forms version it replaced. This happens often enough that the dotnet/maui tracker has a recurring genre of issue for it. Most published advice is a list of generic optimisations. This is a diagnostic instead — an ordered method for finding which specific thing your migration left behind, starting with the one that stopped shipping in .NET 11.

Read post arrow_forward
Search Console Found 160 Dead URLs. Our Link Check Said Zero.
MaboaSoft Engineering Team

Search Console Found 160 Dead URLs. Our Link Check Said Zero.

A link audit that reports zero broken internal links is telling you something narrower than it sounds: the links it knew how to look for all resolve. On one of our own product sites that gap was a language switcher rendered as a <select> of <option value> — invisible to an <a href> crawler, and quietly emitting 36 dead URLs that Google found before we did. The failure mode is not specific to the web, and the fix is not a better crawler.

Read post arrow_forward
Mono Is Gone: What .NET 11 Does to Your Migrated Xamarin App
MaboaSoft Engineering Team

Mono Is Gone: What .NET 11 Does to Your Migrated Xamarin App

As of .NET 11 Preview 6, CoreCLR is the only runtime for .NET MAUI mobile apps and the option to select Mono has been removed. For teams running a codebase that started life in Xamarin.Forms, this is not a routine SDK bump — it is a runtime swap under an application that was written, tuned, and profiled against Mono. Here is what actually changes, what to measure before .NET 11 reaches GA in November 2026, and where the real risk sits.

Read post arrow_forward
Hardening a Flutter MVP for Production: The Last 20% That Hides the Cost
MaboaSoft Engineering Team

Hardening a Flutter MVP for Production: The Last 20% That Hides the Cost

A Flutter MVP proves the idea. Production has to survive real users, real networks, and the app stores. This is the hardening work that sits between the two — getting logic out of widgets, the three states every MVP is missing, secrets that must not ship in the binary, crash reporting you can actually read, and the store deadlines that will block your launch if you meet them late.

Read post arrow_forward
BLE OTA Firmware Updates: A Mobile App Architecture That Won't Brick Devices
MaboaSoft Engineering Team

BLE OTA Firmware Updates: A Mobile App Architecture That Won't Brick Devices

An over-the-air firmware update is the only feature in a connected product where a software bug produces dead hardware. The mobile app is an unreliable, untrusted transport — the device has to survive the app dying mid-transfer. This is the architecture that makes bricking structurally impossible: dual-bank flashing, signatures verified on the device, anti-rollback, and resumable transfers over a link that was never designed to move firmware.

Read post arrow_forward
How to Test AI-Generated Flutter Code: A Senior Engineer's Checklist
MaboaSoft Engineering Team

How to Test AI-Generated Flutter Code: A Senior Engineer's Checklist

AI-generated Flutter code usually gets the shape right and the edges wrong. This is the Flutter-specific testing checklist we use: the failure modes AI actually produces in Dart and Flutter, the analyzer gate that catches them mechanically, why AI-written tests inflate coverage without adding confidence, and the async-gap bug that ships more Flutter crashes than any other.

Read post arrow_forward