Software maintenance cost per year for vibe-coded apps
Updated 2026-11-08
A vibe-coded app has no universal annual maintenance price. Estimate the work your actual app needs: supported dependencies, security fixes, regression checks and human review. Keep recurring service costs separate so a low tool subscription does not hide the hours needed to maintain the application.
This guide is for a JavaScript or TypeScript app in a public GitHub repository using npm, pnpm or Yarn. It provides a planning method, not a quote or an industry benchmark. The original build effort does not tell you how much upkeep the current dependency tree, integrations and data model will require.
An app that mostly displays static content has a different maintenance surface from one that signs people in, stores private records and handles payments. Count those responsibilities explicitly. The fact that a coding agent wrote the first version does not remove the need to review changes or decide what a correct result looks like.
Define the maintenance boundary
Start with a sentence describing the service you want to preserve. For example: “Keep the current sign-in, profile and reporting flows working on supported dependencies.” Adding a new reporting product is feature development. Repairing that existing flow after a framework migration is maintenance. You can budget for both, but keep them visible as different work.
List the included environments: local development, a test deployment and production, if you operate all three. Say whether routine hosting, database, domain and email bills belong in this budget or another operating-cost budget. Avoid counting the same subscription twice.
Record who owns releases, database access and incidents. If your own time is part of the plan, include it even if you do not pay yourself an invoice. An estimate with no review hours is incomplete when every proposed change waits for you to inspect and merge it.
Inventory the work that drives cost
| Cost driver | What to inspect | Work to include |
|---|---|---|
| Major upgrades | Framework support, required runtimes and upgrade guides. | Source migration, integration changes, testing and rollout. |
| Security fixes | Known advisories, affected versions and available patches. | Triage, repair, verification and documented deferrals. |
| Regressions | Fragile flows, previous failures and missing coverage. | Reproduction, debugging, test additions and recovery. |
| Data and integrations | Auth, database policies, API contracts and backups. | Compatibility checks, migration review and restore rehearsals. |
| Human ownership | Who understands the app and approves a release. | Setup, context gathering, review and release decisions. |
Use repository evidence before guessing hours. For npm projects, npm outdated helps distinguish allowed updates from the latest-tagged releases. It does not predict migration effort. Read the relevant upgrade guides and inspect how heavily your application uses each package.
A small dependency bump may need only a short verification cycle. A framework major can alter routing, rendering or supported runtime assumptions. Follow the safe-update workflow and estimate each coherent migration separately. Do not assume all packages take equal time because each produces one pull request.
For security work, separate an available compatible patch from an unpatched advisory or a fix requiring a major. The security-alert guide explains the review workflow. Leave time for investigation and an explicit decision when installing a new version is not sufficient.
Estimate annual hours and recurring costs
The following formula is an estimate, not observed pricing or a claim about typical apps. Fill it with your own history, quotes and invoices. Use ranges for uncertain inputs rather than presenting a precise total from uncertain assumptions.
Estimated annual hours =
sum(planned occurrences × hours per occurrence)
+ expected investigation and recovery hours
Estimated annual maintenance cost =
estimated annual hours × your labor rate
+ annual maintenance tool and agent costs
+ any included recurring operating costsMake “hours per occurrence” include preparation, implementation, tests, review and release. Keep urgent investigation as a visible assumption; do not pretend you know how many incidents will occur. Where past work exists, use actual time from comparable updates to narrow the range.
For subscriptions, use the billing interval and price you actually pay. If you include a monthly service for a full year, annualize that expense consistently and account for any annual billing option separately. Include your coding-agent plan or usage charges when they support maintenance. Do not assign every existing subscription entirely to upkeep if it also funds new feature work.
Avoid calculating a return on automation from hypothetical saved hours. First record how long a representative maintenance change takes with your current process. Then compare equivalent work, including setup and review. A faster generated patch can still require substantial human time to understand and verify.
Compare ways to deliver the work
Self-maintenance puts implementation and review on your calendar. Automation can help inspect dependencies, apply migrations and run checks, while leaving decisions and verification to the owner. Human help can cover difficult debugging or a migration you cannot safely review yourself. Compare a concrete scope and result rather than a headline monthly price.
- Ask which updates, frameworks and integrations are in scope.
- Confirm whether the work includes application-code repairs or only dependency bumps.
- Ask which tests run and how failure evidence reaches you.
- Agree who approves, merges, deploys and handles a failed rollout.
- Record exclusions, response expectations and ownership of the resulting source changes.
Use the breaking-update workflow guide to evaluate what happens after a version bump fails. More generated pull requests do not necessarily mean less maintenance work. A small number of verified repairs may be more useful than a large unattended queue.
Replace assumptions with observed work
After each maintenance change, record the package family, reason, implementation time, review time and checks performed. Note time spent understanding missing configuration or repairing unrelated failures. Those costs suggest where better setup instructions and focused tests will help future updates.
A browser smoke suite can make important checks repeatable; Playwright documents assertions for user-visible behavior. Budget for maintaining those tests as the app changes. A test suite that is always skipped does not reduce the uncertainty in a maintenance estimate.
Revisit the estimate when you add a backend, payments, another integration or a new major framework. Use the maintenance checklist to keep the responsibility list current. The public report below gives a dependency snapshot for supported public repositories; it does not price the work, inspect application code or measure uptime.
For weekly upkeep, you can manually create a recurring dependency-review task with Denly’s task schedules after connecting a project and runner. Configure its instructions and review gates before enabling it. The public report form below creates a report; it does not create a schedule or a pull request.
Commands and product behavior on this page were checked against the vendor documentation linked here on 8 November 2026. Those products change their screens. If a label has moved, follow the linked page rather than a memory of this one.
Read next
Maintenance and security checklist for vibe-coded apps · Dependabot alternatives that help fix breaking changes
Denly