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