<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>.NET MAUI Archives - XABLU</title>
	<atom:link href="https://www.xablu.com/tag/net-maui/feed/" rel="self" type="application/rss+xml" />
	<link>https://www.xablu.com/tag/net-maui/</link>
	<description>We build Ventures, Products and Teams</description>
	<lastBuildDate>Mon, 13 Apr 2026 10:37:57 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.0</generator>

<image>
	<url>https://www.xablu.com/wp-content/uploads/2019/08/xablu-favicon-100x100.png</url>
	<title>.NET MAUI Archives - XABLU</title>
	<link>https://www.xablu.com/tag/net-maui/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Maximize Your Mobile App&#8217;s Potential with .NET MAUI: A Migration Guide</title>
		<link>https://www.xablu.com/2023/11/09/maximize-mobile-app-potential-dotnet-maui-migration-guide/</link>
		
		<dc:creator><![CDATA[Henk Kok]]></dc:creator>
		<pubDate>Thu, 09 Nov 2023 10:46:00 +0000</pubDate>
				<category><![CDATA[Insights]]></category>
		<category><![CDATA[Mobile Strategies]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[.NET]]></category>
		<category><![CDATA[.NET MAUI]]></category>
		<category><![CDATA[mvvmcross]]></category>
		<category><![CDATA[xamarin]]></category>
		<guid isPermaLink="false">https://staging.xablu.com/?p=20822</guid>

					<description><![CDATA[<p>Embark on a transition from Xamarin to .NET MAUI with our guide. This covers key migration steps, tackles common obstacles, and weaves in effective DevOps strategies for a streamlined process. Gain valuable insights from experts, and utilize Microsoft's official resources coupled with Xablu's specialized services to ensure a flawless shift. Ideal for developers eager to enhance their mobile app's capabilities in the dynamic .NET MAUI environment, this guide is a roadmap to leveraging .NET MAUI's advanced features and achieving superior app performance. Equip yourself with this guide to navigate the complexities of migration with confidence.</p>
<p>The post <a href="https://www.xablu.com/2023/11/09/maximize-mobile-app-potential-dotnet-maui-migration-guide/">Maximize Your Mobile App&#8217;s Potential with .NET MAUI: A Migration Guide</a> appeared first on <a href="https://www.xablu.com">XABLU</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="20822" class="elementor elementor-20822" data-elementor-settings="{&quot;ha_cmc_init_switcher&quot;:&quot;no&quot;}" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-3b46a182 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="3b46a182" data-element_type="section" data-e-type="section" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-38286b58" data-id="38286b58" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-1659b081 elementor-widget elementor-widget-text-editor" data-id="1659b081" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong>The Xamarin chapter is closing, with the end-of-life announcement ringing in changes across the board, especially with Xcode&#8217;s support shifts. Migrating to .NET MAUI isn&#8217;t just about keeping up; it&#8217;s about tapping into the full spectrum of the .NET ecosystem&#8217;s power—think quicker load times, more efficient memory use, and a unified codebase that stretches from mobile to desktop.</strong></p><p><strong>Here at Xablu, we&#8217;re in the business of making transitions like these as smooth as coding on a good day. We support your team with the migration of the Xamarin code, spot what needs to evolve on the UX side, and set you on a clear, efficient path to .NET MAUI. With an eye on the latest best practices, we&#8217;re talking about aligning with industry standards, and streamlining your process with Agile methodologies. Plus, we don&#8217;t just stop at code—UX design, DevOps and sharpening your strategic approach with OKRs are part of the package, ensuring that your app doesn&#8217;t just work well, but also aligns with business and user needs, looks good and ships fast.</strong></p><p><strong>So, ready to get started? Keep reading to find out how to make your app&#8217;s move to .NET MAUI as straightforward as it is smart.</strong></p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-64714ead elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="64714ead" data-element_type="section" data-e-type="section" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-54815bcd" data-id="54815bcd" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-2eb9d78 elementor-toc--minimized-on-tablet elementor-widget elementor-widget-table-of-contents" data-id="2eb9d78" data-element_type="widget" data-e-type="widget" data-settings="{&quot;exclude_headings_by_selector&quot;:[],&quot;no_headings_message&quot;:&quot;No headings were found on this page.&quot;,&quot;headings_by_tags&quot;:[&quot;h2&quot;,&quot;h3&quot;,&quot;h4&quot;,&quot;h5&quot;,&quot;h6&quot;],&quot;marker_view&quot;:&quot;numbers&quot;,&quot;minimize_box&quot;:&quot;yes&quot;,&quot;minimized_on&quot;:&quot;tablet&quot;,&quot;hierarchical_view&quot;:&quot;yes&quot;,&quot;min_height&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;min_height_tablet&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]},&quot;min_height_mobile&quot;:{&quot;unit&quot;:&quot;px&quot;,&quot;size&quot;:&quot;&quot;,&quot;sizes&quot;:[]}}" data-widget_type="table-of-contents.default">
				<div class="elementor-widget-container">
									<div class="elementor-toc__header">
						<h4 class="elementor-toc__header-title">
				Table of Contents			</h4>
										<div class="elementor-toc__toggle-button elementor-toc__toggle-button--expand" role="button" tabindex="0" aria-controls="elementor-toc__2eb9d78" aria-expanded="true" aria-label="Open table of contents"><i aria-hidden="true" class="fas fa-chevron-down"></i></div>
				<div class="elementor-toc__toggle-button elementor-toc__toggle-button--collapse" role="button" tabindex="0" aria-controls="elementor-toc__2eb9d78" aria-expanded="true" aria-label="Close table of contents"><i aria-hidden="true" class="fas fa-chevron-up"></i></div>
					</div>
				<div id="elementor-toc__2eb9d78" class="elementor-toc__body">
			<div class="elementor-toc__spinner-container">
				<i class="elementor-toc__spinner eicon-animation-spin eicon-loading" aria-hidden="true"></i>			</div>
		</div>
						</div>
				</div>
				<div class="elementor-element elementor-element-c95e84d elementor-widget elementor-widget-heading" data-id="c95e84d" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Why it's Time to Move On</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-283a5618 elementor-widget elementor-widget-text-editor" data-id="283a5618" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Let&#8217;s face it, Xamarin has been around for more than 10 years now. It&#8217;s been a solid pick for building cross-platform apps for many teams. But all good things must evolve, and Xamarin&#8217;s no different. With Microsoft sounding the end-of-life alarm for Xamarin, it&#8217;s clear the torch is being passed to .NET MAUI. And here&#8217;s the kicker: this isn&#8217;t just about keeping your apps on life support—it&#8217;s about introducing a whole new vision on cross platform, spanning more operating systems than ever.</p><p>.NET MAUI comes armed with a .NET 8 engine under the hood and a suite of new tools. It&#8217;s not just about maintaining the status quo; it&#8217;s about supercharging your apps. Smoother performance, more robust security measures, and a development experience that&#8217;s been polished to shine. And let&#8217;s not forget the streamlined workflows that come from a single project structure—no more juggling multiple codebases.</p><p>But why rush the migration? Well, staying put on Xamarin means you&#8217;ll soon will not be able to publish a new version in the app stores. Think about it: no more updates, no more cutting-edge features, and slowly but surely, a widening gap between your app and the current tech standards. On the other hand, making the move to .NET MAUI puts you back in the driver&#8217;s seat, with all the support, tools, and performance gains to keep your app racing ahead.</p><p>So, whether it&#8217;s the lure of enhanced features or the push of Xamarin&#8217;s end-of-life, now&#8217;s the time to gear up for migration. And hey, it&#8217;s not a solo journey—you&#8217;ve got a roadmap and a community of fellow developers to help navigate the path to .NET MAUI. Ready to roll? Let&#8217;s get your apps set for the future.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-1a1c44c elementor-widget elementor-widget-heading" data-id="1a1c44c" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Advancements and Improvements in .NET MAUI</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-b1a919b elementor-widget elementor-widget-text-editor" data-id="b1a919b" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<div> </div><div><div><div data-message-author-role="assistant" data-message-id="046d6fd9-070b-41e4-85ea-73762115f927"><div><p>With the upgrade to .NET 8, .NET MAUI is not just a necessary step; it&#8217;s an opportunity to leverage the suite of enhancements that .NET 8 brings to the MAUI framework. Here are some of the most significant technical advancements in .NET MAUI that your software team can take advantage of:</p><ol><li><p><strong>Quality Focus</strong>: The primary aim for .NET MAUI in the .NET 8 release has been enhancing quality, with a significant number of bugs addressed to improve overall reliability.</p></li><li><p><strong>AOT Improvements</strong>: The enhancements to Ahead-of-Time (AOT) compilation, such as Startup tracing or Profiled AOT, which leads to faster application launch times (NativeAOT on MAUI supports iOS) with a minimal increase in app size. </p></li><li><p><strong>NuGet Packages</strong>: .NET MAUI simplifies package management by consolidating multiple project platforms into a single project. This streamlined approach enhances developer flexibility, allowing for easier management of dependencies and versioning across the unified codebase.</p></li><li><p><strong>Unified Platform APIs</strong>: .NET MAUI&#8217;s unification of Android, iOS, macOS, and Windows APIs into a single API enhances developer productivity and application performance.</p></li><li><p><strong>UI Control Quality</strong>: The focus on improving the quality of UI controls, layout, and memory management to provide a smoother user experience across different platforms.</p></li><li><p><strong>Startup Performance</strong>: Notable improvements in startup times for complex applications, with some applications experiencing over a 30% improvement in startup speed.</p></li><li><p><strong>Multi-window Support</strong>: A fundamental change in .NET MAUI is the introduction of the Window as the base foundation for creating multi-window applications, which enhances the desktop app experience.</p></li><li><p><strong>Android Specific Features</strong>: Features like <code>AndroidStripILAfterAOT</code> for smaller assembly sizes and enhanced performance on Android devices.</p></li><li><p><strong>Build Performance</strong>: Improvements such as filtering Android process outputs, porting tasks to C#, and optimizations in remote iOS builds on Windows.</p></li><li><p><strong>Application Size Reductions</strong>: Various performance improvements that also contribute to reducing application size, such as removing unneeded reflection and using StringComparer.Ordinal for collections.</p></li></ol><p>These improvements underscore the technical benefits of migrating to .NET MAUI, positioning it as a forward-thinking framework for building modern, performant applications across various platforms. They represent just a glimpse of the comprehensive enhancements that the .NET 8-based version of .NET MAUI offers, ensuring that your app development is not just up-to-date but also ahead of the curve.</p></div></div></div></div>								</div>
				</div>
				<div class="elementor-element elementor-element-4dcf0e8 elementor-widget elementor-widget-heading" data-id="4dcf0e8" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Strategic Integration of OKRs, UX and Agile in .NET MAUI Development</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-3935885 elementor-widget elementor-widget-text-editor" data-id="3935885" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>When it comes to adopting .NET MAUI for mobile app development, there&#8217;s more to the process than just technical implementation. Xablu provides training and coaching on the introduction of Objectives and Key Results (OKRs), Agile methodologies, and User Experience (UX) design, ensuring these practices are closely tied to the actual technical process. By leveraging best practices, we help create control within an organization and align and communicate customer objectives with Key Results across projects through a blend of training, coaching, and the development of OKR masters within the organization.</p>
<p><strong>OKRs: A Framework for Clarity and Focus</strong> Implementing OKRs offers a framework for setting, tracking, and achieving goals across an organization. OKRs enhance transparency, align team efforts with strategic vision, and foster a results-driven culture. They empower teams to focus on collaboratively set initiatives and understand how their individual contributions fit into wider organizational goals.</p>
<p><strong>Kanban: Agile Planning and Execution</strong> In many project organizations, Kanban as a planning methodology aligns better than Scrum. It combines pre-established plans (Work Breakdown Structures) with an agile approach, promoting continuous collaboration through better visibility into planned tasks and the establishment of a clear communication structure.</p>
<p><strong>UX: Enhancing the User Journey</strong> In .NET MAUI development, the integration of UX, OKRs, and Kanban is crucial. Where possible within a client&#8217;s existing communication structures, we implement this approach. Our vision is to deliver a customized, scalable solution that fits the project approach and culture of the client. Incorporating UX, OKRs, and Kanban is key to boosting operational efficiency and strategic execution.</p>
<p><strong>The Role of Design Systems and Component Libraries</strong> The use of UX, design systems, and component libraries plays a pivotal role in creating cohesive and functional mobile applications. With .NET MAUI, we can help integrate these elements to ensure that the applications not only meet functional requirements but also deliver a consistent and compelling user experience. Design systems provide a shared language and set of components that streamline the design process, while component libraries offer reusable UI elements that save time and maintain consistency across different parts of one or more apps. Together, they form the cornerstone of a user-centric development approach that can be effectively managed with OKR-driven strategies and Agile execution.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-213dc09 elementor-widget elementor-widget-heading" data-id="213dc09" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Keeping the User Front and Center</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-0c7f14c elementor-widget elementor-widget-text-editor" data-id="0c7f14c" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>When optimizing for .NET MAUI, the goal is to adapt without interrupting the user&#8217;s journey through the application. Each step in the user&#8217;s interaction should be coherent with the next, maintaining the narrative of the experience from start to finish. This is crucial because any disruption can lead to dissatisfaction and a break in the seamless experience that users have come to expect​​.</p><p>Embracing empathy is one of the major strategies to ensure continuity. By understanding and prioritizing the emotions and behaviors of users, UX professionals can make more informed decisions that align with user expectations. This involves perspective-taking, avoiding judgment, recognizing specific emotions, and taking action to communicate understanding​​.</p><p>Furthermore, incorporating UX into the product development process is essential. It&#8217;s not just about having a dynamite product; it&#8217;s about ensuring that the product is usable and enjoyable through strong UX​​. A holistic approach to UX ensures that every element of the user interface is consistent and contributes to a cohesive experience​​.</p><p>However, the pursuit of continuity in UX does not imply a resistance to change. The dynamic nature of technology means that improvements and updates are inevitable. The challenge is to balance these changes with the need for continuity, ensuring that updates enhance rather than disrupt the user experience​​.</p><p>To effectively transition existing UX designs to work with .NET MAUI, it&#8217;s crucial to utilize the platform&#8217;s capabilities. .NET MAUI allows for UI customization across different platforms and devices. This means you can optimize your application to make the most effective use of space on different screen sizes, take advantage of device capabilities like location sensors and cameras, and rearrange UI elements to best suit the input methods of each device​​.</p><p>The OnPlatform and OnIdiom markup extensions in .NET MAUI are powerful tools for creating a responsive UI tailored to various platforms and device idioms. OnPlatform allows customization on a per-platform basis, setting values for properties specific to Android, iOS, Mac Catalyst, Tizen, and WinUI, while OnIdiom facilitates customization based on whether the app is running on a phone, tablet, desktop, TV, or watch​​.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-3ec8289 elementor-widget elementor-widget-heading" data-id="3ec8289" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">DevOps and Migration: Like Peanut Butter and Jelly</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-c9558cb elementor-widget elementor-widget-text-editor" data-id="c9558cb" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>In the realm of app development, DevOps and migration to .NET MAUI go hand-in-hand, ensuring a smooth transition and continuous integration/delivery (CI/CD). Embracing DevOps with .NET MAUI simplifies the complexities of building and deploying apps across multiple platforms. Prior to setting up pipelines, necessary files such as signing certificates for iOS, keystores for Android, and package signing certificates for Windows are prerequisites.</p><p>The process begins with the creation of pipelines, for which .NET MAUI provides sample pipelines, <a href="https://github.com/dotnet/maui-samples/tree/main/7.0/Apps/WeatherTwentyOne/devops">like those in the Weather21 app</a>, to guide developers through the setup. These starter pipelines, ideal for basic testing and build tasks, integrate seamlessly into DevOps strategies, focusing on essential steps like setting the .NET version, installing MAUI workloads, managing signing files, building/publishing the app, running unit tests, and uploading artifacts.</p><p>The dotnet CLI tool streamlines the DevOps workflow, eliminating the need for intricate scripts to manage builds and publications across different frameworks. This tool allows for executing <code>dotnet build</code> and <code>dotnet publish</code> commands for any TargetFramework, contributing to a more efficient CI/CD pipeline. The common tasks for pipelines in both GitHub Actions and Azure DevOps revolve around setting up the .NET SDK version and installing .NET MAUI, demonstrating the alignment of DevOps practices with .NET MAUI&#8217;s versatile framework.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-a2e22c1 elementor-widget elementor-widget-heading" data-id="a2e22c1" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">The Step-by-Step Migration Playbook</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-e743395 elementor-widget elementor-widget-text-editor" data-id="e743395" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Migrating your Xamarin.Forms app to .NET MAUI is a process made significantly simpler with the .NET Upgrade Assistant. Here&#8217;s how to make the transition smooth:</p><ol><li><strong>Preparation</strong>: Ensure your Xamarin.Forms project is updated to version 5.0 and running on .NET Standard 2.0 or higher for the best results before migration​​.</li><li><strong>Installation</strong>: If using Visual Studio on Windows, install the .NET Upgrade Assistant from the Extensions menu. For CLI, use the command:<br /><div class="bg-black rounded-md"><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-shell"><strong>dotnet tool install -g upgrade-assistant</strong><br />
</code></div></div><p>To update the tool, use:</p><div class="bg-black rounded-md"><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-shell"><strong>dotnet tool update -g upgrade-assistant</strong><br />
</code></div></div><p>Note that if you have additional NuGet feed sources configured, you may need to use <code>--ignore-failed-sources</code> to avoid errors​​.</p></li><li><strong>Running the Upgrade</strong>: In Visual Studio, right-click on the project and select &#8216;Upgrade&#8217;. For CLI, navigate to your project folder and run:<br /><div class="bg-black rounded-md"><div class="p-4 overflow-y-auto"><code class="!whitespace-pre hljs language-shell"><strong>upgrade-assistant upgrade</strong><br />
</code></div></div><p>This will update all eligible files within your project​​.</p></li><li><strong>Conversion and Code Updates</strong>: The .NET Upgrade Assistant will convert your project files to SDK-style projects, update target frameworks, set <code>&lt;UseMaui&gt;true&lt;/UseMaui&gt;</code>, and handle NuGet package transitions:<ul><li>Remove Xamarin.Forms and Xamarin.Essentials packages.</li><li>Replace Xamarin.CommunityToolkit with .NET MAUI Community Toolkit.</li><li>Update SkiaSharp packages for .NET MAUI compatibility.</li><li>Replace <code>Xamarin.Forms</code> and <code>Xamarin.Essentials</code> namespaces with <code>Microsoft.Maui</code> and <code>Microsoft.Maui.Controls</code>​​.</li></ul></li></ol><p>Remember, while the Upgrade Assistant does a lot, it might not cover everything. Manual adjustments and testing will be necessary to ensure a smooth transition. Keep the .NET MAUI documentation handy for reference and don&#8217;t hesitate to provide feedback to improve the tool further​​.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-56bf83d elementor-widget elementor-widget-heading" data-id="56bf83d" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Watch Out for These Migration Speed Bumps</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-176a1a9 elementor-widget elementor-widget-text-editor" data-id="176a1a9" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Migrating from Xamarin to .NET MAUI is a forward leap in app development, but it&#8217;s not without its hurdles. One of the common challenges is the absence of OpenTK on iOS, which means OpenGL is no longer available. For Xamarin.watchOS projects, it&#8217;s recommended to bundle Swift extensions with .NET for iOS apps.</p><p>Additionally, before upgrading your Xamarin native projects to .NET, ensure they are SDK-style projects and that dependencies are updated to .NET 7+. Also, while the .NET Upgrade Assistant can streamline the migration of multi-project Xamarin.Forms apps to .NET MAUI, be prepared to invest additional effort post-upgrade to address any nuances and ensure your app is fully functional in the new environment.</p><p>When transitioning from frameworks like MvvmLight or MvvmCross to the MVVM Toolkit, you&#8217;ll encounter several changes:</p><ol><li><p><strong>ObservableObject</strong>: Replace MvvmLight&#8217;s <code>ObservableObject</code> with the MVVM Toolkit&#8217;s version, adjusting the <code>using</code> directives in your components accordingly.</p></li><li><p><strong>SetProperty Methods</strong>: The signature for methods like <code>Set&lt;T&gt;(Expression, ref T, T)</code> does not have a like-for-like replacement in the MVVM Toolkit. Instead, use <code>SetProperty(ref T, T, string)</code> which offers similar functionality with performance benefits.</p></li><li><p><strong>PropertyChanged Event</strong>: For raising property change notifications, switch from <code>RaisePropertyChanged(string)</code> to <code>OnPropertyChanged(string)</code> in the MVVM Toolkit. The new method infers the property name automatically, simplifying the code.</p></li><li><p><strong>VerifyPropertyName</strong>: The <code>VerifyPropertyName(string)</code> method does not have a replacement in the MVVM Toolkit due to the availability of the <code>nameof</code> keyword for verifying property existence.</p></li><li><p><strong>PropertyChangedHandler</strong>: There is no direct replacement for <code>PropertyChangedHandler</code>. Use <code>OnPropertyChanged()</code> to raise property change events instead.</p></li><li><p><strong>ViewModelBase Migration</strong>: For components using <code>ViewModelBase</code>, the MVVM Toolkit offers <code>ObservableRecipient</code>, which provides similar functionality.</p></li><li><p><b>Namespace changes</b>: Replace MvvmCross namespaces with their CommunityToolkit.Mvvm counterparts. For instance, change using MvvmCross.ViewModels; to using CommunityToolkit.Mvvm.ComponentModel; and using MvvmCross.Commands; to using CommunityToolkit.Mvvm.Input;. This change is necessary for ViewModel and Command implementations to align with CommunityToolkit.Mvvm&#8217;s structure.</p></li><li><p><b>Navigation Changes</b>: CommunityToolkit.Mvvm doesn&#8217;t include built-in navigation features like MvvmCross. You&#8217;ll need to implement a navigation service that works with the navigation patterns in .NET MAUI.</p></li><li><p><b>Dependency Injection</b>: whether you are using MVVMCross (with it&#8217;s own DI container), MVVMLight (with SimpleIoc), Prism (with Unity Container) or implementations like DryIoc or Autofac, evaluate if you should continue with it or switch to the built-in .NET DI framework.</p></li></ol><p>Testing and quality checks are integral throughout this process. Rigorous testing will highlight any discrepancies that need your attention, ensuring that the final product maintains the high-quality standards users expect from a .NET MAUI app.</p>								</div>
				</div>
				<div class="elementor-element elementor-element-1882b7c elementor-widget elementor-widget-heading" data-id="1882b7c" data-element_type="widget" data-e-type="widget" data-widget_type="heading.default">
				<div class="elementor-widget-container">
					<h2 class="elementor-heading-title elementor-size-default">Additional Support</h2>				</div>
				</div>
				<div class="elementor-element elementor-element-5769852 elementor-widget elementor-widget-text-editor" data-id="5769852" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>If you&#8217;re looking for additional expertise and support during your migration journey, Xablu specializes in the transition from Xamarin to .NET MAUI. We offer comprehensive services to assist with everything from assessing your existing codebase and guiding the migration process to optimizing performance for a successful adoption of .NET MAUI​​. Keep in mind that with Xamarin support ending on May 1, 2024, now is a critical time to embrace the transition to .NET MAUI to stay ahead in cross-platform development​​.</p><p>Here&#8217;s a list of links to these resources:</p><ul><li><a href="https://learn.microsoft.com/en-us/dotnet/maui/what-is-maui" target="_new">Official .NET MAUI documentation</a>​​</li><li><a href="https://learn.microsoft.com/en-us/dotnet/maui/whats-new" target="_new">What&#8217;s new in .NET MAUI documentation</a>​​</li><li><a href="https://dotnet.microsoft.com/en-us/learn/maui" target="_new">Learn .NET MAUI &#8211; Free resources</a></li><li>​​<a href="https://learn.microsoft.com/en-us/dotnet/csharp/whats-new/csharp-12">What&#8217;s new in C# 12</a></li><li><a href="/net-maui-migration-service/" target="_new">Xablu&#8217;s .NET MAUI migration services</a>​​</li></ul>								</div>
				</div>
				<div class="elementor-element elementor-element-1b6b3ef2 elementor-widget elementor-widget-text-editor" data-id="1b6b3ef2" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong>Please share your </strong><b>thoughts <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f603.png" alt="😃" class="wp-smiley" style="height: 1em; max-height: 1em;" /></b></p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-412fea4d elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="412fea4d" data-element_type="section" data-e-type="section" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-4493923c" data-id="4493923c" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-2288fc87 elementor-widget elementor-widget-text-editor" data-id="2288fc87" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p style="text-align: center;"><i>Curious how Xablu can help your organization ?<br /></i></p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-651715d2 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="651715d2" data-element_type="section" data-e-type="section" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-4718fd35" data-id="4718fd35" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-815058b elementor-align-center elementor-widget elementor-widget-button" data-id="815058b" data-element_type="widget" data-e-type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
									<div class="elementor-button-wrapper">
					<a class="elementor-button elementor-button-link elementor-size-sm" href="/contact-us/" target="_blank">
						<span class="elementor-button-content-wrapper">
									<span class="elementor-button-text">Contact us Today</span>
					</span>
					</a>
				</div>
								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>The post <a href="https://www.xablu.com/2023/11/09/maximize-mobile-app-potential-dotnet-maui-migration-guide/">Maximize Your Mobile App&#8217;s Potential with .NET MAUI: A Migration Guide</a> appeared first on <a href="https://www.xablu.com">XABLU</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>The transition from Xamarin to .NET MAUI</title>
		<link>https://www.xablu.com/2023/06/25/from-xamarin-to-net-maui/</link>
					<comments>https://www.xablu.com/2023/06/25/from-xamarin-to-net-maui/#respond</comments>
		
		<dc:creator><![CDATA[XABLU HQ]]></dc:creator>
		<pubDate>Sun, 25 Jun 2023 16:32:42 +0000</pubDate>
				<category><![CDATA[Projects]]></category>
		<category><![CDATA[Technical]]></category>
		<category><![CDATA[.NET MAUI]]></category>
		<category><![CDATA[app development]]></category>
		<category><![CDATA[Cross-platform Development]]></category>
		<category><![CDATA[Future-Proofing]]></category>
		<category><![CDATA[Transition]]></category>
		<category><![CDATA[XABLU]]></category>
		<category><![CDATA[xamarin]]></category>
		<guid isPermaLink="false">https://staging.xablu.com/?p=20155</guid>

					<description><![CDATA[<p>Explore the seamless transition from Xamarin to .NET MAUI with our expert insights. Discover how our tailored approach minimizes disruptions and maximizes efficiency for your business's app development journey.</p>
<p>The post <a href="https://www.xablu.com/2023/06/25/from-xamarin-to-net-maui/">The transition from Xamarin to .NET MAUI</a> appeared first on <a href="https://www.xablu.com">XABLU</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="20155" class="elementor elementor-20155" data-elementor-settings="{&quot;ha_cmc_init_switcher&quot;:&quot;no&quot;}" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-3cf389d2 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="3cf389d2" data-element_type="section" data-e-type="section" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-2786089d" data-id="2786089d" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-3281433a elementor-widget elementor-widget-text-editor" data-id="3281433a" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p>Discover the power of .NET Multi-platform App UI (MAUI) and how we can assist businesses in smoothly transitioning from Xamarin to .NET MAUI. Gain insights into the benefits of this next-generation framework and leverage our expertise to ensure a successful migration.</p><p>As technology evolves, so do the frameworks that empower cross-platform app development. With the introduction of .NET MAUI, businesses now have an opportunity to enhance their app development capabilities. We specialise in assisting companies in transitioning from Xamarin to .NET MAUI seamlessly.</p><h2>How we can help:</h2><p>With our solid background and practical knowledge, we are well-equipped to assist businesses in their transition to .NET MAUI. Our experience with both Xamarin and .NET MAUI equips us with the insights necessary to guide your company through this change. Our focus is on ensuring a smooth transition, aiming to minimize disruptions while maximizing the benefits of adopting this new technology.</p><h2>Introducing .NET MAUI:</h2><p>.NET MAUI, short for .NET Multi-platform App UI, is Microsoft&#8217;s next-generation framework for building native user interfaces and applications across multiple platforms. Built on the foundation of Xamarin.Forms, .NET MAUI offers improved performance, increased productivity, and a streamlined developer experience.</p><div class="group w-full text-gray-800 dark:text-gray-100 border-b border-black/10 dark:border-gray-900/50 bg-gray-50 dark:bg-[#444654]"><div class="flex p-4 gap-4 text-base md:gap-6 md:max-w-2xl lg:max-w-[38rem] xl:max-w-3xl md:py-6 lg:px-0 m-auto"><div class="relative flex w-[calc(100%-50px)] flex-col gap-1 md:gap-3 lg:w-[calc(100%-115px)]"><div class="flex flex-grow flex-col gap-3"><div class="min-h-[20px] flex items-start overflow-x-auto whitespace-pre-wrap break-words flex-col gap-4"><div class="markdown prose w-full break-words dark:prose-invert light"><p>Transitioning to .NET MAUI brings a range of benefits. Businesses can unlock enhanced performance, delivering faster and more responsive applications. Native user interfaces enable seamless integration with platform aesthetics, creating immersive user experiences. With a single codebase, companies can write code once and target multiple platforms, saving time and effort. Embracing .NET MAUI ensures a future-proof solution, as Microsoft invests in ongoing support and updates, keeping businesses ahead of the curve.</p><p>We understand that transitioning from Xamarin to .NET MAUI can be a complex process. That&#8217;s why our team of experts is dedicated to providing support during your transition process. From assessing your existing Xamarin codebase to guiding the migration process and optimizing performance, we work hard to ensure a smooth and successful adoption of .NET MAUI. If you would like to learn more, feel free to visit <strong><a href="/net-maui-migration-service/">our product page</a> </strong>for additional insights and customized support.</p></div></div></div></div></div></div>								</div>
				</div>
				<div class="elementor-element elementor-element-27db27e3 elementor-widget elementor-widget-text-editor" data-id="27db27e3" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p><strong>Please share your </strong><b>thoughts <img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f603.png" alt="😃" class="wp-smiley" style="height: 1em; max-height: 1em;" /></b></p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-b76317a elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="b76317a" data-element_type="section" data-e-type="section" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-7e645012" data-id="7e645012" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-4576e7d6 elementor-widget elementor-widget-text-editor" data-id="4576e7d6" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p style="text-align: center;"><i>Curious how Xablu can help your organization ?<br /></i></p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				<section class="elementor-section elementor-top-section elementor-element elementor-element-1c210cac elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="1c210cac" data-element_type="section" data-e-type="section" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-3ba5637f" data-id="3ba5637f" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-78ffb771 elementor-align-center elementor-widget elementor-widget-button" data-id="78ffb771" data-element_type="widget" data-e-type="widget" data-widget_type="button.default">
				<div class="elementor-widget-container">
									<div class="elementor-button-wrapper">
					<a class="elementor-button elementor-button-link elementor-size-sm" href="/contact-us/" target="_blank">
						<span class="elementor-button-content-wrapper">
									<span class="elementor-button-text">Contact us Today</span>
					</span>
					</a>
				</div>
								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>The post <a href="https://www.xablu.com/2023/06/25/from-xamarin-to-net-maui/">The transition from Xamarin to .NET MAUI</a> appeared first on <a href="https://www.xablu.com">XABLU</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://www.xablu.com/2023/06/25/from-xamarin-to-net-maui/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Xablu Team participates in the Monkey Conf</title>
		<link>https://www.xablu.com/2021/12/03/xablu-team-participates-in-the-monkey-conf/</link>
		
		<dc:creator><![CDATA[Juan Sturla]]></dc:creator>
		<pubDate>Fri, 03 Dec 2021 14:59:23 +0000</pubDate>
				<category><![CDATA[Events]]></category>
		<category><![CDATA[Industry Events]]></category>
		<category><![CDATA[.NET MAUI]]></category>
		<category><![CDATA[Planet Xamarin]]></category>
		<category><![CDATA[xamarin]]></category>
		<guid isPermaLink="false">https://www.xablu.com/?p=15434</guid>

					<description><![CDATA[<p>This week, on the first day of December, it was the fourth edition of Monkey Conf. Monkey Conf is a .NET related event, the biggest held in Spain. This edition [&#8230;]</p>
<p>The post <a href="https://www.xablu.com/2021/12/03/xablu-team-participates-in-the-monkey-conf/">Xablu Team participates in the Monkey Conf</a> appeared first on <a href="https://www.xablu.com">XABLU</a>.</p>
]]></description>
										<content:encoded><![CDATA[		<div data-elementor-type="wp-post" data-elementor-id="15434" class="elementor elementor-15434" data-elementor-settings="{&quot;ha_cmc_init_switcher&quot;:&quot;no&quot;}" data-elementor-post-type="post">
						<section class="elementor-section elementor-top-section elementor-element elementor-element-3f1f1649 elementor-section-boxed elementor-section-height-default elementor-section-height-default" data-id="3f1f1649" data-element_type="section" data-e-type="section" data-settings="{&quot;_ha_eqh_enable&quot;:false}">
						<div class="elementor-container elementor-column-gap-default">
					<div class="elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-5e92931b" data-id="5e92931b" data-element_type="column" data-e-type="column">
			<div class="elementor-widget-wrap elementor-element-populated">
						<div class="elementor-element elementor-element-35362fb3 elementor-widget elementor-widget-text-editor" data-id="35362fb3" data-element_type="widget" data-e-type="widget" data-widget_type="text-editor.default">
				<div class="elementor-widget-container">
									<p></p>
<p class="wp-block-paragraph">This week, on the first day of December, it was the fourth edition of <a href="http://www.monkeyconf.es/" target="_blank" rel="noreferrer noopener">Monkey Conf</a>.</p>
<p></p>
<p></p>
<p class="wp-block-paragraph">Monkey Conf is a .NET related event, the biggest held in Spain. This edition and the one from the year before were online conferences because of the pandemic situation.<br />While this might sound as a downside, it was a great opportunity for them to go global, allowing not only viewers from all around the world but also speakers.</p>
<p></p>
<p></p>
<h2 class="wp-block-heading">The talks</h2>
<p></p>
<p></p>
<p class="wp-block-paragraph">Even though the event is oriented to .NET, all the talks were about mobile: Xamarin and .NET MAUI.</p>
<p></p>
<p></p>
<p class="wp-block-paragraph">After the event&#8217;s Keynote, our fellow Sebastián Pérez was the first speaker.</p>
<p></p>
<p></p>
<p class="wp-block-paragraph">He talked about what you need to know to get started with .NET MAUI: from how Xamarin became .NET MAUI, what tools to use or if you should wait until it&#8217;s release and more!</p>
<p></p>
<p></p>
<p class="wp-block-paragraph">You can watch his talk in the video below:</p>
<p><iframe title="[Monkey Conf 2021] Todo lo que tienes que saber para comenzar a desarrollar en .NET MAUI" width="800" height="450" src="https://www.youtube.com/embed/PcVbR-dcMi0?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe></p>
<p></p>
<p></p>
<p class="wp-block-paragraph">But Sebastián was not the only one of our team who participated in the event, I was there too for the second talk.<br />Mine was about writing platform-specific code for your .NET MAUI applications. In this session you will learn what it is, why should you use it and different ways of implementing it with some code samples.</p>
<p></p>
<p></p>
<p class="wp-block-paragraph">You can watch my talk in the video below:</p>
<p><iframe title="[Monkey Conf 2021] .NET MAUI: Código específico para cada plataforma desde el proyecto único" width="800" height="450" src="https://www.youtube.com/embed/ka5e0p_Uy1E?feature=oembed" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe></p>
<p></p>
<p></p>
<p class="wp-block-paragraph"></p>
<p></p>
<p class="wp-block-paragraph">There were other talks by great speakers, make sure to check them out!</p>
<p></p>								</div>
				</div>
					</div>
		</div>
					</div>
		</section>
				</div>
		<p>The post <a href="https://www.xablu.com/2021/12/03/xablu-team-participates-in-the-monkey-conf/">Xablu Team participates in the Monkey Conf</a> appeared first on <a href="https://www.xablu.com">XABLU</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
