Открыть список
Как стать автором
Обновить

Как мы сделали мобильное приложение для курьеров «ВкусВилл» за 9 дней

Блог компании АвтомаконРазработка под iOSРазработка мобильных приложенийРазработка под AndroidРазработка под e-commerce
Всего голосов 5: ↑4 и ↓1 +3
Просмотры4.4K
Комментарии 19

Комментарии 19

Мы решили написать пользовательский интерфейс на ReactJS с использованием фреймворка Capacitor.

А потратили бы чуть больше времени и сделали бы хорошо, а не «за 9 дней».

Проект собирается в оптимизированный и сжатый набор файлов, который выгружается на удаленный сервер. Capacitor имеет доступ к нативным функциям, приложение запускается через WebView, где указан URL с собранным на ReactJS проектом.

В итоге получился RAT. Круто.

Решение на ReactJS получилось гораздо более оптимальным: во-первых, полный функционал получилось сделать за 67 часов, во вторых с точки зрения гайдлайнов и логики все получилось вполне рабочим

А, то есть «оптимальный» это теперь значит «мы смогли сделать его очень быстро», а не «оно работает очень быстро».

Господа, ну хватит, пожалуйста, прекратите уже тащить веб туда, где ему не место, и греть процессоры пользователей. Ну пожалуйста. Очень прошу.
Не понимаю нападок. Да, на процессоре Mediatek Helio G90T я вижу явные лаги в анимации в выпадающих пунктах в приложении вкусвила, да, заметно, что гибрид (думал что раз автор написал что нет разницы, нет она все таки есть). Но обвинять в нагреве процессоров разработчиков гибридных приложений, забыв что сами сайты по другому на телефоне не отображаются кроме как в браузере. Так какая разница? У вас есть предложения по кроссплатформе? Где аплейты можно накатывать хоть 3 раза на дню на огромную аудиторию?

Вот отказ от реакта с его бандлом, кстати, olesyatsareva15 какой размер бандла? Был бы интересен.
Все эти лаги и макрофризы порядком уже поднадоели. React и JS позволяют, если не мотивируют, делать разработчиков наотвали. Зачем тогда вообще нужно приложение, если есть сайт? Коль уж сделали приложение — будьте добры, не лезьте со своим уставом в чужой монастырь и сделайте его нативно, чтобы вашим приложением было приятно пользоваться, а не приходилось надевать сварочные краги дабы уберечь пальцы от ожогов о металлические кнопки смартфона. Сайты и браузеры, кстати, не так порой греют CPU, как вот эти вот гибриды.

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

Дорого? Да. Но и ВкусВилл, мной уважаемый и любимый, кстати, магазин не из дешёвых. И я не говорю что-то в духе «вы же там зарабатываете бешеные деньги», нет, просто если я захожу в магазин и мне приятно там находиться, очень не хочется разочаровываться при скачивании приложения.
Ну, если вы не планируете работать курьером в ВкусВилл, то при скачивании приложения — не разочаруетесь. Статья в большей степень для менеджеров, чем разработчиков и этот стек я рекомендую для очень небольших и внутренних корпоративных проектов. Клиентское приложение я бы так делать не стал. Разве что если клиентов — буквально несколько тысяч.
Долгое время придерживался таких же взглядов, как и Вы насчет кроссплатформенной разработки. Мне тоже не нравятся вечно лагающие поделки на React Native, но год назад с командой начали пробовать Flutter. Это далеко не так плохо. Если у Вас есть работа с камерой, любая сложная графика и тд это вариант не для Вас, но в случае ВкусВилла это прям идеальный кейс для Flutter. Он собирается в нативный код + под капотом рендеринг хромиум, который порезали и прокачали. Оно действительно работает хорошо на определенных задачах. Оно никогда не заменит натив, но сэкономить время и силы в некоторых случаях вполне может.

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

