{"id":14275,"url":"\/distributions\/14275\/click?bit=1&hash=bccbaeb320d3784aa2d1badbee38ca8d11406e8938daaca7e74be177682eb28b","title":"\u041d\u0430 \u0447\u0451\u043c \u0437\u0430\u0440\u0430\u0431\u0430\u0442\u044b\u0432\u0430\u044e\u0442 \u043f\u0440\u043e\u0444\u0435\u0441\u0441\u0438\u043e\u043d\u0430\u043b\u044c\u043d\u044b\u0435 \u043f\u0440\u043e\u0434\u0430\u0432\u0446\u044b \u0430\u0432\u0442\u043e?","buttonText":"\u0423\u0437\u043d\u0430\u0442\u044c","imageUuid":"f72066c6-8459-501b-aea6-770cd3ac60a6"}

Нативная, кроссплатформенная и webview разработка. Что изменилось к 2023 году?

Сегодняшняя статья своего рода ретроспектива одной из моих первых статей в блоге. Лет пять назад я сравнивал нативную, кроссплатформенную и вебвью разработку. За это время многое изменилось, и я решил сделать новый обзор с актуальной на 2023 год информацией. Давайте этим субботним утром подискутируем о разработке с точки зрения основателя стартапа или нового сервиса.

Подпишитесь на мой YouTube

О глобальных изменениях

В прежние годы клиенты, обращавшиеся к нам в Bright Mobile за разработкой, спрашивали про стек технологий: на чём мы пишем, как будет выглядеть результат, какова скорость работы приложений и т. д. С течением времени этот вопрос стал задаваться всё реже. Причин тому две.

Первая – развитие кроссплатформенной разработки. Раньше она была достаточно тормозной, и даже неподготовленный человек мог сходу определить по паре переходов, нативная ли тут разработка или кроссплатформенная. По сравнению с нативом задержка загрузки составляла плюсом 1-2 секунды. Сейчас она исчисляется милисекундами, и просто так натив от кроссплатформы сторонний человек уже не отличит. Кроссплатформенная разработка шагнула далеко вперёд, и я этому несказанно рад.

Второй момент – если пока ещё не исчезновение, то, по крайней мере, существенная депопуляризация вебвью-разработки. Программистов в этой сфере осталось очень мало, адекватных приложений на вебвью – тоже, и он потихоньку перешёл в разряд скама. Подробнее о причинах – чуть ниже, а пока расскажу о каждом направлении по порядку.

Native

На нативе можно разработать что угодно – Kotlin на Android и Swift на iOS и предназначены для того, чтобы писать любые приложения под эти системы. Т. е. любую разработку, которую можно сделать на телефоне, можно без проблем реализовать на нативе. Но есть нюанс: кроме того, что вам придётся написать отдельное приложение для Android и отдельное – для iOS (и это абсолютно разный код, обычно требующий работы двух специалистов), потребуется ещё сделать серверную часть.

В рамках кроссплатформенной разработки приложение пишет один программист: в последующем оно компилируется на обе системы, что экономит и время, и деньги – даже без учёта серверной части. За счёт этой экономии кроссплатформенная разработка и получила своё дальнейшее развитие.

Вывод: на нативе можно сделать что угодно, но он требует самых больших вложений, которые могут не оправдаться, например, в случае MVP стартапа. Приведу примеры как первого, так и второго развития событий.

Когда требуется нативная разработка?

1. Разработка игры

Делаете ли вы мморпг или оффлайн-шутер, игру нужно делать на нативе, чтобы не было ни тормозов, ни лагов ни каких-то других проблем: кроссплатформенная разработка для этого направления не предназначена в принципе. Весь геймдев полностью нативный.

2. «Тяжёлые» приложения

Пункт, вытекающий из предыдущего блока: всё, что требует серьёзной нагрузки на железо телефона, тоже требует натива, так как при выборе кроссплатформенной разработки тормоза будут куда заметнее.

3. Приложения с большим охватом

Те сервисы, которые имеют 500к+ скачиваний, нуждаются в нативе. Разумеется, о строгой шкале, когда иметь 499 999 пользователей в кроссплатформенном приложении можно, а при 500 000 нужно срочно переходить на натив, нет. Однако на основе анализа и собственного опыта знаю: чем больше пользователей в сервисе, тем больше эффект «бутылочного горлышка» — приложение тормозит всё больше, и для увеличения пропускной способности требуется разработка нативной части.

Важный момент: на натив переписывается не всё приложение, а только тормозящие экраны. Выяснить, какие именно, лучше заранее – ещё до того, как будет достигнут порог в 500к. А затем, после выяснения слабых сторон продукта, приниматься за рефакторинг и переписывание требовательных по нагрузке экранов. Кроссплатформа это позволяет, в ней можно вставить отдельные нативные блоки, экраны и функции. Так сделано даже у таких популярных сервисов, как, например, Facebook: не слишком популярные экраны они реализовали кроссплатформенно.

