Web Application Maintenance After Launch: What Needs Ongoing Attention?

A web application can go live on Monday and begin changing on Tuesday even if nobody on the development team touches the code.

Chrome updates. Safari changes. A JavaScript dependency publishes a security advisory. Traffic grows. The database accumulates another million records. A payment provider changes an API. A TLS certificate moves closer to expiry. The cloud platform releases a new runtime while the version your application uses gets closer to end of support.

Meanwhile, the product itself keeps accumulating data, customers, configuration and integrations.

This is the defining challenge of maintaining a web application after launch: the application lives inside a technical environment that continues moving around it.

Post-launch web application maintenance is therefore not simply fixing defects. It is the ongoing work required to keep the live application reliable, secure, performant, compatible and supportable while browsers, infrastructure, dependencies, data and usage evolve.

For Levelworks, several App Health aspects become particularly relevant here: Current & Updated, Compatible, Secure, Performant, Observable, Error Free and Seamlessly Updatable. The purpose of maintenance is not to change the application continually for its own sake. It is to stop the distance between the application and its operating environment from becoming large enough to create avoidable risk.

Browser compatibility keeps moving after launch

A web application does not execute in an environment you control completely. Part of it runs inside the user's browser.

That matters because browser engines continue evolving.

Chrome, Safari, Firefox and Edge add web-platform features, change implementation details, fix defects and occasionally expose assumptions in existing applications. Users also run different browser versions, operating systems, screen sizes and devices.

MDN defines cross-browser testing as ensuring that a web application works across the browsers and devices relevant to its audience, while also noting that supporting every possible browser/device combination is unrealistic. MDN: Introduction to cross-browser testing

That means a web application's browser-support policy should continue after launch.

Useful maintenance work includes:

  • reviewing which browsers customers actually use;
  • testing important workflows across supported browsers;
  • watching browser-specific production errors;
  • testing newer browser releases when the application depends on sensitive platform behavior;
  • reviewing support before introducing new web-platform features.

The Web Platform Baseline project can also help teams understand whether HTML, CSS and JavaScript capabilities have broad browser availability. Baseline currently considers Chrome, Edge, Firefox and Safari across supported desktop and mobile variants, although MDN correctly warns that Baseline does not replace real compatibility, accessibility or usability testing. MDN: Baseline compatibility

The practical objective is not visual perfection in every historical browser.

It is confidence that important user journeys continue working throughout the browser range the business has intentionally agreed to support.

[Internal Link: “Browser Compatibility Testing: How to Keep Web Apps Working Everywhere”]

Keep frontend and backend dependencies moving in manageable steps

Modern web applications are assembled from large dependency trees.

The frontend may use a framework, UI libraries, routing packages, authentication SDKs and build tooling. The backend may depend on web frameworks, database drivers, cloud SDKs, logging packages and dozens of transitive libraries.

These components continue changing after your application launches.

OWASP recommends maintaining an inventory of both direct and transitive dependencies, tracking their versions and monitoring them for vulnerabilities and support status. Its current guidance also treats proactive dependency updates as recurring lifecycle work rather than something performed only when a vulnerability becomes urgent. OWASP: Keep Your Components Secure

A sensible web maintenance process therefore includes:

  • dependency inventory;
  • automated vulnerability scanning;
  • review of unsupported packages;
  • regular low-risk updates;
  • testing after significant upgrades.

The cadence matters.

Updating a moderately outdated framework can be ordinary maintenance. Updating a framework that has been left untouched for four years can become a migration project involving build tooling, libraries, runtime versions and application code simultaneously.

Regular smaller changes prevent that gap from becoming unnecessarily wide.

[Internal Link: “Why Dependency Updates Are Essential to App Maintenance”]

Patch the layers underneath the application too

The application repository is only part of the web stack.

A typical production application may depend on:

Browser

   ↓

CDN / DNS

   ↓

Load balancer / proxy

   ↓

Web server

   ↓

Application runtime

   ↓

Application

   ↓

Database / cache / queues

Security and support problems can emerge in any layer.

OWASP's guidance on vulnerable and outdated components specifically includes operating systems, web/application servers, database systems, runtimes, APIs, frameworks and libraries—not just packages imported directly into application code. OWASP: Vulnerable and Outdated Components

Post-launch maintenance should therefore maintain an inventory of important runtime and infrastructure versions, along with their support lifecycles.

That might include:

  • Node.js, .NET, Java, PHP or another runtime;
  • database engine;
  • web server;
  • operating-system image;
  • container base image;
  • managed cloud service versions.

A production application can appear completely healthy while the technology underneath it quietly moves toward end of support.

Waiting until support ends turns a planned upgrade into a deadline.

Security maintenance should follow the live application

Security testing before launch establishes a point-in-time condition.

It does not preserve that condition indefinitely.

After launch, new vulnerabilities are published, dependencies change, infrastructure is modified and new functionality alters the application's attack surface.

Ongoing web application security attention can include:

  • dependency vulnerability monitoring;
  • security patches;
  • configuration review after infrastructure changes;
  • testing sensitive authentication or authorization changes;
  • reviewing newly exposed endpoints;
  • removing obsolete packages and services.

