Разбираем основные технологии для разработки мобильных приложений — от нативных языков Swift и Kotlin до кроссплатформенных фреймворков — и в каких задачах какой стек оправдан.
Когда речь заходит о разработке мобильного приложения, большинство заказчиков слышат десятки незнакомых слов: Swift, Kotlin, React Native, Expo, Flutter, Capacitor, WebView... На самом деле выбор сводится всего к трем подходам. Каждый из них имеет свои сильные и слабые стороны, различается стоимостью разработки и дальнейшей поддержки. Разберем, какой вариант подходит для каких задач и почему универсального решения здесь не существует.
WebView — самый быстрый способ получить приложение
Самый простой вариант — взять уже существующий сайт и буквально "упаковать" его в мобильное приложение. Для этого используются технологии вроде Capacitor, Ionic и аналогичные решения. Пользователь скачивает приложение из магазина, но фактически внутри него открывается специальный встроенный браузер (WebView), который отображает привычный сайт.
Главное преимущество такого подхода — невероятная скорость разработки. Если у компании уже есть современный адаптивный сайт, мобильное приложение можно получить буквально за несколько дней. Поддержка также максимально проста: изменения на сайте автоматически появляются и в приложении, поскольку используется одна кодовая база.
Однако за эту скорость приходится платить.
- интерфейс ощущается менее отзывчивым по сравнению с нативными приложениями;
- анимации и прокрутка могут заметно подтормаживать даже на достаточно мощных устройствах;
- старые версии Android зачастую не поддерживают современные версии WebView, из-за чего приложение может работать нестабильно или вовсе не запускаться;
- сложно реализовать полноценную интеграцию с возможностями устройства;
- Apple достаточно строго относится к подобным приложениям. Если приложение представляет собой просто "обернутый сайт" без использования нативных возможностей устройства, проверка в App Store может затянуться на недели или закончиться отказом в публикации.
Поэтому сегодня WebView чаще используется как временное решение или для очень простых корпоративных приложений, где внешний вид и производительность не являются критичными.
React Native + Expo — золотая середина современной разработки
Именно этот подход сегодня выбирает большинство компаний. Вместо запуска сайта внутри браузера приложение строится из настоящих нативных компонентов операционной системы, а React Native выступает связующим слоем между бизнес-логикой приложения и Android/iOS.
В результате пользователь получает ощущение полноценного мобильного приложения. Интерфейс быстро реагирует на действия, анимации работают плавно, доступны практически все современные возможности устройства — Push-уведомления, камеры, биометрическая авторизация, геолокация, работа с файлами и многое другое.
Дополнительный уровень удобства обеспечивает Expo — платформа, автоматизирующая сборку приложения, публикацию обновлений, настройку сертификатов и множество других рутинных задач. Благодаря этому разработчики тратят меньше времени на инфраструктуру и больше — на функциональность самого продукта.
Да, разработка здесь уже занимает больше времени, чем простая упаковка сайта в WebView. Но выигрыш в качестве пользовательского опыта настолько велик, что именно этот стек сегодня считается оптимальным для подавляющего большинства коммерческих проектов.
Интернет-магазины, CRM, корпоративные сервисы, маркетплейсы, приложения доставки, программы лояльности — практически все подобные продукты отлично чувствуют себя именно на React Native.
Полностью нативная разработка — максимум возможностей
Третий вариант — разработка отдельных приложений для каждой платформы. Для iOS используется Swift, для Android — Kotlin. Это наиболее дорогой и трудоемкий способ создания мобильного приложения, поскольку фактически разрабатываются сразу два независимых проекта.
Зато разработчик получает полный контроль над системой. Можно работать с низкоуровневыми API операционной системы, использовать специфические возможности конкретного устройства, реализовывать сложную графику, взаимодействие с Bluetooth-оборудованием, дополненной реальностью, медицинскими устройствами, промышленным оборудованием и другими специализированными сценариями.
Именно поэтому полностью нативная разработка чаще встречается не в интернет-магазинах или корпоративных приложениях, а в банковском секторе, сложных инженерных решениях, навигационных системах, профессиональном программном обеспечении и других проектах, где производительность и возможности платформы важнее стоимости разработки.
Какой стек используем мы
За последние годы мы пришли к выводу, что для большинства коммерческих проектов оптимальным решением является связка React Native + Expo. Она обеспечивает практически нативную производительность, позволяет поддерживать одну кодовую базу сразу для Android и iOS и значительно сокращает стоимость дальнейшего сопровождения проекта.
Кроме того, значительная часть наших мобильных приложений интегрируется с интернет-магазинами и корпоративными порталами на 1С-Битрикс: Управление сайтом. Для таких проектов мы разработали собственный модуль интеграции, использующий штатную бизнес-логику компонентов Битрикса. Благодаря этому подключение мобильного приложения к существующему сайту зачастую занимает считанные часы вместо нескольких дней разработки собственного API.
Подробнее о том, как нам удалось ускорить интеграцию мобильных приложений с 1С-Битрикс без потери совместимости и стабильности, мы рассказали в статье «Что ускоряет разработку мобильных приложений без потери качества».