4. «Железные фишки»

Сюда я отношу те случаи, когда приложение используют какую-то конкретную функцию железа устройства. Например, вы разрабатываете весы, определяющие соотношение костей и мышц; приложение нужно для того, чтобы соединиться с весами по Bluetooth, получить данные и передать их пользователю. С одной стороны, модуль Bluetooth есть и в кроссплатформе: подключиться и подсчитать можно без проблем. Но считается правилом хорошего тона подобные фишки, связанные с аппаратными функциями телефона, создавать на нативе.

Не стоит ориентироваться на это правило для огромного стартапа, где, к примеру, только на нескольких страницах есть геолокация: в этом случае куда правильнее выбрать кроссплатформенную разработку и сэкономить. А если в приложении всего пара-тройка экранов, и работа каждой основана на железе (например, NFC-чипа), лучше остановиться на нативе. В подобных продуктах, как правило, мало экранов и мало кода, поэтому при кроссплатформенной разработке экономия будет незначительной.

Кроссплатформенная разработка

Под кроссплатформой я сейчас понимаю все фреймворки: Angular, Vue, React, Flutter, React Native и пр. Всё, что есть на рынке, работает, в принципе, по одной и той же технологии. Когда такой вариант применим наиболее всего?

За пять лет с момента написания предыдущей статьи приложения на кроссплатформенной разработке стали чаще всего использоваться в следующих сферах.

1. Бизнес-приложения.

Всё, что связано с корпоративной связью, личными кабинетами, сервисами заказа услуг – как наше коробочное решение для маркетплейсов, которое тоже написано на кроссплатформе. Основной функционал у него связан с отображением списка, элементов, заполнением формы, самое сложное – чат, который работает по сокетам.

Если ваш проект связан с отображением данных и взаимодействием с этими данными – кроссплатформенная разработка вам подойдёт лучше всего. Грузится не телефон, а сервер, на котором и осуществляются все вычисления: при расчёте стоимости, начислении бонусов, пополнении баланса и пр.

2. Однопользовательские приложения

То есть те, что работают без серверной части. Здесь ситуация погранична с нативом: в принципе, можно выбрать как первое, так и второе, никакой особой разницы не будет. Если железо не используется, выгоднее реализовать в формате кроссплатформы – заказывать не её придётся не у двух, а у одного программиста. Заодно и багов будет меньше.

3. Приложения менее 500к пользователей

Причину уже объяснял выше в аналогичном разделе про натив, связана она с повышенной нагрузкой на приложение при росте аудитории.

4. Всё, что связано с e-commerce

Сюда относятся интернет-магазины и маркеплейсы товаров. Своё ядро товарного маркетплейса мы тоже реализовали на кроссплатформе, так как кроме формочек и отображение элементов и списков здесь ничего нет, телефон приложение не грузит.

Вывод: кроссплатформенная разработка закрывает примерно 80% стартапов выше описанного типажа.

WebView

И наконец – о том, что такое вебвью и почему оно загибается. Для начала – о применимости подобного варианта разработки.

1. Максимально простые сервисы

Эта история про формы обратной связи, уведомлялки и прочее, что не грузит ни телефон, ни сервер и служат для простого сбора данных. Например, если у вас компания с 20-ю ремонтниками, через такую формочку они могут заполнять отчёт о выполненной работе, который потом падает, например, в Битрикс24. Всё это в принципе можно реализовать в виде сайта, телеграм-бота или даже на Гугл. Формах, и тут уже поднимается вопрос необходимости самого приложения.

2. Тесты идеи

Пожалуй, самое распространённое сегодня направление. Идея есть, а понимания механики сервиса и его маркетинга нет. В таких случаях актуально сделать самое простое и дешёвое приложение с минимальной бизнес-логикой, тестировать и делать выводы. Уже потом, на базе результатов, делаете полноценное приложение на нативе или кроссплатформе – в зависимости от того, что подойдёт больше.

3. Проекты с подменой контента

Webview – это некий «мини-браузер», который публикуется в App Store/Google Play и, по сути, отображает мобильную версию сайта, хранящуюся на сервере. При том или ином изменении логики не нужно постоянно перезаливать приложение в стор – достаточно поменять мини-сайт на стороне сервера, а опубликованная оболочка остаётся прежней.

По большей части подобная схема применяется для мошеннических целей. Сначала публикуется приложение под благовидным предлогом, например, связанной с доставкой еды. Стор его модерирует, публикует – а создатели быстро меняют сайт, подключенный к оболочке, и там вдруг оказывается какой-нибудь тотализатор, магазин веществ или что-то ещё запрещённое условиями стора и/или законодательством.