OWASP's vulnerability-management guidance explicitly describes vulnerability management as a process that helps maintain application security following changes, bug fixes and ongoing maintenance. OWASP Developer Guide: Vulnerability Management

This does not mean performing a full penetration test after every minor release.

The depth of security work should reflect what changed and what risk it introduced.

A CSS adjustment and a complete authentication redesign clearly deserve different levels of review.

[Internal Link: “Application Security Maintenance: What Needs to Happen After Launch?”]

Performance needs to be watched as production reality changes

Web performance is not a property you establish at launch and then keep permanently.

An application changes even without obvious code deterioration because its workload changes.

A dashboard that performs well with 20 customer records may behave differently when an account contains 30,000. A database query can become slower as tables grow. More JavaScript can accumulate through successive feature releases, while new analytics or support scripts increase browser work.

Useful maintenance attention includes:

  • server-response latency;
  • slow endpoints;
  • database-query performance;
  • frontend bundle growth;
  • page-load behavior;
  • browser responsiveness;
  • cache effectiveness;
  • resource consumption.

Do not rely exclusively on averages.

A web application whose median response remains fast may still have a deteriorating p95 or p99 experience that affects a meaningful group of users.

Google SRE's widely used four golden signals—latency, traffic, errors and saturation—remain a useful foundation for understanding live service behavior because they combine user-visible performance with workload and capacity context. Google SRE: Monitoring Distributed Systems

The important maintenance habit is comparison over time.

If a previously stable workflow becomes gradually slower over several releases, that trend deserves investigation before users begin describing the application as “slow.”

Watch the database as data volume grows

Databases often reveal application age more clearly than the code does.

Production data accumulates.

Tables become larger. Queries encounter combinations developers never saw during launch testing. Indexes that were adequate at the beginning may no longer support the workload efficiently.

Post-launch attention should include:

  • slow queries;
  • database CPU and memory;
  • connection usage;
  • storage growth;
  • index effectiveness;
  • long-running migrations;
  • backup growth;
  • unusual lock or contention patterns.

The goal is not constant database tuning.

It is noticing when assumptions about data scale have stopped being true.

Consider a query that scans all historical transactions for a customer. With 300 records, poor query design may be invisible. With 300,000, it becomes a production performance problem.

Web application growth can therefore create maintenance work even where the underlying feature has not changed at all.

Keep storage, queues and caches from becoming invisible failure points

Applications often accumulate supporting state outside the primary database.

Examples include:

  • Redis caches;
  • message queues;
  • object storage;
  • search indexes;
  • temporary files;
  • background-job stores.

These components need operating limits and monitoring.

Questions worth revisiting include:

  • Is queue depth increasing?
  • Are failed jobs accumulating?
  • How old is the oldest pending job?
  • Is object-storage growth expected?
  • Are temporary files being cleaned?
  • Is cache memory approaching a limit?
  • Can an index still be rebuilt reliably?

A worker queue that grows slowly for two weeks can leave the user-facing site appearing healthy while background business operations fall progressively behind.

That is why web maintenance needs visibility beyond the HTTP request itself.

Monitor the application from the user's request through its dependencies

A /health endpoint returning HTTP 200 proves very little about whether customers can successfully use the system.

Good production monitoring should cover important workflows and their dependencies.

Depending on architecture, useful signals include:

  • request volume;
  • response errors;
  • latency percentiles;
  • application exceptions;
  • database failures;
  • queue backlog;
  • dependency failures;
  • authentication errors;
  • key business outcomes.

Google's SRE Workbook describes monitoring as necessary not just for alerting but for diagnosing problems, displaying system state and understanding long-term resource and service-health trends. It also recommends monitoring dependency latency and response behavior rather than treating external calls as invisible implementation details. Google SRE Workbook: Monitoring

That distinction becomes critical in modern web architectures.

If checkout becomes slow because a tax API is taking four seconds to respond, application monitoring should help engineers see that boundary rather than simply report that checkout is slow.

Keep TLS certificates, domains and DNS operationally owned

Some of the most disruptive web failures have nothing to do with application code.

A certificate expires.

A domain renewal fails.

A DNS record is changed incorrectly.

An old hostname remains referenced in configuration.

These assets can be quiet for months or years, which makes them easy to forget.

Certificate management increasingly favors automation. Let's Encrypt currently issues its standard certificates with a 90-day lifetime and explicitly cites automation as essential to making short-lived certificates reliable. It has also announced plans to reduce maximum certificate lifetimes further ahead of industry changes later this decade. Let's Encrypt: Certificate Lifetime Rationale and Plans

For production web applications, manually remembering certificate renewal dates is therefore an unnecessary operating risk.

Maintain clear ownership and automated renewal where possible for:

  • TLS certificates;
  • primary domains;
  • secondary domains;
  • DNS providers;
  • certificate authorities;
  • redirect domains.

These may seem administrative until one expires.

Then the entire application can become unavailable despite perfectly healthy application code.

