Error handling is revenue protection – each platform’s recovery flow reflects assumptions about which failures cost most.
Slack: Retention Over Perfection

When Slack’s message fails to send, it stays visible with a red “Failed to send” flag and a retry button, with the error state preserving your work and keeping you in the flow.
If messages fail, teams shift to email or competitors: Slack’s $28/user/year revenue hinges on uninterrupted reliability.
The retry flow prioritizes preserving user data rather than emphasizing network failure; notably, it avoids any “check your connection” blame-shifting and offers only “retry” or “delete.” By absorbing the UX burden of a potentially redundant resend, Slack minimizes risk that users doubt message delivery.
Uber: Completion Over Comfort

When payment fails, Uber halts future rides until it’s fixed because riders churn over unavailable rides, not brief payment friction.
Unpaid rides quickly become uncollectible debt, so Uber treats lingering payment failures as a direct financial loss—$15–20 per ride multiplied across millions.
The nuclear option (ride lockout) protects the transaction success rate. Unlike Slack’s gentle retry, Uber treats payment resolution as urgent enough to justify friction, accepting that some will rage-delete while betting others resolve payment and chronic non-payers churn out.
Banking Apps: Trust Over Everything

When Chase flags “unusual activity,” it immediately freezes your card and forces identity verification before restoring access—max friction by design.
Fraud costs billions, but false positives cost trust, so banks deliberately err on the side of the false positive.
Banks accept frequent false alarms to avoid the catastrophic error of fraud—a locked card is a temporary annoyance, but a compromised account can permanently destroy trust.
Error states reveal priority: Slack protects data, Uber protects payment, banks protect trust. Each accepts different user frustration because each has different failure costs.
