Why an app that works still needs maintenance
- Google Play raises the required target API level on a schedule; apps that miss it stop being discoverable by new users
- Android and iOS change permission, background and privacy rules each year
- Packages and SDKs stop being maintained or change their APIs
- New devices and OS versions expose crashes that did not exist at launch
- Store policies on data, ads and subscriptions change and require form updates
A maintenance checklist
| Task | Cadence |
|---|---|
| Review crash reports and fix the top crashes | Weekly |
| Read and respond to store reviews with fixes | Weekly |
| Update Flutter, Dart and packages | Monthly or per release |
| Check target API and store policy deadlines | Quarterly, and when the stores announce changes |
| Re-check Data safety and privacy labels against the current SDK list | Every release that adds or removes an SDK |
| Renew certificates, keys and developer memberships | Yearly |
| Ship a release, even a small one | Regularly, so the app never looks abandoned |
Tooling that makes maintenance cheap
Because we run a portfolio of our own apps, we built tooling to maintain them: a shared Flutter package that reads remote configuration and shows soft or forced update prompts, Cloud Functions that check each app's Google Play listing nightly and flag apps whose last release is getting old, and an admin panel that manages privacy policies, notifications and release plans in one place. Crashlytics reports crashes from real devices. The same approach applies to client apps.
Soft and forced update prompts
An app that can read a minimum supported version from remote configuration can ask users to update, or require it, without a new store release. This is the fastest way to retire a version with a serious bug. Build it into version one; it is hard to add to users who already have an app without it.
Taking over an app someone else built
Start with an audit: does it build with current tools, how healthy are the dependencies, what do the crash reports say, is the store policy status green, and is there test coverage. From that comes a prioritised list of what is urgent, what is risky and what can wait, and then a maintenance plan.