Really fantastic article — this is a really interesting topic and a dilemma I’ve faced multiple times over the past year. The most frustrating thing is that as you say, I can’t seem to find any consistency of usage across different apps. For example, AirBnb (at least on Android) get rid of the tab bar on any page that isn’t top-level. Being such a well designed and researched app, I have to assume that they do this for a specific reason. And it’s not just Airbnb — I see this in many big products.
Your provided definition that ‘Modal views are only used for short-term tasks that are self-contained processes’ is similar to what I’ve been using to decide whether to show or hide the tab bar. If a user taps on link and there is a very clear end-point to the flow, then I will usually decide to remove the tab bar. However, this presents a couple ofproblems:
- The definition of ‘end-point’ is broad and can really be interpreted any way you want
- Having tested, there are some cases in which the user can get very deep in this ‘modal’ view that it takes 10 or more taps on the back button to get out of it to a top-level page, which seems like a huge no-no.
Regardless, the important thing for me when designing an app is to make sure that there is consistency. There is some merit to just saying that any child-view removes the tab bar, since at least then the user knows what to expect. But the inconsistency across apps means that there is no consistent experience for users and therefore they will never know what to expect, which sucks.
Thanks for writing this article Fabian!