Historical LOE analysis — kept for the record, not for planning.
This is the pre-decision level-of-effort analysis dated 2026-03-12; the Blazor Hybrid
decision resolved 2026-06-08 and the migration has since been executed — ~55 Razor pages exist under
ALPAMobile.Presentation/Components/Pages/, including LoginPage and the Jumpseat suite.
The estimates, codebase measurements, and tier assignments below describe the codebase as of
2026-03-12. The live state of the UI is the ALPAMobile.Presentation project.
The recommended approach is a straggler migration: keep the MAUI app shell and native integrations, then progressively replace XAML pages and view logic with Razor components hosted inside BlazorWebView.
Guiding Principles
MAUI stays the host. Platform projects, startup, lifecycle, permissions, and packaging remain unchanged initially.
Extract logic into services first. Business logic must move out of ViewModels and code-behind before UI is replaceable.
Introduce BlazorWebView beside existing XAML. Mixed app during the transition.
Service Locator anti-pattern — heavy use of Shell.Current?.Handler?.MauiContext?.Services.GetService<T>() needs refactoring before Blazor components can consume services.
WeakReferenceMessenger coupling — Blazor components need a different state notification pattern (cascading parameters, shared state containers).
AutoLogin JS bridge — current Android [JavascriptInterface] and iOS WKScriptMessageHandler patterns break inside BlazorWebView.
StackLayout deprecation (AB#1809, 1,042 warnings) — irrelevant for migrated pages, but any page staying native still needs them fixed.
Summary
Bottom line: ~7–10 person-months for the recommended straggler migration path. This maps to the upper-moderate / borderline large range (6–9 months), pushed higher by auth complexity, regulatory logic, and screen count (59 vs the typical 10–25 moderate benchmark). The effort is roughly 50–65% of original build cost given the broad UI migration scope and service extraction work.
The practical model is: native shell + hybrid UI + shared services — not a hard switch from MAUI to Blazor.