Зная это, сторы чаще всего очень сильно придираются к вебвью-приложениям и, как правило, подобные простенькие сайты попросту срезают и не публикуют. Под предлогом того, что в приложении должен быть хоть какой-то минимальный функционал реализованный в самой оболочке – авторизация, push-уведомление и прочее, чего в подавляющем числе оболочек, продающихся на кворке за 10 тыс нет.

Это следует иметь в виду основателям стартапов, которые не хотят тратиться на нативную / кроссплатформенную разработку и заказывают вебвью подешевле: вполне может случиться так, что опубликоваться в итоге не получится, и такая экономия выйдет боком. Доработка оболочки – дело неблагодарное, за него программисты берутся крайне редко. Большинство отказывается, кто-то выставляет странные чеки, а потом ещё возникают проблемы с привязкой к серверу… Если у вас нормальное приложение, а не скам, лучше выберите кроссплатформенную разработку у программиста подешевле – так у вас хотя бы будет какая-то гарантия, что вы сможете выложиться в стор.

Причина вымирания webview логично вытекает из сказанного выше: простое приложение можно достаточно дёшево сделать и на кроссплатформе, а проблем с модерацией у него не будет. Что касается тестов идей – сегодня стартаперы куда чаще запускают либо мобильные версии сайтов, либо прочие средства, с публикацией мобильного приложения не связанные. Рынок webview сжимается всё больше, и разработчики, которые занимались исключительно этой областью, рано или поздно уходят в кроссплатформу. Оставшиеся зачастую в нюансах разработки вебвью разбираются слабо, а денег просят всё больше – так что, с учётом всех рисков и недостатков, заказывать вебвью сегодня становится нецелесообразно.

Больше полезной информации в канале про разработку стартапов.

0
52 комментария
Написать комментарий...
Igor Nemenonok

- Однако на основе анализа и собственного опыта знаю: чем больше пользователей в сервисе, тем больше эффект «бутылочного горлышка» — приложение тормозит всё больше, и для увеличения пропускной способности требуется разработка нативной части.

Wut!? Почему приложение у условного Васи будет сильнее тормозить если до него это приложение скачали 100к раз? Мобильное приложение у каждого пользователя это изолированная среда и оно никак не может тормозить если это же приложение установлено у других клиентов хоть 100500 раз. Единственное почему в таком случае может тормозить приложение - это нагрузка на бекенд, но тогда нужно бекенд скейлить, а не апку на натив переписывать.

Ответить
Развернуть ветку
Bright Mobile
Автор

Речь про многопользовательские приложения, где количество скачиваний прямо пропорционально онлайну = нагрузке. И да, под приложением в текущем контексте имееться ввиду вся инфраструктура, включая сервер и интегрируемые сервисы.

Ответить
Развернуть ветку
4 комментария
Dimoniada

Или апку на Натив переписывать тоже как вариант

Ответить
Развернуть ветку
Антон Маринин

Не зная броду - не суйся в воду.
Статья - просто бессмысленная вода, для тех кто в теме - вообще кринжатина.

Ответить
Развернуть ветку
Илитный Иксперт
Весь геймдев полностью нативный.

Как показать что ты не шаришь, с первой же строчки статьи.

Почти весь геймдев полностью кроссплатформенный, потому что там от нативной части нужно посути только gl view показать, а ui в играх и так кастомный

Ответить
Развернуть ветку
Bright Mobile
Автор

ага и с беком на php. Я тоже видел эти статьи в гугле. А ещё раньше были браузерные игры, можно их обернуть в оболочку и залить, как webview и писать на VC, что геймдев вебвьюшный

Ответить
Развернуть ветку
3 комментария
Guitar Effects

Если у вас нормальное приложение, а не скам, лучше выберите кроссплатформенную разработку у программиста подешевле – так у вас хотя бы будет какая-то гарантия, что вы сможете выложиться в стор.
—--
бессмысленный абзац явно сгенерирован ChatGPT

Ответить
Развернуть ветку
Bright Mobile
Автор

Теперь везде мерещится, да?

Ответить
Развернуть ветку
1 комментарий
Вадим Чиняев

кроссплатформа на vue, react?. Вырулить можно конечно, но лучше реально почистить статью, кроссплатформенных популярных фреймворков не так уж много, а по тексту складывается ощущение что некомпетентен автор (что не мешает конечно заработку бабла)

Ответить
Развернуть ветку
Частное Яйцо

Я немного не в теме (java кодер) но слышал для реакта есть некий Электрон, который инкапсулирует любой проект в кроссплатформенное приложение. Или я ошибаюсь?

Ответить
Развернуть ветку
1 комментарий
Георгий Хромченко

Я думаю имеется ввиду Ionic Framework, который на CSS пытается воспроизвести контролы мобильных операционок.

Ответить
Развернуть ветку
RobinzonCruzo

Вода-водная как средний диплом в российских вузах

