Problem
Work is done in the rendering method.
What happens when something breaks in the rendering?
Solution
Use Error Boundaries
The problem
function Blah({user}) {
  if (!user) {
     throw new Error("No bloody user")
  }
  return <h1>{user.name}</h1>
}
<Blah />. // Boom an error makes React crash
// An example of using an Error Boundary
import {ErrorBoundary} from 'react-error-boundary'
function Fallback({ error }) {
  return (
    <div role="alert">
      <p> No user provided: </p>
      <pre>{error.message}</pre>
    </div>
  )
}
<ErrorBoundary FallbackComponent={Falback} >
   <App />
</ErrorBoundary>