Use graceful degradation on any user-facing path where partial results beat no results. Read-heavy pages, dashboards, feeds, and search results are good candidates because a slightly stale or trimmed answer is still useful. It is most valuable for the dependencies you do not fully control, such as a third-party API, a recommendation model, or an analytics service.
Be careful where correctness is non-negotiable. You should not silently degrade a payment authorization, a balance check, or an inventory decrement by serving stale data, because that produces double charges or oversold stock. For those flows the right answer is to fail loudly and stop, not to fall back to a guess.
The cost is complexity and testing burden. Every fallback is a second code path that has to be written, reviewed, and exercised. Fallbacks that are never tested tend to be broken when you finally need them, so teams run game days and chaos experiments that deliberately kill dependencies to confirm the degraded mode actually works.