Systems that are fault-tolerant have the ability to survive a malfunctioning component. This is done by either correcting the error in the component, or by replacing the defective one with a new instance. Think of fault tolerance as an airplane with the ability to land using only one engine—the passengers are our users.
Typically, we hear about fault tolerance in the context of large scale server environments. It's a viable concept in frontend development too, given sufficient complexity. In this section, we'll start off by thinking about how to classify components into critical versus noncritical components. Then we'll move on to detecting errors, and how to go about handling the error so that the application can continue to function.