Przejdź do treści
Porozmawiajmy

BlogDla firm

Migracja z Xamarina: .NET MAUI czy Flutter, gdy masz własny zespół .NET

Jeśli twój zespół .NET ma dalej sam rozwijać aplikację, a jej interfejs się broni, wybierz .NET MAUI: zostaje C# i duża część logiki. Jeśli interfejs i tak trzeba odświeżyć, a aplikacja ma rosnąć latami, wybierz Fluttera, a zespół .NET niech zostanie przy backendzie. Z decyzją nie da się czekać: od 28 kwietnia 2026 App Store przyjmuje tylko wersje z Xcode 26, a Xamarin kończy się na Xcode 15.

Dla firm8 min czytaniaOpublikowano Autor: Eryk Kruk, CEO
Oś czasu Xamarina: wsparcie skończyło się 1 maja 2024, zasady App Store i Google Play z 2026 blokują aktualizacje, wsparcie MAUI 10 kończy się 11 maja 20271 maja 2024Microsoft kończy wsparcie Xamarina. Bez poprawek i łatek bezpieczeństwa.28 kwietnia 2026App StoreNowe wersje tylko z Xcode 26. Xamarin kończy się na Xcode 15.31 sierpnia 2026Google PlayAktualizacje muszą celować w Androida 16 (API 36). Xamarin: API 34.Październik 2026Aplikacja działa u obecnych użytkowników, ale nie wyda aktualizacji.1 listopada 2026Termin ostatniego przedłużenia w Google Play.11 maja 2027Koniec wsparcia .NET MAUI 10. Na MAUI aktualizujesz mniej więcej raz w roku.
Wsparcie Xamarina skończyło się w 2024 roku, a w 2026 oba sklepy zaczęły wymagać narzędzi, których Xamarin nie obsłuży.

Najkrócej: MAUI, gdy chcesz zostać przy C# i masz kim to robić. Flutter, gdy aplikacja potrzebuje nowego interfejsu i ma się rozwijać przez kolejne lata. W obu przypadkach zacznij od audytu, bo dopiero kod pokaże, ile da się przenieść.

Czy Xamarin jest jeszcze wspierany?

Nie. Microsoft zakończył wsparcie wszystkich SDK Xamarina, razem z Xamarin.Forms, 1 maja 2024 roku. Od tego dnia nie ma poprawek ani łatek bezpieczeństwa, a ostatnie wersje, w które celuje Xamarin, to Xcode 15 i Android API 34.

Przez prawie dwa lata dało się z tym żyć. W 2026 roku sklepy zamknęły tę furtkę. Aplikacja dalej działa u ludzi, którzy ją mają, ale z projektu w Xamarinie nie wyślesz już zwykłej aktualizacji: ani poprawki błędu, ani nowej funkcji.

Ile masz czasu na migrację z Xamarina?

Mniej, niż się wydaje, bo większość terminów już minęła. Tak wygląda kalendarz na koniec października 2026:

Terminy, które dotyczą aplikacji w Xamarinie
DataCo się dziejeCo to znaczy dla twojej aplikacji
1 maja 2024Koniec wsparcia XamarinaBez poprawek i łatek bezpieczeństwa od Microsoftu
28 kwietnia 2026App Store przyjmuje tylko wersje zbudowane w Xcode 26, z SDK iOS 26Nie wyślesz nowej wersji na iOS, bo Xamarin kończy się na Xcode 15
31 sierpnia 2026Google Play: nowe aplikacje i aktualizacje muszą celować w Androida 16 (API 36), istniejące co najmniej w API 35Aktualizacja z Xamarina (API 34) nie przejdzie, a nowi użytkownicy na nowszych Androidach nie znajdą obecnej wersji
1 listopada 2026Termin ostatniego przedłużenia w Google PlayPo tej dacie nie ma już odroczeń
11 maja 2027Koniec wsparcia .NET MAUI 10Jeśli wybierzesz MAUI, to pierwsze podbicie wersji do zaplanowania

