US | Operations | 2026-08-16

App Maintenance Costs After Launch

The build invoice is a one-time number; the app is a subscription you pay in engineering hours, and the annual bill is more predictable than most owners expect.

App Maintenance Costs After Launch

An app that shipped in March and was never touched again will usually still work in September. By the following March it may be rejected from an app store review queue, refusing to build on the current toolchain, or silently failing for the third of your users who upgraded their phones. Nothing broke on your end. The ground moved.

Most owners budget the build and stop there. The build is the smaller number over a three-year horizon. Here is what the second number is made of.

The fees are trivial. The forced work is not.

Apple charges $99 per year for the Developer Program. Google charges $25 once, forever. Together that is less than a single hour of developer time. Nobody has ever been surprised by those.

The surprise is the calendar. Apple ships a major iOS version every September and, within a few months, starts requiring apps to be built against the newest SDK for any submission — including a one-line bug fix. Google Play enforces a rolling target API level requirement, currently pushing apps to target a recent Android version to stay updatable and, eventually, discoverable. Neither of these cares whether you had a change planned.

So the sequence goes: you have no roadmap items, you have a typo to fix in a pricing label, and shipping that typo requires updating the Flutter SDK, updating twelve packages, resolving three breaking changes, re-testing every screen, and regenerating your release build. A one-line change becomes a two-week engagement. This is the single most common way maintenance budgets get blown — not by big projects, but by small ones with expensive prerequisites.

Where things actually break

In a typical Flutter app with a Firebase backend and Stripe payments, breakage clusters in a handful of predictable places:

Backend and third-party costs scale with success

Firebase's free tier carries a genuinely small app comfortably. The cost curve is not smooth, though, and it is driven by patterns rather than user counts.

Firestore bills per document read. An app whose home screen loads a 200-item list on every open, without pagination or caching, spends a hundred times more than one that loads 20 and caches. Two apps with identical user numbers can differ by an order of magnitude in bill. Cloud Storage egress for images behaves the same way when nobody resized the uploads. Cloud Functions invocations climb when you add background triggers.

Add the recurring line items that have nothing to do with your code: Stripe's per-transaction cut, a transactional email provider, a crash reporting tier, an SMS provider if you verify phone numbers, and — if you shipped an AI agent — per-token model costs that rise with usage rather than staying flat.

A realistic annual figure

For a custom Flutter build in the $2,500 to $7,000 range, plan on 15% to 25% of the original build cost per year for keeping the app current, with heavier apps toward the top of that range.

Line itemTypical annual costNotes
Apple Developer Program$99Lapses lock you out of submissions
Google Play$0 after $25 onceTarget API deadlines still apply
OS + SDK compatibility pass8–20 dev hoursUsually 1–2 times per year
Dependency and security updates4–12 dev hoursQuarterly is a sane cadence
Certificate / key renewals1–3 dev hoursCheap unless you miss the date
Backend hosting$0–$300/moQuery patterns matter more than user count
Bug fixes and support2–8 hours/moHeaviest in the first 90 days

Those percentages assume no new features. Feature work is a separate budget, and conflating the two is why owners feel like maintenance is expensive — they are counting the roadmap inside it.

What deferring actually looks like

Skipping maintenance does not produce steady decay. It produces a cliff.

Year one of neglect is usually invisible. Year two is where an urgent fix becomes impossible on a short timeline, because the SDK jump you avoided is now three versions wide and the packages you depended on have had breaking rewrites. A change that would have cost 6 hours as part of routine upkeep costs 40 to 80 hours as an unplanned catch-up project, and it lands exactly when you have a real emergency — a broken checkout, a crash on the newest iPhone, a store compliance notice with a deadline.

The store-level consequences are the ones with hard dates. Apps that fall too far behind Play's target API requirements stop being available to new users on newer devices. Apps that ignore a compliance notice — a missing privacy declaration, an outdated data safety form, an account deletion requirement — can be removed from sale. Removal is recoverable, but recovery takes review cycles you do not control.

The quieter cost is knowledge. The developer who built it remembers why the auth flow has that odd retry. Eighteen months later, whoever picks it up is reading code cold. This is the strongest practical argument for owning your full source: continuity does not depend on any single shop staying interested, and a new team can be productive without a rewrite.

How to keep the number small

A few decisions at build time move the annual figure by a large multiple:

Treat the annual figure as part of the purchase price and the math holds up. Treat the build as the whole cost and the app becomes an asset that quietly turns into a liability around month twenty.

CrateShip Studios
White-label Flutter apps, delivered in 30-60 days, from $2,500 - full source code included.
Get started