Windows Phone 7 UX – One Size Does Not Fit All

One of the most frustrating things about developing for Windows Phone 7 has been the experience with the application approval process. To illustrate the problems my team is having, let us demonstrate with a theoretical sample application.

Let’s say we want an application for reading all of Shakespeare’s sonnets. There are 154 of them, so we’ll want to break them out, maybe one per screen, allow the user to read them sequentially or jump to a particular sonnet. Maybe we want to be able to search through the sonnets too, just a nice easy way of navigating to that one line we can remember.

Let’s say we have a design that looks something like this (opening page on the left, reading page on the right):

image imageimage

We want the sonnets to be front and center in this app, so we take up the whole screen with them. The buttons at the bottom facilitate a very normal “next sonnet”, “previous sonnet” paradigm for navigating the sonnets. Think of them as discreet chucks of reading material. They’re small enough that it doesn’t make any sense to break them up into a page-by-page groupings (like with the Amazon Kindle apps).

Because of the specific needs of our user, we decide that we want the “back” hardware button to go back to the main page instead of cycling back through the sonnets. Our reasoning is that the user could be reading 10-20 sonnets at a time and we don’t want them to have to back out to the main page with 20 “back” presses.

That’s all well and good until we try to submit out application and we get the following error report.

“Pressing the Back button must return the application to the previous page.”

But in our paradigm, it does. The “reading a sonnet” is one page and the “home page” is another page. For our specific application’s needs, it does what needs to be done. Changing it to pass the Microsoft application process would break our user experience. The situation I described above (reading 20 sonnets in a sitting) would result in the following interaction to get back to the home page:


You may object and say “Why don’t you just put a ‘home’ button in the reading pane?” That, my friend is a fantastic idea. And we would totally do that if it didn’t add the home page to the back-stack. Our navigation scheme looks a little like this:


If we navigate to the home page via a button, we have two choices. We can only do one of the following:

  • the button can simulate a “back” press
  • the button can use a navigation service and point to the “home” page

Doing the first isn’t an option because, if we got to the sonnet via a search, we would go back to the search page instead of the home page. An inconsistent navigation interaction. Rejected. (And, worse than that, it’s horrible UX.)

However, the second isn’t an option either because if we navigate to the home page, the app will stick the home page into the back stack so that the following interaction:


Results in the following back-stack:


With this back-stack, pressing “back” from the home page would take us to the reader so that we fail another one of the Microsoft user guidelines (pressing “back” at the home page MUST take the user out of the application). We have no way of accessing the back-stack and we can’t programmatically exit the application.

The result? We have no choices. Damned if we do, damned if we don’t.

We have taken a 3 page application that would take less time to create than I’ve spent writing this blog post (and that some people would really like to have) and backed ourselves into a corner due to nothing more than Microsoft’s UX back-stack approval regulations.

We’ll have to build this incredibly simple application a totally different way. A way, I should note, that will confuse the user and complicate something that should extremely easy.

My point here is simple and larger than the issues with the back-stack:

You cannot strictly enforce a specific user experience across all user possibilities.

Each application should know its own users. Each application needs to be able to create a user experience that is specific to its users’ needs . Otherwise, this process will stifle creativity and sap energy. Imagination will fly out the window (pun intended) as the app will be unable to pass the UX guidelines. And users will be poorer for it.

Some of the Microsoft UX acceptance guidelines make sense.  I understand the need for some degree of uniformity in the Windows Phone 7 ecosystem and I’m all for spiking an application that has inconsistent or broken navigation. But I’m working with clients who are getting pretty upset because we made some very common-sense UX decisions that are being spiked by the Microsoft application acceptance process.