Third-party scripts deserve attention on the browser side

Web applications frequently load JavaScript that the application team does not completely control.

Examples include:

  • analytics;
  • customer support widgets;
  • experimentation tools;
  • advertising;
  • payment components;
  • identity tools.

These scripts can affect:

  • page performance;
  • browser errors;
  • security;
  • privacy behavior;
  • rendering.

A third-party script that becomes slow does not need to take your entire page down, yet poorly isolated dependencies can have exactly that effect.

Maintenance should periodically review which browser-side integrations still exist, whether they remain necessary and whether they continue behaving acceptably.

Remove integrations that are no longer used.

Every script added to the page becomes another piece of production behavior the team may eventually need to investigate.

Maintain API compatibility between frontend and backend

Web applications can deploy frontend and backend components separately.

That creates periods where users may have an older frontend asset loaded while a new backend version is already live.

Cached browser tabs complicate this further. A customer may keep a page open for hours while server-side behavior changes underneath it.

Maintenance and release design should therefore avoid unnecessary assumptions that every component updates simultaneously.

For example, removing an API response field immediately when deploying a new frontend can break:

  • cached frontend bundles;
  • another application consuming the API;
  • background workers;
  • external integrations.

Version compatibility and deployment sequencing matter even in applications where frontend releases normally propagate quickly.

The larger subject belongs to backward compatibility, but the operational lesson is straightforward: production web components rarely switch versions at precisely the same instant.

Test critical journeys after production changes

A deployment being technically successful does not prove the application still works.

After meaningful production changes, validate a small number of critical workflows.

Examples might include:

  • login;
  • account creation;
  • search;
  • checkout;
  • file upload;
  • payment;
  • report generation.

These checks can be automated where practical.

The test should verify useful behavior rather than merely checking that the homepage responds.

For example:

Sign in

   ↓

Find product

   ↓

Add to basket

   ↓

Reach checkout

is a much stronger production signal than:

GET /

→ 200 OK

The maintenance team should know which workflows matter most and verify them after releases.

Keep production configuration from drifting away from code

Configuration problems commonly appear after launch because environments evolve independently.

Examples include:

  • missing environment variables;
  • outdated secrets;
  • different feature flags;
  • inconsistent cache settings;
  • changed CORS rules;
  • forgotten scheduled jobs.

Where practical, configuration and infrastructure should be version controlled or managed through repeatable automation rather than manually recreated from memory.

Even where sensitive configuration cannot live in source control, its expected existence and ownership should be documented.

A common warning sign is hearing:

“Production has a special setting for that, but I'm not sure where it was changed.”

The longer an application operates, the more dangerous undocumented exceptions become.

Review backups by restoring, not by looking at a green backup job

Backup processes can report success while still failing to provide usable recovery.

Web maintenance should periodically validate that important application data can actually be restored.

The relevant questions include:

  • Are the required databases and files covered?
  • Is retention appropriate?
  • Who can perform restoration?
  • Are encryption keys or credentials available?
  • Has a recovery procedure been exercised recently?

The detailed backup and disaster-recovery strategy belongs elsewhere in the series, but maintenance needs to ensure that existing recovery mechanisms remain usable as the application architecture changes.

A new storage service that never gets added to the backup plan creates an obvious gap.

Release pipelines need maintenance too

CI/CD configuration is part of the application operating system.

Over time:

  • build actions become outdated;
  • runtime images change;
  • credentials expire;
  • test suites become slower or unreliable;
  • manual exceptions accumulate.

A production application should remain reproducibly deployable.

If the team has not released anything for six months, running the pipeline in a safe environment is often more informative than assuming it still works.

The same principle applies to rollback procedures.

A rollback process that was documented two years ago but has not been tested against the current database and deployment architecture may no longer represent reality.

Use a maintenance rhythm instead of waiting for breakage

Different kinds of web maintenance operate on different timelines.

Cadence

Typical attention

Continuous

Errors, latency, availability, queues, critical business flows

After releases

Regression checks, browser errors, performance changes

Regular / monthly

Dependency updates, security findings, storage and database trends

Quarterly / periodic

Browser-support policy, infrastructure versions, unused services

Lifecycle-driven

Runtime, framework, database and third-party platform upgrades

Renewal-driven

Domains, certificates and external credentials

The exact cadence should reflect the application's risk and rate of change.

What matters is that maintenance work becomes routine before any one item turns into an emergency.

A web application never really remains on its launch-day stack

The interesting thing about a mature web application is that parts of its original environment gradually disappear.

The browser versions used during launch are replaced. Package versions move on. Infrastructure is upgraded. Databases grow. Certificates renew. External services evolve. New users put the application through workloads the original development team never saw.

The application survives by continuing to move with enough of that environment.

That is the practical relationship between Current & Updated, Compatible, Secure, Performant and Observable App Health. None exists permanently because a release passed QA once.

A well-maintained web application is not frozen in the state in which it launched. It is continually kept close enough to the modern web around it that routine change remains routine.

Once that distance becomes too large, ordinary maintenance starts turning into rescue work.

‍

Continue Reading