Юнити подключается. А со второй версии есть мультидвижковость. То есть движком флаттера можно ещё проще жанглировать. Там кнопками слайдишь а на экране то активити андройда, то флаттер, а то и оба на одном экране. Дата шарится между ними в реалтайме.
Что я понял будучи Android разработчиком и поработав долгое время с камерой, так это то, что в android в принципе нельзя сделать камеру так, чтобы она работала везде и хорошо. Даже у гигантов по типу инстаграмма несколько раз ловил полное зависание картинки.

Если Вы хотите просто камеру, чтобы видеопоток и фоткать, то да, возможно Вам подойдет флаттеровский плагин. Если Вы захотите наложить фильтр к примеру, или поискать QR Code в риалтайме (оба реальные кейсы), это не к flutter, Вы идете в native код и используете opengl или что Вам нужно. Если Вы попробуете в принципе во flutter получать кадр, то Вы удивитесь, но Вы увидеть 4-5 fps, так как Dart по своей природе однопоточный и стандартный плагин камеры передает все эти огромные массивы в ui потоке и сделать, что либо с ними Вы уже не сможете.

Flutter надо использовать там, где ему место. Для некоторых задач, к сожалению, подходит только нативная разработка

Спасибо за информацию. Нет большой проблемы вызывать активити с камерой из Дарта. Натив и флаттер сейчас могут существовать вместе в любых вариациях. Его все равно можно пихать по всюду даже в этом случае. Кроссплатформу с доступом к камере вообще сложно представить.

Что на счет этого скажете?

pub.dev/packages/qr_code_scanner
Прямо в описании отказ от перехода в активити
Яндекс.Такси Go — отличный пример, когда флюттер прикрутили там, где ему не место. Открываем приложение и страдаем.
Я может ошибаюсь, но Яндекс.Go написан не на flutter, а нативно. Вы путаете с таксометром, это приложение для таксистов. Его как раз переписали на flutter, но это то чем пользуются таксисты, а не обычные юзеры.

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

Не знаю про качество этого приложения, может кто-то поправит, но не думаю, что там проблемы именно из-за flutter
libflutter.so в APK-файле кое на что намекает.

Однако стоит сказать что последние версии этого самого Go работают пошустрее, видимо, что-то подкрутили.
Ну как сказать, конкретно заказ еды у меня на Samsung A50 знатно лагает. Плюс скролл глючит временами назад откручиваясь. А вроде именно эта часть на флаттере как раз написана.
React и JS позволяют, если не мотивируют, делать разработчиков наотвали. Зачем тогда вообще нужно приложение, если есть сайт?

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

Не пользуйтесь, как я!)

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

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

Алкоголь, женщины, предательства, недостаточный вкусный кофе. Очередное падение от какого нибудь роскомподзора, а у тебя быстрый релиз. Не говоря уже о баге, который вчера.

Дорого? Да.

А представь, что браузер сделают такой же быстрый как и натив и будет дешево и возмущаться будет незачем. Куда девать целую армию нативных разрабов? Никому не выгодно кроме нищебродов. А рынок, куда либо с мешком денег заходи или работай в офлайн довольно наглый — это приводит к монополизации отрасли. Все друг друга должны хватать за яйца, самое выгодное для всех
Уточню, что гибрид только приложение для курьеров, клиентское (на котором вы видите эти лаги) — нативное. Бандл — 4 мб, но там 1,5 — шрифты.
Гибридное приложение — только приложение курьера, клиентское — нативное =) Бандл = 4 мб, из них 1,5 — шрифты.
Ого. То есть вкусвилл зелёное с ВВ нативное? Как то оно не шустро у меня работает.

Ну а бандл 4мб! Шрифты нужны курьерам? да и поотключать там нужно всякие курсивы разной толщины думаю стоит точно.
Отличное приложение, судя по бизнес результатам:
"«Полгода назад доля онлайн-продаж в нашей компании составляла не более 1% от общего оборота. Был грандиозный план нарастить ее к концу года до 3%. Но уже в мае эта доля составила 15%», — рассказывает управляющая электронной коммерцией «ВкусВилла» Лариса Романовская. В мае «ВкусВилл» оказался на пятом месте среди российских игроков e-grocery: число онлайн-заказов за месяц выросло втрое, до 604 000, месячный оборот удвоился, до 1,25 млрд рублей."
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.