Humbly, I propose the following:

  • Get rid of most of the onerous back button requirements. – Sure, require that the application provide a consistent “back” experience throughout the application. But outside of that, let the UX designers do their jobs.
  • Allow access to the back-stack. – We’ve run into a set of extremely frustrating scenarios where the user ABSOLUTELY NEEDS to use an application a certain way, but doing so messes up the back-stack so that the back button functionality doesn’t allow the app to pass.
  • Allow the developer to exit the application. – I’ve seen developers hamstrung with situations like this that could have been simply solved if only they were allowed to exit their own applications.
  • Lighten the hell up. – I’m going to speak plainly, Microsoft, and it’s because I love you. You are not Apple. Apple attracted some people who were willing to put up with their approval BS for a long time because they loved the iPhone. And because they were early to the game, they weren’t losing devs to other platforms. Although, you may note, I think they did end up losing devs to Android over time in no small part because Android basically doesn’t want their apps to crash. Outside of that, they let the market decide what is worth keeping and what isn’t.

Regarding the issue of winning over mobile developers, I want to make this as clear as possible:

Windows Phone 7 is, as we speak, losing fantastic applications because of its approval process.

I can’t overestimate how frustrated my clients are with the Microsoft approval process. It ranges from sadness to fury. Clients who are on virtually all other platforms are expressing frustration that they have never had so much trouble getting through an approval process. The rejection reports are inconsistent, spotty, and fragmented. We will submit an app 5 times and get different “errors” back each time. Nine times out of ten, those errors are not errors, but complaints about UX functionality. Of those, at least half of them are complaints about functionality that, if fixed, would worsen the user experience.

I love Microsoft and I love Windows Phone 7, but rejecting apps based on the UX guidelines (while not giving us the tools to abide by the guidelines effectively) is a recipe for suicide.

26 thoughts on “Windows Phone 7 UX – One Size Does Not Fit All

  1. Garron,

    That is my point… we don’t need a Sonet -> Sonet -> Sonet navigation. But Microsoft requires it due to their horrible back-stack submission guidelines.

    My point isn’t that it can’t be done. A smart enough programmer can do anything. But she shouldn’t have to.

  2. Actually, I don’t see the Problem. When you press the “next sonet” button, why not load the data for the next sonet and put it in your viewmodel (or whatever you use). You don’t need to do a Sonet->Sonet->Sonet type of Page application. It does not make sense to me, why you would even put the sonets to the backstack… Maybe I am wrong, but would be great if you could reply. Thanks.

  3. I think you hit the nail on the head Matthias; what constitutes navigation for the pursposes of “back” in an application should and must be a design decision, to be made by the software author. I agree with the notion that next/prior page navigation in general should not be a navigation action, and I’m bugged by the behavior of applications that do contrary to this.

    Could you maybe ask for technical exemption and explain the situation… that you do not wish page-flipping to be considered navigation, and that many other applications (including built-in apps) also take this stance. I think we would all be quite interested in the outcome.

    Thanks for taking the time to blog this!

  4. I agree with Mike Wolf about sonnet page being a single page with content switches. I implemented this way in my xkcd app ( and it feels natural. However having ability to skip some pages backstack would be much helpful. I need to add a little hack for my twitter authorization page due to this.

  5. It’s not just the UX. Every aspect of WP7 is rigid. For example, maybe the user would like an app launcher that isn’t a text list of apps? On Android or WM6.5, no problem. You install a third party launcher and go to town. On WP7, it’s not allowed. Maybe you don’t give a crap about live tiles and want something more like Sense? Not allowed. Maybe you would like to have a process continue to run in the background, as a user-initiated decision, to complete a download or podcast refresh, or RSS update, or any number of other things that should continue in the background, you can’t! It’s not just the developers aren’t allowed to not make this stuff; The user isn’t allowed to either!

    Look, I think WP7 has a lot going for it. I was an early naysayer and I generally hated on Metro. I still am not excited about how it looks, but after having a chance to use it hands-on, I can say my tune has drastically changed. I “get” it now. I wish there were more skinning options, for example, but it’s so fast, so quick to get from task to task, it really is very nice. But that doesn’t change the fact that Microsoft is intentionally crippling their super-powerful 1GHz+ phones all in the name of… what exactly? They’ve taken lessons learned from Windows Mobile and gone way too far in the other direction.

    I read a comment (forgot from who) on a blog once that basically said, this is an operating system, not an art project!

    Truer words were never spoken.

    Good luck getting an exception, or finding another UX that meets their guidelines without sucking balls. I hear it’s possible from fanbois. I’m really curious to see what happens in this case.

  6. This is exactly why there’s a submission field for notes to the testers. If you think your UX paradigm is sound, but are worried that it might be misinterpreted during testing, explain your situation in that field.

  7. Ask for an exception or found a better way to do your application. As I have ran into numerous rejections from Apple store, and a few from MS now. I find myself improving my applications. A bunch of times I just over looked a unique way to use the UI to accomplish what I want without breaking the navigation stack. In the end I have had the light bulb moment and poof create a wonderful unique UI that is 10 times better than the original. Now don’t get me wrong I scream and yell at both companies for not allowing me to send out my next cash cow, but realize they have a reason for it.
    Users don’t like change, and having them face change or differences every time they download an application, just annoys them. I don’t want a user manual for a phone app, and that is what MS and Apple are trying to do. For a developer its super annoying for client base its what they want.

  8. After having read this article, I suddenly have an urge to go buy a WP7 based phone. Lack of consistency and quality were the two main gripes I had with applications for previous version windows mobile. If Microsoft finally start enforcing standards, it should lead to a better user experience. For a user, it is beneficial.

  9. AT LAST!!

    Microsoft is taking a hard stance on application approval!!!! They should have done this a long time ago.

    I am a windows mobile 6.5 user, and am sick to death of paying for non working applications on the market place. Applications that just lock the phone up.

    I understand your navigational issues and I totally see your point. However the reason that apps are big news on iPod / iPad is because they are almost guarenteen to work once downloaded. This is where Windows Phone 7 needs to be. Download something, it works.

    The only way thats going to happen is by M$ taking a hard stance on app approval.

  10. Hi,

    Is there a 25$ per submission + 99$ for registering?

    I have this scenario: Main Page -> Create New Game -> Settings -> Pivot Page and I overrided the back button to go to the Main Page, is that correct?


  11. Microsoft is doing what you want with the Outlook application. You can tap one email and then use the older and newer buttons to move to the prior or next emails. Then if you tap the back button it will take you back to the list of emails not through the various messages you previously viewed.

  12. That article it is not really true. In my case I did the following and it was accepted by Microsoft.

    1.- Fresh Start of my App -> Options 1-> Options 2 (Until this point ‘go back’ is typical)
    2.- Fresh Start of my App -> Options 1-> Options 2 -> App Screen -> [App.Initialized = true],[Save Settings] (so on [GoBack], in any previous screen check [App.Initialized] in OnNavigatedTo and goes back until Start. Always before set any state and any storyboard.

  13. You can always ask for a technical exception if you have good justification. It takes longer, sure.
    I think that in most cases the current process is necessary, particularly for independent developers (who are often not very strong on UI), and for people used in other phones (and WP7 works differently). I see why you MUST explain very very well any change from the current UI guidelines. It means you know them and you know when you don’t need them and why.
    Please, trust these people at MS, they try to create the best experience for the whole phone. The users are getting used to what the back button does and do not expect this to do different things.
    Of course, some people validating your app will be too rules-oriented, and won’t understand your remarks, it always happens and it is good to report these behaviours.

  14. Good article, excellent and (at least for me, quite) surprising point.

    My job is to design and develop banking applications for one of the largest corporatioins in the world. I have a high influence on the choices of mobile platforms when we develop the next series of client applications. Windows Mobile 7 will be ruled out if the above is the case, not because of annoyance with the approval process but simply due to the fact, that for security reasons we will need full control of the navigation flow in any app we might develop for the platform.

    I am surpriced to read that a problem like this exists at all. This is not the Microsoft I know. I hope the community of eager Windows Mobile developers will cry out and wake up the people at MS who are obviously on the wrong path.

    The world needs what Android seemed to be from start (but has dissapointed me to some extend), and what Apple never could: Provide freedom for the developers to develop, and freedom for the users to choose. No “application censorship” except that (very honest and brutal) verdict you get from the multitude of end users.

    I would suggest that the people in charge of Microsoft mobile apps screening process would read (and understand) this recent article from Tim Berners Lee: and then reconsider their approach to this side of their mobile platform strategy.

  15. “Heaven has no rage like love to hatred turned / Nor hell a fury like a woman scorned.” – William Shakespeare? Nope, William Congreve (1697). Both Will apps are apt to be feeling scorned by the House of Bill. “Time heals all wounds, unless you pick at them.”
    -Shawn Alexander

  16. orcmid,

    This is a fantastic example of the problem we’re having. I downloaded and replicated what you described and our application does EXACTLY what the weather channel app is doing. Yet, we’re getting the error report that I described above. It’s the only thing keeping us out of the app store.

    So we’re either dealing with a tester who doesn’t know what the rules are supposed to be or Weather Channel got through with a much nicer tester or they made some sort of deal where they could get through. That is no way to run a professional application acceptance process… especially when you’re charging $25 per submission.

    The rule itself is absurd. The fact that they don’t apply it consistently only exacerbates my client’s frustration.

  17. I am looking at the WP7 “Weather Channel” app right now. It looks like it does exactly what you want, though I don’t know about interaction with a search within the app.

    When I tap the severe weather button (we are having that tonight in Seattle), I get to a menu page. It takes me to one of a set of ages that I can read by scrolling and that I can navigate between by sliding left or right or using the arrow buttons of the ap.

    If I tap backspace, I get to that menu. If I type backspace I get to the top of the app, which shows my local weather.

    If I slide to the forecast page, there is a Forecast Details button (or I can slide to other things). The forecast is a section of pages with different kinds of forecast, etc., and the backspace takes me to the short forecast (top-level). Only then does backspace take me out of the app to the home display.

    I don’t know if I am missing something essential in your case, but I assume the Weather Channel folk did not break the rules.

  18. Hey Mathias… long time no talk man…

    so while I do object with being rejected,and think that the argument around the back button is more complex when the back to your app from the home screen is a larger issue… I think your example could pretty easily take the back button into mind … by using modals instead of pages….

    – navigation between pages of the sonnets do not cause navigation… instead switches content either on the same page or in a modal on the page.

    – the in app navigation to the sonet “home” could just take the sonet page stack back to the first sonet… or really any sonnets in the index… again w/ out a navigation see Peters blog on “places”

    I do agree the page navigation can be a pain, but it has a use to enforce simplicity in navigation, and forces you to think whats “navigation” versus what is content change… You can also… force a “back to home” (but is not the best solution) by navigating back… in code until you reach the home.xaml…. using the navigation events, and stop the back when you reach your destination

    That being said… I would like to see the following for sure

    – a way to remove an item from the back stack , while should be avoided sure is helpful at times w/ out having to do the back hack mentioned above

    – a way to exit… this is just silly not to have this.

  19. Wow, that sounds really awful. I’m more and more glad I took a wait-and-see approach to developing apps for WP7. It was tempting to jump in early, already having experience with SL/WPF and some good ideas for phone apps, but I had a feeling there would be problems. Between this, the SL runtime performance issues people have reported (poor framerate trying to scroll some simple text on a 1GHz phone with a GPU?), the SL runtime being second-class to the restricted-access native runtime (Iris?), and the locked down marketplace model in general, Android is looking like it might end up being the more worthwhile platform to spend my limited time on.

    Keep on fighting the good fight and here’s hoping that MS can clean up their act. There’s still a lot of promise there.

Comments are closed.