W skrócie: aplikacja nie zniknie jutro ze sklepów, ale jest zamrożona. Każda nowa wersja iOS i Androida to ryzyko, na które nie odpowiesz już aktualizacją.

Co zostaje z pracy twojego zespołu .NET?

Więcej, niż się obawiasz, ale w każdej drodze co innego. Najczęstszy błąd w tej decyzji to założenie, że Flutter wyrzuca do kosza cały dorobek zespołu C#. Zwykle tak nie jest, bo duża część tego dorobku to backend.

Co zostaje po migracji z Xamarina do .NET MAUI, a co po migracji do Fluttera
ElementDo .NET MAUIDo Fluttera
Backend i API (na przykład w ASP.NET)Zostaje bez zmianZostaje bez zmian. Aplikacja we Flutterze łączy się z tym samym API
Logika biznesowa w C#W dużej części zostajePrzepisana w Dart. Reguły i testy z C# są gotową specyfikacją
Ekrany w XAMLPrzeniesione, z poprawkami w każdym ekranieNapisane od nowa
Custom renderery i kod natywnyCzęść działa przez warstwę zgodności, resztę przenosisz na handleryNapisane od nowa, z kodem w Swifcie i Kotlinie tam, gdzie trzeba
Biblioteki NuGet z XamarinaDo sprawdzenia jedna po drugiej, nie każda ma wersję dla MAUIZastąpione pakietami Fluttera
Konta użytkowników, dane, karta w sklepieZostająZostają
LudzieZespół C# rozwija aplikację dalejZespół C# zostaje przy backendzie, aplikację prowadzi zespół Fluttera

Microsoft pisze wprost, że przy przejściu na .NET projekty z Xamarina nie muszą być przepisywane, ale muszą przejść na nowy format projektu (SDK-style). Przy Xamarin.Forms pomaga narzędzie .NET Upgrade Assistant, choć według samego Microsoftu po jego uruchomieniu aplikacja w większości przypadków i tak wymaga dodatkowej pracy.

Jedna rzecz do kalendarza zespołu .NET: dokumentacja .NET MAUI 11 podaje, że pakiet zgodności Microsoft.Maui.Controls.Compatibility nie jest już w tej wersji wydawany. Renderery, które na nim stoją, trzeba przenieść na handlery przed podbiciem wersji. Migracja do MAUI to więc nie jeden projekt, tylko początek corocznych aktualizacji.

.NET MAUI czy Flutter: co wybrać przy migracji z Xamarina?

To zależy od dwóch rzeczy: kto będzie rozwijał aplikację przez następne lata i czy jej interfejs jeszcze się broni.

Wybierz .NET MAUI, gdy:

  • masz w firmie zespół C#, który zna tę aplikację i ma ją dalej rozwijać,
  • interfejs działa i nie planujesz jego przebudowy,
  • aplikacja ma przede wszystkim dalej wychodzić w sklepach, a nie szybko rosnąć,
  • akceptujesz podbicie wersji MAUI mniej więcej raz w roku: MAUI 9 straciło wsparcie 12 maja 2026, MAUI 10 straci je 11 maja 2027.

Wybierz Fluttera, gdy:

  • interfejs się zestarzał, więc ekrany i tak trzeba by zaprojektować od nowa,
  • twój zespół .NET to ludzie od backendu, a nie od aplikacji mobilnych,
  • aplikacja ma dostawać nowe funkcje co tydzień przez lata,
  • chcesz jednego kodu na iOS i Androida, z opcją webu i desktopu, w otwartym frameworku od Google.

Jest też trzecia droga, Uno Platform: open source na licencji Apache 2.0, C# i XAML, a aplikacja działa na iOS, Androidzie, w przeglądarce, na Windowsie, macOS i Linuksie. Ma sens, gdy częścią produktu jest aplikacja na Windowsa.

Nie zawsze polecamy Fluttera. Jeśli masz mocny zespół C#, a aplikacja ma po prostu dalej działać, MAUI może kosztować mniej. Mówimy to w audycie, kiedy tak jest.

Jak przejść z Xamarina na Fluttera bez wyłączania aplikacji?

