Maybe bad UX, but global error / success handling of network requests is way easier than handling in every component that triggers one.
Trade offs, as usual.
In a Jetpack Compose app I wrote, I created generic "error barrier" components, so that error messages display over relevant parts of the app, with just a few lines each time, timeouts included. I think this is the best approach, easy for developers and informative for users. Too many apps just ignore errors.
Less code, centralized messaging.