Ответить
Развернуть ветку
Алексей Алексеев
Под кроссплатформой я сейчас понимаю все фреймворки: Angular, Vue, React, Flutter, React Native и пр.

но откуда пошло это понимание? про Flutter могу и не знать, но React Native использует бридж для CRUD нативных компонентов в ios и android (в Flutter скорее всего тоже подобная история), а Angular, Vue, React... – это web история и к мобильной разработки не имеет никакого отношения (ну только их рендер в WebView)

p.s. и почитайте что есть фреймворк, а что библиотека. саммари – по хардам очень слабо, вы бы не писали вообще, а по бизнесовой - вполне валидно

Ответить
Развернуть ветку
Георгий Хромченко

Flutter просто рисует картинку, то есть там не нативные контролы а картинки нативных контролов.

За счет этого у них больше контроля (и может быть меньше багов), но все немного "отличается" от натива.

В ранних версиях я помню например физика скролла на iOS была вообще не родной, что бесило пиздец как.

Ответить
Развернуть ветку
1 комментарий
Аккаунт удален

Комментарий недоступен

Ответить
Развернуть ветку
Bright Mobile
Автор

Приятно видеть в комментариях нативщиков, считающих киллобайты и верящих в то что кроссплатформа не настоящее приложение

Ответить
Развернуть ветку
2 комментария
Ware Wow

казиношники вроде до сих пор успешно webview заливают.
а так очень удобно. сделал на WP и превратил в приложение.

Ответить
Развернуть ветку
Bright Mobile
Автор

я про то же и написал. Делают вебвью с идеей доставки еды на шаблоне, после публикации подменяют контент на казино

Ответить
Развернуть ветку
2 комментария
Andrei Shneider

Казино не разрабатывают сами игры, а если и делают, то большие игроки. Разработка игр для казино - отдельный бизнес. Поэтому там по другому и не сделаешь.

Ответить
Развернуть ветку
1 комментарий
Artem Voronov

Метрика "Приложения менее 500к пользователей" не звучит адекватной. Локальная производительность и скорость разработки вообще никак не зависит от количества пользователей. Прямая метрика - это требование к процессору\памяти для нативной\ненативной реализации конкретного элемента приложения.
Нормальная кросс-платформенная платформа поддерживает все железные фичи из коробки и делает это достаточно хорошо.
В посте не раскрыта тема low-code решений. На Mendix и Outsystems массовые super-app'ы строят и они успешно работают.

Ответить
Развернуть ветку
Алексей Алексеев

спасибо за инфу, всё никак не доберусь раздуплить как он там работает)

Ответить
Развернуть ветку
Григорий Харин

Какие сейчас варианты приема платежей внутри приложения, когда ни apple pay, google pay не работают в РФ?

Ответить
Развернуть ветку
Bright Mobile
Автор

Даже когда работали мало кто платил 30% комиссию апстору (за исключением геймдева). Привязывают, либо банковский эквайринг, либо платёжный шлюз типа Робокассы

Ответить
Развернуть ветку
Guitar Effects

Под кроссплатформой я сейчас понимаю все фреймворки: Angular, Vue, React, Flutter, React Native и пр.
—-
это все работает в веб-вью и их аналогах. И банят за них очень часто гугл-плэй ибо они дырявые по безопасности а гугл этого не любит.
—-
Настоящий кросс-платформ в настоящее время это только Qt(C++) и Delphi(Pascal) и с некоторой натяжкой ввиду малой известности Xamarin/Mono (С#)

Ответить
Развернуть ветку
Igor Nemenonok

чувак, да ты вообще не шаришь, как и автор этой статьи :) Angular, Vue, React это вебовские фреймворки и к мобильному кросплатформу они никак не относятся. Flutter и React Native не работают на веб вью и их аналогах, почитай доки, узнаешь много нового.

Ответить
Развернуть ветку
8 комментариев
Bright Mobile
Автор

Наверное, Вы какие-то странные приложения публикуете. Ни одного блока или даже вопроса у модераторов при публикации за 5 лет не было

Ответить
Развернуть ветку
2 комментария
Ияза Гара

Webview частично используется во многих приложениях. Используется просто потому что решить то же самое нативными методами бывает сложно и следовательно - дорого.
Этого не чураются даже крупные компании, и для многих сейчас это спасение (привет, отображение актуального контента после блокировки в AppStore).
Ставить в один ряд Flutter и React с Vue - такая себе идея. Тогда уж про какой-нибудь Cordova/Phonegap стоит написать, ведь обычный React - просто рендерится в браузере.
Flutter - вполне жизнеспособное решение, на котором можно собрать адекватное приложение с широким функционалом. Мы например делали навигацию в здании по BLE маякам - работает отлично.

Ответить
Развернуть ветку
49 комментариев
Раскрывать всегда