Безусловно, если кроссплатформенный инструмент добавляется непосредственно к бинарному коду приложения, это очень сильно утяжеляет вес приложения, т.к. в таких технологиях обычно стараются покрыть практически все необходимые инструменты для разработчика. Если бы эти технологии преобразовывали ваши наработки непосредственно в финальный нативный бинарный код, то результат был бы лучше, но как известно, ни современные Flutter, ни React Native этого не делают. Оно и понятно: это еще более сложная работа, чем они уже сделали. Т.к. одно дело, используя верхнеуровневые скриптовые языки, преобразовывать их, используя нативные компоненты во время работы приложения, другое дело, перед компиляцией генерировать огромное количество кода. Напротив, при нативной разработке, разработчик может выбрать не совсем подходящие для него посторонние библиотеки, либо использовать их там, где можно было бы обойтись парой десятков строк своего кода, тем самым увеличивая размер приложения на их объем, а они могут быть крайне большими, т.е. в этом случае это излишне. Что касается уменьшения объёма, то здесь, по сути, все те же подходы, что и в нативной разработке: избавиться от неиспользуемых ресурсов, кода, компилировать приложение под нужную архитектуру, там где это можно, избавляться от debug символов и так далее.
Если бы яблочная секта не ограничивала прогресс pwa то выбор был бы очевиден так как доступность и сроки решают.
Замысел статьи совсем некорректен - все же антагонист native - это web app. И главная разница в ограниченном для web app / pwa доступном через браузер API и в отсутствии необходимости биться с яблочным App Store Review team и создавать недешевую инфраструктуру разработки для данной дурнопахнущей экосистемы, застрявшей в 2010-х как по идеологии так и дизайну UI (привет, iOs 15).
А тот же flutter, react native или, прости господи, xamarin не факт что всегда будут выполнятся на js vm и страдать худшей производительностью в специфических сценариях. В большинстве случаев приложение хоть нативное, хоть условно нативное на js vm, хоть PWA - всего лишь тонкий клиент c кэшем к UDP / TCP / WEBRTC / HTTP/3 /etc. сервису. Хорошая архитектура никогда не будет заниматься ресурсоемкими вычислениями на устройствах с ограничением по запасу ЭЭ в 5 ампер*часов в лучшем случае.
Поэтому нужна все-таки новая статья Native/NativeJSVM vs PWA. Очень будем ждать!
Критика принята к сведенью. Согласен, что описанный ракурс проблемы актуален. В защиту материала могу сказать, что на практике вопрос в текущей постановке остаётся актуальным, так как клиенты о NativeJSVM и PWA не очень знают и, соответственно, не рассматривают их как часть стека будущего продукта.
Считаю что для mvp пойдет и кроссплатформенное решение. Если что то серьезное, то натив
Каждый заказ уникален.
Если ты понимаешь что у тебя типичный круд, то ты можешь выиграть до 90% стоимости одной платформы.
Также автор не упомянул поведение, которое в итоге получается идентичным. Визуалка которая тоже выходит идентичная.
Для многих заказчиков - это важно.
Выпускать одно приложение, а не 2 по факту.
Плюс, сейчас, например флаттер, предлагает из коробки то, что нативно делается, костылями .
Как бы все ситуативно. Реакт - медленный, флаттер развивается, Котлин натив в альфе? Мы на этапе зарождения. Учим и ждём.
Расскажите, что именно флаттер предлагает в коробке такого, что в нэйтив разработке делается костылями?
Не раскрыта тема стоимости туда при разных видах разработки. При кроссплатформенной достаточно одного программиста. Для нативной разработки минимум два и стоят они каждый дороже.