← Concepts

阅读中文版本

Graceful Degradation Strategy

Graceful degradation strategy defines the reduced-but-functional mode a system enters when a dependency fails, so the user sees a partial result rather than an error page.

reliability

Definition

Graceful degradation strategy is the design practice of defining, for each non-critical dependency, the reduced mode the system enters when that dependency is unavailable — a stale cache, a default value, a disabled feature — so that the user sees a functional page with degraded data rather than an error, and the system stays up.

Context and scope

Applied in frontends with optional services, read paths with optional enrichments, and any system where a partial result is more valuable than an error.

Common misconceptions

  • Graceful degradation is just fallbacks — it is fallbacks with a defined degraded mode and a recovery path; a fallback without the mode definition is a guess
  • Degradation means showing an error — it means showing something useful; an error page is not degradation, it is failure

Anti-patterns

  • Falling back to a generic error page when a non-critical widget fails, degrading to failure instead of to a functional page without the widget
  • Caching the degraded state without a TTL, so the system stays degraded after the dependency recovers

Related concepts

Authoritative source

https://www.w3.org/TR/waiaria-implementation/

What it is

Graceful degradation strategy is the design practice of defining, for each non-critical dependency, the reduced mode the system enters when that dependency is unavailable — a stale cache, a default value, a disabled feature — so that the user sees a functional page with degraded data rather than an error, and the system stays up. Applied in frontends with optional services, read paths with optional enrichments, and any system where a partial result is more valuable than an error. Reliability is a probabilistic property of a system under load, not a feature you add — it is the result of how failures are designed for, detected, and recovered from.

How it works

Failure is assumed; the design question is the blast radius of each failure mode. Redundancy eliminates single points of failure but introduces consistency and split-brain risks that must be solved explicitly. Error budgets quantify the reliability the system can afford, converting “we should be more reliable” into “we have spent this month’s budget and must choose between features and fixes.” Recovery is rehearsed, not theorized.

When to invest and pitfalls

Invest when downtime has a measurable cost — revenue, trust, or safety. The pitfall is adding redundancy without solving the consistency problem it creates — two copies that disagree are worse than one copy that is wrong. Another is chasing five nines without measuring where the downtime actually comes from, investing in the rare failure while ignoring the common one.