.NET MAUI — adalah framework lintas platform Microsoft untuk membuat aplikasi native dalam C# dan XAML, dirilis pada tahun 2022 bersama .NET 6. Menurut Microsoft .NET MAUI Documentation, 2024, MAUI mendukung iOS, Android, Windows, macOS dan Tizen, menyatukannya dalam satu proyek dengan basis kode bersama. Framework ini adalah penerus langsung Xamarin.Forms.
Poin utama
.NET MAUI (Multi-platform App UI) — adalah evolusi Xamarin.Forms, dirancang ulang dari awal untuk .NET 6+. Tidak seperti Xamarin.Forms yang memerlukan proyek terpisah untuk setiap platform, MAUI menggunakan struktur tunggal dengan file .csproj bersama dan folder platform Platforms/iOS, Platforms/Android, Platforms/Windows dan Platforms/MacCatalyst. Rilis stabil pertama MAUI terjadi pada Mei 2022.
Perbedaan utama .NET MAUI dari pendahulunya — integrasi penuh dengan .NET 8 BCL (Base Class Library). Pengembang memiliki akses langsung ke System.Text.Json, System.Net.Http, System.Linq, System.IO dan API lainnya tanpa SDK tambahan. Xamarin.Forms menggunakan .NET Standard 2.0 untuk logika bersama, yang membatasi akses ke kemampuan baru platform .NET.
Menurut Microsoft Build 2024, .NET MAUI digunakan di 40.000+ aplikasi di App Store dan Google Play. Di antara proyek terkenal — UPS Mobile, The Weather Channel dan Siemens Teamcenter. Microsoft secara aktif mengembangkan MAUI dalam kerangka .NET 9.
Pengumuman .NET MAUI terjadi di Microsoft Build 2020 sebagai bagian dari strategi unifikasi .NET. Microsoft menyatukan .NET Core, Mono dan .NET Framework ke dalam satu platform .NET 5+. Xamarin.Forms menjadi dasar untuk MAUI, tetapi basis kode ditulis ulang sepenuhnya: API usang dihapus, renderer diganti dengan Handlers, DependencyService diganti dengan container DI.
Versi .NET MAUI 8 (November 2023) menambahkan dukungan Native AOT, performa CollectionView yang ditingkatkan, Blazor Hybrid (menyematkan komponen Blazor ke dalam aplikasi MAUI) dan pemetaan font baru. .NET MAUI 9 (2024) mencakup dukungan C# 12, integrasi yang ditingkatkan dengan WinUI 3 dan macOS Sonoma, serta API Drag & Drop baru untuk semua platform.
Perbedaan pertama — aplikasi tunggal. Di Xamarin.Forms untuk iOS dan Android diperlukan dua proyek terpisah dalam satu solusi. Di .NET MAUI satu proyek dengan folder platform. Ini menyederhanakan navigasi kode, manajemen dependensi dan pipeline CI/CD. File .csproj menggunakan format SDK-style dengan TargetFrameworks: net8.0-android, net8.0-ios, net8.0-maccatalyst.
Perbedaan kedua — arsitektur rendering melalui Handlers sebagai pengganti renderer. Di Xamarin.Forms setiap elemen (Button, Label) memiliki kelas Renderer sendiri yang membuat kontrol native. Untuk kustomisasi diperlukan Custom Renderer. Di MAUI Handler adalah objek ringan yang memetakan elemen abstrak ke kontrol native dan mendukung Property Mappers untuk memperbarui properti tanpa membuat ulang kontrol.
Perbedaan ketiga — container DI tunggal Microsoft.Extensions.DependencyInjection. Xamarin.Forms menggunakan DependencyService untuk registrasi implementasi platform. MAUI menanamkan DI ke dalam inti framework: layanan didaftarkan di MauiAppBuilder, controller menerima dependensi melalui konstruktor. Ini menyederhanakan pengujian dan mengikuti praktik .NET modern.
Arsitektur .NET MAUI didasarkan pada model berlapis. Lapisan bawah — .NET BCL dan Mono Runtime (Android) / CoreCLR (Windows) / NativeAOT (iOS). Lapisan tengah — Microsoft.Maui.dll dengan inti framework: Handlers, Layout, Graphics, Controls. Lapisan atas — aplikasi pengembang dengan halaman XAML, ViewModel dan layanan.
Single Project — adalah fitur arsitektur kunci .NET MAUI. Semua file dibagi menjadi tiga kategori: kode bersama (Shared), kode platform (Platforms) dan sumber daya (Resources). Multi-targeting di .csproj menentukan untuk platform mana aplikasi dibangun. Setiap platform hanya mengkompilasi folder Platforms-nya sendiri dan kode bersama.
Kode platform ditempatkan di folder bersyarat. Platforms/Android berisi MainActivity.cs, MainApplication.cs dan AndroidManifest.xml. Platforms/iOS — AppDelegate.cs, Info.plist dan Entitlements.plist. Platforms/Windows — Package.appxmanifest dan App.xaml. Untuk kompilasi bersyarat dalam kode digunakan direktif #if ANDROID, #if IOS, #if WINDOWS, #if MACCATALYST.
XAML — bahasa markup deklaratif, diwarisi dari Xamarin.Forms dan WPF. Di .NET MAUI XAML digunakan untuk mendeskripsikan halaman (ContentPage), tata letak (VerticalStackLayout, Grid, FlexLayout), elemen (Label, Entry, Button, Image) dan kontrol (CollectionView, CarouselView). XAML dikompilasi ke format BAML pada tahap pembangunan.
Pola MVVM diimplementasikan melalui CommunityToolkit.Mvvm — pustaka sumber terbuka dari Microsoft. Atribut [ObservableProperty] menghasilkan properti INotifyPropertyChanged, [RelayCommand] membuat perintah dari metode. Source Generator CommunityToolkit.Mvvm 8.2 mentransformasi kelas parsial ViewModel, menghasilkan ObservableObject tanpa Reflection. Ini mempercepat Binding sebesar 30% dibandingkan implementasi manual.
using Microsoft.Maui;
using Microsoft.Maui.Controls;
namespace MauiApp;
public class MainPage : ContentPage
{
public MainPage()
{
Title = "MAUI App";
Content = new VerticalStackLayout
{
Spacing = 12,
Padding = new Thickness(16),
Children =
{
new Label
{
Text = "Hello, .NET MAUI!",
FontSize = 24,
FontAttributes = FontAttributes.Bold
},
new Button
{
Text = "Tekan saya",
BackgroundColor = Colors.Blue,
TextColor = Colors.White,
Command = new Command(async () =>
await DisplayAlert("Halo", "Dunia", "OK"))
}
}
};
}
}
.NET MAUI mendukung 5 platform: iOS 15.0+, Android 5.0 (API 21)+, Windows 10 1809+, macOS 12.0+ (MacCatalyst) dan Tizen 6.5+. Setiap platform menggunakan set kontrol dan API-nya sendiri. iOS menggunakan UIKit melalui Mac Catalyst, Android — AndroidX melalui Xamarin.Android, Windows — WinUI 3, macOS — AppKit melalui Mac Catalyst.
Di iOS dan Android MAUI menggunakan mekanisme rendering yang sama dengan Xamarin.Forms — kontrol UI native. Namun Handlers menyediakan kustomisasi yang lebih fleksibel. Untuk konfigurasi platform Button di iOS digunakan OnPlatform<Button> dengan PlatformConfiguration.iOS. Untuk Windows MAUI menggunakan WinUI 3 — framework UI modern dari Microsoft dengan dukungan Fluent Design System.
Dukungan macOS ditambahkan melalui Mac Catalyst — teknologi Apple yang menjalankan aplikasi UIKit di Mac. Ini memungkinkan penggunaan kembali 100% kode iOS MAUI untuk versi macOS. Untuk fungsi Mac spesifik (Menu Bar, Touch Bar) MAUI menyediakan API platform melalui Mac Catalyst dan wrapper NSView.
Tizen — platform Samsung untuk Smart TV, smartphone dan jam tangan pintar. Dukungan Tizen di .NET MAUI diimplementasikan melalui Samsung Tizen .NET. Aplikasi MAUI dikompilasi untuk Tizen melalui binding Samsung TizenFX. Namun Tizen bukan platform prioritas Microsoft — pembaruan untuknya muncul dengan keterlambatan 1–2 bulan.
| Platform | Versi minimal | Framework UI | Status |
|---|---|---|---|
| iOS | iOS 15.0 | UIKit (Mac Catalyst) | Stabil |
| Android | API 21 (5.0) | AndroidX / Material 3 | Stabil |
| Windows | Win 10 1809 | WinUI 3 / Fluent Design | Stabil |
| macOS | macOS 12.0 | AppKit (Mac Catalyst) | Stabil |
| Tizen | Tizen 6.5 | TizenFX / Samsung | Tambahan |
Basis kode tunggal — .NET MAUI mengurangi jumlah duplikasi kode. Satu proyek dalam C# dan XAML dikompilasi untuk 5 platform, menyediakan hingga 95% kode bersama untuk aplikasi dengan UI sederhana. Logika bisnis, layanan, model data dan klien HTTP berada dalam kode bersama. Hanya fitur platform (kamera, geolokasi, biometri) yang memerlukan implementasi terpisah melalui DI.
Performa .NET MAUI lebih tinggi dari Xamarin.Forms. Handlers mengurangi overhead rendering: pengujian Microsoft menunjukkan pengurangan waktu rendering layar sebesar 20–30% dibandingkan Xamarin.Forms 5.0. Native AOT di iOS mengkompilasi kode C# langsung ke instruksi ARM64, menghilangkan kompilasi JIT dan mengurangi waktu startup sebesar 40%.
Blazor Hybrid — kemampuan unik .NET MAUI. BlazorWebView menyematkan komponen Blazor langsung ke dalam aplikasi MAUI. Pengembang antarmuka web dapat menggunakan kembali komponen Blazor (halaman Razor, JS-interop, gaya CSS) di aplikasi seluler. Blazor Hybrid berfungsi di semua 5 platform MAUI tanpa mengubah kode komponen Blazor.
Ekosistem .NET — akses ke ribuan paket NuGet: Entity Framework Core untuk bekerja dengan database, Serilog untuk pencatatan, Polly untuk permintaan HTTP berulang, FluentValidation untuk validasi. CommunityToolkit.Maui menyediakan elemen UI siap pakai: Popup, Toast, Snackbar, SemanticScreenReader untuk aksesibilitas. .NET MAUI terintegrasi dengan Azure, SignalR dan Microsoft Graph SDK.
Alat pengembangan — Visual Studio 2022 dan Rider dari JetBrains. XAML Hot Reload memperbarui UI tanpa memulai ulang aplikasi dalam 1–2 detik. C# Hot Reload (dari .NET 6+) mengkompilasi ulang perubahan metode tanpa memulai ulang proses. Visual Studio Debugger, Profiler dan IntelliCode melengkapi perangkat diagnostik performa dan kualitas kode.
Pertanyaan yang sering diajukan
.NET MAUI — adalah framework lintas platform Microsoft untuk membuat aplikasi native dalam C# dan XAML untuk iOS, Android, Windows, macOS dan Tizen. Ini adalah penerus Xamarin.Forms, terintegrasi dalam .NET 6+ dan menggunakan satu proyek (Single Project) daripada proyek terpisah untuk setiap platform.
.NET MAUI menggunakan satu proyek, Handlers sebagai pengganti renderer, container DI terintegrasi, Native AOT untuk iOS dan Blazor Hybrid. Xamarin.Forms memerlukan proyek terpisah untuk setiap platform, menggunakan Custom Renderer untuk kustomisasi UI, DependencyService untuk DI dan tidak mendukung Blazor. .NET MAUI adalah bagian dari .NET, Xamarin.Forms adalah SDK terpisah.
Ya, .NET MAUI mendukung macOS melalui Mac Catalyst (versi minimal macOS 12.0). Aplikasi iOS di MAUI secara otomatis dikompilasi untuk Mac tanpa perubahan kode. Untuk fungsi Mac native (Menu Bar, Dock, Touch ID) digunakan panggilan platform melalui Mac Catalyst dan wrapper NSView di folder Platforms/MacCatalyst.
Tidak, .NET MAUI tidak kompatibel dengan paket Dart/Flutter. MAUI menggunakan ekosistem .NET dan paket NuGet. Untuk fitur platform (kamera, Bluetooth, biometri) digunakan pustaka native melalui Android Bindings (Kotlin/Java) dan iOS Bindings (Objective-C/Swift). CommunityToolkit.Maui menyediakan wrapper siap pakai untuk skenario populer.
Perbedaan performa minimal. .NET MAUI dengan Handlers dan Native AOT di iOS mencapai 95–98% performa aplikasi SwiftUI native. Di Android perbedaan dengan aplikasi Kotlin adalah 3–7% dalam pengujian rendering UI (Microsoft Benchmarks, 2024). Untuk sebagian besar aplikasi bisnis, perbedaan tidak terlihat oleh pengguna.
Kesimpulan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga