Thursday, March 28, 2013

Microsoft's advice about Panoramas is wrong!

The advice Microsoft's designers will tell you (23:30 into the video) about a page hosting a Panorama control is that the page should not also include the System Tray.
This is wrong!
Let me tell you why.

Consider this scenario:
A person launches your app and upon starting it attempts to load the latest data from a web server or other external source. - Hopefully you'll agree that so far this is a reasonable and common scenario.
After a few seconds no data is displayed and the app still indicates that it is "Loading...". - Again, a common occurrence.
Now what?
Well, the person wonders if the delay is due to not having a connection or maybe they've only got 1 bar on a 2G network. - I hope you still think this is a not unreasonable scenario.
So, having wondered about connectivity, what does our person do?
Well, they swipe down from the top of the screen to reveal the network connectivity indicators that are included in the System Tray.

And it's at this step that we reach the crux of my argument.

If the page includes the System Tray the person will be able to see the state of their connectivity. If they have a connection they'll probably wait a little longer. If not they can, hopefully, do something about it.

But if the page doesn't include the System Tray what can they do?
They can do 1 of two things.
1. They can wait longer, but with the uncertainty of not knowing if the connection is there and if they'll ever get a response (at least until the connection times out.)
2. They can leave the app and check connectivity there.

If 1, you're forcing the person using your app into a situation of uncertainty with your app that can't be a good thing. Uncertainty in what your app will do, or when, is not a feeling you want to instil in people.

If 2, you're forcing people to leave your app when they want to use it. You're also increasing the likelihood that they won't come back. I'd be amazed if you want the people who have downloaded and installed your app to not be using it when they have wanted to.

My advice:
Include the System Tray on any page that has content that comes from a remote source.

Microsoft doesn’t even follow their own advice!
Checking on the WP8.0 device in my pocket I can see that:
While the store, music and video hub, games hub, photos hub and wallet don't include the system tray, the People hub and the Office hub DO include the System Tray

The exception when this isn't true.
My reasoning above is based on a Panorama with dynamic content that is obtained from an external source. Obviously there are apps which use a Panorama control but don't use external content. (I've even written some.) In this scenario there is, potentially, very little value to the including the System Tray and so there may be an argument for not including it.

Yes there is potentially an argument for including a System Tray even if the Panorama uses entirely local content so that it's possible to see things like the clock and battery status. Include it at your discretion in these scenarios.

Disclaimer. Yes the title of this post is quite broad-brush and I'm only talking about a potentially minor issue here. I understand that but small details matter.

tl;dr: DO include the System Tray on Panoramas. Even though Microsoft tell you not to.


  1. Kinnara3:33 pm

    One approach is to hide the system tray by default but show it when something is loading, as in the People hub.

  2. @Kinnara yes you could do that (presumably also assumming that you're using hte system tray to show pregress and/or a message) but what's so bad about including the System Tray on a Panorama in the first place? The only possible reasson I can think of is that the Panorama control doesn't resize correctly if an opaque tray is used or the crashing of the tray foreground and the Panorama header is too much of an issue.

  3. In my opinion the system tray should be visible on any app. There are only very few scenarios where the few extra pixels are really needed (full screen video playback for example).
    It provides the user with basic system information that an app mostly has no right to take away.

    I don't understand why so many windows phone apps hide it with no reason.

  4. @MLamers I don't think that apps hide it for no reason. In the templates it's not enabled by default so I think its just that developers don't turn it on.


I get a lot of comment spam :( - moderation may take a while.