Flutter или Swift: что выбрать для приложения?
Выбор между Flutter и Swift — это выбор между одной кодовой базой для двух платформ и лучшим возможным приложением на одной платформе. Обе технологии зрелые. Правильный выбор зависит от того, где ваши пользователи, какие функции устройства нужны и кто будет поддерживать приложение.
Коротко
- Swift со SwiftUI создаёт нативные приложения для iOS, iPadOS, macOS и watchOS с прямым доступом ко всем фреймворкам Apple.
- Flutter создаёт приложения для iOS и Android, а при желании для веба и десктопа, из одной кодовой базы на Dart с собственным движком отрисовки.
Скорость
В большинстве бизнес-приложений пользователи не заметят разницы. Flutter компилируется в нативный машинный код и рисует собственные виджеты, поэтому прокрутка и анимации плавные на современных телефонах. Приложения на Swift используют UI-фреймворки Apple, что даёт самое нативное поведение при вводе текста, в доступности и системных жестах. Тяжёлая графика, обработка звука или приложения, долго работающие в фоне, склоняются к нативному коду.
Доступ к функциям платформы
Здесь у Swift самое явное преимущество. Новые API Apple доступны в Swift с первого дня. Такие функции, как фильтрация звонков CallKit, VPN на NetworkExtension, виджеты, Live Activities и App Intents, в первую очередь нативные. В нашем приложении Synaptes мы используем CallKit, StoreKit 2 и NetworkExtension, поэтому оно написано на Swift.
Flutter получает нативные функции через плагины или платформенные каналы. Для типовых задач вроде камеры, геолокации, push-уведомлений и встроенных покупок есть хорошо поддерживаемые плагины. Менее распространённые API всё равно требуют нативного кода.
Стоимость разработки
Если нужны и iOS, и Android, Flutter обычно экономит больше всего: одна команда, одна кодовая база, один набор функций для тестирования. Со Swift для Android нужно отдельное приложение на Kotlin или инструмент вроде Skip, который компилирует код SwiftUI в приложение для Android.
Если нужен только iOS, например потому что ваш рынок — в основном пользователи iPhone, один Swift часто оказывается дешевле, так как нет кроссплатформенного слоя, который приходится обходить.
Внешний вид и ощущения
Flutter рисует каждый пиксель сам. Благодаря этому фирменный дизайн одинаков на обеих платформах, но стандартные элементы iOS — это имитации, которые могут ощущаться немного иначе. SwiftUI использует настоящие системные элементы, поэтому приложение автоматически обновляет вид с каждой версией iOS.
Поддержка
Приложение на Flutter зависит от Flutter SDK и его плагинов. Когда меняются iOS или Android, вы ждёте авторов плагинов или исправляете сами. Приложение на Swift зависит от ежегодных обновлений SDK Apple, которые хорошо документированы, но иногда требуют изменений в коде. В обоих случаях закладывайте немного времени на поддержку каждый год.
Наём разработчиков
У обеих технологий большие сообщества разработчиков. Flutter-разработчики закрывают две платформы; iOS-разработчики глубже знают платформы Apple. Если ваша команда уже пишет на Swift для другого продукта, оставаясь на Swift, вы держите знания в одном месте.
А как же React Native?
React Native — другой крупный кроссплатформенный вариант, он подходит командам, которые уже пишут на React для веба. Он использует нативные элементы платформы через мост на JavaScript. Мы в основном работаем с Flutter и Swift, поэтому сравниваем те две технологии, которыми пользуемся каждый день.
Чек-лист для решения
- Нужен ли Android на старте или он может подождать?
- Зависит ли приложение от функций Apple, таких как CallKit, виджеты или HealthKit?
- Важнее ли фирменный дизайн, чем нативные системные элементы?
- Кто будет поддерживать приложение через два года и какой язык он знает?
В основном «да» на первый и третий вопросы: Flutter. «Да» на второй: Swift. Мы объясняем свою рекомендацию в каждой оценке. Смотрите страницы Flutter разработчик, iOS разработчик или напишите на info@safindra.com.
Запросить оценку
Опишите проект в нескольких предложениях. Мы ответим по почте с вопросами или первой оценкой в USD.
info@safindra.com