[{"data":1,"prerenderedAt":287},["ShallowReactive",2],{"article_list_xamarin_":3},[4],{"_path":5,"_dir":6,"_draft":7,"_partial":7,"_locale":8,"title":9,"description":10,"publishDate":11,"image":12,"author":13,"tags":16,"excerpt":10,"body":23,"_type":281,"_id":282,"_source":283,"_file":284,"_stem":285,"_extension":286},"/cperez/2026-06-17/xamarin-to-maui","2026-06-17",false,"","Migrating a Xamarin Medical Application to .NET MAUI","A widely used medical reference application built with Xamarin had become increasingly difficult to maintain as platform support deadlines approached. The client needed to modernize the application before operating system changes and framework deprecations created larger compatibility risks.","2026-06-22","/cperez/2026-06-17/img/xamarin-to-maui.png",{"name":14,"user":15},"Carlos Perez","cperez",[17,18,19,20,21,22],"legacy modernization","xamarin",".net","maui","app migration","mobile",{"type":24,"children":25,"toc":273},"root",[26,33,38,45,50,55,85,90,96,101,106,134,140,145,150,178,183,188,194,199,204,209,214,220,225,230,268],{"type":27,"tag":28,"props":29,"children":30},"element","p",{},[31],{"type":32,"value":10},"text",{"type":27,"tag":28,"props":34,"children":35},{},[36],{"type":32,"value":37},"Art+Logic led the successful migration of the application to .NET MAUI, preserving the existing C# ecosystem while modernizing architecture, improving usability, and reducing future maintenance risk.",{"type":27,"tag":39,"props":40,"children":42},"h3",{"id":41},"the-challenge",[43],{"type":32,"value":44},"The Challenge",{"type":27,"tag":28,"props":46,"children":47},{},[48],{"type":32,"value":49},"The original Xamarin application served medical residents and healthcare professionals who relied on quick access to treatment guides, splinting references, and antibiotic data while working in fast-paced clinical environments.",{"type":27,"tag":28,"props":51,"children":52},{},[53],{"type":32,"value":54},"Migrating the application presented several major obstacles:",{"type":27,"tag":56,"props":57,"children":58},"ul",{},[59,65,70,75,80],{"type":27,"tag":60,"props":61,"children":62},"li",{},[63],{"type":32,"value":64},"Xamarin support was aging toward eventual deprecation",{"type":27,"tag":60,"props":66,"children":67},{},[68],{"type":32,"value":69},"Platform APIs and libraries had changed substantially",{"type":27,"tag":60,"props":71,"children":72},{},[73],{"type":32,"value":74},"The application contained years of accumulated technical debt",{"type":27,"tag":60,"props":76,"children":77},{},[78],{"type":32,"value":79},"A complete rewrite would have been cost-prohibitive",{"type":27,"tag":60,"props":81,"children":82},{},[83],{"type":32,"value":84},"Reliability requirements were extremely high due to medical usage contexts",{"type":27,"tag":28,"props":86,"children":87},{},[88],{"type":32,"value":89},"The client needed a migration path that balanced cost, stability, and long-term maintainability.",{"type":27,"tag":39,"props":91,"children":93},{"id":92},"why-net-maui",[94],{"type":32,"value":95},"Why .NET MAUI",{"type":27,"tag":28,"props":97,"children":98},{},[99],{"type":32,"value":100},"After evaluating alternatives, including native mobile development and Flutter, the team selected .NET MAUI because it allowed the client to retain its existing C# investment and many familiar architectural patterns.",{"type":27,"tag":28,"props":102,"children":103},{},[104],{"type":32,"value":105},"Choosing MAUI enabled:",{"type":27,"tag":56,"props":107,"children":108},{},[109,114,119,124,129],{"type":27,"tag":60,"props":110,"children":111},{},[112],{"type":32,"value":113},"Greater code continuity",{"type":27,"tag":60,"props":115,"children":116},{},[117],{"type":32,"value":118},"Reduced retraining costs",{"type":27,"tag":60,"props":120,"children":121},{},[122],{"type":32,"value":123},"Faster migration timelines",{"type":27,"tag":60,"props":125,"children":126},{},[127],{"type":32,"value":128},"Easier long-term maintenance",{"type":27,"tag":60,"props":130,"children":131},{},[132],{"type":32,"value":133},"Lower overall implementation risk",{"type":27,"tag":39,"props":135,"children":137},{"id":136},"the-migration-strategy",[138],{"type":32,"value":139},"The Migration Strategy",{"type":27,"tag":28,"props":141,"children":142},{},[143],{"type":32,"value":144},"Rather than rebuilding the entire application at once, Art+Logic approached the migration incrementally.",{"type":27,"tag":28,"props":146,"children":147},{},[148],{"type":32,"value":149},"The team:",{"type":27,"tag":56,"props":151,"children":152},{},[153,158,163,168,173],{"type":27,"tag":60,"props":154,"children":155},{},[156],{"type":32,"value":157},"Reworked application layers piece by piece",{"type":27,"tag":60,"props":159,"children":160},{},[161],{"type":32,"value":162},"Updated framework dependencies",{"type":27,"tag":60,"props":164,"children":165},{},[166],{"type":32,"value":167},"Modernized UI components",{"type":27,"tag":60,"props":169,"children":170},{},[171],{"type":32,"value":172},"Refactored platform-specific functionality",{"type":27,"tag":60,"props":174,"children":175},{},[176],{"type":32,"value":177},"Continuously tested each migrated module",{"type":27,"tag":28,"props":179,"children":180},{},[181],{"type":32,"value":182},"AI-assisted tooling helped accelerate repetitive migration tasks, but engineers maintained direct oversight throughout the process to validate generated code and ensure functional accuracy.",{"type":27,"tag":28,"props":184,"children":185},{},[186],{"type":32,"value":187},"This careful balance between automation and engineering review allowed the team to move quickly without sacrificing reliability.",{"type":27,"tag":39,"props":189,"children":191},{"id":190},"improving-the-user-experience",[192],{"type":32,"value":193},"Improving the User Experience",{"type":27,"tag":28,"props":195,"children":196},{},[197],{"type":32,"value":198},"The migration effort became an opportunity to rethink several critical workflows.",{"type":27,"tag":28,"props":200,"children":201},{},[202],{"type":32,"value":203},"One major enhancement involved redesigning a complex antibiogram table used by physicians to cross-reference bacteria and antibiotics. The previous interface relied heavily on manual scrolling, making navigation cumbersome on mobile devices.",{"type":27,"tag":28,"props":205,"children":206},{},[207],{"type":32,"value":208},"The updated experience introduced filtering and guided selection workflows that dramatically improved speed and usability for clinicians.",{"type":27,"tag":28,"props":210,"children":211},{},[212],{"type":32,"value":213},"The team also developed a new licensing and account-management system that enabled users to purchase and manage digital content licenses directly.",{"type":27,"tag":39,"props":215,"children":217},{"id":216},"the-results",[218],{"type":32,"value":219},"The Results",{"type":27,"tag":28,"props":221,"children":222},{},[223],{"type":32,"value":224},"The migration to .NET MAUI was fully successful.",{"type":27,"tag":28,"props":226,"children":227},{},[228],{"type":32,"value":229},"Outcomes included:",{"type":27,"tag":56,"props":231,"children":232},{},[233,238,243,248,253,258,263],{"type":27,"tag":60,"props":234,"children":235},{},[236],{"type":32,"value":237},"100% resolution of known Xamarin-version bugs",{"type":27,"tag":60,"props":239,"children":240},{},[241],{"type":32,"value":242},"Successful transition to a modern supported framework",{"type":27,"tag":60,"props":244,"children":245},{},[246],{"type":32,"value":247},"Improved mobile UX and navigation",{"type":27,"tag":60,"props":249,"children":250},{},[251],{"type":32,"value":252},"Expanded licensing functionality",{"type":27,"tag":60,"props":254,"children":255},{},[256],{"type":32,"value":257},"Delivery several hundred hours under budget",{"type":27,"tag":60,"props":259,"children":260},{},[261],{"type":32,"value":262},"Reduced long-term platform risk",{"type":27,"tag":60,"props":264,"children":265},{},[266],{"type":32,"value":267},"Streamlined development and maintenance workflows",{"type":27,"tag":28,"props":269,"children":270},{},[271],{"type":32,"value":272},"The project demonstrated that Xamarin-to-MAUI migrations can be both technically successful and financially viable when approached with the right modernization strategy, tooling, and engineering oversight.",{"title":8,"searchDepth":274,"depth":274,"links":275},3,[276,277,278,279,280],{"id":41,"depth":274,"text":44},{"id":92,"depth":274,"text":95},{"id":136,"depth":274,"text":139},{"id":190,"depth":274,"text":193},{"id":216,"depth":274,"text":219},"markdown","content:cperez:2026-06-17:xamarin-to-maui.md","content","cperez/2026-06-17/xamarin-to-maui.md","cperez/2026-06-17/xamarin-to-maui","md",1783408213765]