Graceful Degradation
When a dependency fails, downgrade the user-facing experience to a working subset rather than failing entirely.
Intent & Description
🎯 Intent
When a dependency fails, downgrade the user-facing experience to a working subset rather than failing entirely.
📋 Context
A user-facing agent product combines several optional capabilities — a retrieval-augmented-generation backend that produces citations, a vision model that reads screenshots, a sandbox that runs user code, a payment integration. Each of these dependencies can have its own bad day independently of the others. The product is more than the sum of any single capability and can produce something useful even when one piece is missing.
💡 Solution
Define per-feature fallback behaviour. On dependency failure, downgrade (text-only when vision fails, no citations when retrieval fails, simple summary when code execution fails) and disclose to the user that degraded mode is active. Feature flags double as degradation switches.
Real-world Use Case
- A dependency outage would otherwise fail the user request entirely.
- Per-feature fallback behaviour can be defined (text when vision fails, no citations when retrieval fails).
- The user can be told that degraded mode is active without breaking trust.
Source
Advantages
- Product resilience under partial outages.
- User trust via transparent degradation.
Disadvantages
- Test matrix grows with feature count.
- Degraded modes can themselves have bugs.