Nowa aplikacja wychodzi jako zwykła aktualizacja tej samej karty w sklepie. Użytkownik widzi nową wersję w App Store albo Google Play, aktualizuje i loguje się na to samo konto.

  • Krok 1Audyt: kod, awarie, stan w sklepach i backend
  • Krok 2Plan: ekrany, etapy i stała cena każdego etapu
  • Krok 3Budowa ekran po ekranie, nowa wersja co tydzień
  • Krok 4Testy w TestFlight i na ścieżkach testowych Google Play
  • Krok 5Wydanie etapowe jako aktualizacja tej samej aplikacji
Jak wygląda migracja z Xamarina do Fluttera bez wyłączania aplikacji: audyt, plan, budowa, testy, potem aktualizacja tej samej karty wydawana etapami od 1% do 100% w 7 dniAudytKod, awarie, stan w sklepach i backend, sprawdzonePlanEkrany, etapy i stała cena za każdy etapBudowaEkran po ekranie, co tydzień nowa wersja na twoim telefonieTestyTestFlight i ścieżki testowe Google Play, ten sam backendWydanieAktualizacja tej samej karty: ten sam bundle ID, nazwa pakietu i klucz podpisuWydanie etapowe w App Store1%12%25%310%420%550%6100%7DzieńUżytkownicy aktualizują jak zawsze i zachowują konta. Oceny zostają.12345
Wydanie etapowe w App Store trwa 7 dni, od 1% do 100% użytkowników. Jeśli coś nie działa, widać to przy 1%, a nie u wszystkich.

O powodzeniu decydują trzy szczegóły. Ten sam bundle ID na iOS. Ta sama nazwa pakietu i ten sam klucz podpisu na Androidzie, bo Android zainstaluje aktualizację tylko wtedy, gdy certyfikaty się zgadzają. I ten sam backend, dzięki któremu konta i dane są tam, gdzie były. Dane trzymane wyłącznie na telefonie wymagają osobnego kroku, a audyt je wypisuje.

W Google Play wdrożenie etapowe też trafia najpierw do części użytkowników i można je wstrzymać. Przez cały ten czas stara wersja działa u tych, którzy jeszcze nie zaktualizowali.

Jak wygląda taka migracja w dużej aplikacji?

Najlepiej pokazuje to Fitatu, licznik kalorii z ponad 10 milionami użytkowników. Aplikacja stała na Cordovie, nie na Xamarinie, ale zadanie było to samo: przenieść działający produkt na Fluttera, nie wyłączając go ani na dzień. Pełna historia jest w realizacji Fitatu (po angielsku).

  • Najpierw jedna osoba. Daliśmy doświadczonego team leadera, który prowadził przejście z Cordovy na Fluttera.
  • Flutter wewnątrz starej aplikacji. Na początku połączyliśmy Fluttera z Cordovą własnymi wtyczkami, więc nowe ekrany działały w starej aplikacji.
  • Decyzja po 8 miesiącach. CTO Fitatu zdecydował o pełnym przejściu, a my dołożyliśmy trzech kolejnych developerów Fluttera.
  • Natywne widżety. Przy okazji zbudowaliśmy natywne widżety w Swifcie i Kotlinie.
  • Efekt. 99,7% sesji bez awarii po przepisaniu.
Fitatu po przejściu z Cordovy na Fluttera: ponad 10 mln użytkowników i 99,7% sesji bez awarii.

Przy Xamarinie punkt styku jest inny. Flutter oficjalnie wchodzi do aplikacji w Kotlinie, Javie, Swifcie i Objective-C, a Xamarina na tej liście nie ma. Dlatego nową aplikację budujemy obok starej i podmieniamy ją w sklepie: ta sama karta, ten sam backend, wydanie etapowe. Metoda z Fitatu zostaje, zmienia się tylko miejsce przełączenia.

Przenosi się też model pracy. W Fitatu decyzje podejmował ich CTO, a my dokładaliśmy ludzi. Jeśli masz zespół .NET, nasi developerzy Fluttera mogą do niego dołączyć w ramach wzmocnienia zespołu: 200 zł/h netto, minimum 120 h miesięcznie, 2 tygodnie wypowiedzenia.

