Safindra
Мобильные3 мин чтения·

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, поэтому сравниваем те две технологии, которыми пользуемся каждый день.

Чек-лист для решения

  1. Нужен ли Android на старте или он может подождать?
  2. Зависит ли приложение от функций Apple, таких как CallKit, виджеты или HealthKit?
  3. Важнее ли фирменный дизайн, чем нативные системные элементы?
  4. Кто будет поддерживать приложение через два года и какой язык он знает?

В основном «да» на первый и третий вопросы: Flutter. «Да» на второй: Swift. Мы объясняем свою рекомендацию в каждой оценке. Смотрите страницы Flutter разработчик, iOS разработчик или напишите на info@safindra.com.

Запросить оценку

Опишите проект в нескольких предложениях. Мы ответим по почте с вопросами или первой оценкой в USD.

info@safindra.com

Похожие страницы