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