[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"technologies":3,"\u002Fservices\u002Fflutter-app-development\u002Fadd-to-app":167,"service-parent:\u002Fservices\u002Fflutter-app-development\u002Fadd-to-app":515,"service-children:\u002Fservices\u002Fflutter-app-development\u002Fadd-to-app":1012,"glossary":1013},[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","Every app we ship reaches Android — platform APIs, background execution, permissions, and the store requirements that come with them.","android","framework","logos:android-icon",{"title":11,"description":12,"slug":13,"category":8,"icon":14},"Angular","The front-end framework we work in when a product is already Angular — a batteries-included structure that suits large, long-lived apps.","angular","logos:angular-icon",{"title":16,"description":17,"slug":18,"category":19,"icon":20},"Dart","The language every Flutter app we ship is written in — sound null safety, real pattern matching, and a compiler that targets native and the web.","dart","language","logos:dart",{"title":22,"description":23,"slug":24,"category":8,"icon":25},"Django","The Python framework we use when a product needs an admin, auth and a real data model on day one rather than a hand-rolled service.","django","logos:django-icon",{"title":27,"description":28,"slug":29,"category":30,"icon":31},"Docker","Every service we build ships as a container, so what runs on a laptop, in CI and in production is one artefact rather than three of them.","docker","infrastructure","logos:docker-icon",{"title":33,"description":34,"slug":35,"category":36,"icon":37},"Fastlane","The release automation behind our mobile work — signing, builds and store uploads run from CI instead of from one engineer's laptop on release day.","fastlane","tools","logos:fastlane",{"title":39,"description":40,"slug":41,"category":8,"icon":42},"Flutter","Our primary mobile stack since 2018 — one Dart codebase shipping to iOS, Android, web and desktop without a separate team per platform.","flutter","logos:flutter",{"title":44,"description":45,"slug":46,"category":36,"icon":47},"Git","Every project we touch lives in Git — reviewed pull requests, CI on every branch, and a history that still makes sense months later.","git","logos:git-icon",{"title":49,"description":50,"slug":51,"category":19,"icon":52},"Go","Our backend language for real-time APIs and services under load — small binaries, fast builds, and concurrency that stays readable.","go","logos:gopher",{"title":54,"description":55,"slug":56,"category":30,"icon":57},"Google Cloud","The cloud our production workloads run on — managed Kubernetes, storage and networking, without hand-built servers nobody wants to maintain.","gcp","logos:google-cloud",{"title":59,"description":60,"slug":61,"category":36,"icon":62},"Gradle","The build system every Android release goes through — product flavours, signing configs, and the dependency wiring under a Flutter app.","gradle","logos:gradle",{"title":64,"description":65,"slug":66,"category":30,"icon":67},"Helm","How we package a Kubernetes deployment — service, config, secrets and ingress as one versioned unit that can be promoted and rolled back.","helm","logos:helm",{"title":69,"description":70,"slug":71,"category":19,"icon":72},"Kotlin","What we reach for when a Flutter app needs real Android underneath it — platform channels, background work, and native SDK integrations.","kotlin","logos:kotlin-icon",{"title":74,"description":75,"slug":76,"category":8,"icon":72},"Kotlin Multiplatform","Sharing business logic across iOS and Android while each platform keeps its own native UI — the alternative when Flutter is not the right fit.","kmp",{"title":78,"description":79,"slug":80,"category":30,"icon":81},"Kubernetes","How we run services in production — Helm-packaged deployments, rollouts that can be rolled back, and scaling that does not need a person at 3am.","kubernetes","logos:kubernetes",{"title":83,"description":84,"slug":85,"category":30,"icon":86},"NATS","Lightweight messaging between services — publish\u002Fsubscribe and request\u002Freply without the operational weight of a full broker cluster.","nats","logos:nats-icon",{"title":88,"description":89,"slug":90,"category":8,"icon":91},"Nuxt","Vue with server rendering, routing and SEO handled — how we build marketing sites and web apps that must be fast and indexable on first load.","nuxt","logos:nuxt-icon",{"title":93,"description":94,"slug":95,"category":19,"icon":96},"PHP","Where we work with an existing PHP backend — extending it, integrating with it, and building the mobile and web clients it has to serve.","php","logos:php",{"title":98,"description":99,"slug":100,"category":101,"icon":102},"PostgreSQL","Our default database — the one we reach for unless a product gives us a specific reason not to, from schema design through to index tuning.","postgres","database","logos:postgresql",{"title":104,"description":105,"slug":106,"category":19,"icon":107},"Python","Our language for backends, data work and AI integrations — including the Python bindings we ship for our own Rust tooling.","python","logos:python",{"title":109,"description":110,"slug":111,"category":8,"icon":112},"React","The front-end library we work in when a product is already React — components, hooks, and the ecosystem that has grown around them.","react","logos:react",{"title":114,"description":115,"slug":116,"category":101,"icon":117},"Redis","Where we put data that has to be fast and can be rebuilt — caches, sessions, rate limits, and the queues behind a product's slow paths.","redis","logos:redis",{"title":119,"description":120,"slug":121,"category":19,"icon":122},"Ruby","The language our mobile release automation is written in — Fastlane lanes, custom actions, and the CI glue that ships builds to the stores.","ruby","logos:ruby",{"title":124,"description":125,"slug":126,"category":19,"icon":127},"Rust","Where we go when performance and correctness both matter — document rendering, CLI tooling, and services that have to stay fast and predictable.","rust","simple-icons:rust",{"title":129,"description":130,"slug":131,"category":101,"icon":132},"SQLite","The database that ships inside the app — local caches, offline-first storage, and anything that still has to work with no network.","sqlite","logos:sqlite",{"title":134,"description":135,"slug":136,"category":8,"icon":137},"Strapi","A headless CMS we reach for when editors need to own the content — a real admin and a clean API, without building either from scratch.","strapi","logos:strapi-icon",{"title":139,"description":140,"slug":141,"category":19,"icon":142},"Swift","What we reach for when a Flutter app needs real iOS underneath it — platform channels, native SDK integrations, widgets and App Clips.","swift","logos:swift",{"title":144,"description":145,"slug":146,"category":8,"icon":142},"SwiftUI","Apple's UI framework, where we build the native surfaces a Flutter app cannot own — widgets, App Clips, extensions and system integrations.","swiftui",{"title":148,"description":149,"slug":150,"category":8,"icon":151},"Tailwind CSS","How we style every front end we build — utility classes and design tokens instead of a stylesheet that only ever grows and is never deleted.","tailwind","logos:tailwindcss-icon",{"title":153,"description":154,"slug":155,"category":19,"icon":156},"TypeScript","The default for everything we write for the browser and for Node services — types that catch integration bugs before they reach a review.","typescript","logos:typescript-icon",{"title":158,"description":159,"slug":160,"category":8,"icon":161},"Vue","Our front-end framework for admin panels, merchant dashboards and product web apps that have to stay maintainable for years, not sprints.","vue","logos:vue",{"title":163,"description":164,"slug":165,"category":36,"icon":166},"Whisper","OpenAI's open-source speech recognition model — the transcription engine behind voice input, running as both a backend service and on-device in the app.","whisper","simple-icons:openai",{"id":168,"title":169,"body":170,"description":478,"extension":479,"footerCta":480,"headingCta":494,"image":499,"meta":503,"metaDescription":504,"metaTitle":505,"navigation":506,"ogDescription":507,"parent":508,"path":509,"seo":510,"slug":511,"stem":512,"updated":513,"__hash__":514},"services_en\u002Fservices\u002Fadd-to-app.md","Add-to-App: Flutter in Your Native App",{"type":171,"value":172,"toc":453},"minimark",[173,177,191,196,225,230,233,237,251,255,273,282,286,290,295,302,306,310,313,317,320,324,333,337,345,349,352,356,359,363,370,374,385,396,399,403,416,429,433,436,440],[174,175,176],"p",{},"Add-to-app is Flutter's official mechanism for embedding a Flutter module inside an existing native iOS or Android application. The host app stays exactly what it is — your Swift or Kotlin codebase, your release process, your users — and Flutter arrives as one compiled module behind it, rendering the screens you choose to give it. Each of those screens is written once and runs on both platforms.",[174,178,179,180,184,185,190],{},"This page is for teams who want Flutter ",[181,182,183],"em",{},"inside"," the app they already have: a native product nobody is going to rewrite, whose next features keep costing twice because they must be built for iOS and Android separately. If your actual goal is to end up on Flutter entirely, that is a different engagement with the same mechanics — read ",[186,187,189],"a",{"href":188},"\u002Fservices\u002Fflutter-app-development\u002Fflutter-migration","React Native and native migration"," instead, which is honest about being a rewrite. Here, nothing gets rewritten: the native app remains the product, and Flutter earns its place one feature at a time.",[192,193,195],"h3",{"id":194},"the-engagements-we-run","The engagements we run",[197,198,199,207,213,219],"ul",{},[200,201,202,206],"li",{},[203,204,205],"strong",{},"A pilot feature"," — one bounded feature built in Flutter and shipped inside both of your native apps, with the integration cost and the payoff measured rather than argued about",[200,208,209,212],{},[203,210,211],{},"Feature-parity catch-up"," — the screen your iOS app has and your Android app doesn't (or the other way round), built once for both instead of a second time for one",[200,214,215,218],{},[203,216,217],{},"The new surface"," — a loyalty program, a booking flow, a chat: a self-contained addition to a mature native product, reaching both platforms on one budget",[200,220,221,224],{},[203,222,223],{},"Adoption groundwork"," — the module scaffolding, router integration, CI wiring, and platform-channel contracts set up properly, so your own engineers ship the features",[226,227,229],"h2",{"id":228},"who-this-is-for-and-who-should-migrate-instead","Who This Is For — and Who Should Migrate Instead",[174,231,232],{},"Add-to-app pays for itself under specific conditions, and we would rather name them than sell an integration to a team that needs something else.",[192,234,236],{"id":235},"signs-add-to-app-fits","Signs add-to-app fits",[197,238,239,242,245,248],{},[200,240,241],{},"Every roadmap feature is built twice, and the iOS and Android versions of your app have started to drift apart in capability",[200,243,244],{},"The app is too large or too proven to rewrite, so \"just use Flutter\" has never been an available answer",[200,246,247],{},"You want to evaluate Flutter on real production work — one feature, real users, measured — before making any larger commitment",[200,249,250],{},"Two platform teams are hard to staff evenly, and new surfaces stall on whichever platform is short-handed this quarter",[192,252,254],{"id":253},"when-it-is-not-the-right-call","When it is NOT the right call",[197,256,257,264,267,270],{},[200,258,259,260,263],{},"The app is small enough that a fresh Flutter build or a screen-by-screen ",[186,261,262],{"href":188},"migration"," costs less than maintaining a native–Flutter seam — integration has overhead, and a small host cannot amortize it",[200,265,266],{},"The decision to end up 100% Flutter is already made — then run it as a migration from day one, with a migration map, rather than drifting into one",[200,268,269],{},"The app is already React Native — embedding a second cross-platform runtime next to the first one compounds the problem; that team's realistic options are staying put or migrating",[200,271,272],{},"The feature you want is a deep platform capability — a widget-led experience, Watch-first functionality — where Flutter is the wrong tool and we will say so",[274,275,276],"info-box",{},[174,277,278,281],{},[203,279,280],{},"The honest read:"," a hybrid app is a permanent seam — two toolchains, two sets of idioms, and a boundary that every engineer on the team has to understand. Add-to-app is worth that cost when the host app is too big to rewrite and the roadmap keeps paying the two-platform tax. If neither is true of your app, one of the neighbouring pages is the better answer, and the first call is where we tell you which.",[226,283,285],{"id":284},"how-incremental-adoption-runs","How Incremental Adoption Runs",[192,287,289],{"id":288},"the-add-to-app-flow","The Add-to-App Flow",[291,292],"add-to-app-flow",{":items":293,"step-label":294},"[{\"label\": \"Native App Stays the Product\", \"description\": \"Your iOS and Android apps keep shipping unchanged — no freeze, no parallel rewrite, no cutover on the horizon\", \"icon\": \"lucide:smartphone\"}, {\"label\": \"Flutter Module Embedded\", \"description\": \"One Flutter module is wired into both hosts, sharing their navigation, authentication, and analytics through defined contracts\", \"icon\": \"lucide:puzzle\"}, {\"label\": \"Pilot Feature Ships\", \"description\": \"A bounded feature is built once in Flutter and released inside both apps, with size and startup cost measured before and after\", \"icon\": \"lucide:rocket\"}, {\"label\": \"Adoption Grows Feature by Feature\", \"description\": \"Each new surface that lands in the module is one you did not build twice — and each one is a decision, not an obligation\", \"icon\": \"lucide:layers\"}, {\"label\": \"You Decide the Endgame\", \"description\": \"Stay hybrid indefinitely, hand the module to your own team, or convert the momentum into a full migration — every boundary is a stopping point\", \"icon\": \"lucide:git-branch\"}]","Step",[174,296,297,298,301],{},"The flow is deliberately the same machinery our ",[186,299,300],{"href":188},"migration service"," uses — a Flutter module behind a shared router, screens moving one at a time. The difference is the destination: a migration retires the native host at the end, and adoption never has to. That also means adoption converts cleanly into a migration later if the module earns it, with nothing thrown away.",[226,303,305],{"id":304},"what-add-to-app-actually-demands","What Add-to-App Actually Demands",[192,307,309],{"id":308},"one-engine-with-an-owned-lifecycle","One engine, with an owned lifecycle",[174,311,312],{},"A Flutter module brings the Flutter engine with it, and the engine is a resource the host app must manage deliberately: pre-warmed so the first Flutter screen opens without a visible spin-up, shared across entry points rather than instantiated per screen, and released when the platform asks for memory back. Getting this wrong is invisible in a demo and obvious in production. It is the first thing we build, not the last thing we tune.",[192,314,316],{"id":315},"navigation-across-the-boundary","Navigation across the boundary",[174,318,319],{},"Users do not care which framework rendered the screen they are on, and the navigation must agree: back gestures behaving per platform convention, deep links landing on Flutter screens as reliably as native ones, and state surviving the crossing in both directions. The router contract between host and module is the piece of add-to-app architecture that decides whether the seam is invisible or a permanent source of bugs.",[192,321,323],{"id":322},"shared-services-borrowed-rather-than-duplicated","Shared services, borrowed rather than duplicated",[174,325,326,327,332],{},"Your app already has authentication, analytics, networking, and feature flags. The Flutter module must borrow them across ",[328,329,331],"term",{"slug":330},"platform-channels","platform channels"," — not grow its own copies, which is how a hybrid app ends up with two sessions, two event schemas, and metrics nobody trusts. Defining those channel contracts precisely is most of the groundwork engagement, and it is work that pays out on every feature that follows.",[192,334,336],{"id":335},"two-toolchains-in-one-pipeline","Two toolchains in one pipeline",[174,338,339,340,344],{},"After integration, your ",[328,341,343],{"slug":342},"ci-cd","CI\u002FCD"," builds the Flutter module and both native hosts, and the module is versioned against two release trains that will not always move together. We wire the module build into your existing pipeline — cached, reproducible, and owned by your repo rather than by a laptop — because an integration your CI cannot build is not integrated.",[192,346,348],{"id":347},"a-seam-your-designers-can-live-with","A seam your designers can live with",[174,350,351],{},"Flutter draws its own pixels, which cuts both ways: it will not inherit your native components, but it will reproduce your design system exactly — once your tokens, typography, and spacing are ported into the module's theme. We do that porting as part of the groundwork, so a user scrolling from a native screen into a Flutter one has no way to tell where the boundary was.",[192,353,355],{"id":354},"the-costs-measured-instead-of-asserted","The costs, measured instead of asserted",[174,357,358],{},"Embedding Flutter adds real weight: on the order of several megabytes to an Android release and somewhat more on iOS, plus engine startup on first launch of a Flutter screen. The exact numbers depend on your app, which is why the pilot's deliverables include the before-and-after measurements of binary size and startup time — you decide whether to go further with data from your own product, not from a benchmark blog post.",[226,360,362],{"id":361},"production-precedent","Production Precedent",[174,364,365,366,369],{},"Add-to-app has been a supported Flutter integration model for years, and its best-known user is Google Pay, which adopted Flutter inside an existing native app with hundreds of millions of users before committing further. The pattern is the one this page describes: embed, ship one surface, measure, then decide. Our own delivery record with it comes from ",[186,367,368],{"href":188},"migration work",", where the same module-behind-a-router machinery carries whole apps across; adoption uses that machinery with a lighter commitment.",[226,371,373],{"id":372},"how-we-work","How We Work",[174,375,376,379,380,384],{},[203,377,378],{},"Fixed-scope groundwork and pilot."," We integrate the module into both hosts, port the design tokens, define the channel contracts, and ship the first feature — a bounded engagement with the measurements as part of the deliverable. Our ",[186,381,383],{"href":382},"\u002Fblog\u002Fflutter-app-development-process","development process"," describes how we run scoped work week to week.",[174,386,387,390,391,395],{},[203,388,389],{},"Embedded engineers."," Our Flutter engineers join your native team, in your repo and your sprints, and build out the module alongside the people who own the host — see ",[186,392,394],{"href":393},"\u002Fservices\u002Fteam-augmentation","team augmentation",". This is the natural shape once the pilot has proven out and the module becomes a place where your roadmap regularly lands.",[174,397,398],{},"Either way, we send a scoped quote within two business days of understanding the requirements.",[226,400,402],{"id":401},"what-add-to-app-integration-costs","What Add-to-App Integration Costs",[174,404,405,406,410,411,415],{},"The groundwork-plus-pilot engagement is quoted after we see the app: the integration cost is driven by the host — its navigation architecture, its build system, how its shared services are exposed — far more than by the pilot feature itself, so a number produced before looking at the codebase would be fiction. As an anchor, a bounded pilot lands well below what a standalone app costs — the published tiers on the ",[186,407,409],{"href":408},"\u002Fservices\u002Fflutter-app-development","Flutter app development"," page start at ",[412,413],"service-price",{"service":414},"flutter-app-development\u002Fmvp"," for a full MVP, and a pilot feature inside an existing host is a fraction of that scope.",[174,417,418,419,421,422,425,426,428],{},"For the embedded model, the published ",[186,420,394],{"href":393}," rate applies: ",[412,423],{"service":424},"team-augmentation\u002Fsenior"," per senior engineer per month. And if the roadmap's honest endgame is an app that is entirely Flutter, price it as what it is — a ",[186,427,262],{"href":188},", which that page anchors against a full rebuild, not as an adoption that outgrew its name.",[226,430,432],{"id":431},"frequently-asked-questions","Frequently Asked Questions",[174,434,435],{},"Common questions from teams considering Flutter inside an existing native app.",[437,438],"questions",{":items":439},"[{\"title\":\"Can you add Flutter to an existing iOS or Android app?\",\"text\":\"Yes — that is precisely what Flutter's add-to-app integration model exists for. A Flutter module is embedded into your existing Swift or Kotlin app, wired into its navigation, authentication, and analytics through platform channels, and renders the screens you choose to build in it. Your app keeps shipping unchanged throughout; the module is added alongside the code you have, not instead of it. Each Flutter screen is written once and runs inside both your iOS and Android apps.\"},{\"title\":\"Do we have to migrate the whole app to Flutter?\",\"text\":\"No. Adoption and migration share the same mechanics — a Flutter module behind a shared router — but a migration commits to retiring the native app at the end, and adoption never has to. Every feature boundary is a legitimate stopping point: some products stay hybrid indefinitely with Flutter owning a handful of surfaces, some hand the module to their own team, and some convert the momentum into a full migration once the module has earned it. Nothing built during adoption is thrown away if you later go further.\"},{\"title\":\"How much does embedding Flutter add to app size?\",\"text\":\"The Flutter engine and module add real weight — on the order of several megabytes to an Android release build and somewhat more on iOS. The precise number depends on your app and what the module contains, which is why our pilot engagement includes before-and-after measurements of binary size and startup time on your actual product. You make the adoption decision from your own numbers, not from a generic benchmark.\"},{\"title\":\"Does add-to-app make sense for a React Native app?\",\"text\":\"Mechanically it works — Flutter can be embedded into a React Native host the same way as into a fully native one. Strategically it rarely makes sense: you would be running two cross-platform runtimes, two bridges, and three UI idioms in one binary, which compounds the maintenance problem instead of solving it. For a React Native team unhappy with the status quo, the realistic options are staying put or migrating to Flutter screen by screen — and our migration page opens by telling you who should do neither.\"},{\"title\":\"Is add-to-app production-proven?\",\"text\":\"Yes. Add-to-app has been a supported Flutter integration model for years, and its best-known adopter is Google Pay, which embedded Flutter inside a native app serving hundreds of millions of users before extending its commitment. The pattern of embedding a module, shipping one surface, measuring, and then deciding is well trodden. The engineering risks that remain are the integration details — engine lifecycle, navigation across the boundary, duplicated services — which is exactly the work a structured groundwork engagement front-loads.\"},{\"title\":\"Do our native engineers need to learn Dart?\",\"text\":\"Not for the pilot — we build it, and your team reviews the module boundary rather than the Dart inside it. If Flutter adoption grows, some of your engineers will want to work in the module, and Dart is a small step from Swift or Kotlin: strongly typed, garbage collected, and closer to what they already write than JavaScript would be. The embedded-engineer model exists for exactly this transition — our people build alongside yours until the module is a codebase your team owns rather than one it hosts.\"}]",[174,441,442,443,446,447,449,450,452],{},"Read the ",[186,444,445],{"href":188},"migration page"," if the destination is all-Flutter, ",[186,448,394],{"href":393}," for the embedded model, or start from the ",[186,451,409],{"href":408}," pillar.",{"title":454,"searchDepth":455,"depth":455,"links":456},"",2,[457,459,463,466,474,475,476,477],{"id":194,"depth":458,"text":195},3,{"id":228,"depth":455,"text":229,"children":460},[461,462],{"id":235,"depth":458,"text":236},{"id":253,"depth":458,"text":254},{"id":284,"depth":455,"text":285,"children":464},[465],{"id":288,"depth":458,"text":289},{"id":304,"depth":455,"text":305,"children":467},[468,469,470,471,472,473],{"id":308,"depth":458,"text":309},{"id":315,"depth":458,"text":316},{"id":322,"depth":458,"text":323},{"id":335,"depth":458,"text":336},{"id":347,"depth":458,"text":348},{"id":354,"depth":458,"text":355},{"id":361,"depth":455,"text":362},{"id":372,"depth":455,"text":373},{"id":401,"depth":455,"text":402},{"id":431,"depth":455,"text":432},"New features in Flutter inside the iOS and Android apps you already ship — one embedded module, screen by screen, without committing to a migration","md",{"heading":481,"text":482,"buttons":483},"Thinking About Flutter Inside Your App?","Tell us what the next feature on your roadmap is and which platforms it has to reach. We will tell you what embedding Flutter into your app involves, what it costs, and whether it is worth it for an app your size.",[484,490],{"to":485,"label":486,"leadingIcon":487,"color":488,"variant":489},"\u002Fcontact?intent=flutter-app-development","Book a Consultation","lucide:message-circle","neutral","outline",{"to":188,"label":491,"color":492,"variant":493},"Migrating instead? Start here","primary","solid",[495,496],{"to":485,"label":486,"leadingIcon":487,"color":492,"variant":493},{"to":497,"label":498,"color":488,"variant":489},"\u002Fportfolio","See Our Work",{"url":500,"alt":501,"text":502},"\u002Fservices\u002Fadd-to-app.webp","Incremental Flutter adoption in an existing native app","One piece at a time",{},"Adopt Flutter inside an existing iOS or Android app with add-to-app: one embedded module, new features on both platforms, no rewrite. Honest scope and limits.","Add-to-App: Flutter in Your Existing Native App",true,"Your native app stays the product. Flutter arrives as one embedded module, ships a feature on both platforms at once, and earns — or does not earn — the next one.","flutter-app-development","\u002Fservices\u002Fflutter-app-development\u002Fadd-to-app",{"title":169,"description":478},"add-to-app","services\u002Fadd-to-app","2026-09-05","dYK6thlpKpMubPEuAU1qwGLidltCZCKzQmiOoS2ykvU",{"id":516,"title":517,"body":518,"description":984,"extension":479,"footerCta":985,"headingCta":994,"image":1000,"meta":1003,"metaDescription":1004,"metaTitle":1005,"navigation":506,"ogDescription":1006,"parent":1007,"path":408,"seo":1008,"slug":508,"stem":1009,"updated":1010,"__hash__":1011},"services_en\u002Fservices\u002Fflutter-app-development.md","Flutter App Development",{"type":171,"value":519,"toc":968},[520,527,544,548,552,555,559,570,574,581,585,602,620,633,637,640,644,650,653,658,665,670,673,679,682,687,691,694,700,717,721,724,757,760,764,767,872,880,882,896,907,913,917,920,924,939,941,944,947],[174,521,522,523,526],{},"Flutter app development means building your iOS and Android apps — and, where it earns its place, your web app — from one codebase, with one team, on Google's Flutter toolkit. Done well, it costs ",[203,524,525],{},"30–40% less to build than two native apps",", and the gap widens over the product's life, because every future feature and fix is written once instead of twice. Done badly, it produces an app that feels slightly wrong on both platforms — which is why the framework matters less than who is holding it.",[174,528,529,530,533,534,538,539,543],{},"We are a team that has been shipping Flutter to production since 2019 and does very little else. Seven of the eight projects in our ",[186,531,532],{"href":497},"portfolio"," are Flutter apps, from a live investing platform to a fleet of fifteen white-label apps built from a single codebase. Our engineers maintain ",[186,535,537],{"href":536},"\u002Fopen-source","open-source Flutter packages"," on pub.dev, and our prices are published on this page rather than quoted privately — we would rather put the numbers up and be argued with than open with \"it depends\". The full breakdown of what drives them is in our ",[186,540,542],{"href":541},"\u002Fblog\u002Fflutter-app-development-cost-2026","cost guide",".",[545,546],"statistics-grid",{":items":547},"[{\"icon\": \"lucide:dollar-sign\", \"value\": \"30-40%\", \"label\": \"Lower Build Cost\", \"description\": \"One codebase instead of two native apps — and the gap widens with maintenance\"}, {\"icon\": \"lucide:clock\", \"value\": \"2-3x\", \"label\": \"Faster to Both Stores\", \"description\": \"One team ships iOS and Android together\"}, {\"icon\": \"lucide:layers\", \"value\": \"7\", \"label\": \"Flutter Apps Shipped\", \"description\": \"In production, with case studies you can read\"}, {\"icon\": \"lucide:package\", \"value\": \"6\", \"label\": \"Open-Source Packages\", \"description\": \"Maintained by our engineers on pub.dev and beyond\"}]",[226,549,551],{"id":550},"who-builds-your-flutter-app","Who Builds Your Flutter App",[174,553,554],{},"Anyone can list frameworks. What separates a Flutter shop from a shop that has used Flutter is production work you can inspect — so here is ours.",[192,556,558],{"id":557},"a-live-investing-app-under-real-time-market-data","A live investing app under real-time market data",[174,560,561,565,566,543],{},[186,562,564],{"href":563},"\u002Fportfolio\u002Fextraetf","ExtraETF"," is an investing app for Isarvest GmbH: live market prices, portfolio tracking, and charts that stay smooth while quotes stream in over WebSockets from a Go backend we also built. Six months to both stores. The hard part of an app like this is not drawing the chart — it is keeping the frame rate flat while data arrives every few hundred milliseconds, which is a rebuild-scoping problem we have written up in ",[186,567,569],{"href":568},"\u002Fblog\u002Fextraetf-realtime-fintech-flutter-go","engineering detail",[192,571,573],{"id":572},"two-native-apps-merged-into-one-codebase","Two native apps, merged into one codebase",[174,575,576,580],{},[186,577,579],{"href":578},"\u002Fportfolio\u002Fformtastic","Formtastic"," shipped for years as separate iOS and Android apps — every feature built twice, releases drifting out of sync. We consolidated the product into a single Flutter codebase without disrupting the customers already depending on it, then kept building: iPad support, offline sync, voice-to-text for form fields. It is the clearest before-and-after we can show for what a single codebase does to a roadmap, and the client says so below in his own words.",[192,582,584],{"id":583},"fifteen-branded-apps-from-one-codebase","Fifteen branded apps from one codebase",[174,586,587,588,592,593,597,598,543],{},"For a cashback and loyalty platform under NDA, one Flutter codebase produces ",[186,589,591],{"href":590},"\u002Fportfolio\u002Fcashback-loyalty-platform","a fleet of more than fifteen fully branded apps",", each with its own name, theme, and store listing, plus a merchant app and an admin panel that launches a new brand without engineering work. That build became its own service line — ",[186,594,596],{"href":595},"\u002Fservices\u002Fwhitelabel-app-development","white-label app development"," — and its own ",[186,599,601],{"href":600},"\u002Fblog\u002Fwhite-label-app-platform-flutter","written-up architecture",[174,603,604,605,609,610,614,615,619],{},"Smaller and faster, same discipline: ",[186,606,608],{"href":607},"\u002Fportfolio\u002Farcana","Arcana",", an AI chat companion streaming markdown at 60 fps through thousands of messages, took three weeks. ",[186,611,613],{"href":612},"\u002Fportfolio\u002Fonetwodo","OneTwoDo",", a two-sided services marketplace, took seven. ",[186,616,618],{"href":617},"\u002Fportfolio\u002Fjepta","Jepta",", a neighborhood app with real-time chats and channels, shipped its full feature set inside six months.",[621,622,627,630],"testimonial",{"author":623,"avatar":624,"linkedin":625,"role":626},"Julian Garbotz","\u002Fclients\u002Fjulian-garbotz.png","https:\u002F\u002Fwww.linkedin.com\u002Fin\u002Fjulian-garbotz","Managing director, Formtastic GmbH",[174,628,629],{},"For years, Formtastic shipped as two separate native apps — one for iOS, one for Android. Every feature had to be built twice, releases drifted out of sync between the platforms, and maintaining two codebases was quietly draining our roadmap.",[174,631,632],{},"Nerdy Production consolidated everything into a single Flutter codebase without disrupting the product our customers depend on. Now both apps ship the same features at the same time, the experience is identical on iPhone and Android, and our time to production has dropped dramatically. We maintain one codebase instead of two, and the team finally spends its energy on new features rather than keeping two apps in sync.",[226,634,636],{"id":635},"how-flutter-works-where-its-performance-comes-from","How Flutter Works: Where Its Performance Comes From",[174,638,639],{},"The reason Flutter apps do not carry the \"hybrid app\" performance penalty is architectural, and worth two minutes even if you never read Dart.",[192,641,643],{"id":642},"flutters-rendering-architecture","Flutter's Rendering Architecture",[645,646,647],"ol",{},[200,648,649],{},"Direct Compilation to Native Code",[174,651,652],{},"Unlike hybrid frameworks that run through JavaScript bridges, Flutter compiles ahead of time to native ARM machine code. There is no interpreter between your app and the processor, so startup times and execution speed sit in the same range as apps written in Swift or Kotlin.",[645,654,655],{"start":455},[200,656,657],{},"Its Own Graphics Engine",[174,659,660,661,664],{},"Flutter draws every pixel itself — through ",[328,662],{"slug":663},"skia",", the 2D engine behind Chrome and Android, and its successor Impeller on modern devices. Instead of assembling platform UI components, it renders the interface directly to the screen canvas. That is why a Flutter app looks and behaves identically on every platform, and why complete control over every animation is the default rather than a fight.",[645,666,667],{"start":458},[200,668,669],{},"Declarative UI Framework",[174,671,672],{},"Flutter's widget tree rebuilds only the parts of the UI that change, using an efficient diffing algorithm similar to React's. Complex screens with hundreds of animated elements hold 60 fps — 120 fps on displays that support it — provided rebuilds are scoped with care, which is precisely the kind of care that separates production Flutter work from demo Flutter work.",[645,674,676],{"start":675},4,[200,677,678],{},"Optimized Layer Architecture",[174,680,681],{},"The engine (C\u002FC++) handles rendering, text layout, and I\u002FO; the framework (Dart) provides the API on top. The separation keeps performance-critical operations at native speed while the code your team works in stays productive and testable.",[683,684],"features",{":items":685,":title":686},"[{\"label\": \"60\u002F120 FPS Animations\", \"description\": \"Smooth animations on all platforms without frame drops\"}, {\"label\": \"Fast Startup Times\", \"description\": \"Apps launch in milliseconds, like native applications\"}, {\"label\": \"Small Binary Size\", \"description\": \"Optimized code splitting and tree shaking reduce app size\"}, {\"label\": \"Low Memory Footprint\", \"description\": \"Efficient memory management keeps apps responsive\"}]","Why Performance Isn't a Concern",[226,688,690],{"id":689},"flutter-vs-react-native-vs-native-development","Flutter vs React Native vs Native Development",[174,692,693],{},"See how Flutter compares to other mobile development approaches",[695,696],"features-table",{":heading":697,":rows":698,":top-left-label":699},"[{\"label\": \"Flutter\", \"hightlightLabel\": \"Recommended\"}, {\"label\": \"React Native\"}, {\"label\": \"Native (Swift\u002FKotlin)\"}]","[{\"label\": \"Performance\",\"cells\": [{\"text\": \"Native Speed\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" },{ \"text\": \"Near Native\", \"color\": \"warning\", \"icon\": \"lucide:minus\" },{ \"text\": \"Native\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" }]}, {\"label\": \"Development Speed\",\"cells\": [{\"text\": \"Very Fast\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" },{ \"text\": \"Fast\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" },{ \"text\": \"Slow (2x codebase)\", \"color\": \"error\", \"icon\": \"lucide:x\" }]}, {\"label\": \"UI Consistency\",\"cells\": [{\"text\": \"Pixel Perfect\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" },{ \"text\": \"Platform Dependent\", \"color\": \"warning\", \"icon\": \"lucide:minus\" },{ \"text\": \"Requires 2x Design\", \"color\": \"warning\", \"icon\": \"lucide:minus\" }]}, {\"label\": \"Code Reusability\",\"cells\": [{\"text\": \"90-95%\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" },{ \"text\": \"70-85%\", \"color\": \"warning\", \"icon\": \"lucide:minus\" },{ \"text\": \"0% (separate apps)\", \"color\": \"error\", \"icon\": \"lucide:x\" }]}, {\"label\": \"Hot Reload\",\"cells\": [{\"text\": \"Sub-second\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" },{ \"text\": \"Available\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" },{ \"text\": \"Limited\", \"color\": \"warning\", \"icon\": \"lucide:minus\" }]}, {\"label\": \"Platform Support\",\"cells\": [{\"text\": \"6 Platforms\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" },{ \"text\": \"iOS, Android, Web\", \"color\": \"warning\"},{ \"text\": \"One Platform Only\", \"color\": \"warning\"}]}, {\"label\": \"Learning Curve\",\"cells\": [{\"text\": \"Easy (Dart)\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" },{ \"text\": \"Easy (JavaScript)\", \"color\": \"success\"},{ \"text\": \"Steep (2 languages)\", \"color\": \"warning\"}]}, {\"label\": \"Development Cost\",\"cells\": [{\"text\": \"30-40% Lower\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" },{ \"text\": \"20-30% Lower\", \"color\": \"warning\"},{ \"text\": \"Highest (2x team)\", \"color\": \"error\"}]}, {\"label\": \"Maintenance\",\"cells\": [{\"text\": \"Single Codebase\", \"color\": \"success\", \"icon\": \"lucide:check-circle\" },{ \"text\": \"Platform-specific Fixes\", \"color\": \"warning\"},{ \"text\": \"2x Maintenance\", \"color\": \"error\"}]}, {\"label\": \"Backed By\",\"cells\": [{\"text\": \"Google\", \"color\": \"success\"},{ \"text\": \"Meta\"},{ \"text\": \"Apple \u002F Google\"}]}]","Feature",[274,701,702],{},[174,703,704,707,708,712,713,543],{},[203,705,706],{},"Bottom line:"," Flutter delivers native performance with significantly lower development and maintenance costs. React Native is a credible option — especially for a team already deep in React — but Flutter's rendering model, UI consistency, and platform reach make it the stronger default for most products. For the full trade-offs, read ",[186,709,711],{"href":710},"\u002Fblog\u002Fflutter-vs-react-native-2026","Flutter vs React Native in 2026"," and ",[186,714,716],{"href":715},"\u002Fblog\u002Fflutter-vs-native-2026","Flutter vs Native in 2026",[226,718,720],{"id":719},"when-flutter-is-the-wrong-choice","When Flutter Is the Wrong Choice",[174,722,723],{},"A recommendation is only worth something if it can come out the other way, so here is where we advise against our own service.",[197,725,726,732,742],{},[200,727,728,731],{},[203,729,730],{},"The product is a platform capability."," A deep Apple Watch experience, a widget-led product, an app built around an API that exists on one platform only — the cross-platform saving is not the point, and native is the honest answer.",[200,733,734,737,738,741],{},[203,735,736],{},"Your team is already a native team."," If you have strong Swift and Kotlin engineers, an established codebase, and no cost pressure from double delivery, switching frameworks solves a problem you do not have. The same honesty applies in reverse to ",[186,739,740],{"href":188},"migrations",": we open that page by telling you who should not migrate.",[200,743,744,747,748,751,752,756],{},[203,745,746],{},"You want shared logic but native UI."," ",[186,749,74],{"href":750},"\u002Ftechnologies\u002Fkmp"," shares business logic while keeping each platform's native interface. It is a different bet — more platform fidelity, less UI reuse — and for some teams it is the right one. We compare the two honestly in ",[186,753,755],{"href":754},"\u002Fblog\u002Fflutter-vs-kotlin-multiplatform-2026","Flutter vs Kotlin Multiplatform in 2026",", and we will say so in the first call rather than the last.",[174,758,759],{},"Everything else — consumer products, marketplaces, fintech, healthcare, internal tools, products that must exist on both stores with one budget — is the territory where Flutter, in our experience across seven production apps, wins on the merits.",[226,761,763],{"id":762},"what-we-build","What We Build",[174,765,766],{},"The pillar is one service; the work comes in shapes. Each of these pages publishes its own scope, numbers, and the honest failure modes:",[197,768,769,778,787,796,805,814,823,830,838,847,855,864],{},[200,770,771,777],{},[203,772,773],{},[186,774,776],{"href":775},"\u002Fservices\u002Fflutter-app-development\u002Fmvp","MVP development"," — the smallest app that can answer your business question, on both stores in two to three months, at a published price.",[200,779,780,786],{},[203,781,782],{},[186,783,785],{"href":784},"\u002Fservices\u002Fflutter-app-development\u002Ffintech","Fintech apps"," — investing, banking, and payments products: real-time market data, precise money arithmetic, compliance posture. ExtraETF is the proof.",[200,788,789,795],{},[203,790,791],{},[186,792,794],{"href":793},"\u002Fservices\u002Fflutter-app-development\u002Fhealthcare","Healthcare apps"," — telemedicine and mental-health products: video consultations that survive real networks, patient data handled under HIPAA and GDPR discipline.",[200,797,798,804],{},[203,799,800],{},[186,801,803],{"href":802},"\u002Fservices\u002Fflutter-app-development\u002Fe-commerce","E-commerce apps"," — catalog, checkout, and payments, from a single storefront to a branded fleet; the tier in the pricing table below finally has its own page.",[200,806,807,813],{},[203,808,809],{},[186,810,812],{"href":811},"\u002Fservices\u002Fflutter-app-development\u002Fmarketplace","Marketplace apps"," — two-sided products, both roles from one codebase. OneTwoDo is the proof.",[200,815,816,822],{},[203,817,818],{},[186,819,821],{"href":820},"\u002Fservices\u002Fflutter-app-development\u002Fsocial","Social & community apps"," — chats, channels, and live feeds on one real-time layer. Jepta is the proof.",[200,824,825,829],{},[203,826,827],{},[186,828,189],{"href":188}," — screen-by-screen, add-to-app, no downtime, and a page that opens by telling you when not to do it.",[200,831,832,837],{},[203,833,834],{},[186,835,836],{"href":509},"Add-to-app integration"," — Flutter embedded inside the native app you already have, shipping new features on both platforms without committing to a migration.",[200,839,840,846],{},[203,841,842],{},[186,843,845],{"href":844},"\u002Fservices\u002Fflutter-app-development\u002Fapp-rescue","App rescue & performance"," — audits, frame-rate work, and stabilisation for a Flutter app failing in production, scoped from the symptoms rather than a feature list.",[200,848,849,854],{},[203,850,851],{},[186,852,853],{"href":595},"White-label platforms"," — one codebase, a fleet of branded apps, and the Apple guideline 4.2.6 traps designed out from the start.",[200,856,857,863],{},[203,858,859],{},[186,860,862],{"href":861},"\u002Fservices\u002Fchatbot-to-app","Chatbot to app"," — a Telegram or WhatsApp bot with a real user base, turned into a store app without losing them.",[200,865,866,871],{},[203,867,868],{},[186,869,870],{"href":393},"Team augmentation"," — senior Flutter engineers embedded in your team, in your repo and your sprints, when you need capacity rather than delivery.",[174,873,874,875,879],{},"If the app already exists and the question is its condition rather than its roadmap — an agency handoff, an AI-built prototype, a codebase you have doubts about — start with an ",[186,876,878],{"href":877},"\u002Fservices\u002Fai-code-audit","AI code audit"," instead.",[226,881,373],{"id":372},[174,883,884,887,888,891,892],{},[203,885,886],{},"Fixed-scope delivery."," We own the outcome end to end: discovery, design, architecture, build, store submission. One team accountable for the launch date. What that looks like week to week is in our ",[186,889,890],{"href":382},"development process write-up",", and the phase-by-phase timeline in ",[186,893,895],{"href":894},"\u002Fblog\u002Fhow-long-to-build-a-flutter-app","How Long Does It Take to Build a Flutter App?",[174,897,898,901,902,906],{},[203,899,900],{},"Staff augmentation."," Our engineers join yours, under your management. Best when you already have engineering leadership and need Flutter depth — our ",[186,903,905],{"href":904},"\u002Fblog\u002Fhire-flutter-developers-2026","guide to hiring Flutter developers"," is honest about when this beats an agency engagement and when it does not.",[174,908,909,910,912],{},"Whichever route fits, we send a scoped quote within two business days of understanding the requirements — and the engineering we refuse to cut regardless of budget is the same everywhere: ",[328,911],{"slug":342}," from week one, tests where being wrong costs money, and module boundaries that let v2 grow without a rewrite.",[226,914,916],{"id":915},"flutter-app-development-pricing","Flutter App Development Pricing",[174,918,919],{},"Transparent pricing for your Flutter app project",[921,922],"pricing-table",{":items":923},"[{\"title\": \"MVP\", \"subtitle\": \"Validate your idea quickly\", \"price\": \"flutter-app-development\u002Fmvp\", \"terms\": \"2-3 months\", \"lines\": [\"iOS & Android apps\", \"5-8 core features\", \"Basic UI\u002FUX design\", \"REST API integration\", \"User authentication\", \"Basic analytics\", \"App store deployment\"], \"callToAction\": {\"to\": \"\u002Fcontact?intent=flutter-app-development\", \"label\": \"Get Started\"}},{\"title\": \"Business App\", \"subtitle\": \"Full-featured solution\", \"price\": \"flutter-app-development\u002Fbusiness\", \"terms\": \"3-5 months\", \"lines\": [\"iOS, Android & Web\", \"15-20 features\", \"Custom UI\u002FUX design\", \"Advanced API integrations\", \"Push notifications\", \"Offline functionality\", \"Analytics & monitoring\", \"Admin dashboard\"], \"callToAction\": {\"to\": \"\u002Fcontact?intent=flutter-app-development\", \"label\": \"Get Started\"}},{\"highlight\": \"Popular\",\"title\": \"E-commerce \u002F Retail\", \"subtitle\": \"Sell online with style\", \"price\": \"flutter-app-development\u002Fecommerce\", \"terms\": \"4-6 months\", \"lines\": [\"All platforms + Desktop\", \"Product catalog & search\", \"Shopping cart & checkout\", \"Payment gateway integration\", \"Order tracking\", \"Customer reviews & ratings\", \"Inventory management\", \"Admin & vendor panels\"], \"callToAction\": {\"to\": \"\u002Fcontact?intent=flutter-app-development\", \"label\": \"Get Started\"}},{\"title\": \"Enterprise \u002F AI\", \"subtitle\": \"Complex & scalable\", \"price\": \"flutter-app-development\u002Fenterprise\", \"terms\": \"6+ months\", \"lines\": [\"All platforms\", \"AI\u002FML integration\", \"Complex workflows\", \"Enterprise security\", \"Custom backend infrastructure\", \"Advanced analytics\", \"Multi-tenant architecture\", \"Dedicated support\"], \"callToAction\": {\"to\": \"\u002Fcontact?intent=flutter-app-development\", \"label\": \"Get Started\"}}]",[274,925,928],{":leading-icon":926,":title":927},"lucide:dollar-sign","Custom Pricing Available",[174,929,930,931,934,935,543],{},"Every project is unique. These prices are approximate ranges based on typical project requirements. We'll provide a detailed quote after understanding your specific needs, timeline, and complexity. Contact us for a free consultation and accurate pricing estimate. For what actually drives app cost, see ",[186,932,933],{"href":541},"Flutter App Development Cost in 2026"," and our ",[186,936,938],{"href":937},"\u002Fblog\u002Fmobile-cost-reduction-case-studies","mobile cost-reduction case studies",[226,940,432],{"id":431},[174,942,943],{},"Everything you need to know about our Flutter app development services",[437,945],{":items":946},"[{\"title\":\"What is Flutter and why should I use it for my app?\",\"text\":\"Flutter is an open-source UI toolkit from Google for building natively compiled applications for mobile, web, and desktop from a single codebase. The business case is structural: one codebase means one team, one release train, and every feature built once — which is why a Flutter build typically costs 30 to 40 percent less than two native apps, with the gap widening over the product's life as maintenance compounds. The engineering case is that Flutter compiles to native code and draws its own UI, so it avoids both the performance penalty of hybrid frameworks and the platform drift of maintaining two implementations.\"},{\"title\":\"How much does Flutter app development cost?\",\"text\":\"Our published tiers run from $15,000 to $30,000 for an MVP, $30,000 to $60,000 for a full business app, $50,000 to $90,000 for an e-commerce product, and from $90,000 for enterprise work — the exact ranges are in the pricing section of this page rather than behind a sales call. What moves the number is scope first and integrations second. The full breakdown of what drives the figure, including the costs teams forget to budget, is in our guide to Flutter app development cost in 2026.\"},{\"title\":\"How long does it take to build a Flutter app?\",\"text\":\"An MVP takes two to three months from kickoff to a live store listing. A full business app runs three to five months, and an e-commerce or enterprise build four to six or more. The calendar is rarely consumed by the code: payment flows that appear mid-project, design rounds, third-party API access, and the store submission cycle are where timelines actually move. Our phase-by-phase breakdown is in How Long Does It Take to Build a Flutter App.\"},{\"title\":\"Can Flutter apps perform as well as native apps?\",\"text\":\"Yes. Flutter compiles ahead of time to native ARM code and renders through its own graphics engine, so animations hold 60 frames per second — 120 on supported displays — without the bridge overhead hybrid frameworks carry. Production apps like Google Ads, Alibaba, and BMW's vehicle app run on Flutter, and our own ExtraETF holds its frame rate under live streaming market data. The honest caveat is that performance is a property of the engineering, not the framework: unscoped widget rebuilds will drop frames in Flutter exactly as leaked observers will in Swift.\"},{\"title\":\"How is Flutter different from React Native?\",\"text\":\"Flutter compiles to native code and draws its own UI through its rendering engine; React Native bridges to each platform's native components. In practice that gives Flutter better performance headroom, pixel-identical UI across platforms, 90 to 95 percent code reuse against 70 to 85 for React Native, and six supported platforms including desktop. React Native remains a credible choice for teams already deep in React. Our full comparison, including where React Native wins, is in Flutter vs React Native in 2026.\"},{\"title\":\"Is Flutter a good choice for web and desktop apps?\",\"text\":\"With qualifications. Flutter web is strongest for app-like experiences — dashboards, portals, tools behind a login — where its canvas rendering is an asset rather than a cost; for content sites that live on SEO and instant first paint, a conventional web stack is the better tool, and we say so even though we sell both. Desktop support for Windows, macOS, and Linux is production-ready and shines for internal tools and companion apps sharing a mobile codebase.\"},{\"title\":\"Can you take over or rescue an existing Flutter app?\",\"text\":\"Yes — some of our best-documented work started that way, including a live telehealth product we stabilised while it stayed in production. A takeover starts with an audit of the codebase: architecture, state management, test coverage, and the specific symptoms that prompted the call. You get a written findings report and a sequenced plan before any rebuild conversation happens, because sometimes the answer is two weeks of fixes rather than a rewrite — and when it is, we say so.\"},{\"title\":\"Do you build the backend as well as the app?\",\"text\":\"Yes. ExtraETF runs on a Go backend we built for real-time market data fan-out; Formtastic's platform includes backend and web alongside the apps; and for MVPs we deliberately reach for managed backends like Firebase when writing one from scratch would be spending your budget on plumbing. The choice between custom and managed is an engineering decision we make openly during scoping, because it moves both the price and the timeline.\"},{\"title\":\"Will Flutter still be a safe bet in five years?\",\"text\":\"As safe as bets get in this industry. Flutter is developed in the open by Google, ships regular stable releases, powers Google's own revenue-critical apps like Google Ads, and has one of the largest cross-platform communities and package ecosystems. No framework choice is risk-free — which is why the more durable insurance is code quality: a well-structured Flutter app with clear module boundaries keeps its business logic portable no matter what the industry does next.\"},{\"title\":\"Which industries do you build Flutter apps for?\",\"text\":\"Our deepest vertical work is in fintech — investing, banking, and payments products — and healthcare, including telemedicine, each with its own dedicated service page covering the compliance and engineering specifics. Beyond those we have shipped marketplaces, social and community products, loyalty platforms, and AI-driven consumer apps. What transfers across all of them is the production discipline: real-time data handling, offline behaviour, accessibility, and store review requirements.\"},{\"title\":\"How do we start a project with you?\",\"text\":\"Tell us what you are building through the contact form, including whatever exists today — a spec, a prototype, an app already in the stores. We come back with questions, not a pitch deck, and once we understand the requirements you get a scoped quote within two business days: what is in, what is explicitly out, what it costs, and how long it takes. If Flutter is the wrong tool for your product, that conversation is where we tell you.\"}]",[174,948,949,950,953,954,957,958,962,963,712,965,967],{},"Start with the numbers: ",[186,951,952],{"href":541},"what a Flutter app costs in 2026",", ",[186,955,956],{"href":894},"how long it takes",", and ",[186,959,961],{"href":960},"\u002Fblog\u002Fflutter-app-maintenance-cost","what maintenance runs after launch",". Or read the work: the ",[186,964,564],{"href":563},[186,966,579],{"href":578}," case studies are the closest thing to seeing us mid-project.",{"title":454,"searchDepth":455,"depth":455,"links":969},[970,975,978,979,980,981,982,983],{"id":550,"depth":455,"text":551,"children":971},[972,973,974],{"id":557,"depth":458,"text":558},{"id":572,"depth":458,"text":573},{"id":583,"depth":458,"text":584},{"id":635,"depth":455,"text":636,"children":976},[977],{"id":642,"depth":458,"text":643},{"id":689,"depth":455,"text":690},{"id":719,"depth":455,"text":720},{"id":762,"depth":455,"text":763},{"id":372,"depth":455,"text":373},{"id":915,"depth":455,"text":916},{"id":431,"depth":455,"text":432},"One codebase, both stores, and a build cost 30–40% below two native apps — from a team that has shipped Flutter to production seven times and publishes its prices",{"heading":986,"text":987,"buttons":988},"Ready to Build Your Flutter App?","Tell us what you are building and who it is for. We will tell you what it takes, what it costs, and whether Flutter is the right call — before you commit to anything.",[989,992],{"to":990,"label":991,"leadingIcon":487,"color":488,"variant":489},"\u002Fcontact","Start Your Project",{"to":497,"label":993,"color":492,"variant":493},"View our work",[995,997],{"to":990,"label":996,"leadingIcon":487,"color":492,"variant":493},"Get a Free Consultation",{"to":998,"label":999,"color":488,"variant":489},"#flutter-app-development-pricing","View Pricing",{"url":1001,"alt":517,"text":1002},"\u002Fservices\u002Fflutter.webp","Build Once, Deploy Everywhere",{},"Flutter app development services: build fast, beautiful iOS, Android, and web apps from one codebase — cutting costs 30-40% vs native. Free consultation.","Flutter App Development Services","One codebase, iOS and Android and web, and 30-40% off what native costs. Flutter app development from a shop that only does this.",null,{"title":517,"description":984},"services\u002Fflutter-app-development","2026-09-04","wXM97JbBXsK9bz1QzyrdQzvM_86FWxeB4XgZaFiQ85M",[],[1014,1029,1042,1057,1069,1083,1099,1111,1125,1138,1152,1165,1181,1194,1211,1224,1235,1245,1258,1270,1280,1295,1304,1317,1330,1336,1347,1359,1370,1385,1397,1410,1421,1433,1445,1457,1468,1479,1490,1501,1513,1523,1534,1547,1558,1567,1580,1592,1602,1613,1627,1636,1647],{"slug":1015,"term":1016,"definition":1017,"category":1018,"aliases":1019,"links":1021,"related":1025,"readMore":-1,"target":1027,"hasArticle":1028},"aosp","AOSP","The Android Open Source Project — Android without the Google layer on top, which anyone may fork. Point-of-sale terminals, kiosks and in-car systems run on forks of it, and working at that level exposes parts of the OS an app developer never sees.","platform",[1020],"Android Open Source Project",[1022],{"kind":1023,"url":1024},"website","https:\u002F\u002Fsource.android.com\u002F",[1026],"host-card-emulation","\u002Fglossary#aosp",false,{"slug":1030,"term":1031,"definition":1032,"category":1018,"aliases":1033,"links":1034,"related":1038,"readMore":-1,"target":1041,"hasArticle":1028},"app-clips","App Clips","An Apple feature that runs a small slice of an iOS app — under 15 MB — without installing the whole thing. Invoked from a QR code, an NFC tag or a link, for when the first thing a user does should not require a store visit.",[],[1035],{"kind":1036,"url":1037},"documentation","https:\u002F\u002Fdeveloper.apple.com\u002Fapp-clips\u002F",[1039,1040],"deep-linking","install-referrer","\u002Fglossary#app-clips",{"slug":1043,"term":1044,"definition":1045,"category":1018,"aliases":1046,"links":1047,"related":1053,"readMore":-1,"target":1056,"hasArticle":1028},"bigquery","BigQuery","Google Cloud's analytics warehouse. You point SQL at billions of rows and it scans them in seconds, on storage held separately from the machines doing the querying — which is what keeps reporting and exploration off the database that is serving live traffic.",[],[1048,1050],{"kind":1023,"url":1049},"https:\u002F\u002Fcloud.google.com\u002Fbigquery",{"kind":1051,"url":1052},"wikipedia","https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FBigQuery",[1054,1055],"object-storage","elasticsearch","\u002Fglossary#bigquery",{"slug":342,"term":343,"definition":1058,"category":1059,"aliases":1060,"links":1064,"related":1067,"readMore":-1,"target":1068,"hasArticle":1028},"Automation that builds, tests and ships every change without anyone running commands by hand. On mobile it is what turns a release into a button press instead of an afternoon of someone else being unavailable.","practice",[1061,1062,1063],"CI","continuous integration","continuous delivery",[1065],{"kind":1051,"url":1066},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCI\u002FCD",[],"\u002Fglossary#ci-cd",{"slug":1070,"term":1071,"definition":1072,"category":1073,"aliases":1074,"links":1076,"related":1079,"readMore":-1,"target":1082,"hasArticle":1028},"crud","CRUD","Create, read, update, delete — the four operations behind almost every form and admin screen. Shorthand for the routine data-management half of an app, as opposed to the parts carrying real domain logic.","architecture",[1075],"Create, Read, Update, Delete",[1077],{"kind":1051,"url":1078},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FCreate,_read,_update_and_delete",[1080,1081],"rest","graphql","\u002Fglossary#crud",{"slug":1084,"term":1085,"definition":1086,"category":1073,"aliases":1087,"links":1092,"related":1095,"readMore":-1,"target":1098,"hasArticle":1028},"container-registry","Container registry","A hosted store for container images, addressed by name and tag — Docker Hub, GitHub Container Registry, or a cloud provider's own. Pushing a build there turns 'works on my machine' into an image anyone can pull and run unchanged.",[1088,1089,1090,1091],"image registry","Docker registry","GHCR","ghcr.io",[1093],{"kind":1036,"url":1094},"https:\u002F\u002Fdocs.github.com\u002Fen\u002Fpackages\u002Fworking-with-a-github-packages-registry\u002Fworking-with-the-container-registry",[1096,1097],"dev-container","multi-arch-image","\u002Fglossary#container-registry",{"slug":1039,"term":1100,"definition":1101,"category":1018,"aliases":1102,"links":1106,"related":1109,"readMore":1110,"target":1110,"hasArticle":506},"Deep linking","A link that opens a specific screen inside an installed app instead of its home screen or a web page. Deferred deep linking survives an install, so a tap that leads through the app store still lands on the right screen.",[1103,1104,1105],"deferred deep linking","universal links","Android App Links",[1107],{"kind":1051,"url":1108},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FMobile_deep_linking",[1030,1040],"\u002Fglossary\u002Fdeep-linking",{"slug":1096,"term":1112,"definition":1113,"category":1059,"aliases":1114,"links":1118,"related":1123,"readMore":-1,"target":1124,"hasArticle":1028},"Dev Container","A development environment described once in devcontainer.json — the OS, tools, and runtime versions a project needs — and opened identically inside a container by every contributor's editor, instead of a setup guide everyone interprets differently.",[1115,1116,1117],"devcontainer.json","Dev Containers","VS Code Dev Containers",[1119,1121],{"kind":1023,"url":1120},"https:\u002F\u002Fcontainers.dev\u002F",{"kind":1036,"url":1122},"https:\u002F\u002Fcode.visualstudio.com\u002Fdocs\u002Fdevcontainers\u002Fcontainers",[1084],"\u002Fglossary#dev-container",{"slug":1055,"term":1126,"definition":1127,"category":1018,"aliases":1128,"links":1131,"related":1136,"readMore":-1,"target":1137,"hasArticle":1028},"Elasticsearch","A search and analytics engine that indexes records so they can be filtered and searched interactively instead of scanned. What you reach for when the question is \"show me these particular sessions, narrowed six ways\" rather than \"sum this column\".",[1129,1130],"Elastic","ELK",[1132,1134],{"kind":1023,"url":1133},"https:\u002F\u002Fwww.elastic.co\u002Felasticsearch",{"kind":1051,"url":1135},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FElasticsearch",[1043],"\u002Fglossary#elasticsearch",{"slug":1139,"term":1140,"definition":1141,"category":1073,"aliases":1142,"links":1145,"related":1148,"readMore":-1,"target":1151,"hasArticle":1028},"end-to-end-encryption","End-to-end encryption","Encryption applied on the sending device and undone only on the receiving one, so the service carrying the message cannot read it — not under subpoena, not after a breach. It protects the content and never the metadata.",[1143,1144],"E2EE","end-to-end encrypted",[1146],{"kind":1051,"url":1147},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FEnd-to-end_encryption",[1149,1150],"tls","jwt","\u002Fglossary#end-to-end-encryption",{"slug":1153,"term":1154,"definition":1155,"category":1073,"aliases":1156,"links":1159,"related":1160,"readMore":-1,"target":1164,"hasArticle":1028},"fan-out","Fan-out","Reading an upstream source once and delivering each update to every client subscribed to it. The naive version writes to subscribers in a loop and stalls the moment one socket is slow; a real one buffers per client and drops whoever cannot keep up.",[1157,1158],"fanout","broadcast",[],[1161,1162,1163],"websocket","pub-sub","server-sent-events","\u002Fglossary#fan-out",{"slug":1166,"term":1167,"definition":1168,"category":1059,"aliases":1169,"links":1173,"related":1176,"readMore":-1,"target":1180,"hasArticle":1028},"feature-flags","Feature flags","Switches that turn functionality on or off from configuration rather than from a release. They let one binary behave differently per brand, market or user, and let a risky feature be shut off without shipping a new build through review.",[1170,1171,1172],"feature flag","feature toggle","feature gating",[1174],{"kind":1051,"url":1175},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FFeature_toggle",[1177,1178,1179],"staged-rollout","white-label","multi-tenancy","\u002Fglossary#feature-flags",{"slug":1182,"term":1183,"definition":1184,"category":1073,"aliases":1185,"links":1189,"related":1192,"readMore":-1,"target":1193,"hasArticle":1028},"floating-point","Floating point","The IEEE 754 binary format behind double and float. It cannot hold 0.1 exactly, so 0.1 + 0.2 is 0.30000000000000004 — invisible in graphics and fatal in money, which belongs in integer minor units or a decimal type instead.",[1186,1187,1188],"IEEE 754","double","floating-point arithmetic",[1190],{"kind":1051,"url":1191},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FIEEE_754",[],"\u002Fglossary#floating-point",{"slug":1195,"term":1196,"definition":1197,"category":1059,"aliases":1198,"links":1201,"related":1206,"readMore":-1,"target":1210,"hasArticle":1028},"gdpr","GDPR","The EU regulation covering personal data of people in the EU: a lawful basis for collecting it, real consent for tracking, and rights to see and delete it. It follows your users, not your servers, so it applies wherever the company is registered.",[1199,1200],"General Data Protection Regulation","data protection",[1202,1204],{"kind":1023,"url":1203},"https:\u002F\u002Fgdpr.eu\u002F",{"kind":1051,"url":1205},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FGeneral_Data_Protection_Regulation",[1207,1208,1209],"pci-dss","soc-2","hipaa","\u002Fglossary#gdpr",{"slug":1212,"term":1213,"definition":1214,"category":1059,"aliases":1215,"links":1219,"related":1222,"readMore":-1,"target":1223,"hasArticle":1028},"golden-test","Golden test","A test that renders a widget and compares the result pixel for pixel against a stored reference image. In Flutter it is the cheapest way to answer whether a redesign broke the empty state at 320pt, in dark mode, at 200% text scale.",[1216,1217,1218],"golden tests","screenshot test","snapshot test",[1220],{"kind":1036,"url":1221},"https:\u002F\u002Fapi.flutter.dev\u002Fflutter\u002Fflutter_test\u002FmatchesGoldenFile.html",[342],"\u002Fglossary#golden-test",{"slug":1081,"term":1225,"definition":1226,"category":1073,"aliases":1227,"links":1228,"related":1233,"readMore":-1,"target":1234,"hasArticle":1028},"GraphQL","A query language for APIs where the client names exactly the fields it wants and gets one response shaped to match. It removes the over-fetching REST endpoints drift into, and adds a failure mode of its own: an unbounded query that walks the whole data model.",[],[1229,1231],{"kind":1023,"url":1230},"https:\u002F\u002Fgraphql.org\u002F",{"kind":1051,"url":1232},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FGraphQL",[1080],"\u002Fglossary#graphql",{"slug":1209,"term":1236,"definition":1237,"category":1059,"aliases":1238,"links":1240,"related":1243,"readMore":-1,"target":1244,"hasArticle":1028},"HIPAA","The US law governing protected health information — how it may be stored, transmitted, logged and disclosed. Like PCI-DSS it is an architectural constraint chosen at the start, not a policy document added before launch.",[1239],"Health Insurance Portability and Accountability Act",[1241],{"kind":1051,"url":1242},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FHealth_Insurance_Portability_and_Accountability_Act",[1207,1195,1208],"\u002Fglossary#hipaa",{"slug":1246,"term":1247,"definition":1248,"category":1073,"aliases":1249,"links":1252,"related":1255,"readMore":-1,"target":1257,"hasArticle":1028},"headless-cms","Headless CMS","A content system with an editor and an API but no front end of its own. Editors publish in one place, and the site or app renders that content itself — so the presentation layer is yours rather than the CMS vendor's.",[1250,1251],"headless content management system","content API",[1253],{"kind":1051,"url":1254},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FHeadless_content_management_system",[1256,1080],"server-side-rendering","\u002Fglossary#headless-cms",{"slug":1026,"term":1259,"definition":1260,"category":1018,"aliases":1261,"links":1265,"related":1268,"readMore":-1,"target":1269,"hasArticle":1028},"Host Card Emulation","Letting an Android phone act as a contactless card over NFC in software, with no hardware secure element. It is how a wallet app pays at a terminal: the phone speaks the same EMV contactless protocol the plastic card would have.",[1262,1263,1264],"HCE","EMV Contactless","contactless payments",[1266],{"kind":1036,"url":1267},"https:\u002F\u002Fdeveloper.android.com\u002Fdevelop\u002Fconnectivity\u002Fnfc\u002Fhce",[1207,1015],"\u002Fglossary#host-card-emulation",{"slug":1271,"term":1272,"definition":1273,"category":1018,"aliases":1274,"links":1275,"related":1278,"readMore":-1,"target":1279,"hasArticle":1028},"impeller","Impeller","The rendering engine Flutter uses today, default on iOS since 2023 and on Android since 2024. It compiles its shaders ahead of time instead of during the first animation, which removed the shader-compilation jank that was Flutter's most visible production problem.",[],[1276],{"kind":1036,"url":1277},"https:\u002F\u002Fdocs.flutter.dev\u002Fperf\u002Fimpeller",[663],"\u002Fglossary#impeller",{"slug":1281,"term":1282,"definition":1283,"category":1284,"aliases":1285,"links":1289,"related":1292,"readMore":-1,"target":1294,"hasArticle":1028},"in-app-purchase","In-app purchase","Selling digital goods or a subscription through the Apple or Google billing that both stores require for digital content and take a commission on. The hard part is never the purchase; it is restoring it on a new device and keeping entitlement state honest.","business",[1286,1287,1288],"IAP","in-app purchases","in-app subscription",[1290],{"kind":1036,"url":1291},"https:\u002F\u002Fdeveloper.apple.com\u002Fin-app-purchase\u002F",[1293],"product-market-fit","\u002Fglossary#in-app-purchase",{"slug":1040,"term":1296,"definition":1297,"category":1018,"aliases":1298,"links":1299,"related":1302,"readMore":-1,"target":1303,"hasArticle":1028},"Install Referrer","A Google Play API that hands a freshly installed Android app the campaign parameters from the link that led to the install. The Android half of deferred deep linking, and the dependable way to attribute where a user came from.",[],[1300],{"kind":1036,"url":1301},"https:\u002F\u002Fdeveloper.android.com\u002Fgoogle\u002Fplay\u002Finstallreferrer",[1039,1030],"\u002Fglossary#install-referrer",{"slug":1150,"term":1305,"definition":1306,"category":1307,"aliases":1308,"links":1310,"related":1315,"readMore":-1,"target":1316,"hasArticle":1028},"JWT","A signed token carrying its own claims, so a server can tell who a request belongs to without looking a session up. Standard for mobile authentication. The signature proves it was not altered; it does not hide what is inside.","protocol",[1309],"JSON Web Token",[1311,1313],{"kind":1023,"url":1312},"https:\u002F\u002Fjwt.io\u002F",{"kind":1051,"url":1314},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FJSON_Web_Token",[1207],"\u002Fglossary#jwt",{"slug":1318,"term":1319,"definition":1320,"category":1059,"aliases":1321,"links":1325,"related":1328,"readMore":-1,"target":1329,"hasArticle":1028},"kyc","KYC","Know Your Customer — the identity checks a regulated financial product runs before it lets anyone move money: document capture, liveness, sanctions and anti-money-laundering screening. It shapes onboarding more than any design decision does.",[1322,1323,1324],"Know Your Customer","AML","KYC\u002FAML",[1326],{"kind":1051,"url":1327},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FKnow_your_customer",[1207,1195],"\u002Fglossary#kyc",{"slug":76,"term":74,"definition":1331,"category":1018,"aliases":1332,"links":1334,"related":1335,"readMore":750,"target":750,"hasArticle":1028},"Sharing business logic written in Kotlin across Android, iOS and the server while each platform keeps its own native UI. The alternative to Flutter when the interface has to be native but the rules behind it do not.",[1333],"KMP",[],[],{"slug":1337,"term":1338,"definition":1339,"category":1284,"aliases":1340,"links":1342,"related":1345,"readMore":-1,"target":1346,"hasArticle":1028},"mvp","MVP","The smallest version of a product that can go in front of real users and still answer the question you built it to answer. A decision about scope, not about quality — an MVP still has to work.",[1341],"minimum viable product",[1343],{"kind":1051,"url":1344},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FMinimum_viable_product",[1178],"\u002Fglossary#mvp",{"slug":1097,"term":1348,"definition":1349,"category":1073,"aliases":1350,"links":1354,"related":1357,"readMore":-1,"target":1358,"hasArticle":1028},"Multi-architecture image","A single image tag that resolves to different binaries per CPU architecture — linux\u002Famd64 and linux\u002Farm64 are the common pair — so the same docker pull works unchanged on Intel\u002FAMD servers and Apple Silicon laptops.",[1351,1352,1353],"multi-arch build","multi-platform image","linux\u002Famd64 + linux\u002Farm64",[1355],{"kind":1036,"url":1356},"https:\u002F\u002Fdocs.docker.com\u002Fbuild\u002Fbuilding\u002Fmulti-platform\u002F",[1084],"\u002Fglossary#multi-arch-image",{"slug":1179,"term":1360,"definition":1361,"category":1073,"aliases":1362,"links":1365,"related":1368,"readMore":-1,"target":1369,"hasArticle":1028},"Multi-tenancy","One deployment serving many customers, each seeing only its own data, configuration and enabled features because tenant context is resolved per request. It is what makes a fleet of branded apps one product instead of many forks.",[1363,1364],"multi-tenant","tenant",[1366],{"kind":1051,"url":1367},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FMultitenancy",[1178,1166],"\u002Fglossary#multi-tenancy",{"slug":1371,"term":1372,"definition":1373,"category":1307,"aliases":1374,"links":1378,"related":1383,"readMore":-1,"target":1384,"hasArticle":1028},"oauth","OAuth","The standard behind Sign in with Apple, Google and the rest: the user authorises your app at a provider they already trust, and your app receives a token instead of their password. Nobody invents a new credential and you never store one.",[1375,1376,1377],"OAuth 2.0","social login","Sign in with Apple",[1379,1381],{"kind":1023,"url":1380},"https:\u002F\u002Foauth.net\u002F2\u002F",{"kind":1051,"url":1382},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FOAuth",[1150],"\u002Fglossary#oauth",{"slug":1054,"term":1386,"definition":1387,"category":1073,"aliases":1388,"links":1392,"related":1395,"readMore":-1,"target":1396,"hasArticle":1028},"Object storage","Storage that holds a whole file under a key rather than in a filesystem tree — Amazon S3 and the many services that speak its API. Cheap, effectively unlimited, and the usual home for raw events, backups and media: written once, read rarely, kept forever.",[1389,1390,1391],"S3","S3-compatible storage","blob storage",[1393],{"kind":1051,"url":1394},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FObject_storage",[1043],"\u002Fglossary#object-storage",{"slug":1207,"term":1398,"definition":1399,"category":1059,"aliases":1400,"links":1403,"related":1408,"readMore":-1,"target":1409,"hasArticle":1028},"PCI-DSS","The card industry security standard binding anyone who stores, processes or transmits card data. Most apps stay out of its scope on purpose, by handing card entry to a certified payment provider instead.",[1401,1402],"PCI DSS","Payment Card Industry Data Security Standard",[1404,1406],{"kind":1023,"url":1405},"https:\u002F\u002Fwww.pcisecuritystandards.org\u002F",{"kind":1051,"url":1407},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPayment_Card_Industry_Data_Security_Standard",[1150],"\u002Fglossary#pci-dss",{"slug":330,"term":1411,"definition":1412,"category":1018,"aliases":1413,"links":1416,"related":1419,"readMore":-1,"target":1420,"hasArticle":1028},"Platform channels","The bridge a Flutter app uses to call native iOS and Android code — Keychain and Keystore, biometrics, payment sheets, any SDK without a Dart package. Routine work but real work, and the first place an engineer who never left Dart will stall.",[1414,1415],"platform channel","method channel",[1417],{"kind":1036,"url":1418},"https:\u002F\u002Fdocs.flutter.dev\u002Fplatform-integration\u002Fplatform-channels",[76],"\u002Fglossary#platform-channels",{"slug":1422,"term":1423,"definition":1424,"category":1307,"aliases":1425,"links":1428,"related":1431,"readMore":-1,"target":1432,"hasArticle":1028},"post-quantum-cryptography","Post-quantum cryptography","Encryption algorithms built to stay secure against a future quantum computer, now standardized by NIST. The migration is urgent ahead of the hardware because traffic captured today can be decrypted once such a machine exists.",[1426,1427],"PQC","post-quantum crypto",[1429],{"kind":1051,"url":1430},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPost-quantum_cryptography",[1149,1139],"\u002Fglossary#post-quantum-cryptography",{"slug":1293,"term":1434,"definition":1435,"category":1284,"aliases":1436,"links":1439,"related":1442,"readMore":-1,"target":1444,"hasArticle":1028},"Product-market fit","The point at which a product has demonstrably found people who want it — they use it, come back, and pay. Before it, engineering answers a question; after it, engineering answers demand.",[1437,1438],"PMF","product\u002Fmarket fit",[1440],{"kind":1051,"url":1441},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FProduct-market_fit",[1337,1443],"time-to-market","\u002Fglossary#product-market-fit",{"slug":1446,"term":1447,"definition":1448,"category":1059,"aliases":1449,"links":1451,"related":1454,"readMore":-1,"target":1456,"hasArticle":1028},"prompt-injection","Prompt injection","An attack where text supplied by a user is read by a language model as instructions rather than as data, steering it past its own rules. The LLM-era sibling of SQL injection, and it appears wherever user input is concatenated into a prompt.",[1450],"injection attack",[1452],{"kind":1051,"url":1453},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPrompt_injection",[1455],"rate-limiting","\u002Fglossary#prompt-injection",{"slug":1162,"term":1458,"definition":1459,"category":1073,"aliases":1460,"links":1463,"related":1466,"readMore":-1,"target":1467,"hasArticle":1028},"Pub\u002FSub","A messaging pattern where a producer publishes an event and any number of consumers read it independently, with a broker in between. The producer never waits for them, which is how a request path stays fast while slower work happens behind it.",[1461,1462],"publish\u002Fsubscribe","Google Cloud Pub\u002FSub",[1464],{"kind":1051,"url":1465},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FPublish%E2%80%93subscribe_pattern",[],"\u002Fglossary#pub-sub",{"slug":1080,"term":1469,"definition":1470,"category":1073,"aliases":1471,"links":1474,"related":1477,"readMore":-1,"target":1478,"hasArticle":1028},"REST","The conventional style for HTTP APIs: a URL names a resource and the HTTP verb says what to do with it. The default way an app talks to a backend, and what most third-party integrations expect to find.",[1472,1473],"REST API","Representational State Transfer",[1475],{"kind":1051,"url":1476},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FREST",[1161,1163],"\u002Fglossary#rest",{"slug":1455,"term":1480,"definition":1481,"category":1059,"aliases":1482,"links":1485,"related":1488,"readMore":-1,"target":1489,"hasArticle":1028},"Rate limiting","A cap on how many requests one caller may make in a given window. It is what stops a single enthusiastic user, a scraper or a bot from spending a month of paid API budget in an afternoon, and it has to live on your side of the integration.",[1483,1484],"rate limit","throttling",[1486],{"kind":1051,"url":1487},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FRate_limiting",[1446],"\u002Fglossary#rate-limiting",{"slug":1208,"term":1491,"definition":1492,"category":1059,"aliases":1493,"links":1496,"related":1499,"readMore":-1,"target":1500,"hasArticle":1028},"SOC 2","An external auditor report on how an organisation handles customer data — security, availability, confidentiality — rather than a certificate you buy. Enterprise buyers ask for it, and it constrains architecture long before the audit itself does.",[1494,1495],"SOC2","System and Organization Controls",[1497],{"kind":1051,"url":1498},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSystem_and_Organization_Controls",[1207,1195,1209],"\u002Fglossary#soc-2",{"slug":1502,"term":1503,"definition":1504,"category":1284,"aliases":1505,"links":1508,"related":1511,"readMore":-1,"target":1512,"hasArticle":1028},"saas","SaaS","Software sold as an ongoing subscription to a hosted product rather than as a one-off license the customer installs and runs. The vendor operates the servers, ships updates continuously, and bills per seat or per usage.",[1506,1507],"Software as a Service","software-as-a-service",[1509],{"kind":1051,"url":1510},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSoftware_as_a_service",[1179,1178],"\u002Fglossary#saas",{"slug":1163,"term":1514,"definition":1515,"category":1307,"aliases":1516,"links":1518,"related":1521,"readMore":-1,"target":1522,"hasArticle":1028},"Server-Sent Events","A one-way stream from server to client over an ordinary HTTP connection. Simpler than a WebSocket and enough wherever only the server has something to say — a progress feed, an AI response arriving token by token.",[1517],"SSE",[1519],{"kind":1051,"url":1520},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FServer-sent_events",[1161,1080],"\u002Fglossary#server-sent-events",{"slug":1256,"term":1524,"definition":1525,"category":1073,"aliases":1526,"links":1529,"related":1532,"readMore":-1,"target":1533,"hasArticle":1028},"Server-side rendering","Building a page as finished HTML on the server, so the first response already carries the content, headings, meta tags and structured data. Crawlers, link previews and slow devices read it without running JavaScript.",[1527,1528],"SSR","server-rendered",[1530],{"kind":1051,"url":1531},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FServer-side_scripting",[1246],"\u002Fglossary#server-side-rendering",{"slug":663,"term":1535,"definition":1536,"category":1018,"aliases":1537,"links":1540,"related":1545,"readMore":-1,"target":1546,"hasArticle":1028},"Skia","The open-source 2D graphics library from Google that draws Chrome, Android and — until Impeller — every Flutter frame. It renders to PDF as well as to a screen, which is what print-to-PDF in Chrome is doing.",[1538,1539],"Skia Graphics Engine","skia-safe",[1541,1543],{"kind":1023,"url":1542},"https:\u002F\u002Fskia.org\u002F",{"kind":1051,"url":1544},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FSkia_Graphics_Engine",[1271],"\u002Fglossary#skia",{"slug":1548,"term":1549,"definition":1550,"category":1284,"aliases":1551,"links":1554,"related":1555,"readMore":-1,"target":1557,"hasArticle":1028},"staff-augmentation","Staff augmentation","A hiring model where engineers from an outside partner join your team and work under your management — in your repository, your sprints, your process — instead of delivering a project of their own. You buy capacity; the code and the context stay with you.",[394,1552,1553],"dedicated developers","outstaffing",[],[1556,1443],"total-cost-of-ownership","\u002Fglossary#staff-augmentation",{"slug":1177,"term":1559,"definition":1560,"category":1059,"aliases":1561,"links":1564,"related":1565,"readMore":-1,"target":1566,"hasArticle":1028},"Staged rollout","Releasing a build to a small percentage of users first and widening only once the crash-free rate holds. A bad build caught at ten percent is a bad afternoon; the same build at a hundred percent is a bad week.",[1562,1563],"phased release","canary release",[],[1166,342],"\u002Fglossary#staged-rollout",{"slug":1568,"term":1569,"definition":1570,"category":1073,"aliases":1571,"links":1575,"related":1578,"readMore":-1,"target":1579,"hasArticle":1028},"state-management","State management","How an app decides where a value lives, who is allowed to change it, and which parts of the screen redraw when it does. In Flutter the choice between Riverpod, BLoC and Provider is among the first architectural decisions and the hardest to revisit.",[1572,1573,1574],"state management","BLoC","Riverpod",[1576],{"kind":1036,"url":1577},"https:\u002F\u002Fdocs.flutter.dev\u002Fdata-and-backend\u002Fstate-mgmt\u002Foptions",[1212],"\u002Fglossary#state-management",{"slug":1149,"term":1581,"definition":1582,"category":1307,"aliases":1583,"links":1587,"related":1590,"readMore":-1,"target":1591,"hasArticle":1028},"TLS","The encryption layer underneath HTTPS. It proves the server is who its certificate says, agrees a fresh key for the session, and encrypts everything after that — so the network in between sees ciphertext it cannot quietly alter.",[1584,1585,1586],"SSL","HTTPS","Transport Layer Security",[1588],{"kind":1051,"url":1589},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FTransport_Layer_Security",[1139,1150],"\u002Fglossary#tls",{"slug":1443,"term":1593,"definition":1594,"category":1284,"aliases":1595,"links":1597,"related":1600,"readMore":-1,"target":1601,"hasArticle":1028},"Time to market","How long it takes to get a product from decision to real users. Most stack and scope arguments are really arguments about this number, because every week saved is a week of revenue, feedback and competitive position.",[1596,1443],"TTM",[1598],{"kind":1051,"url":1599},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FTime_to_market",[1337,1556],"\u002Fglossary#time-to-market",{"slug":1556,"term":1603,"definition":1604,"category":1284,"aliases":1605,"links":1608,"related":1611,"readMore":-1,"target":1612,"hasArticle":1028},"Total cost of ownership","What a product costs across its whole life rather than to build once: maintenance, upgrades, annual OS and store migrations, and the second team you staff to keep two codebases in step. Usually larger than the build quote, and almost never inside it.",[1606,1607],"TCO","cost of ownership",[1609],{"kind":1051,"url":1610},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FTotal_cost_of_ownership",[1443],"\u002Fglossary#total-cost-of-ownership",{"slug":1614,"term":1615,"definition":1616,"category":1307,"aliases":1617,"links":1619,"related":1624,"readMore":-1,"target":1626,"hasArticle":1028},"webrtc","WebRTC","The browser and mobile standard for sending audio, video and data directly between two devices, with servers involved only in introducing them to each other. It is what an in-app video call is built on when it is not a rented SDK.",[1618],"Web Real-Time Communication",[1620,1622],{"kind":1023,"url":1621},"https:\u002F\u002Fwebrtc.org\u002F",{"kind":1051,"url":1623},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FWebRTC",[1625,1161],"xmpp","\u002Fglossary#webrtc",{"slug":1161,"term":1628,"definition":1629,"category":1307,"aliases":1630,"links":1631,"related":1634,"readMore":-1,"target":1635,"hasArticle":1028},"WebSocket","A protocol that holds one connection open between client and server so either side can send at any moment, instead of the client asking over and over. What live prices, chat and presence indicators run on.",[],[1632],{"kind":1051,"url":1633},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FWebSocket",[1163,1080],"\u002Fglossary#websocket",{"slug":1178,"term":1637,"definition":1638,"category":1284,"aliases":1639,"links":1642,"related":1645,"readMore":1646,"target":1646,"hasArticle":506},"White-label","One product shipped under many brands. A white-label mobile platform builds each client a store-ready app with its own name, design and content from a single shared codebase, instead of forking the project per customer.",[1640,1641],"white label","multi-tenant app",[1643],{"kind":1051,"url":1644},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FWhite-label_product",[1337],"\u002Fglossary\u002Fwhite-label",{"slug":1625,"term":1648,"definition":1649,"category":1307,"aliases":1650,"links":1653,"related":1658,"readMore":-1,"target":1659,"hasArticle":1028},"XMPP","An open, federated messaging protocol, and the long-standing alternative to writing a chat backend or renting one. It extends to presence, typing indicators and file transfer, and it is old enough that every platform has a mature client library.",[1651,1652],"Jabber","Extensible Messaging and Presence Protocol",[1654,1656],{"kind":1023,"url":1655},"https:\u002F\u002Fxmpp.org\u002F",{"kind":1051,"url":1657},"https:\u002F\u002Fen.wikipedia.org\u002Fwiki\u002FXMPP",[1614,1161],"\u002Fglossary#xmpp"]