In Slack, error handling is important when messages don’t send or channels don’t sync. Even though this sounds like just a missed interaction, it can have more downstream effects, including team abandonment. Slack handles these errors by using multiple retry states that show up as “Trying to connect…” which try to resend the message or resync the channel. In the case that this doesn’t work, it clearly shows that the failure occurred. By making these errors explicit and recoverable, Slack protects its primary revenue stream, which are per-seat subscriptions that are tied to long-term retention.
![]()
In Uber, an error corresponds to a lost transaction and is especially important to properly handle as a user may believe that a ride is booked, even though it hasn’t been initiated. Thus, the business cost is massive. Uber’s recovery flows include instant retries, alternative drivers, default payment switching, and clear messages to the user that a request did not properly go through. Their flows are focused on keeping the user going forward in the ride booking. The revenue stream that is protected is transactional, so it is important for the errors to be properly handled.

In banking apps like Wells Fargo, the business cost of an error could be the loss of thousands of dollars for the user. The recovery flows are not particularly as focused on getting the user forward like in the Uber app, but instead keeping the user informed about where their money is. Thus, if something fails on the app, it will show the user the error message and revert the actions atomically instead of keeping the process moving forward. This protects their revenue stream by ensuring that the user doesn’t churn due to money mismanagement.

