[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"technologies":3,"\u002Fservices\u002Fflutter-app-development\u002Fe-commerce":167,"service-parent:\u002Fservices\u002Fflutter-app-development\u002Fe-commerce":553,"service-children:\u002Fservices\u002Fflutter-app-development\u002Fe-commerce":1024,"glossary":1025},[4,10,15,21,26,32,38,43,48,53,58,63,68,73,77,82,87,92,97,103,108,113,118,123,128,133,138,143,147,152,157,162],{"title":5,"description":6,"slug":7,"category":8,"icon":9},"Android","Каждое наше приложение выходит и на Android — платформенные API, фоновое выполнение, разрешения и требования магазина вместе с ними.","android","framework","logos:android-icon",{"title":11,"description":12,"slug":13,"category":8,"icon":14},"Angular","Фронтенд-фреймворк, в котором мы работаем, когда продукт уже на Angular, — строгая структура, подходящая большим долгоживущим приложениям.","angular","logos:angular-icon",{"title":16,"description":17,"slug":18,"category":19,"icon":20},"Dart","Язык, на котором написано каждое наше Flutter-приложение, — строгая null safety, полноценный pattern matching и компиляция в нативный код и веб.","dart","language","logos:dart",{"title":22,"description":23,"slug":24,"category":8,"icon":25},"Django","Python-фреймворк, который мы берём, когда продукту нужны админка, аутентификация и модель данных в первый же день, а не самописный сервис.","django","logos:django-icon",{"title":27,"description":28,"slug":29,"category":30,"icon":31},"Docker","Каждый наш сервис поставляется в виде контейнера, поэтому на ноутбуке, в CI и в продакшене работает один и тот же артефакт, а не три разных.","docker","infrastructure","logos:docker-icon",{"title":33,"description":34,"slug":35,"category":36,"icon":37},"Fastlane","Автоматизация релизов в нашей мобильной разработке — подпись, сборки и загрузка в сторы идут из CI, а не с ноутбука одного инженера в день релиза.","fastlane","tools","logos:fastlane",{"title":39,"description":40,"slug":41,"category":8,"icon":42},"Flutter","Наш основной мобильный стек с 2018 года — одна кодовая база на Dart для iOS, Android, веба и десктопа без отдельной команды под каждую платформу.","flutter","logos:flutter",{"title":44,"description":45,"slug":46,"category":36,"icon":47},"Git","Все проекты, к которым мы прикасаемся, живут в Git — ревью пул-реквестов, CI на каждой ветке и история, понятная и спустя месяцы.","git","logos:git-icon",{"title":49,"description":50,"slug":51,"category":19,"icon":52},"Go","Наш бэкенд-язык для real-time API и сервисов под нагрузкой — маленькие бинарники, быстрая сборка и конкурентность, которая остаётся читаемой.","go","logos:gopher",{"title":54,"description":55,"slug":56,"category":30,"icon":57},"Google Cloud","Облако, в котором работают наши продакшен-нагрузки, — управляемый Kubernetes, хранилище и сеть без серверов, которые надо обслуживать руками.","gcp","logos:google-cloud",{"title":59,"description":60,"slug":61,"category":36,"icon":62},"Gradle","Система сборки, через которую проходит каждый Android-релиз, — флейворы, конфигурации подписи и вся обвязка зависимостей под Flutter-приложением.","gradle","logos:gradle",{"title":64,"description":65,"slug":66,"category":30,"icon":67},"Helm","Так мы упаковываем деплой в Kubernetes — сервис, конфигурация, секреты и ingress как одна версионируемая единица, которую можно выкатить и откатить.","helm","logos:helm",{"title":69,"description":70,"slug":71,"category":19,"icon":72},"Kotlin","То, что мы берём, когда Flutter-приложению нужен настоящий Android под ним, — platform channels, фоновые задачи и интеграции с нативными SDK.","kotlin","logos:kotlin-icon",{"title":74,"description":75,"slug":76,"category":8,"icon":72},"Kotlin Multiplatform","Общая бизнес-логика для iOS и Android, а нативный интерфейс у каждой платформы свой, — альтернатива, когда Flutter не подходит.","kmp",{"title":78,"description":79,"slug":80,"category":30,"icon":81},"Kubernetes","Так мы запускаем сервисы в продакшене — деплой в Helm-чартах, откатываемые выкатки и масштабирование, для которого не нужен человек в три ночи.","kubernetes","logos:kubernetes",{"title":83,"description":84,"slug":85,"category":30,"icon":86},"NATS","Лёгкий обмен сообщениями между сервисами — publish\u002Fsubscribe и request\u002Freply без эксплуатационного веса полноценного кластера брокера.","nats","logos:nats-icon",{"title":88,"description":89,"slug":90,"category":8,"icon":91},"Nuxt","Vue с серверным рендерингом, роутингом и SEO из коробки — так мы делаем сайты и веб-приложения, которые должны быстро грузиться и индексироваться.","nuxt","logos:nuxt-icon",{"title":93,"description":94,"slug":95,"category":19,"icon":96},"PHP","Там, где PHP-бэкенд уже есть: дорабатываем его, интегрируемся с ним и делаем мобильные и веб-клиенты, которые он обслуживает.","php","logos:php",{"title":98,"description":99,"slug":100,"category":101,"icon":102},"PostgreSQL","Наша база данных по умолчанию — от проектирования схемы до настройки индексов мы берём её, если у продукта нет конкретной причины взять другую.","postgres","database","logos:postgresql",{"title":104,"description":105,"slug":106,"category":19,"icon":107},"Python","Наш язык для бэкендов, работы с данными и AI-интеграций — включая Python-биндинги, которые мы выпускаем к собственным инструментам на Rust.","python","logos:python",{"title":109,"description":110,"slug":111,"category":8,"icon":112},"React","Фронтенд-библиотека, в которой мы работаем, когда продукт уже на React, — компоненты, хуки и выросшая вокруг них экосистема.","react","logos:react",{"title":114,"description":115,"slug":116,"category":101,"icon":117},"Redis","Место для данных, которые должны быть быстрыми и которые не жалко пересчитать, — кэши, сессии, лимиты и очереди фоновых задач.","redis","logos:redis",{"title":119,"description":120,"slug":121,"category":19,"icon":122},"Ruby","Язык, на котором написана автоматизация наших мобильных релизов, — лейны Fastlane, кастомные действия и связка с CI, доставляющая сборки в сторы.","ruby","logos:ruby",{"title":124,"description":125,"slug":126,"category":19,"icon":127},"Rust","Куда мы идём, когда важны и скорость, и корректность, — рендеринг документов, CLI-инструменты и сервисы, которые обязаны оставаться быстрыми и предсказуемыми.","rust","simple-icons:rust",{"title":129,"description":130,"slug":131,"category":101,"icon":132},"SQLite","База данных, которая поставляется внутри приложения, — локальные кэши, offline-first хранилище и всё, что должно работать без сети.","sqlite","logos:sqlite",{"title":134,"description":135,"slug":136,"category":8,"icon":137},"Strapi","Headless CMS, к которой мы обращаемся, когда контент должны вести сами редакторы, — готовая админка и чистое API вместо самописных.","strapi","logos:strapi-icon",{"title":139,"description":140,"slug":141,"category":19,"icon":142},"Swift","То, что мы берём, когда Flutter-приложению нужен настоящий iOS под ним, — platform channels, интеграции нативных SDK, виджеты и App Clips.","swift","logos:swift",{"title":144,"description":145,"slug":146,"category":8,"icon":142},"SwiftUI","UI-фреймворк Apple, на котором мы делаем нативные поверхности, недоступные Flutter-приложению, — виджеты, App Clips и расширения.","swiftui",{"title":148,"description":149,"slug":150,"category":8,"icon":151},"Tailwind CSS","Так мы стилизуем весь фронтенд — утилитарные классы и дизайн-токены вместо таблицы стилей, которая только растёт и никогда не чистится.","tailwind","logos:tailwindcss-icon",{"title":153,"description":154,"slug":155,"category":19,"icon":156},"TypeScript","Стандарт для всего, что мы пишем для браузера и для Node-сервисов, — типы ловят ошибки интеграции раньше, чем код доходит до ревью.","typescript","logos:typescript-icon",{"title":158,"description":159,"slug":160,"category":8,"icon":161},"Vue","Наш фронтенд-фреймворк для админок, дашбордов мерчантов и веб-приложений, которые должны оставаться поддерживаемыми годами, а не спринтами.","vue","logos:vue",{"title":163,"description":164,"slug":165,"category":36,"icon":166},"Whisper","Открытая модель распознавания речи от OpenAI — движок транскрипции для голосового ввода, который работает и как бэкенд-сервис, и прямо на устройстве в приложении.","whisper","simple-icons:openai",{"id":168,"title":169,"body":170,"description":518,"extension":519,"footerCta":520,"headingCta":534,"image":538,"meta":542,"metaDescription":543,"metaTitle":540,"navigation":544,"ogDescription":545,"parent":546,"path":547,"seo":548,"slug":549,"stem":550,"updated":551,"__hash__":552},"services_ru\u002Fservices\u002Fe-commerce.md","Разработка e-commerce-приложений",{"type":171,"value":172,"toc":496},"minimark",[173,177,186,191,240,245,248,252,264,268,281,285,292,296,299,303,306,310,313,317,320,324,340,344,347,351,414,421,425,436,446,449,453,468,471,475,478,482],[174,175,176],"p",{},"Разработка e-commerce-приложений — это инженерия мобильных витрин: каталоги товаров, корзины, оформление заказа, отслеживание доставки и механики лояльности, которые возвращают покупателя. От обычной разработки она отличается тремя конкретными вещами: каталог больше устройства (поэтому поиск, кэширование и доставка изображений решают, каким приложение ощущается), оформление заказа — место, где каждый дефект превращается в потерянную выручку, а одна и та же витрина часто должна существовать в нескольких экземплярах — на бренд, на рынок, на валюту.",[174,178,179,180,185],{},"Flutter подходит ритейлу необычно хорошо, потому что рисует интерфейс сам: сетка товаров, промо в формате сторис или кастомный сценарий оформления заказа ведут себя одинаково на iOS и Android из одной кодовой базы — примерно на 30–40% дешевле, чем строить ту же витрину дважды нативно. То, что напрямую касается платформы, — шторки Apple Pay и Google Pay, часть SDK платёжных провайдеров — идёт через ",[181,182,184],"term",{"slug":183},"platform-channels","platform channels",": это рутина, но это реальная инженерная работа.",[187,188,190],"h3",{"id":189},"какие-продукты-мы-делаем","Какие продукты мы делаем",[192,193,194,202,214,224,230],"ul",{},[195,196,197,201],"li",{},[198,199,200],"strong",{},"Приложения-витрины"," — каталог, поиск, корзина, оформление заказа, отслеживание доставки и отзывы для одного бренда",[195,203,204,207,208,213],{},[198,205,206],{},"Приложения лояльности и кэшбэка"," — баллы, вознаграждения и предложения, как в ",[209,210,212],"a",{"href":211},"\u002Fportfolio\u002Fcashback-loyalty-platform","кэшбэк-платформе",", которую мы построили и ведём как парк приложений",[195,215,216,219,220],{},[198,217,218],{},"White-label-парки для ритейла"," — одна кодовая база, производящая брендированное приложение для каждого мерчанта или рынка; платформенная работа вынесена в отдельную ",[209,221,223],{"href":222},"\u002Fservices\u002Fwhitelabel-app-development","страницу услуги",[195,225,226,229],{},[198,227,228],{},"Приложения для мерчантов"," — парное приложение продавца или менеджера магазина, которое мы сделали для той же платформы",[195,231,232,235,236],{},[198,233,234],{},"Витрины маркетплейсов"," — где каталог принадлежит многим продавцам; двусторонняя динамика разобрана на нашей ",[209,237,239],{"href":238},"\u002Fservices\u002Fflutter-app-development\u002Fmarketplace","странице про маркетплейсы",[241,242,244],"h2",{"id":243},"кто-будет-делать-ваше-e-commerce-приложение","Кто будет делать ваше e-commerce-приложение",[174,246,247],{},"Скажем прямо, что содержит наше портфолио: витрины одного бренда, которую мы могли бы назвать, в нём нет. Зато в нём есть сложные части коммерции — выпущенные многократно и до сих пор работающие в продакшене.",[187,249,251],{"id":250},"парк-из-пятнадцати-брендированных-потребительских-приложений","Парк из пятнадцати брендированных потребительских приложений",[174,253,254,255,258,259,263],{},"Для платформы кэшбэка и лояльности под NDA одна кодовая база на Flutter производит ",[209,256,257],{"href":211},"больше пятнадцати полностью брендированных приложений"," — каждое со своим именем, темой и карточкой в сторе, — плюс приложение мерчанта по другую сторону каждой транзакции и админ-панель, которая запускает новый бренд без участия инженеров. Восемь месяцев разработки, и архитектура ",[209,260,262],{"href":261},"\u002Fblog\u002Fwhite-label-app-platform-flutter","подробно описана",". Если ваша ритейл-стратегия — больше одной витрины, это ровно та же форма задачи.",[187,265,267],{"id":266},"платежи-знакомые-изнутри","Платежи, знакомые изнутри",[174,269,270,271,275,276,280],{},"Nerdy Production возглавляет ",[209,272,274],{"href":273},"\u002Fteam\u002Fnixan","Илья Никсан",", ранее CTO QIWI — одной из крупнейших платёжных платформ на своём рынке, где его команды вели карточный процессинг и отвечали за зону PCI-DSS. Связь с магазином прямая: оформление заказа — это платёжная интеграция, одетая в витрину, и человек, который ведёт вашу разработку, эксплуатировал другую сторону этой интеграции. Дисциплины, которые из этого следуют, — деньги целыми числами в наименьших единицах валюты, состояние доступа на сервере, карточные данные вне зоны вашего приложения — те же, что полностью описывает наша ",[209,277,279],{"href":278},"\u002Fservices\u002Fflutter-app-development\u002Ffintech","страница про финтех",".",[187,282,284],{"id":283},"механика-каталога-на-масштабе-маркетплейса","Механика каталога на масштабе маркетплейса",[174,286,287,291],{},[209,288,290],{"href":289},"\u002Fportfolio\u002Fonetwodo","OneTwoDo"," — не магазин, но это просматриваемый каталог объявлений с фотографиями, поиском, мультивалютными ценами и лентой, отфильтрованной по языку и локации, — спроектированный и выпущенный за семь недель. Механика «красиво показать большую коллекцию вещей на среднем телефоне» переносится целиком.",[241,293,295],{"id":294},"что-на-самом-деле-требуют-e-commerce-приложения","Что на самом деле требуют e-commerce-приложения",[174,297,298],{},"В каждом ритейл-проекте возникают пять задач. Вот как мы решаем каждую.",[187,300,302],{"id":301},"каталог-больше-устройства","Каталог больше устройства",[174,304,305],{},"Каталог живёт на сервере; приложение держит над ним подвижное окно. За этой фразой прячется большая часть инженерии: постраничные запросы, сохраняющие позицию скролла, поиск, который терпит опечатки и отвечает за миллисекунды, изображения, нарезанные и закэшированные так, чтобы сетка товаров не съедала мобильный трафик, и страница товара, которая мгновенно рисуется из закэшированных данных списка, пока детали грузятся следом. Сделайте это неправильно — и приложение будет казаться медленным везде, хотя каждый отдельный запрос выглядит нормально.",[187,307,309],{"id":308},"оформление-заказа-где-отказ-основной-сценарий","Оформление заказа, где отказ — основной сценарий",[174,311,312],{},"Платежи падают: карты отклоняются, челленджи 3-D Secure истекают по таймауту, приложение сворачивают посреди оплаты, сеть обрывается между подтверждением у провайдера и тем моментом, когда о нём узнаёт ваш бэкенд. Оформление заказа проектируется вокруг этих случаев, а не вокруг счастливого пути: идемпотентное создание заказа, чтобы повтор не мог списать деньги дважды, состояние платежа на сервере, а клиент лишь отражает его, и однозначный ответ на экране для любого исхода. «Платёж прошёл у провайдера, но не подтвердился на бэкенде» — класс багов, который стоит реальных денег, и его убирают на этапе архитектуры.",[187,314,316],{"id":315},"нативные-платёжные-шторки-нативно","Нативные платёжные шторки — нативно",[174,318,319],{},"Apple Pay и Google Pay конвертируют на мобильных заметно лучше, чем формы ручного ввода карты, и оба доступны из Flutter через platform channels поверх собственного SDK каждой платформы. Мы подключаем их рядом с карточным сценарием провайдера, а не вместо него, и держим сырые карточные данные внутри SDK провайдера, чтобы ваша зона PCI оставалась настолько маленькой, насколько позволяет продукт.",[187,321,323],{"id":322},"цены-это-деньги-а-деньги-не-float","Цены — это деньги, а деньги — не float",[174,325,326,327,331,332,335,336,280],{},"Каждая цена, скидка, налоговая строка и итог — это целые числа в наименьших единицах валюты или decimal-тип, и никогда не число с плавающей точкой, где ",[328,329,330],"code",{},"0.1 + 0.2"," не равно ",[328,333,334],{},"0.3",", а итог корзины может разойтись с суммой её строк. Правила округления явные и покрыты тестами на каждой границе, где деньги показываются, передаются или сохраняются. Длинная версия — в статье ",[209,337,339],{"href":338},"\u002Fblog\u002Ffloating-point-and-money","Почему 0.1 + 0.2 ≠ 0.3",[187,341,343],{"id":342},"правила-сторов-которые-ритейл-команды-обнаруживают-поздно","Правила сторов, которые ритейл-команды обнаруживают поздно",[174,345,346],{},"Оба стора берут комиссию с цифровых товаров, но не с физических: продавать физические товары через собственного платёжного провайдера можно, а вот подмешивание цифровых бонусов в ритейл-приложение — то место, где начинаются проблемы на ревью. Гайдлайн Apple 4.2.6 — вторая ловушка: парк тонких, почти одинаковых брендированных приложений — ровно то, что он и призван отклонять, и проектирование white-label-платформы так, чтобы она его проходила, — наша специализация, а не сюрприз на двадцатой неделе. Удаление аккаунта, декларации о данных и сроки ревью закладываются в план отдельной фазой — как и на каждой странице этого сайта.",[241,348,350],{"id":349},"почему-flutter-для-e-commerce","Почему Flutter для e-commerce",[352,353,354,367],"table",{},[355,356,357],"thead",{},[358,359,360,364],"tr",{},[361,362,363],"th",{},"Требование",[361,365,366],{},"Как это решает Flutter",[368,369,370,379,387,395,403],"tbody",{},[358,371,372,376],{},[373,374,375],"td",{},"Оба стора при одном бюджете",[373,377,378],{},"Одна кодовая база, примерно на 30–40% дешевле двух нативных витрин",[358,380,381,384],{},[373,382,383],{},"Интерфейс точно по бренду",[373,385,386],{},"Flutter рисует каждый пиксель, поэтому дизайн-система ваша, а не платформы",[358,388,389,392],{},[373,390,391],{},"Быстрые сетки товаров на дешёвых телефонах",[373,393,394],{},"Компиляция в нативный код держит 60 fps там, где реально сидят покупатели, — на среднем Android",[358,396,397,400],{},[373,398,399],{},"Скорость сезонных итераций",[373,401,402],{},"Hot reload быстрее секунды; промо-экран выходит за дни, а не за релизные циклы",[358,404,405,408],{},[373,406,407],{},"Больше одной витрины",[373,409,410,411],{},"Та же кодовая база масштабируется от одного бренда до парка — см. ",[209,412,413],{"href":222},"white-label-платформу",[174,415,416,417,280],{},"Где нативная разработка всё ещё выигрывает: если ваша витрина по сути обёртка вокруг возможности одной платформы — сценарий, ведомый App Clip, глубокая интеграция с Wallet как сам продукт, — кроссплатформенная экономия не главное, и мы так и скажем. Общая страница услуги — ",[209,418,420],{"href":419},"\u002Fservices\u002Fflutter-app-development","разработка на Flutter",[241,422,424],{"id":423},"как-мы-работаем","Как мы работаем",[174,426,427,430,431,435],{},[198,428,429],{},"Проект с фиксированным объёмом."," Мы полностью отвечаем за поставку — дискавери, архитектура, разработка, публикация в сторах. Наш ",[209,432,434],{"href":433},"\u002Fblog\u002Fflutter-app-development-process","процесс разработки"," описывает, как это выглядит неделя за неделей.",[174,437,438,441,442,280],{},[198,439,440],{},"Staff augmentation."," Наши инженеры входят в вашу команду, в ваш репозиторий и спринты — см. ",[209,443,445],{"href":444},"\u002Fservices\u002Fteam-augmentation","расширение команды",[174,447,448],{},"В обоих случаях смету под задачу мы присылаем в течение двух рабочих дней после того, как разберёмся в требованиях.",[241,450,452],{"id":451},"сколько-стоит-e-commerce-приложение","Сколько стоит e-commerce-приложение",[174,454,455,456,459,460,464,465,280],{},"Витрина — каталог и поиск, корзина и оформление заказа, интеграция платёжного шлюза, отслеживание доставки, отзывы — это отдельный тариф на странице ",[209,457,458],{"href":419},"разработки на Flutter",": ",[461,462],"service-price",{"service":463},"flutter-app-development\u002Fecommerce",", за четыре-шесть месяцев. Мультивендорная платформа, брендированный парк приложений или глубокая интеграция с ERP и складом — это enterprise-работа, от ",[461,466],{"service":467},"flutter-app-development\u002Fenterprise",[174,469,470],{},"Это те же опубликованные тарифы, что и в таблице цен пилларной страницы — обе страницы рисуются из одних ключей, поэтому разойтись они не могут. Что двигает цифру ритейл-проекта внутри них: количество платёжных методов и рынков, какую часть каталожной машинерии уже даёт ваш бэкенд и не является ли «одно приложение» на самом деле парком.",[241,472,474],{"id":473},"частые-вопросы","Частые вопросы",[174,476,477],{},"Что чаще всего спрашивают команды, которые строят ритейл- и e-commerce-продукты на Flutter.",[479,480],"questions",{":items":481},"[{\"title\":\"Подходит ли Flutter для e-commerce-приложений?\",\"text\":\"Да. Flutter рисует интерфейс сам, поэтому сетка товаров, промо-экран или кастомное оформление заказа выглядят и ведут себя одинаково на iOS и Android из одной кодовой базы — обычно на 30–40 процентов дешевле, чем разработка двух нативных витрин. Он компилируется в нативный код, что сохраняет плавность скролла на средних Android-устройствах, где на самом деле происходит заметная часть ритейл-трафика. Платформенные части — шторки Apple Pay и Google Pay, часть SDK платёжных провайдеров — доступны через platform channels: это рутинная, но реальная инженерная работа.\"},{\"title\":\"Сколько стоит разработка e-commerce-приложения?\",\"text\":\"Наш опубликованный e-commerce-тариф покрывает каталог и поиск, корзину и оформление заказа, интеграцию платёжного шлюза, отслеживание доставки, отзывы и управление складом за четыре-шесть месяцев — точный диапазон открыт на этой странице и на странице разработки на Flutter, а не спрятан за звонком с менеджером. Мультивендорные платформы и парки брендированных приложений оцениваются как enterprise-работа. Цифру двигает в первую очередь количество платёжных методов и рынков, во вторую — то, какую часть каталожной машинерии уже даёт ваш бэкенд.\"},{\"title\":\"Может ли Flutter-приложение использовать Apple Pay и Google Pay?\",\"text\":\"Да, через platform channels поверх собственного платёжного SDK каждой платформы — в виде нативной платёжной шторки, которую пользователи узнают. Нативные шторки конвертируют на мобильных измеримо лучше, чем формы ручного ввода карты, поэтому мы подключаем их рядом с карточным сценарием провайдера, а не вместо него. Сырой ввод карты остаётся внутри SDK платёжного провайдера, что держит ваше приложение вне зоны PCI везде, где провайдер это позволяет.\"},{\"title\":\"Потянет ли Flutter большой каталог товаров?\",\"text\":\"Да, при правильной архитектуре: каталог живёт на сервере, а приложение держит над ним постраничное окно, поиск выполняется на бэкенде, изображения нарезаются и кэшируются под экран, а страницы товаров мгновенно рисуются из закэшированных данных списка, пока детали грузятся следом. Провальный сценарий — не Flutter, а отношение к каталогу на сто тысяч позиций как к списку, который нужно скачать. Мы выпускали механику браузинга на масштабе маркетплейса — с мультивалютными ценами и лентами, отфильтрованными по локации.\"},{\"title\":\"Мы уже продаём через сайт. Нужно ли нам приложение?\",\"text\":\"Не всегда, и мы так и скажем, когда честный ответ — хорошо сделанный мобильный веб. Приложение окупает бюджет за счёт поверхности удержания, которой у сайта нет: пуш-уведомления об акциях и статусах заказов, иконка на домашнем экране, нативные платёжные шторки и механики лояльности, награждающие за возвращение. Если большая часть выручки — повторные покупатели, аргументы обычно сильные; если это разовый поисковый трафик, вкладывайтесь сначала в веб — его мы тоже делаем.\"},{\"title\":\"Может ли одна кодовая база производить несколько брендированных магазинов?\",\"text\":\"Да — это наш самый прямой аргумент в коммерции. Одна построенная нами кодовая база на Flutter производит больше пятнадцати полностью брендированных потребительских приложений плюс приложение мерчанта, с админ-панелью, которая запускает новый бренд без участия инженеров. Ловушка политики сторов — гайдлайн Apple 4.2.6, существующий, чтобы отклонять парки почти одинаковых приложений, и white-label-платформу нужно с самого начала проектировать так, чтобы она его проходила. Полная архитектура описана на нашей странице white-label-услуги и в сопутствующей инженерной статье.\"}]",[174,483,484,485,489,490,493,494,280],{},"Разбор стоимости — в статье ",[209,486,488],{"href":487},"\u002Fblog\u002Fflutter-app-development-cost-2026","Стоимость разработки Flutter-приложения в 2026 году",", посмотрите, ",[209,491,492],{"href":261},"как устроен парк платформы лояльности",", или начните с пилларной страницы ",[209,495,458],{"href":419},{"title":497,"searchDepth":498,"depth":498,"links":499},"",2,[500,502,507,514,515,516,517],{"id":189,"depth":501,"text":190},3,{"id":243,"depth":498,"text":244,"children":503},[504,505,506],{"id":250,"depth":501,"text":251},{"id":266,"depth":501,"text":267},{"id":283,"depth":501,"text":284},{"id":294,"depth":498,"text":295,"children":508},[509,510,511,512,513],{"id":301,"depth":501,"text":302},{"id":308,"depth":501,"text":309},{"id":315,"depth":501,"text":316},{"id":322,"depth":501,"text":323},{"id":342,"depth":501,"text":343},{"id":349,"depth":498,"text":350},{"id":423,"depth":498,"text":424},{"id":451,"depth":498,"text":452},{"id":473,"depth":498,"text":474},"Каталог, оформление заказа и парк приложений за ними — ритейл-приложения на Flutter от команды, которая многократно выпускала сложные части коммерции, под руководством инженера, который вёл карточный процессинг на масштабе","md",{"heading":521,"text":522,"buttons":523},"Строите ритейл-приложение?","Расскажите, что вы продаёте и где основная сложность — каталог, оформление заказа, парк брендированных приложений или всё сразу. Мы честно скажем, что нужно, чтобы это выпустить.",[524,530],{"to":525,"label":526,"leadingIcon":527,"color":528,"variant":529},"\u002Fcontact?intent=flutter-app-development","Записаться на консультацию","lucide:message-circle","neutral","outline",{"to":211,"label":531,"color":532,"variant":533},"Смотреть кейс платформы лояльности","primary","solid",[535,536],{"to":525,"label":526,"leadingIcon":527,"color":532,"variant":533},{"to":211,"label":537,"color":528,"variant":529},"Смотреть наши работы",{"url":539,"alt":540,"text":541},"\u002Fservices\u002Fe-commerce.webp","Разработка e-commerce-приложений на Flutter","От каталога до оплаты — одна кодовая база, оба стора",{},"Разработка e-commerce-приложений на Flutter: каталог, корзина, оформление заказа и платежи на iOS и Android из одной кодовой базы — с открытыми ценами.",true,"Ритейл-приложения на Flutter — от каталога до оплаты, оба стора, одна кодовая база. От команды, которая построила парк из пятнадцати брендированных приложений.","flutter-app-development","\u002Fservices\u002Fflutter-app-development\u002Fe-commerce",{"title":169,"description":518},"e-commerce","services\u002Fe-commerce","2026-09-04","t5RYZa9NTrhUcRznv556SK6Wbvk3vvvkMgHEN98du94",{"id":554,"title":555,"body":556,"description":998,"extension":519,"footerCta":999,"headingCta":1008,"image":1014,"meta":1017,"metaDescription":1018,"metaTitle":555,"navigation":544,"ogDescription":1019,"parent":1020,"path":419,"seo":1021,"slug":546,"stem":1022,"updated":551,"__hash__":1023},"services_ru\u002Fservices\u002Fflutter-app-development.md","Разработка приложений на Flutter",{"type":171,"value":557,"toc":982},[558,565,581,585,589,592,596,607,611,618,622,635,651,664,668,671,675,681,684,689,696,701,704,710,713,718,722,725,731,749,753,756,790,793,797,800,886,893,895,908,918,925,929,932,936,949,953,956,959,979],[174,559,560,561,564],{},"Разработка приложений на Flutter — это когда ваши приложения для iOS и Android, а там, где это оправдано, и веб-приложение, создаются из одной кодовой базы, одной командой, на инструментарии Flutter от Google. Сделанная хорошо, она обходится ",[198,562,563],{},"на 30–40% дешевле двух нативных приложений",", и разрыв растёт на протяжении всей жизни продукта, потому что каждая будущая функция и каждое исправление пишутся один раз, а не дважды. Сделанная плохо, она даёт приложение, которое ощущается слегка чужим на обеих платформах, — вот почему сам фреймворк значит меньше, чем то, в чьих он руках.",[174,566,567,568,572,573,577,578,280],{},"Мы — команда, которая выпускает Flutter в продакшен с 2019 года и почти ничем другим не занимается. Семь из восьми проектов в нашем ",[209,569,571],{"href":570},"\u002Fportfolio","портфолио"," — приложения на Flutter: от живой инвестиционной платформы до парка из пятнадцати white-label-приложений, собранных из одной кодовой базы. Наши инженеры поддерживают ",[209,574,576],{"href":575},"\u002Fopen-source","опенсорсные Flutter-пакеты"," на pub.dev, а наши цены опубликованы прямо на этой странице, а не озвучиваются в личной переписке — мы предпочитаем выложить цифры и спорить о них, чем начинать разговор с «зависит от». Полный разбор того, из чего они складываются, — в нашем ",[209,579,580],{"href":487},"гайде по стоимости",[582,583],"statistics-grid",{":items":584},"[{\"icon\": \"lucide:dollar-sign\", \"value\": \"30-40%\", \"label\": \"Ниже стоимость разработки\", \"description\": \"Одна кодовая база вместо двух нативных приложений — и разрыв растёт вместе с сопровождением\"}, {\"icon\": \"lucide:clock\", \"value\": \"2-3x\", \"label\": \"Быстрее в оба стора\", \"description\": \"Одна команда выпускает iOS и Android одновременно\"}, {\"icon\": \"lucide:layers\", \"value\": \"7\", \"label\": \"Flutter-приложений выпущено\", \"description\": \"В продакшене, с кейсами, которые можно прочитать\"}, {\"icon\": \"lucide:package\", \"value\": \"6\", \"label\": \"Опенсорсных пакетов\", \"description\": \"Поддерживаются нашими инженерами на pub.dev и не только\"}]",[241,586,588],{"id":587},"кто-будет-делать-ваше-flutter-приложение","Кто будет делать ваше Flutter-приложение",[174,590,591],{},"Перечислить фреймворки может кто угодно. Flutter-студию от студии, которая когда-то использовала Flutter, отличает продакшен-работа, которую можно изучить, — вот наша.",[187,593,595],{"id":594},"живое-инвестиционное-приложение-под-рыночными-данными-в-реальном-времени","Живое инвестиционное приложение под рыночными данными в реальном времени",[174,597,598,602,603,280],{},[209,599,601],{"href":600},"\u002Fportfolio\u002Fextraetf","ExtraETF"," — инвестиционное приложение для Isarvest GmbH: живые рыночные котировки, отслеживание портфеля и графики, которые остаются плавными, пока котировки стримятся по WebSocket с бэкенда на Go, который мы тоже построили. Шесть месяцев до обоих сторов. Самое сложное в таком приложении — не нарисовать график, а удержать частоту кадров, когда данные приходят каждые несколько сотен миллисекунд; это задача о границах ребилдов, которую мы разобрали ",[209,604,606],{"href":605},"\u002Fblog\u002Fextraetf-realtime-fintech-flutter-go","в инженерных деталях",[187,608,610],{"id":609},"два-нативных-приложения-объединённые-в-одну-кодовую-базу","Два нативных приложения, объединённые в одну кодовую базу",[174,612,613,617],{},[209,614,616],{"href":615},"\u002Fportfolio\u002Fformtastic","Formtastic"," годами существовал в виде отдельных приложений для iOS и Android — каждая функция делалась дважды, релизы расходились по времени. Мы объединили продукт в единую кодовую базу на Flutter, не нарушив работу для клиентов, которые уже на него полагались, а затем продолжили строить: поддержка iPad, офлайн-синхронизация, голосовой ввод для полей форм. Это самое наглядное «до и после», которое мы можем показать о том, что единая кодовая база делает с роадмапом, — и ниже клиент говорит об этом своими словами.",[187,619,621],{"id":620},"пятнадцать-брендированных-приложений-из-одной-кодовой-базы","Пятнадцать брендированных приложений из одной кодовой базы",[174,623,254,624,627,628,631,632,280],{},[209,625,626],{"href":211},"парк из более чем пятнадцати полностью брендированных приложений"," — у каждого своё имя, тема и карточка в сторе, — плюс приложение для мерчантов и админ-панель, запускающую новый бренд без участия инженеров. Этот проект вырос в отдельное направление — ",[209,629,630],{"href":222},"разработку white-label-приложений"," — и в ",[209,633,634],{"href":261},"подробно описанную архитектуру",[174,636,637,638,642,643,645,646,650],{},"Меньше и быстрее, но с той же дисциплиной: ",[209,639,641],{"href":640},"\u002Fportfolio\u002Farcana","Arcana",", AI-собеседник, стримящий markdown на 60 fps через тысячи сообщений, занял три недели. ",[209,644,290],{"href":289},", двусторонний маркетплейс услуг, — семь. ",[209,647,649],{"href":648},"\u002Fportfolio\u002Fjepta","Jepta",", приложение для соседей с чатами и каналами в реальном времени, вышло с полным набором функций меньше чем за шесть месяцев.",[652,653,658,661],"testimonial",{"author":654,"avatar":655,"linkedin":656,"role":657},"Julian Garbotz","\u002Fclients\u002Fjulian-garbotz.png","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fjulian-garbotz","Управляющий директор, Formtastic GmbH",[174,659,660],{},"Долгое время Formtastic существовал в виде двух отдельных нативных приложений — одного для iOS, другого для Android. Каждую функцию приходилось делать дважды, релизы на двух платформах расходились по времени, а поддержка двух кодовых баз незаметно съедала наш роадмап.",[174,662,663],{},"Команда Nerdy Production объединила всё в единую кодовую базу на Flutter, не нарушив работу продукта, на который полагаются наши клиенты. Теперь оба приложения получают одни и те же функции одновременно, опыт идентичен на iPhone и Android, а время вывода в продакшен резко сократилось. Мы поддерживаем одну кодовую базу вместо двух, и команда наконец тратит силы на новые функции, а не на синхронизацию двух приложений.",[241,665,667],{"id":666},"как-работает-flutter-секрет-его-производительности","Как работает Flutter: секрет его производительности",[174,669,670],{},"Причина, по которой приложения на Flutter не несут «гибридного» штрафа к производительности, — архитектурная, и она стоит двух минут, даже если вы никогда не будете читать Dart.",[187,672,674],{"id":673},"архитектура-рендеринга-flutter","Архитектура рендеринга Flutter",[676,677,678],"ol",{},[195,679,680],{},"Компиляция напрямую в нативный код",[174,682,683],{},"В отличие от гибридных фреймворков, работающих через JavaScript-мосты, Flutter компилируется заранее в нативный машинный код ARM. Между вашим приложением и процессором нет интерпретатора, поэтому время запуска и скорость выполнения находятся в том же диапазоне, что и у приложений на Swift или Kotlin.",[676,685,686],{"start":498},[195,687,688],{},"Собственный графический движок",[174,690,691,692,695],{},"Flutter рисует каждый пиксель сам — через ",[181,693],{"slug":694},"skia",", 2D-движок, стоящий за Chrome и Android, и его преемника Impeller на современных устройствах. Вместо сборки интерфейса из платформенных UI-компонентов он рендерит его напрямую на канвас экрана. Поэтому Flutter-приложение выглядит и ведёт себя одинаково на любой платформе, а полный контроль над каждой анимацией — поведение по умолчанию, а не борьба.",[676,697,698],{"start":501},[195,699,700],{},"Декларативный UI-фреймворк",[174,702,703],{},"Дерево виджетов Flutter перестраивает только изменившиеся части интерфейса, используя эффективный алгоритм диффа, похожий на реактовский. Сложные экраны с сотнями анимированных элементов держат 60 fps — 120 fps на поддерживающих дисплеях — при условии, что границы ребилдов заданы аккуратно; именно такая аккуратность и отличает продакшен-работу на Flutter от демо.",[676,705,707],{"start":706},4,[195,708,709],{},"Оптимизированная слоистая архитектура",[174,711,712],{},"Движок (C\u002FC++) отвечает за рендеринг, компоновку текста и ввод-вывод; фреймворк (Dart) предоставляет API поверх него. Это разделение держит критичные для производительности операции на нативной скорости, а код, в котором работает ваша команда, остаётся продуктивным и тестируемым.",[714,715],"features",{":items":716,":title":717},"[{\"label\": \"Анимации 60\u002F120 FPS\", \"description\": \"Плавные анимации на всех платформах без потерь кадров\"}, {\"label\": \"Быстрый запуск\", \"description\": \"Приложения стартуют за миллисекунды, как нативные\"}, {\"label\": \"Компактный размер бинарников\", \"description\": \"Разделение кода и tree shaking уменьшают размер приложения\"}, {\"label\": \"Низкое потребление памяти\", \"description\": \"Эффективное управление памятью сохраняет отзывчивость\"}]","Почему производительность — не проблема",[241,719,721],{"id":720},"flutter-vs-react-native-vs-нативная-разработка","Flutter vs React Native vs нативная разработка",[174,723,724],{},"Сравниваем Flutter с другими подходами к мобильной разработке",[726,727],"features-table",{":heading":728,":rows":729,":top-left-label":730},"[{\"label\": \"Flutter\", \"hightlightLabel\": \"Рекомендуем\"}, {\"label\": \"React Native\"}, {\"label\": \"Нативная (Swift\u002FKotlin)\"}]","[{\"label\": \"Производительность\",\"cells\": [{\"text\": \"Нативная скорость\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" },{ \"text\": \"Почти нативная\", \"color\": \"warning\", \"icon\": \"lucide:minus\" },{ \"text\": \"Нативная\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" }]}, {\"label\": \"Скорость разработки\",\"cells\": [{\"text\": \"Очень высокая\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" },{ \"text\": \"Высокая\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" },{ \"text\": \"Низкая (2 кодовые базы)\", \"color\": \"error\", \"icon\": \"lucide:x\" }]}, {\"label\": \"Единообразие интерфейса\",\"cells\": [{\"text\": \"Пиксельная точность\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" },{ \"text\": \"Зависит от платформы\", \"color\": \"warning\", \"icon\": \"lucide:minus\" },{ \"text\": \"Нужен двойной дизайн\", \"color\": \"warning\", \"icon\": \"lucide:minus\" }]}, {\"label\": \"Повторное использование кода\",\"cells\": [{\"text\": \"90-95%\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" },{ \"text\": \"70-85%\", \"color\": \"warning\", \"icon\": \"lucide:minus\" },{ \"text\": \"0% (отдельные приложения)\", \"color\": \"error\", \"icon\": \"lucide:x\" }]}, {\"label\": \"Hot Reload\",\"cells\": [{\"text\": \"Доли секунды\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" },{ \"text\": \"Доступно\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" },{ \"text\": \"Ограничено\", \"color\": \"warning\", \"icon\": \"lucide:minus\" }]}, {\"label\": \"Поддержка платформ\",\"cells\": [{\"text\": \"6 платформ\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" },{ \"text\": \"iOS, Android, Web\", \"color\": \"warning\"},{ \"text\": \"Только одна платформа\", \"color\": \"warning\"}]}, {\"label\": \"Порог входа\",\"cells\": [{\"text\": \"Низкий (Dart)\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" },{ \"text\": \"Низкий (JavaScript)\", \"color\": \"success\"},{ \"text\": \"Высокий (2 языка)\", \"color\": \"warning\"}]}, {\"label\": \"Стоимость разработки\",\"cells\": [{\"text\": \"На 30-40% ниже\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" },{ \"text\": \"На 20-30% ниже\", \"color\": \"warning\"},{ \"text\": \"Максимальная (2 команды)\", \"color\": \"error\"}]}, {\"label\": \"Сопровождение\",\"cells\": [{\"text\": \"Единая кодовая база\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" },{ \"text\": \"Платформенные фиксы\", \"color\": \"warning\"},{ \"text\": \"Удвоенное сопровождение\", \"color\": \"error\"}]}, {\"label\": \"Поддерживается\",\"cells\": [{\"text\": \"Google\", \"color\": \"success\"},{ \"text\": \"Meta*\"},{ \"text\": \"Apple \u002F Google\"}]}]","Характеристика",[732,733,734],"info-box",{},[174,735,736,739,740,744,745,280],{},[198,737,738],{},"💡 Главное:"," Flutter обеспечивает нативную производительность при существенно меньших затратах на разработку и сопровождение. React Native — достойный вариант, особенно для команды, глубоко погружённой в React, — но модель рендеринга Flutter, единообразие интерфейса и охват платформ делают его более сильным выбором по умолчанию для большинства продуктов. Полный разбор компромиссов — в статьях ",[209,741,743],{"href":742},"\u002Fblog\u002Fflutter-vs-react-native-2026","Flutter vs React Native в 2026 году"," и ",[209,746,748],{"href":747},"\u002Fblog\u002Fflutter-vs-native-2026","Flutter vs нативная разработка в 2026 году",[241,750,752],{"id":751},"когда-flutter-неправильный-выбор","Когда Flutter — неправильный выбор",[174,754,755],{},"Рекомендация чего-то стоит, только если она может прозвучать и в другую сторону, — поэтому вот случаи, когда мы отговариваем от собственной услуги.",[192,757,758,764,775],{},[195,759,760,763],{},[198,761,762],{},"Продукт — это платформенная возможность."," Глубокий сценарий для Apple Watch, продукт, построенный вокруг виджетов, приложение вокруг API, существующего только на одной платформе, — кроссплатформенная экономия здесь не главное, и честный ответ — нативная разработка.",[195,765,766,769,770,774],{},[198,767,768],{},"Ваша команда уже нативная."," Если у вас сильные инженеры на Swift и Kotlin, устоявшаяся кодовая база и нет ценового давления от двойной поставки, смена фреймворка решает проблему, которой у вас нет. Та же честность работает и в обратную сторону для ",[209,771,773],{"href":772},"\u002Fservices\u002Fflutter-app-development\u002Fflutter-migration","миграций",": та страница начинается с рассказа о том, кому мигрировать не стоит.",[195,776,777,780,781,784,785,789],{},[198,778,779],{},"Вы хотите общую логику, но нативный UI."," ",[209,782,74],{"href":783},"\u002Ftechnologies\u002Fkmp"," делает бизнес-логику общей, сохраняя нативный интерфейс каждой платформы. Это другая ставка — больше платформенной аутентичности, меньше переиспользования UI, — и для некоторых команд она верная. Мы честно сравниваем оба подхода в посте ",[209,786,788],{"href":787},"\u002Fblog\u002Fflutter-vs-kotlin-multiplatform-2026","Flutter vs Kotlin Multiplatform в 2026 году"," — и скажем об этом на первом звонке, а не на последнем.",[174,791,792],{},"Всё остальное — потребительские продукты, маркетплейсы, финтех, медицина, внутренние инструменты, продукты, которые должны существовать в обоих сторах при одном бюджете, — территория, где Flutter, по нашему опыту семи продакшен-приложений, выигрывает по существу.",[241,794,796],{"id":795},"что-мы-делаем","Что мы делаем",[174,798,799],{},"Услуга одна; работа приходит в разных формах. Каждая из этих страниц публикует собственный объём, цифры и честные сценарии неудачи:",[192,801,802,811,819,828,836,844,853,861,869,878],{},[195,803,804,810],{},[198,805,806],{},[209,807,809],{"href":808},"\u002Fservices\u002Fflutter-app-development\u002Fmvp","Разработка MVP"," — минимальное приложение, способное ответить на ваш бизнес-вопрос, в обоих сторах за два-три месяца, по опубликованной цене.",[195,812,813,818],{},[198,814,815],{},[209,816,817],{"href":278},"Финтех-приложения"," — инвестиционные, банковские и платёжные продукты: рыночные данные в реальном времени, точная денежная арифметика, комплаенс. ExtraETF — доказательство.",[195,820,821,827],{},[198,822,823],{},[209,824,826],{"href":825},"\u002Fservices\u002Fflutter-app-development\u002Fhealthcare","Медицинские приложения"," — телемедицина и продукты для ментального здоровья: видеоконсультации, переживающие реальные сети, и данные пациентов под дисциплиной HIPAA и GDPR.",[195,829,830,835],{},[198,831,832],{},[209,833,834],{"href":547},"E-commerce-приложения"," — каталог, оформление заказа и платежи, от одной витрины до брендированного парка приложений; у тарифа из таблицы цен ниже наконец есть собственная страница.",[195,837,838,843],{},[198,839,840],{},[209,841,842],{"href":238},"Приложения-маркетплейсы"," — двусторонние продукты, обе роли из одной кодовой базы. OneTwoDo — доказательство.",[195,845,846,852],{},[198,847,848],{},[209,849,851],{"href":850},"\u002Fservices\u002Fflutter-app-development\u002Fsocial","Социальные и комьюнити-приложения"," — чаты, каналы и живые ленты на одном слое реального времени. Jepta — доказательство.",[195,854,855,860],{},[198,856,857],{},[209,858,859],{"href":772},"Миграция с React Native и натива"," — экран за экраном, add-to-app, без даунтайма — и страница, которая начинается с рассказа о том, когда этого делать не стоит.",[195,862,863,868],{},[198,864,865],{},[209,866,867],{"href":222},"White-label-платформы"," — одна кодовая база, парк брендированных приложений и ловушки гайдлайна Apple 4.2.6, исключённые архитектурой с самого начала.",[195,870,871,877],{},[198,872,873],{},[209,874,876],{"href":875},"\u002Fservices\u002Fchatbot-to-app","Из чат-бота в приложение"," — Telegram- или WhatsApp-бот с реальной аудиторией, превращённый в приложение в сторах без её потери.",[195,879,880,885],{},[198,881,882],{},[209,883,884],{"href":444},"Расширение команды"," — senior Flutter-инженеры в вашей команде, в вашем репозитории и ваших спринтах, когда вам нужны руки, а не поставка под ключ.",[174,887,888,889,280],{},"Если приложение уже существует и вопрос в его состоянии, а не в роадмапе — передача от агентства, прототип, собранный ИИ, кодовая база, в которой вы сомневаетесь, — начните с ",[209,890,892],{"href":891},"\u002Fservices\u002Fai-code-audit","аудита AI-кода",[241,894,424],{"id":423},[174,896,897,899,900,903,904],{},[198,898,429],{}," Мы отвечаем за результат целиком: дискавери, дизайн, архитектура, разработка, подача в сторы. Одна команда, отвечающая за дату запуска. Как это выглядит по неделям, описано в нашем ",[209,901,902],{"href":433},"процессе разработки",", а поэтапный таймлайн — в статье ",[209,905,907],{"href":906},"\u002Fblog\u002Fhow-long-to-build-a-flutter-app","Сколько времени занимает разработка Flutter-приложения?",[174,909,910,912,913,917],{},[198,911,440],{}," Наши инженеры присоединяются к вашим, под вашим управлением. Лучший вариант, когда инженерное руководство уже есть и нужна глубина во Flutter, — наш ",[209,914,916],{"href":915},"\u002Fblog\u002Fhire-flutter-developers-2026","гайд по найму Flutter-разработчиков"," честно говорит, когда это лучше агентского контракта, а когда нет.",[174,919,920,921,924],{},"Какой бы путь ни подошёл, смету под задачу мы присылаем в течение двух рабочих дней после того, как разберёмся в требованиях, — а инженерные практики, которые мы отказываемся урезать при любом бюджете, везде одни и те же: ",[181,922],{"slug":923},"ci-cd"," с первой недели, тесты там, где ошибка стоит денег, и границы модулей, позволяющие v2 расти без переписывания.",[241,926,928],{"id":927},"стоимость-разработки-приложений-на-flutter","Стоимость разработки приложений на Flutter",[174,930,931],{},"Прозрачные цены на ваш проект на Flutter",[933,934],"pricing-table",{":items":935},"[{\"title\": \"MVP\", \"subtitle\": \"Быстрая проверка идеи\", \"price\": \"flutter-app-development\u002Fmvp\", \"terms\": \"2-3 месяца\", \"lines\": [\"Приложения для iOS и Android\", \"5-8 ключевых функций\", \"Базовый UI\u002FUX-дизайн\", \"Интеграция REST API\", \"Аутентификация пользователей\", \"Базовая аналитика\", \"Публикация в сторах\"], \"callToAction\": {\"to\": \"\u002Fcontact?intent=flutter-app-development\", \"label\": \"Начать\"}},{\"title\": \"Бизнес-приложение\", \"subtitle\": \"Полнофункциональное решение\", \"price\": \"flutter-app-development\u002Fbusiness\", \"terms\": \"3-5 месяцев\", \"lines\": [\"iOS, Android и Web\", \"15-20 функций\", \"Индивидуальный UI\u002FUX-дизайн\", \"Расширенные API-интеграции\", \"Push-уведомления\", \"Офлайн-режим\", \"Аналитика и мониторинг\", \"Админ-панель\"], \"callToAction\": {\"to\": \"\u002Fcontact?intent=flutter-app-development\", \"label\": \"Начать\"}},{\"highlight\": \"Популярно\",\"title\": \"E-commerce \u002F Retail\", \"subtitle\": \"Продавайте онлайн стильно\", \"price\": \"flutter-app-development\u002Fecommerce\", \"terms\": \"4-6 месяцев\", \"lines\": [\"Все платформы + десктоп\", \"Каталог и поиск товаров\", \"Корзина и оформление заказа\", \"Интеграция платежей\", \"Отслеживание заказов\", \"Отзывы и рейтинги\", \"Управление складом\", \"Панели администратора и продавцов\"], \"callToAction\": {\"to\": \"\u002Fcontact?intent=flutter-app-development\", \"label\": \"Начать\"}},{\"title\": \"Enterprise \u002F AI\", \"subtitle\": \"Сложные и масштабируемые решения\", \"price\": \"flutter-app-development\u002Fenterprise\", \"terms\": \"6+ месяцев\", \"lines\": [\"Все платформы\", \"Интеграция AI\u002FML\", \"Сложные бизнес-процессы\", \"Корпоративная безопасность\", \"Индивидуальная серверная инфраструктура\", \"Расширенная аналитика\", \"Мультитенантная архитектура\", \"Выделенная поддержка\"], \"callToAction\": {\"to\": \"\u002Fcontact?intent=flutter-app-development\", \"label\": \"Начать\"}}]",[732,937,940],{":leading-icon":938,":title":939},"lucide:dollar-sign","Доступно индивидуальное ценообразование",[174,941,942,943,744,945,280],{},"Каждый проект уникален. Эти диапазоны основаны на типичных требованиях. После обсуждения ваших задач, сроков и сложности мы подготовим подробную смету. Свяжитесь с нами для бесплатной консультации и точного расчёта стоимости. Что именно влияет на стоимость приложения — в материалах ",[209,944,488],{"href":487},[209,946,948],{"href":947},"\u002Fblog\u002Fmobile-cost-reduction-case-studies","кейсы снижения затрат на мобильную разработку",[241,950,952],{"id":951},"часто-задаваемые-вопросы","Часто задаваемые вопросы",[174,954,955],{},"Всё, что нужно знать о наших услугах разработки на Flutter",[479,957],{":items":958},"[{\"title\":\"Что такое Flutter и почему стоит выбрать его для моего приложения?\",\"text\":\"Flutter — это опенсорсный UI-инструментарий от Google для создания нативно компилируемых приложений для мобильных устройств, веба и десктопа из единой кодовой базы. Бизнес-аргумент структурный: одна кодовая база означает одну команду, один релизный цикл и каждую функцию, написанную один раз, — поэтому разработка на Flutter обычно обходится на 30–40 процентов дешевле двух нативных приложений, и разрыв растёт на протяжении жизни продукта по мере накопления затрат на сопровождение. Инженерный аргумент в том, что Flutter компилируется в нативный код и рисует интерфейс сам, поэтому избегает и штрафа к производительности гибридных фреймворков, и расхождения платформ при поддержке двух реализаций.\"},{\"title\":\"Сколько стоит разработка приложения на Flutter?\",\"text\":\"Наши опубликованные тарифы: от $15,000 до $30,000 за MVP, от $30,000 до $60,000 за полноценное бизнес-приложение, от $50,000 до $90,000 за e-commerce-продукт и от $90,000 за enterprise-проекты — точные диапазоны находятся в разделе цен на этой странице, а не за созвоном с отделом продаж. Цифру двигают в первую очередь объём и во вторую — интеграции. Полный разбор того, из чего складывается сумма, включая затраты, которые команды забывают заложить в бюджет, — в нашем гайде по стоимости разработки Flutter-приложения в 2026 году.\"},{\"title\":\"Сколько времени занимает разработка приложения на Flutter?\",\"text\":\"MVP занимает два-три месяца от старта до живой карточки в сторе. Полноценное бизнес-приложение — три-пять месяцев, e-commerce- или enterprise-проект — четыре-шесть и больше. Календарь редко съедает сам код: платёжные потоки, всплывающие посреди проекта, раунды дизайна, доступ к сторонним API и цикл подачи в сторы — вот где на самом деле сдвигаются сроки. Наш поэтапный разбор — в статье «Сколько времени занимает разработка Flutter-приложения».\"},{\"title\":\"Могут ли приложения на Flutter работать так же быстро, как нативные?\",\"text\":\"Да. Flutter компилируется заранее в нативный ARM-код и рендерит через собственный графический движок, поэтому анимации держат 60 кадров в секунду — 120 на поддерживаемых дисплеях — без накладных расходов на мост, которые несут гибридные фреймворки. На Flutter работают продакшен-приложения вроде Google Ads, Alibaba и автомобильного приложения BMW, а наш собственный ExtraETF держит частоту кадров под живым потоком рыночных данных. Честная оговорка: производительность — свойство инженерии, а не фреймворка. Ребилды виджетов без заданных границ уронят кадры во Flutter точно так же, как утёкшие обсерверы — в Swift.\"},{\"title\":\"Чем Flutter отличается от React Native?\",\"text\":\"Flutter компилируется в нативный код и рисует интерфейс сам через собственный движок рендеринга; React Native работает через мост с нативными компонентами каждой платформы. На практике это даёт Flutter больший запас производительности, попиксельно идентичный интерфейс на всех платформах, 90–95 процентов переиспользования кода против 70–85 у React Native и шесть поддерживаемых платформ, включая десктоп. React Native остаётся достойным выбором для команд, глубоко погружённых в React. Наше полное сравнение, включая случаи, где выигрывает React Native, — в статье «Flutter vs React Native в 2026 году».\"},{\"title\":\"Хорош ли Flutter для веб- и десктоп-приложений?\",\"text\":\"С оговорками. Flutter для веба сильнее всего в сценариях, похожих на приложение, — дашборды, порталы, инструменты за логином, — где рендеринг на канвасе является преимуществом, а не издержкой; для контентных сайтов, живущих за счёт SEO и мгновенной первой отрисовки, лучше подходит классический веб-стек, и мы говорим это, хотя продаём и то и другое. Поддержка десктопа — Windows, macOS и Linux — готова к продакшену и особенно хороша для внутренних инструментов и приложений-компаньонов, разделяющих кодовую базу с мобильными.\"},{\"title\":\"Можете ли вы взять на себя или спасти существующее Flutter-приложение?\",\"text\":\"Да — часть нашей лучше всего задокументированной работы началась именно так, включая живой телемедицинский продукт, который мы стабилизировали, не выводя его из продакшена. Передача начинается с аудита кодовой базы: архитектура, управление состоянием, покрытие тестами и конкретные симптомы, из-за которых вы к нам обратились. Вы получаете письменный отчёт с находками и план по шагам до любых разговоров о пересборке, потому что иногда ответ — две недели точечных исправлений, а не переписывание; и когда это так, мы так и говорим.\"},{\"title\":\"Вы делаете и бэкенд, а не только приложение?\",\"text\":\"Да. ExtraETF работает на бэкенде на Go, который мы построили для раздачи рыночных данных в реальном времени; платформа Formtastic включает бэкенд и веб наряду с приложениями; а для MVP мы осознанно берём управляемые бэкенды вроде Firebase, когда писать свой с нуля означало бы тратить ваш бюджет на сантехнику. Выбор между собственным и управляемым — инженерное решение, которое мы принимаем открыто на этапе оценки, потому что оно двигает и цену, и сроки.\"},{\"title\":\"Останется ли Flutter надёжной ставкой через пять лет?\",\"text\":\"Настолько надёжной, насколько в этой индустрии вообще бывают ставки. Flutter разрабатывается Google в открытую, регулярно выпускает стабильные релизы, лежит в основе критичных для выручки приложений самой Google вроде Google Ads и имеет одно из крупнейших кроссплатформенных сообществ и экосистем пакетов. Ни один выбор фреймворка не свободен от риска — поэтому более прочная страховка это качество кода: хорошо структурированное Flutter-приложение с ясными границами модулей сохраняет бизнес-логику переносимой, что бы индустрия ни сделала дальше.\"},{\"title\":\"Для каких отраслей вы делаете приложения на Flutter?\",\"text\":\"Глубже всего мы работаем в финтехе — инвестиционные, банковские и платёжные продукты — и в медицине, включая телемедицину; у каждой вертикали своя страница услуги с комплаенс- и инженерной спецификой. Помимо них мы выпускали маркетплейсы, социальные и комьюнити-продукты, платформы лояльности и потребительские приложения на базе ИИ. Через все эти проекты переносится продакшен-дисциплина: работа с данными в реальном времени, офлайн-поведение, доступность и требования ревью в сторах.\"},{\"title\":\"Как начать проект с вами?\",\"text\":\"Расскажите через контактную форму, что вы делаете, и приложите всё, что уже существует, — спецификацию, прототип, приложение, уже опубликованное в сторах. Мы вернёмся с вопросами, а не с презентацией, и как только разберёмся в требованиях, вы получите смету под задачу в течение двух рабочих дней: что входит, что явно не входит, сколько это стоит и сколько времени займёт. Если Flutter — не тот инструмент для вашего продукта, именно в этом разговоре мы вам об этом скажем.\"}]",[174,960,961,962,965,966,744,969,973,974,744,976,978],{},"Начните с цифр: ",[209,963,964],{"href":487},"сколько стоит Flutter-приложение в 2026 году",", ",[209,967,968],{"href":906},"сколько времени занимает разработка",[209,970,972],{"href":971},"\u002Fblog\u002Fflutter-app-maintenance-cost","во что обходится сопровождение после запуска",". Или начните с работ: кейсы ",[209,975,601],{"href":600},[209,977,616],{"href":615}," — самое близкое к тому, чтобы увидеть нас посреди проекта.",[174,980,981],{},"*Meta Platforms Inc. признана экстремистской организацией, её деятельность запрещена на территории РФ.",{"title":497,"searchDepth":498,"depth":498,"links":983},[984,989,992,993,994,995,996,997],{"id":587,"depth":498,"text":588,"children":985},[986,987,988],{"id":594,"depth":501,"text":595},{"id":609,"depth":501,"text":610},{"id":620,"depth":501,"text":621},{"id":666,"depth":498,"text":667,"children":990},[991],{"id":673,"depth":501,"text":674},{"id":720,"depth":498,"text":721},{"id":751,"depth":498,"text":752},{"id":795,"depth":498,"text":796},{"id":423,"depth":498,"text":424},{"id":927,"depth":498,"text":928},{"id":951,"depth":498,"text":952},"Одна кодовая база, оба стора и стоимость разработки на 30–40% ниже двух нативных приложений — от команды, которая семь раз довела Flutter до продакшена и публикует свои цены",{"heading":1000,"text":1001,"buttons":1002},"Готовы создать приложение на Flutter?","Расскажите, что вы делаете и для кого. Мы скажем, что для этого нужно, сколько это стоит и подходит ли вам Flutter — прежде чем вы возьмёте на себя какие-либо обязательства.",[1003,1006],{"to":1004,"label":1005,"leadingIcon":527,"color":528,"variant":529},"\u002Fcontact","Начать проект",{"to":570,"label":1007,"color":532,"variant":533},"Посмотреть наши работы",[1009,1011],{"to":1004,"label":1010,"leadingIcon":527,"color":532,"variant":533},"Получить бесплатную консультацию",{"to":1012,"label":1013,"color":528,"variant":529},"#стоимость-разработки-приложений-на-flutter","Посмотреть цены",{"url":1015,"alt":555,"text":1016},"\u002Fservices\u002Fflutter.webp","Создайте один раз — разверните везде",{},"Разработка приложений на Flutter: быстрые и красивые приложения для iOS, Android и веба из единой кодовой базы — на 30-40% дешевле нативной разработки.","Одна кодовая база — iOS, Android и веб, и на 30-40% дешевле нативной разработки. Приложения на Flutter от студии, которая занимается только этим.",null,{"title":555,"description":998},"services\u002Fflutter-app-development","vFy-GrKH4GX7fDeCOk6ki9-BHpJ6p5oJ1fs1VQVJKFg",[],[1026,1041,1054,1069,1082,1097,1113,1126,1139,1156,1169,1180,1190,1203,1215,1225,1234,1248,1261,1267,1281,1296,1309,1322,1335,1346,1357,1368,1381,1391,1404,1415,1429,1440,1454,1463,1474,1487,1500,1513,1526,1538,1550,1562,1572,1584,1595,1609,1620,1632,1643,1656,1668],{"slug":1027,"term":1028,"definition":1029,"category":1030,"aliases":1031,"links":1033,"related":1037,"readMore":-1,"target":1039,"hasArticle":1040},"aosp","AOSP","Android Open Source Project — Android без надстройки Google, который может форкнуть кто угодно. На его форках работают кассовые терминалы, киоски и автомобильные системы, а работа на этом уровне открывает части ОС, которых прикладной разработчик не видит.","platform",[1032],"Android Open Source Project",[1034],{"kind":1035,"url":1036},"website","https:\u002F\u002Fsource.android.com\u002F",[1038],"host-card-emulation","\u002Fglossary#aosp",false,{"slug":1042,"term":1043,"definition":1044,"category":1030,"aliases":1045,"links":1046,"related":1050,"readMore":-1,"target":1053,"hasArticle":1040},"app-clips","App Clips","Функция Apple, позволяющая запустить небольшую часть iOS-приложения — до 15 МБ — не устанавливая его целиком. Вызывается по QR-коду, NFC-метке или ссылке: для случаев, когда первое действие пользователя не должно требовать похода в App Store.",[],[1047],{"kind":1048,"url":1049},"documentation","https:\u002F\u002Fdeveloper.apple.com\u002Fapp-clips\u002F",[1051,1052],"deep-linking","install-referrer","\u002Fglossary#app-clips",{"slug":1055,"term":1056,"definition":1057,"category":1030,"aliases":1058,"links":1059,"related":1065,"readMore":-1,"target":1068,"hasArticle":1040},"bigquery","BigQuery","Аналитическое хранилище Google Cloud. Вы запускаете SQL по миллиардам строк, и они сканируются за секунды, а данные при этом лежат отдельно от машин, выполняющих запросы. Именно это снимает отчётность и исследование данных с базы, обслуживающей живой трафик.",[],[1060,1062],{"kind":1035,"url":1061},"https:\u002F\u002Fcloud.google.com\u002Fbigquery",{"kind":1063,"url":1064},"wikipedia","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FBigQuery",[1066,1067],"object-storage","elasticsearch","\u002Fglossary#bigquery",{"slug":923,"term":1070,"definition":1071,"category":1072,"aliases":1073,"links":1077,"related":1080,"readMore":-1,"target":1081,"hasArticle":1040},"CI\u002FCD","Автоматизация, которая собирает, тестирует и выкладывает каждое изменение без ручного запуска команд. В мобильной разработке это то, что превращает релиз в нажатие кнопки вместо полудня ожидания, пока освободится нужный человек.","practice",[1074,1075,1076],"CI","непрерывная интеграция","непрерывная поставка",[1078],{"kind":1063,"url":1079},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCI\u002FCD",[],"\u002Fglossary#ci-cd",{"slug":1083,"term":1084,"definition":1085,"category":1086,"aliases":1087,"links":1090,"related":1093,"readMore":-1,"target":1096,"hasArticle":1040},"crud","CRUD","Create, read, update, delete — четыре операции, стоящие почти за каждой формой и админкой. Собирательное название для рутинной половины приложения, которая управляет данными, в отличие от частей с реальной предметной логикой.","architecture",[1088,1089],"Create, Read, Update, Delete","создание, чтение, обновление, удаление",[1091],{"kind":1063,"url":1092},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCreate,_read,_update_and_delete",[1094,1095],"rest","graphql","\u002Fglossary#crud",{"slug":1098,"term":1099,"definition":1100,"category":1072,"aliases":1101,"links":1105,"related":1110,"readMore":-1,"target":1112,"hasArticle":1040},"dev-container","Dev Container","Среда разработки, описанная один раз в devcontainer.json — ОС, инструменты и версии рантаймов, которые нужны проекту, — и открываемая одинаково внутри контейнера в редакторе любого участника, вместо инструкции по установке, которую каждый понимает по-своему.",[1102,1103,1104],"devcontainer.json","Dev Containers","VS Code Dev Containers",[1106,1108],{"kind":1035,"url":1107},"https:\u002F\u002Fcontainers.dev\u002F",{"kind":1048,"url":1109},"https:\u002F\u002Fcode.visualstudio.com\u002Fdocs\u002Fdevcontainers\u002Fcontainers",[1111],"container-registry","\u002Fglossary#dev-container",{"slug":1067,"term":1114,"definition":1115,"category":1030,"aliases":1116,"links":1119,"related":1124,"readMore":-1,"target":1125,"hasArticle":1040},"Elasticsearch","Поисковый и аналитический движок, который индексирует записи, чтобы их можно было интерактивно фильтровать и искать, а не сканировать. К нему обращаются, когда вопрос звучит как «покажи вот эти сессии с шестью фильтрами», а не «просуммируй колонку».",[1117,1118],"Elastic","ELK",[1120,1122],{"kind":1035,"url":1121},"https:\u002F\u002Fwww.elastic.co\u002Felasticsearch",{"kind":1063,"url":1123},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FElasticsearch",[1055],"\u002Fglossary#elasticsearch",{"slug":1127,"term":1128,"definition":1129,"category":1086,"aliases":1130,"links":1133,"related":1134,"readMore":-1,"target":1138,"hasArticle":1040},"fan-out","Fan-out","Чтение источника один раз и доставка каждого обновления всем подписанным на него клиентам. Наивная версия пишет подписчикам в цикле и встаёт, как только один из сокетов начинает тормозить; рабочая — держит отдельный буфер на каждого клиента и отключает тех, кто не успевает.",[1131,1132],"веерная рассылка","фан-аут",[],[1135,1136,1137],"websocket","pub-sub","server-sent-events","\u002Fglossary#fan-out",{"slug":1140,"term":1141,"definition":1142,"category":1072,"aliases":1143,"links":1146,"related":1151,"readMore":-1,"target":1155,"hasArticle":1040},"gdpr","GDPR","Регламент ЕС о персональных данных людей в ЕС: законное основание для сбора, настоящее согласие на трекинг, право увидеть и удалить свои данные. Он следует за вашими пользователями, а не за вашими серверами: где зарегистрирована компания, значения не имеет.",[1144,1145],"Общий регламент по защите данных","General Data Protection Regulation",[1147,1149],{"kind":1035,"url":1148},"https:\u002F\u002Fgdpr.eu\u002F",{"kind":1063,"url":1150},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FGeneral_Data_Protection_Regulation",[1152,1153,1154],"pci-dss","soc-2","hipaa","\u002Fglossary#gdpr",{"slug":1157,"term":1158,"definition":1159,"category":1072,"aliases":1160,"links":1164,"related":1167,"readMore":-1,"target":1168,"hasArticle":1040},"golden-test","Golden-тест","Тест, который отрисовывает виджет и сравнивает результат попиксельно с эталонным изображением. Во Flutter это самый дешёвый способ узнать, не сломал ли редизайн пустое состояние на 320pt, в тёмной теме, при 200% масштабе текста.",[1161,1162,1163],"golden test","золотой тест","скриншотный тест",[1165],{"kind":1048,"url":1166},"https:\u002F\u002Fapi.flutter.dev\u002Fflutter\u002Fflutter_test\u002FmatchesGoldenFile.html",[923],"\u002Fglossary#golden-test",{"slug":1095,"term":1170,"definition":1171,"category":1086,"aliases":1172,"links":1173,"related":1178,"readMore":-1,"target":1179,"hasArticle":1040},"GraphQL","Язык запросов к API, где клиент сам перечисляет нужные поля и получает один ответ ровно такой формы. Он снимает избыточную выдачу, к которой дрейфуют REST-эндпоинты, и добавляет собственный режим отказа: неограниченный запрос, обходящий всю модель данных.",[],[1174,1176],{"kind":1035,"url":1175},"https:\u002F\u002Fgraphql.org\u002F",{"kind":1063,"url":1177},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FGraphQL",[1094],"\u002Fglossary#graphql",{"slug":1154,"term":1181,"definition":1182,"category":1072,"aliases":1183,"links":1185,"related":1188,"readMore":-1,"target":1189,"hasArticle":1040},"HIPAA","Закон США о защищённой медицинской информации: как её можно хранить, передавать, логировать и раскрывать. Как и PCI-DSS, это архитектурное ограничение, которое выбирают в начале, а не документ, который дописывают перед запуском.",[1184],"Health Insurance Portability and Accountability Act",[1186],{"kind":1063,"url":1187},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FHealth_Insurance_Portability_and_Accountability_Act",[1152,1140,1153],"\u002Fglossary#hipaa",{"slug":1191,"term":1192,"definition":1193,"category":1086,"aliases":1194,"links":1197,"related":1200,"readMore":-1,"target":1202,"hasArticle":1040},"headless-cms","Headless CMS","Система управления контентом с админкой и API, но без собственного фронтенда. Редакторы публикуют в одном месте, а сайт или приложение отрисовывает контент само — слой представления принадлежит вам, а не вендору CMS.",[1195,1196],"безголовая CMS","контентное API",[1198],{"kind":1063,"url":1199},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FHeadless_content_management_system",[1201,1094],"server-side-rendering","\u002Fglossary#headless-cms",{"slug":1038,"term":1204,"definition":1205,"category":1030,"aliases":1206,"links":1210,"related":1213,"readMore":-1,"target":1214,"hasArticle":1040},"Host Card Emulation","Режим, в котором Android-телефон программно эмулирует бесконтактную карту по NFC, без аппаратного защищённого элемента. Так платит приложение-кошелёк на терминале: телефон говорит с ним по тому же протоколу EMV Contactless, что и пластиковая карта.",[1207,1208,1209],"HCE","EMV Contactless","бесконтактные платежи",[1211],{"kind":1048,"url":1212},"https:\u002F\u002Fdeveloper.android.com\u002Fdevelop\u002Fconnectivity\u002Fnfc\u002Fhce",[1152,1027],"\u002Fglossary#host-card-emulation",{"slug":1216,"term":1217,"definition":1218,"category":1030,"aliases":1219,"links":1220,"related":1223,"readMore":-1,"target":1224,"hasArticle":1040},"impeller","Impeller","Движок рендеринга, на котором Flutter работает сегодня: по умолчанию на iOS с 2023 года и на Android с 2024-го. Он компилирует шейдеры заранее, а не во время первой анимации, что убрало главную видимую проблему Flutter в проде — джанк на компиляции шейдеров.",[],[1221],{"kind":1048,"url":1222},"https:\u002F\u002Fdocs.flutter.dev\u002Fperf\u002Fimpeller",[694],"\u002Fglossary#impeller",{"slug":1052,"term":1226,"definition":1227,"category":1030,"aliases":1228,"links":1229,"related":1232,"readMore":-1,"target":1233,"hasArticle":1040},"Install Referrer","API Google Play, который передаёт только что установленному Android-приложению параметры кампании из ссылки, приведшей к установке. Android-половина отложенного диплинкинга и надёжный способ понять, откуда пришёл пользователь.",[],[1230],{"kind":1048,"url":1231},"https:\u002F\u002Fdeveloper.android.com\u002Fgoogle\u002Fplay\u002Finstallreferrer",[1051,1042],"\u002Fglossary#install-referrer",{"slug":1235,"term":1236,"definition":1237,"category":1238,"aliases":1239,"links":1241,"related":1246,"readMore":-1,"target":1247,"hasArticle":1040},"jwt","JWT","Подписанный токен, несущий свои данные внутри: сервер понимает, кому принадлежит запрос, не обращаясь к хранилищу сессий. Стандарт мобильной аутентификации. Подпись доказывает, что токен не меняли, но не скрывает его содержимое.","protocol",[1240],"JSON Web Token",[1242,1244],{"kind":1035,"url":1243},"https:\u002F\u002Fjwt.io\u002F",{"kind":1063,"url":1245},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FJSON_Web_Token",[1152],"\u002Fglossary#jwt",{"slug":1249,"term":1250,"definition":1251,"category":1072,"aliases":1252,"links":1256,"related":1259,"readMore":-1,"target":1260,"hasArticle":1040},"kyc","KYC","Know Your Customer — проверки личности, которые регулируемый финансовый продукт проводит, прежде чем разрешить переводить деньги: съёмка документов, liveness, санкционный и антиотмывочный скрининг. На онбординг это влияет сильнее любого дизайн-решения.",[1253,1254,1255],"Know Your Customer","AML","KYC\u002FAML",[1257],{"kind":1063,"url":1258},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FKnow_your_customer",[1152,1140],"\u002Fglossary#kyc",{"slug":76,"term":74,"definition":1262,"category":1030,"aliases":1263,"links":1265,"related":1266,"readMore":783,"target":783,"hasArticle":1040},"Переиспользование бизнес-логики на Kotlin между Android, iOS и сервером, при этом интерфейс на каждой платформе остаётся нативным. Альтернатива Flutter, когда UI обязан быть нативным, а правила за ним — нет.",[1264],"KMP",[],[],{"slug":1268,"term":1269,"definition":1270,"category":1271,"aliases":1272,"links":1275,"related":1278,"readMore":-1,"target":1280,"hasArticle":1040},"mvp","MVP","Минимальная версия продукта, которую можно показать реальным пользователям и которая при этом отвечает на вопрос, ради которого его делали. Решение об объёме, а не о качестве: MVP всё равно обязан работать.","business",[1273,1274],"минимально жизнеспособный продукт","minimum viable product",[1276],{"kind":1063,"url":1277},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FMinimum_viable_product",[1279],"white-label","\u002Fglossary#mvp",{"slug":1282,"term":1283,"definition":1284,"category":1238,"aliases":1285,"links":1289,"related":1294,"readMore":-1,"target":1295,"hasArticle":1040},"oauth","OAuth","Стандарт, на котором держатся «Вход через Apple», Google и остальные: пользователь авторизует ваше приложение у провайдера, которому уже доверяет, а приложение получает токен вместо пароля. Никто не заводит новый пароль, и вы его не храните.",[1286,1287,1288],"OAuth 2.0","вход через соцсети","Sign in with Apple",[1290,1292],{"kind":1035,"url":1291},"https:\u002F\u002Foauth.net\u002F2\u002F",{"kind":1063,"url":1293},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FOAuth",[1235],"\u002Fglossary#oauth",{"slug":1152,"term":1297,"definition":1298,"category":1072,"aliases":1299,"links":1302,"related":1307,"readMore":-1,"target":1308,"hasArticle":1040},"PCI-DSS","Стандарт безопасности карточной индустрии, обязательный для всех, кто хранит, обрабатывает или передаёт данные карт. Большинство приложений намеренно остаются вне зоны его действия, отдавая ввод карты сертифицированному платёжному провайдеру.",[1300,1301],"PCI DSS","Payment Card Industry Data Security Standard",[1303,1305],{"kind":1035,"url":1304},"https:\u002F\u002Fwww.pcisecuritystandards.org\u002F",{"kind":1063,"url":1306},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPayment_Card_Industry_Data_Security_Standard",[1235],"\u002Fglossary#pci-dss",{"slug":1310,"term":1311,"definition":1312,"category":1271,"aliases":1313,"links":1316,"related":1319,"readMore":-1,"target":1321,"hasArticle":1040},"product-market-fit","Product-market fit","Момент, когда продукт доказуемо нашёл своих людей: они им пользуются, возвращаются и платят. До него разработка отвечает на вопрос, после — на спрос.",[1314,1315],"PMF","соответствие продукта рынку",[1317],{"kind":1063,"url":1318},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FProduct-market_fit",[1268,1320],"time-to-market","\u002Fglossary#product-market-fit",{"slug":1323,"term":1324,"definition":1325,"category":1072,"aliases":1326,"links":1329,"related":1332,"readMore":-1,"target":1334,"hasArticle":1040},"prompt-injection","Prompt injection","Атака, при которой текст от пользователя языковая модель читает как инструкции, а не как данные, и уходит в обход собственных правил. Родственник SQL-инъекции в эпоху LLM: возникает везде, где пользовательский ввод склеивается в промпт.",[1327,1328],"инъекция промпта","инъекция в промпт",[1330],{"kind":1063,"url":1331},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPrompt_injection",[1333],"rate-limiting","\u002Fglossary#prompt-injection",{"slug":1136,"term":1336,"definition":1337,"category":1086,"aliases":1338,"links":1341,"related":1344,"readMore":-1,"target":1345,"hasArticle":1040},"Pub\u002FSub","Шаблон обмена сообщениями: производитель публикует событие, а любое число потребителей независимо читает его через брокер между ними. Производитель никогда их не ждёт — так путь запроса остаётся быстрым, а более медленная работа выполняется в фоне.",[1339,1340],"публикация\u002Fподписка","Google Cloud Pub\u002FSub",[1342],{"kind":1063,"url":1343},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPublish%E2%80%93subscribe_pattern",[],"\u002Fglossary#pub-sub",{"slug":1094,"term":1347,"definition":1348,"category":1086,"aliases":1349,"links":1352,"related":1355,"readMore":-1,"target":1356,"hasArticle":1040},"REST","Общепринятый стиль HTTP-API: URL называет ресурс, а HTTP-метод говорит, что с ним сделать. Способ по умолчанию, которым приложение общается с бэкендом, и то, что ожидает найти большинство сторонних интеграций.",[1350,1351],"REST API","Representational State Transfer",[1353],{"kind":1063,"url":1354},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FREST",[1135,1137],"\u002Fglossary#rest",{"slug":1153,"term":1358,"definition":1359,"category":1072,"aliases":1360,"links":1363,"related":1366,"readMore":-1,"target":1367,"hasArticle":1040},"SOC 2","Отчёт внешнего аудитора о том, как компания обращается с данными клиентов — безопасность, доступность, конфиденциальность, — а не сертификат, который можно купить. Корпоративные заказчики его требуют, а архитектуру он ограничивает задолго до самого аудита.",[1361,1362],"SOC2","System and Organization Controls",[1364],{"kind":1063,"url":1365},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSystem_and_Organization_Controls",[1152,1140,1154],"\u002Fglossary#soc-2",{"slug":1369,"term":1370,"definition":1371,"category":1271,"aliases":1372,"links":1375,"related":1378,"readMore":-1,"target":1380,"hasArticle":1040},"saas","SaaS","Софт, который продают как постоянную подписку на размещённый у поставщика продукт, а не как разовую лицензию для установки у себя. Поставщик держит серверы, непрерывно выкатывает обновления и берёт плату за пользователя или за объём.",[1373,1374],"Software as a Service","ПО как услуга",[1376],{"kind":1063,"url":1377},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSoftware_as_a_service",[1379,1279],"multi-tenancy","\u002Fglossary#saas",{"slug":1137,"term":1382,"definition":1383,"category":1238,"aliases":1384,"links":1386,"related":1389,"readMore":-1,"target":1390,"hasArticle":1040},"Server-Sent Events","Односторонний поток от сервера к клиенту поверх обычного HTTP-соединения. Проще, чем WebSocket, и достаточен там, где только серверу есть что сказать: прогресс операции, ответ AI, приходящий токен за токеном.",[1385],"SSE",[1387],{"kind":1063,"url":1388},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FServer-sent_events",[1135,1094],"\u002Fglossary#server-sent-events",{"slug":694,"term":1392,"definition":1393,"category":1030,"aliases":1394,"links":1397,"related":1402,"readMore":-1,"target":1403,"hasArticle":1040},"Skia","Открытая 2D-графическая библиотека Google, которая рисует Chrome, Android и — до появления Impeller — каждый кадр Flutter. Она умеет выводить не только на экран, но и в PDF: именно это делает «печать в PDF» в Chrome.",[1395,1396],"Skia Graphics Engine","skia-safe",[1398,1400],{"kind":1035,"url":1399},"https:\u002F\u002Fskia.org\u002F",{"kind":1063,"url":1401},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSkia_Graphics_Engine",[1216],"\u002Fglossary#skia",{"slug":1405,"term":1406,"definition":1407,"category":1271,"aliases":1408,"links":1411,"related":1412,"readMore":-1,"target":1414,"hasArticle":1040},"staff-augmentation","Staff augmentation","Модель найма, при которой инженеры внешнего партнёра входят в вашу команду и работают под вашим управлением — в вашем репозитории, ваших спринтах, вашем процессе, — а не сдают отдельный проект. Вы покупаете ресурс; код и контекст остаются у вас.",[1409,445,1410],"аутстаффинг","выделенные разработчики",[],[1413,1320],"total-cost-of-ownership","\u002Fglossary#staff-augmentation",{"slug":1416,"term":1417,"definition":1418,"category":1238,"aliases":1419,"links":1423,"related":1426,"readMore":-1,"target":1428,"hasArticle":1040},"tls","TLS","Слой шифрования под HTTPS. Он подтверждает, что сервер именно тот, о ком говорит его сертификат, согласует свежий ключ на сессию и шифрует всё дальнейшее — сеть между вами видит шифртекст и не может незаметно его изменить.",[1420,1421,1422],"SSL","HTTPS","Transport Layer Security",[1424],{"kind":1063,"url":1425},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FTransport_Layer_Security",[1427,1235],"end-to-end-encryption","\u002Fglossary#tls",{"slug":1320,"term":1430,"definition":1431,"category":1271,"aliases":1432,"links":1435,"related":1438,"readMore":-1,"target":1439,"hasArticle":1040},"Time to market","Время от решения строить продукт до момента, когда им пользуются настоящие люди. Большинство споров о стеке и объёме работ — на самом деле споры об этом числе: каждая сэкономленная неделя — это неделя выручки, обратной связи и позиции на рынке.",[1433,1434],"TTM","время выхода на рынок",[1436],{"kind":1063,"url":1437},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FTime_to_market",[1268,1413],"\u002Fglossary#time-to-market",{"slug":1441,"term":1442,"definition":1443,"category":1238,"aliases":1444,"links":1446,"related":1451,"readMore":-1,"target":1453,"hasArticle":1040},"webrtc","WebRTC","Браузерный и мобильный стандарт для передачи аудио, видео и данных напрямую между двумя устройствами; серверы участвуют только в том, чтобы их познакомить. На нём строят видеозвонок внутри приложения, когда не берут готовый SDK.",[1445],"Web Real-Time Communication",[1447,1449],{"kind":1035,"url":1448},"https:\u002F\u002Fwebrtc.org\u002F",{"kind":1063,"url":1450},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FWebRTC",[1452,1135],"xmpp","\u002Fglossary#webrtc",{"slug":1135,"term":1455,"definition":1456,"category":1238,"aliases":1457,"links":1458,"related":1461,"readMore":-1,"target":1462,"hasArticle":1040},"WebSocket","Протокол, который держит одно соединение между клиентом и сервером открытым, чтобы любая сторона могла отправить данные в любой момент, а не клиент спрашивал снова и снова. На нём работают живые котировки, чаты и статусы присутствия.",[],[1459],{"kind":1063,"url":1460},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FWebSocket",[1137,1094],"\u002Fglossary#websocket",{"slug":1279,"term":1464,"definition":1465,"category":1271,"aliases":1466,"links":1469,"related":1472,"readMore":1473,"target":1473,"hasArticle":544},"White-label","Один продукт, выпускаемый под многими брендами. White-label платформа собирает каждому клиенту готовое к публикации приложение со своим названием, оформлением и контентом из общей кодовой базы, а не форкает проект под заказчика.",[1467,1468],"белый лейбл","мультитенантное приложение",[1470],{"kind":1063,"url":1471},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FWhite-label_product",[1268],"\u002Fglossary\u002Fwhite-label",{"slug":1452,"term":1475,"definition":1476,"category":1238,"aliases":1477,"links":1480,"related":1485,"readMore":-1,"target":1486,"hasArticle":1040},"XMPP","Открытый федеративный протокол обмена сообщениями и давняя альтернатива тому, чтобы писать чат-бэкенд самому или арендовать чужой. Он покрывает статусы присутствия, индикаторы набора и передачу файлов, а зрелые клиентские библиотеки есть под любую платформу.",[1478,1479],"Jabber","Extensible Messaging and Presence Protocol",[1481,1483],{"kind":1035,"url":1482},"https:\u002F\u002Fxmpp.org\u002F",{"kind":1063,"url":1484},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FXMPP",[1441,1135],"\u002Fglossary#xmpp",{"slug":1488,"term":1489,"definition":1490,"category":1271,"aliases":1491,"links":1495,"related":1498,"readMore":-1,"target":1499,"hasArticle":1040},"in-app-purchase","Встроенные покупки","Продажа цифровых товаров и подписок через биллинг Apple и Google, который оба стора требуют для цифрового контента и с которого берут комиссию. Сложность никогда не в самой покупке, а в её восстановлении на новом устройстве и в честном учёте прав доступа.",[1492,1493,1494],"in-app purchase","IAP","внутренние покупки",[1496],{"kind":1048,"url":1497},"https:\u002F\u002Fdeveloper.apple.com\u002Fin-app-purchase\u002F",[1310],"\u002Fglossary#in-app-purchase",{"slug":1051,"term":1501,"definition":1502,"category":1030,"aliases":1503,"links":1508,"related":1511,"readMore":1512,"target":1512,"hasArticle":544},"Диплинкинг","Ссылка, которая открывает конкретный экран внутри установленного приложения, а не его главную или веб-страницу. Отложенный диплинкинг переживает установку: нажатие, прошедшее через магазин приложений, всё равно приводит на нужный экран.",[1504,1505,1506,1507],"deep linking","отложенный диплинкинг","Universal Links","Android App Links",[1509],{"kind":1063,"url":1510},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FMobile_deep_linking",[1042,1052],"\u002Fglossary\u002Fdeep-linking",{"slug":1514,"term":1515,"definition":1516,"category":1086,"aliases":1517,"links":1521,"related":1524,"readMore":-1,"target":1525,"hasArticle":1040},"multi-arch-image","Мультиархитектурный образ","Один тег образа, который разрешается в разные бинарники для каждой архитектуры процессора — обычно это пара linux\u002Famd64 и linux\u002Farm64, — так что один и тот же docker pull работает без изменений и на серверах Intel\u002FAMD, и на ноутбуках с Apple Silicon.",[1518,1519,1520],"мультиарх-сборка","multi-arch build","linux\u002Famd64 + linux\u002Farm64",[1522],{"kind":1048,"url":1523},"https:\u002F\u002Fdocs.docker.com\u002Fbuild\u002Fbuilding\u002Fmulti-platform\u002F",[1111],"\u002Fglossary#multi-arch-image",{"slug":1379,"term":1527,"definition":1528,"category":1086,"aliases":1529,"links":1532,"related":1535,"readMore":-1,"target":1537,"hasArticle":1040},"Мультитенантность","Один развёрнутый бэкенд обслуживает много клиентов, и каждый видит только свои данные, конфигурацию и включённые функции, потому что контекст тенанта определяется для каждого запроса. Именно это делает линейку брендированных приложений одним продуктом, а не набором форков.",[1379,1530,1531],"мультиарендность","тенант",[1533],{"kind":1063,"url":1534},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FMultitenancy",[1279,1536],"feature-flags","\u002Fglossary#multi-tenancy",{"slug":1066,"term":1539,"definition":1540,"category":1086,"aliases":1541,"links":1545,"related":1548,"readMore":-1,"target":1549,"hasArticle":1040},"Объектное хранилище","Хранилище, которое держит файл целиком под ключом, а не в дереве файловой системы, — Amazon S3 и множество сервисов, совместимых с его API. Дешёвое, практически безграничное, привычное место для сырых событий, бэкапов и медиа: пишется один раз, читается редко, хранится вечно.",[1542,1543,1544],"S3","S3-совместимое хранилище","блоб-хранилище",[1546],{"kind":1063,"url":1547},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FObject_storage",[1055],"\u002Fglossary#object-storage",{"slug":1333,"term":1551,"definition":1552,"category":1072,"aliases":1553,"links":1557,"related":1560,"readMore":-1,"target":1561,"hasArticle":1040},"Ограничение частоты запросов","Предел на число запросов от одного клиента за заданный интервал. Именно он не даёт одному увлечённому пользователю, скраперу или боту потратить месячный бюджет платного API за вечер, и стоять он должен на вашей стороне интеграции.",[1554,1555,1556],"rate limiting","рейт-лимит","троттлинг",[1558],{"kind":1063,"url":1559},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FRate_limiting",[1323],"\u002Fglossary#rate-limiting",{"slug":183,"term":1563,"definition":1564,"category":1030,"aliases":1565,"links":1567,"related":1570,"readMore":-1,"target":1571,"hasArticle":1040},"Платформенные каналы","Мост, через который Flutter-приложение вызывает нативный код iOS и Android — Keychain и Keystore, биометрию, платёжные шторки, любой SDK без Dart-пакета. Работа рутинная, но настоящая, и первое место, где споткнётся инженер, не выходивший за пределы Dart.",[184,1566],"method channel",[1568],{"kind":1048,"url":1569},"https:\u002F\u002Fdocs.flutter.dev\u002Fplatform-integration\u002Fplatform-channels",[76],"\u002Fglossary#platform-channels",{"slug":1573,"term":1574,"definition":1575,"category":1238,"aliases":1576,"links":1579,"related":1582,"readMore":-1,"target":1583,"hasArticle":1040},"post-quantum-cryptography","Постквантовая криптография","Алгоритмы шифрования, рассчитанные на устойчивость к будущему квантовому компьютеру; стандарты уже финализированы NIST. Мигрировать нужно до появления железа: трафик, записанный сегодня, расшифруют, когда такая машина появится.",[1577,1578],"PQC","постквантовое шифрование",[1580],{"kind":1063,"url":1581},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPost-quantum_cryptography",[1416,1427],"\u002Fglossary#post-quantum-cryptography",{"slug":1585,"term":1586,"definition":1587,"category":1072,"aliases":1588,"links":1592,"related":1593,"readMore":-1,"target":1594,"hasArticle":1040},"staged-rollout","Поэтапная раскатка","Релиз сначала на небольшой процент пользователей и расширение только тогда, когда доля сессий без падений держится. Плохая сборка, пойманная на десяти процентах, — испорченный вечер; она же на ста процентах — испорченная неделя.",[1589,1590,1591],"staged rollout","phased release","канареечный релиз",[],[1536,923],"\u002Fglossary#staged-rollout",{"slug":1111,"term":1596,"definition":1597,"category":1086,"aliases":1598,"links":1604,"related":1607,"readMore":-1,"target":1608,"hasArticle":1040},"Реестр контейнеров","Хранилище образов контейнеров, адресуемых по имени и тегу, — Docker Hub, GitHub Container Registry или собственный реестр облачного провайдера. Публикация сборки в реестр превращает «у меня работает» в образ, который любой может скачать и запустить без изменений.",[1599,1600,1601,1602,1603],"реестр образов","Docker registry","GHCR","ghcr.io","container registry",[1605],{"kind":1048,"url":1606},"https:\u002F\u002Fdocs.github.com\u002Fen\u002Fpackages\u002Fworking-with-a-github-packages-registry\u002Fworking-with-the-container-registry",[1098,1514],"\u002Fglossary#container-registry",{"slug":1201,"term":1610,"definition":1611,"category":1086,"aliases":1612,"links":1615,"related":1618,"readMore":-1,"target":1619,"hasArticle":1040},"Серверный рендеринг","Сборка страницы в готовый HTML на сервере, чтобы первый же ответ содержал контент, заголовки, метатеги и структурированные данные. Краулеры, превью ссылок и медленные устройства читают это, не выполняя JavaScript.",[1613,1614],"SSR","server-side rendering",[1616],{"kind":1063,"url":1617},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FServer-side_scripting",[1191],"\u002Fglossary#server-side-rendering",{"slug":1427,"term":1621,"definition":1622,"category":1086,"aliases":1623,"links":1627,"related":1630,"readMore":-1,"target":1631,"hasArticle":1040},"Сквозное шифрование","Шифрование, которое накладывается на устройстве отправителя и снимается только на устройстве получателя, так что сервис, передающий сообщение, не может его прочитать — ни по решению суда, ни после взлома. Оно защищает содержимое, но никогда — метаданные.",[1624,1625,1626],"E2EE","end-to-end encryption","оконечное шифрование",[1628],{"kind":1063,"url":1629},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FEnd-to-end_encryption",[1416,1235],"\u002Fglossary#end-to-end-encryption",{"slug":1413,"term":1633,"definition":1634,"category":1271,"aliases":1635,"links":1638,"related":1641,"readMore":-1,"target":1642,"hasArticle":1040},"Совокупная стоимость владения","Во что продукт обходится за всю жизнь, а не только на этапе разработки: поддержка, обновления, ежегодные миграции на новые ОС и правила сторов, вторая команда, чтобы две кодовые базы не расходились. Обычно больше сметы на разработку и почти никогда в неё не входит.",[1636,1637],"TCO","total cost of ownership",[1639],{"kind":1063,"url":1640},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FTotal_cost_of_ownership",[1320],"\u002Fglossary#total-cost-of-ownership",{"slug":1644,"term":1645,"definition":1646,"category":1086,"aliases":1647,"links":1651,"related":1654,"readMore":-1,"target":1655,"hasArticle":1040},"state-management","Управление состоянием","То, как приложение решает, где живёт значение, кому позволено его менять и какие части экрана перерисовываются, когда оно меняется. Во Flutter выбор между Riverpod, BLoC и Provider — одно из первых архитектурных решений и одно из самых трудных для пересмотра.",[1648,1649,1650],"state management","BLoC","Riverpod",[1652],{"kind":1048,"url":1653},"https:\u002F\u002Fdocs.flutter.dev\u002Fdata-and-backend\u002Fstate-mgmt\u002Foptions",[1157],"\u002Fglossary#state-management",{"slug":1536,"term":1657,"definition":1658,"category":1072,"aliases":1659,"links":1663,"related":1666,"readMore":-1,"target":1667,"hasArticle":1040},"Фиче-флаги","Переключатели, которые включают и выключают функциональность из конфигурации, а не из релиза. Один бинарник ведёт себя по-разному для разных брендов, рынков и пользователей, а рискованную фичу можно погасить, не отправляя новую сборку на ревью.",[1660,1661,1662],"feature flags","фиче-флаги","feature toggle",[1664],{"kind":1063,"url":1665},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FFeature_toggle",[1585,1279,1379],"\u002Fglossary#feature-flags",{"slug":1669,"term":1670,"definition":1671,"category":1086,"aliases":1672,"links":1676,"related":1679,"readMore":-1,"target":1680,"hasArticle":1040},"floating-point","Числа с плавающей точкой","Двоичный формат IEEE 754, стоящий за double и float. Он не хранит 0.1 точно, поэтому 0.1 + 0.2 даёт 0.30000000000000004 — незаметно в графике и фатально в деньгах, которым место в целых минорных единицах или в decimal-типе.",[1673,1674,1675],"IEEE 754","double","плавающая запятая",[1677],{"kind":1063,"url":1678},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FIEEE_754",[],"\u002Fglossary#floating-point"]