Обзор Flutter-приложений для бизнеса: почему они зависают и как это исправить
Flutter — кроссплатформенный фреймворк Google: один код работает и на iOS, и на Android, а интерфейс выглядит нативным. Для бизнеса это экономия — одна команда вместо двух. Но экономия не отменяет типовых проблем: зависания при синхронизации с учётными системами, конфликты версий после обновлений и сбои на части Android-устройств.
что такое flutter и когда он оправдан для бизнес-приложения
Flutter вышел от Google в 2017 году и с тех пор стал основным выбором для мобильных приложений среднего и крупного бизнеса — курьерских служб, розницы, логистики, сервисов для сотрудников на складе. Одна кодовая база компилируется в нативный код под iOS и Android, поэтому интерфейс не «прикидывается» веб-страницей внутри приложения, как в части гибридных решений, а рисуется собственным движком с частотой обновления экрана, привычной для мобильных приложений.
Для московского малого и среднего бизнеса главный аргумент — стоимость входа. Разработка на Flutter обычно занимает меньше времени, чем параллельная разработка двух нативных приложений, потому что программисты пишут бизнес-логику один раз, а не дважды на разных языках. Мы в UKVED делаем на Flutter мобильные приложения для клиентов, которым нужно приложение для склада, курьеров, торговых представителей или клиентского B2B-портала — везде, где важны скорость выхода на обе платформы и связь с учётной системой на 1С.
Обратная сторона универсальности — редкие случаи с нестандартным оборудованием: старым промышленным сканером, специфическим Bluetooth-модулем весов на складе. Для таких сценариев Flutter позволяет подключить нативный модуль через platform channels, не переписывая всё приложение заново, — но это нужно закладывать в архитектуру заранее, а не искать решение после релиза.
Прежде чем выбирать стек, стоит сравнить его с альтернативами — это определяет, сколько будет стоить поддержка через год-два.
| технология | срок разработки MVP | производительность | стоимость поддержки | когда выбирать |
|---|---|---|---|---|
| Flutter | 2–4 месяца | близка к нативной, свой движок отрисовки | одна кодовая база на обе платформы | единый интерфейс на iOS и Android, важна скорость запуска |
| React Native | 2–4 месяца | ниже на тяжёлой анимации и фоновых вычислениях | одна база, но чаще нужны нативные модули | команда уже работает на JavaScript или React |
| нативная разработка (Swift и Kotlin отдельно) | 4–7 месяцев | максимальная, прямой доступ к железу | две отдельные кодовые базы | сложная работа со сканерами, NFC, камерой на пределе возможностей устройства |
| 1С:Мобильная платформа | 1–2 месяца | достаточна для учётных операций | конфигурация внутри 1С, без отдельного релиза в сторах | приложение — тонкий клиент для типовых операций 1С без сложного UI |
почему возникают зависания и сбои синхронизации в flutter-приложениях с 1с
В пятницу вечером на складе сети из шести точек в Москве кладовщики сканируют товар для отгрузки — и приложение зависает на экране «сохранение документа». Смена не закрывается, курьеры ждут накладные, а бухгалтер утром находит в 1С задвоенные документы из-за того, что кладовщики в панике нажимали «отправить» по несколько раз.
Формально Flutter тут ни при чём — движок отрисовки работает исправно. Но приложение зависает не из-за фреймворка, а из-за того, как в нём организован обмен с сервером: если запрос к 1С выполняется в главном потоке или без таймаута, экран блокируется, пока сервер не ответит. А сервер 1С на слабом железе или с раздутой базой отвечает не за миллисекунды, а за секунды — особенно в момент закрытия месяца, когда параллельно формируются отчёты.
Вторая частая причина — конфликт версий данных. Курьер отметил доставку офлайн, синхронизация прошла с задержкой, и к моменту отправки на сервере уже другое состояние документа. Приложение либо падает с необработанным исключением, либо тихо перезаписывает данные — и тогда расхождение находят только при сверке через неделю.
Ставка здесь не абстрактная: сорванная отгрузка в пятницу — это склад, который не может закрыть смену до ночи, курьеры на простое и клиент, которому не привезли заказ вовремя. Если сбой произошёл в момент сдачи месячной отчётности, задержка бьёт уже по бухгалтерии и срокам сдачи отчётов.
как исправить медленную работу и конфликты версий в существующем flutter-приложении
Первый шаг — не трогать код, а посмотреть, где именно зависает поток выполнения. В большинстве Flutter-приложений для бизнеса причина одна из трёх: синхронные запросы к 1С без таймаута, разбор большого JSON-ответа в главном потоке (UI-изолят Dart не успевает перерисовывать кадры) или устаревший пакет для HTTP, который не умеет повторно устанавливать соединение при обрыве сети на складе.
- ✓вынести обмен с 1С в отдельный изолят Dart, чтобы разбор ответа не блокировал интерфейс;
- ✓поставить жёсткий таймаут на каждый запрос к серверу и понятное сообщение об ошибке вместо бесконечного «сохранения»;
- ✓перейти с полной синхронизации документа на дельта-синхронизацию — передавать только изменённые поля, а не весь объект целиком;
- ✓обновить пакеты интеграции с 1С и HTTP-клиент — часть зависаний в старых приложениях снимается уже на этом шаге.
Если приложение работает через прямой обмен с сервером 1С, а не через промежуточный API, узкое место часто не в коде мобильного клиента, а в загруженности самого сервера в часы пик — он одновременно держит сеанс бухгалтерии, обмен с сайтом и запросы от мобильных пользователей. В таком случае причина не в приложении: прежде чем переписывать мобильный клиент, стоит замерить нагрузку на сервер 1С и по необходимости пересмотреть инфраструктуру. Актуальные условия на разработку и сопровождение приложения — на странице цены и тарифы.
что делать, если ошибка в приложении повторяется после каждого обновления
Если после исправления одного зависания через пару недель вылезает похожая ошибка на другом экране — это почти всегда сигнал, что чинили симптом, а не причину. В Flutter-приложениях с интеграцией 1С такое случается, когда обмен реализован не через единый слой API, а разбросан по экранам: на складе одна логика запроса, у курьера — другая, у менеджера — третья. Поправили одну, а на двух других осталась старая.
Правильный шаг — свести весь обмен с 1С в один модуль (data layer), через который проходят все запросы, и логировать каждую ошибку синхронизации с указанием, какой документ и какое поле не сошлось. Без логов разработчик каждый раз чинит вслепую, а бизнес платит за повторные часы доработки. При системном сопровождении такие инциденты фиксируют и разбирают причину один раз, а не откатывают правки после каждого релиза — это входит в сопровождение интеграции приложения с 1С.
Если ошибка вернулась после обновления самого 1С или после смены версии Android или iOS у части сотрудников, проверьте в первую очередь совместимость версии обменного протокола: 1С меняет форматы обмена между релизами, и приложение, написанное под старую конфигурацию, начинает получать данные не в том виде, который ожидает.
как предотвратить проблемы ещё на этапе разработки
Дешевле не чинить зависания, а не допускать их — тестировать приложение не на офисном Wi-Fi, а в условиях, близких к реальным: на складе или точке продаж, где связь то и дело обрывается. Приложение, которое корректно откладывает документ в очередь при обрыве сети и досылает его при восстановлении связи, не создаёт задвоенных операций и не пугает сотрудников зависшим экраном.
Полезная практика — тестовая группа из 3–5 сотрудников, которые получают новую версию на неделю раньше остальных: за это время всплывают конфликты, которые не видны на одном тестовом устройстве в офисе разработчика.
Второй пункт — нагрузочная проверка перед сезоном: если приложением будут одновременно пользоваться несколько десятков сотрудников в час пик, эту нагрузку стоит смоделировать на сервере 1С заранее, а не в первый рабочий день после запуска.
Третий — если приложение хранит персональные данные сотрудников или клиентов (ФИО, телефон, геолокацию курьера), обмен и хранение должны соответствовать требованиям 152-ФЗ: шифрование канала, ограничение доступа к базе, отдельная политика хранения. Это закладывается на этапе архитектуры, а не добавляется поверх готового кода после первой проверки.
Если компания планирует продавать приложение в тендерах или работать с госзаказчиками, отдельно стоит уточнить у разработчика возможность включения продукта в реестр российского ПО — этот процесс проще пройти на этапе проектирования, чем достраивать позже.
сколько стоит разработка и поддержка flutter-приложения для бизнеса
Разработка мобильного приложения на Flutter с нуля начинается от 500 000 рублей — в эту сумму входят проектирование, разработка под iOS и Android из одной кодовой базы и первичная интеграция с 1С. Итоговая цена зависит от количества экранов, глубины интеграции — простой обмен данными или полноценная B2B-логика с заказами, остатками и статусами документов — и от того, нужен ли отдельный нативный клиент вместо готовой 1С:Мобильной платформы.
Отдельная статья расходов — то, что происходит после запуска. Обновления Flutter, Android и iOS выходят несколько раз в год, и приложение без сопровождения через полтора-два года начинает падать на новых версиях системы. Сопровождение и доработку считаем по часам работы разработчика и сисадмина — от 3 800 рублей в час, без привязки к абонементу, которым компания не пользуется.
❓ Частые вопросы
Сколько стоит разработка мобильного приложения на Flutter для бизнеса?
Разработка с нуля начинается от 500 000 рублей — сумма включает проектирование, клиент под iOS и Android из одной кодовой базы и базовую интеграцию с 1С. Итоговая цена зависит от числа экранов и глубины обмена данными с учётной системой.
Почему Flutter-приложение зависает при синхронизации с 1С?
Чаще всего запрос к серверу 1С выполняется без таймаута в главном потоке, а сервер отвечает медленно из-за нагрузки — например, в момент закрытия месяца. Экран блокируется, пока не придёт ответ, хотя сам фреймворк работает исправно.
Можно ли доработать уже существующее Flutter-приложение, если его писала другая команда?
Да, но сначала нужен аудит кода: как реализован обмен с 1С, где хранятся токены доступа и почему возникают конкретные зависания. После аудита понятно, дешевле доработать текущий код или переписать проблемный модуль заново.
Нужно ли отдельное приложение для iOS и для Android?
Нет, в этом и смысл Flutter — одна кодовая база компилируется под обе платформы с нативной производительностью. Отдельная разработка оправдана только при работе с редким оборудованием — специфическими сканерами или промышленными терминалами старого образца.
Что делать, если после обновления 1С приложение перестало корректно синхронизироваться?
Проверить совместимость версии обменного протокола в приложении с текущей версией 1С — форматы обмена меняются между релизами. Если приложение написано под старую конфигурацию, поможет обновление модуля интеграции, а не переписывание всего клиента.
Или позвоните: +7 906 045-28-27 — в рабочее время с 9:00 до 19:00
Остались вопросы? Нужна помощь?
Менеджеры компании с радостью ответят на ваши вопросы, произведут расчет стоимости услуг и подготовят индивидуальное коммерческое предложение.
Бесплатная консультация