Ile kosztuje migracja z Xamarina?

Pierwszy wydatek to audyt aplikacji: 17 500-28 000 zł netto. Kończy się planem z ceną każdego etapu, więc kwotę za całość znasz, zanim ktokolwiek przebuduje pierwszy ekran.

Migracja z Xamarina w Codigee: ceny netto
EtapCena nettoCo dostajesz
Audyt aplikacji17 500-28 000 złRaport: kod, awarie, stan w sklepach i backend. Rekomendacja MAUI albo Flutter i plan z ceną etapów
Przepisanie na Flutteraod 70 000 złNowa aplikacja na iOS i Androida, wydana jako aktualizacja tej samej karty
Wzmocnienie zespołu200 zł/hDeveloperzy Fluttera w twoim zespole, minimum 120 h miesięcznie
Opieka po premierzeod 7 000 zł / miesiącAktualizacje pod nowe wymagania sklepów, poprawki i rozwój

Ostateczna cena przepisania zależy od liczby ekranów, integracji i tego, ile backendu zostaje bez zmian. Płacisz stałą cenę za etap, fakturę dostajesz za każdy odebrany etap i po każdym możesz się zatrzymać. Aplikacja, którą budujemy, ma 6 miesięcy gwarancji.

W umowie pilnuj dwóch rzeczy: przeniesienia autorskich praw majątkowych do nowego kodu na piśmie, z wymienionymi polami eksploatacji, i kont w sklepach na twoją firmę. Co jeszcze sprawdza audyt, opisaliśmy w tekście audyt aplikacji mobilnej przed przejęciem. Pełne ceny są w cenniku Codigee, a o pracy z firmami, które mają już aplikację, piszemy na stronie dla firm.

Częste pytania

01Czy Xamarin jest martwy?

Jako produkt tak. Microsoft zakończył jego wsparcie 1 maja 2024 roku, a od 2026 roku App Store i Google Play wymagają narzędzi, których Xamarin nie obsługuje. Aplikacje działają dalej, ale nie wydadzą już zwykłej aktualizacji.

02Czy aplikacja na Xamarinie zniknie z App Store?

Nie z powodu samego wymogu Xcode 26. Dotyczy on nowych wersji, więc obecna zostaje w sklepie i działa u osób, które ją mają. Nie wyślesz tylko poprawki ani nowej funkcji.

03Czy Xamarin.Forms da się automatycznie przenieść do .NET MAUI?

Częściowo. Microsoft udostępnia .NET Upgrade Assistant, ale sam pisze, że po jego uruchomieniu aplikacja w większości przypadków wymaga dodatkowej pracy. Ekrany, custom renderery i biblioteki trzeba sprawdzić ręcznie.

04Co lepsze dla firmy z zespołem .NET: MAUI czy Flutter?

MAUI, gdy zespół C# ma dalej sam rozwijać aplikację, a interfejs się broni. Flutter, gdy interfejs trzeba odświeżyć, a aplikacja ma rosnąć latami. Wtedy zespół .NET zostaje przy backendzie, który się nie zmienia.

05Czy użytkownicy stracą konta po migracji?

Nie, jeśli backend zostaje. Nowa aplikacja wychodzi jako aktualizacja tej samej karty w sklepie, z tym samym bundle ID, nazwą pakietu i kluczem podpisu. Dane trzymane tylko na telefonie wymagają osobnego kroku, który audyt wypisuje.

06Ile trwa migracja z Xamarina?

To zależy od liczby ekranów i integracji, więc nie podajemy terminu przed audytem. Audyt kończy się planem z etapami i ceną każdego z nich, a w trakcie budowy co tydzień dostajesz nową wersję na swój telefon.

Czy ten artykuł był przydatny?

Oceń artykuł

Czytaj dalej.

Wszystkie wpisy

Let's make something together.

Bez przekombinowania. Bez straty czasu. Po prostu konkretna robota.

Albo umów rozmowę z Erykiem (otwiera kalendarz rezerwacji)[email protected]
Kim jesteś?
Budżet