I think the bolded part is where we disagree.
To me, the presence of a loading spinner overlay or a modal progress indicator carries with it the implication that:
- the app isn’t frozen, but:
- it can’t accept any more meaningful input until some process finishes, except:
- to potentially cancel the currently blocking task and put things back to the state before said task started
I’m having a bit of a tough time envisioning an example of what you mean by “complicated business process which could require input from the user”. If you’re talking about something like a trip booking wizard where the user selects a destination in one screen, and then a departure date in another, and whether a hotel is needed in a third, then I can’t think of a situation where one would simultaneously be wanting user input and waiting for some external process to complete. If the user input is related to the long-running operation, like “hey, this search is taking forever. do you want to add additional search criteria to narrow things down?”, then I think as a user I would consider the operation to have been paused if not cancelled while I make my decision about how to proceed. Even if the search is still running on some server somewhere, as far as the app universe is concerned, it’s paused, and the attendant loading indicator should be hidden at least temporarily.
As I was typing that paragraph, one more idea came to mind, which was “sorry this search is taking forever. how about answering a survey while you wait?”. And in that situation, I think what I would want as a user would be to still have the search progress indicator somewhere in the top-of-view window, so as a designer I would tear down the dedicated progress modal, then pop the survey modal with the progress indicator included as part of it (as a subcomponent).
I’ve definitely felt the urge to create such things before (I tend to call them “overseers”), and in retrospect more often than not they eventually end up on the scrap heap because the initial assumptions I (generally implicitly) baked into them ended up not scaling real well.
If we back up a bit and ignore all the technical bits, a modal overlay indicates to the user “nothing else meaningful can be done while I’m here, so if I’m interactable, you have to give me what I want before proceeding, or if I’m not, you have to wait”. I still think that implies that they’re Highlanders.