Успадкований Xamarin-проєкт потребує або Xamarin підтримки, або Xamarin міграції на сучасний стек. Середня вартість підтримки — від $500/місяць, а міграції — від $2000 для невеликих проєктів. Наприклад, міграція невеликого застосунку коштує від $2000, але дозволяє економити до $3000 на рік на підтримці. Ми — команда з 7-річним досвідом у крос-платформній розробці, реалізували 30+ Xamarin-проєктів. Наша компанія працює на ринку з 2017 року, маємо понад 7 років досвіду в Xamarin та .NET MAUI.
Ми спеціалізуємося на Xamarin підтримці та Xamarin міграції, надаючи послуги з крос-платформної розробки.
Xamarin.iOS та Xamarin.Android надають прямі биндінги до нативних SDK — без bridge, без проміжного рантайму окрім Mono. Це відрізняє їх від React Native або Cordova: ви працюєте з тими ж UIViewController, UITableView, RecyclerView, ConstraintLayout, що й при нативній розробці, просто на C# замість Swift/Kotlin. Xamarin.Forms додає загальний UI-шар зверху, але за рахунок втрати прямого контролю над кожним нативним віджетом.
Xamarin більше не отримує оновлень від Microsoft, тому підтримка та міграція потребують спеціалізованого досвіду. Наша команда супроводжує Xamarin-проєкти та проводить міграцію на .NET MAUI з документацією кожного етапу та гарантією 30 днів. Досвід дозволяє економити клієнтам до 40% порівняно з утриманням двох нативних команд.
Як підтримувати існуючі Xamarin-проєкти?
Супровід Xamarin-застосунку зараз — специфічне завдання. Основні проблеми:
Застарілі NuGet-пакети. Частина пакетів більше не оновлюється під Xamarin.iOS 16+ та Android API 33+. Типовий приклад — Xamarin.Forms.GoogleMaps: останній стабільний реліз був випущений до припинення активної підтримки, і на Android 13 виникають runtime crashes через зміни в дозволах геолокації. Доводиться форкати, патити або замінювати альтернативою.
iOS breaking changes. Apple продовжує посилювати вимоги до privacy manifests — будь-який застосунок, що використовує NSUserDefaults, FileTimestamp, SystemBootTime та ряд інших API без PrivacyInfo.xcprivacy, отримує попередження при завантаженні в App Store Connect, а потім відхилення. У Xamarin.iOS PrivacyInfo.xcprivacy додається вручну як BundleResource.
Mono рантайм та ARM64. Xamarin.iOS компілює в нативний ARM64 через AOT — тут все добре. Xamarin.Android використовує Mono runtime з JIT на ARM, що означає більший розмір застосунку та повільний cold start — на 30–40% повільніше, ніж у .NET MAUI на .NET 8 AOT. Xamarin.Forms програє .NET MAUI за швидкістю холодного старту на 30–40% — тобто MAUI в 1.4–1.7 разів швидший. Завдяки AOT-компіляції, .NET MAUI запускається в 1.5 рази швидше за Xamarin на Android.
Що входить у підтримку Xamarin-застосунку?
При замовленні підтримки ми надаємо:
- Оновлення цільових SDK (
TargetFramework,minSdkVersion/targetSdkVersion) - Патчінг залежностей та форки застарілих пакетів
- Додавання
PrivacyInfo.xcprivacyдля iOS - Виправлення deprecated API (наприклад,
UIWebView→WKWebView) - Аудит дозволів під Android 13/14 з новою моделлю
READ_MEDIA_IMAGES,POST_NOTIFICATIONS - Налаштування CI для Xamarin:
msbuild/xcodebuildчерез Azure DevOps або GitHub Actions з Fastlane - Документування всіх змін та надання звіту
Ми навчаємо вашу команду роботі з оновленим кодом. Після першого року підтримки витрати на обслуговування знижуються в середньому на 25%. Зв'яжіться з нами для безкоштовного аудиту вашого проєкту.
Як відбувається міграція на .NET MAUI?
Міграція — це не просто запуск dotnet-upgrade-assistant. Так, Microsoft надала інструмент з командою upgrade-assistant upgrade --non-interactive — він переписує csproj, оновлює namespace з Xamarin.* на Microsoft.Maui.*, але потребує ручного виправлення в 30–50% випадків.
Процес міграції складається з п'яти етапів:
- Аудит коду – оцінка обсягу робіт, виявлення кастомних рендерерів, DependencyService, Xamarin.Essentials.
- Запуск upgrade-assistant – автоматичне оновлення файлів проєкту та початковий рефакторинг.
- Ручне доопрацювання – заміна Renderer на Handler, переклад платформозалежного коду, оновлення конфігурацій збірки.
- Тестування – перевірка на реальних пристроях (iOS 16+, Android 13+), у тому числі сценаріїв push, deep linking, in-app purchase.
- Деплой – публікація в TestFlight та Google Play Console, налаштування моніторингу.
Найбільш трудомісткі частини міграції:
- Заміна
RendererнаHandler - Переклад Xamarin.Essentials на MAUI Essentials (API сумісні, але простори імен змінилися)
- Робота з платформозалежним кодом у
DependencyService— в MAUI це замінюєтьсяpartial classабо нативнимиMauiProgram.csхуками.
Порівняння Xamarin та .NET MAUI
| Параметр | Xamarin | .NET MAUI |
|---|---|---|
| UI-фреймворк | Forms (загальний) + нативні | Єдиний MAUI з Handler |
| Продуктивність | Mono JIT (Android) | .NET 8 AOT (обидва) |
| Розмір застосунку | Більше (Mono runtime) | Менше (NativeAOT) |
| Підтримка | Завершена | Активна, LTS |
| Інструменти міграції | — | dotnet-upgrade-assistant |
| Швидкість холодного старту | Повільніше на 30–40% | Швидше |
Xamarin.Forms програє .NET MAUI за швидкістю холодного старту на 30–40% — тобто MAUI в 1.4–1.7 разів швидший. Завдяки AOT-компіляції, .NET MAUI запускається в 1.5 рази швидше за Xamarin на Android.
Основні етапи міграції
| Етап | Тривалість | Опис |
|---|---|---|
| Аудит | 1–2 тижні | Перевірка кодової бази, виявлення залежностей та ризиків |
| Автоматичне оновлення | 1–2 дні | Запуск upgrade-assistant, оновлення csproj |
| Ручне доопрацювання | 2–8 тижнів | Заміна рендерерів, адаптація платформного коду |
| Тестування | 1–2 тижні | Regression-тести, UI-тести, ручне тестування на пристроях |
| Деплой та документація | 3–5 днів | Публікація, передача коду замовнику, інструкція з подальшої підтримки |
Терміни міграції — від 4 тижнів (невеликий застосунок без кастомних рендерерів) до 3–4 місяців (великий продукт з глибокою нативною інтеграцією). Вартість розраховується індивідуально після аудиту існуючого коду та оцінки обсягу змін.
Типові помилки при міграції Xamarin на MAUI
- Забувають оновити всі
DependencyServiceнаpartial class— застосунок падає при першому доступі до платформенного сервісу. - Не додають
PrivacyInfo.xcprivacy— відхилення в App Store. - Залишають застарілі пакети на кшталт
Xamarin.Essentials— їх потрібно замінювати наMicrosoft.Maui.Essentials. - Не оновлюють конфігурацію збірки ProGuard/R8 (Android) — можуть виникнути помилки shrink-видалення класів.
Отримайте консультацію щодо вашого Xamarin-проєкту. Оцінимо обсяг робіт, ризики та терміни. Зв'яжіться з нами — ми безкоштовно проведемо аудит коду та запропонуємо варіанти: підтримка або міграція під ключ.







