Thursday, May 22, 2014

Universal apps are confusing because they're not apps...

... they're solution templates.

"Universal app" is a nice term though, isn't it? It speaks to the idea of a single app that can run everywhere. We know that's not the reality but it seems like what a lot of people want to aspire to.
iOS already has "universal apps". These are a single packaged application that can be deployed to both iPhone and iPad and the app will adjust its UI (and behaviour) as appropriate to provide an optimised experience on both types of device. Anecdotally I've heard from people within Microsoft who speak to developers, who develop for platforms other than Windows, who are amazed that despite all this talk of "One Microsoft" and a common design language across all platforms it is still necessary to build separate apps for each platform.

Maybe talking about something with the same name as a type of application on iOS will make some people think that "universal apps" on Windows work just the same...

So, what of these templates if they're not apps?
"Universal apps", in the Windows sense, are a solution that contains 3 projects: One is the Windows apps; one is the Windows Phone app; and one is a new, special kind of shared project that contains files and resources that are auto-magically included in the other 2 projects when they are built.

So, yes, a universal app is a way of building 2 apps - one for each platform. The bit that is universal is the code and resources that are used in each app.

In Microsoft's defence, they have done a lot of work to be able to use the same UI and code files in the projects for both type of app.

What about using the "same" app on "big Windows" and on the phone?

If you're using Windows [Phone] 8.1 and view the store you may see the above image next to some apps. This means the Windows and Windows Phone versions of the apps are linked. If you buy it on one platform then you'll also get it on the other. The same goes for In-App-Purchases and settings (as appropriate) within the app. You should get a seamless experience when using the same app on both platforms.

So, in conclusion:

  1. The term "universal app" is confusing and means something different to what it does on iOS.
  2. "Universal apps" on Windows are a way of reusing code and assets to easily build versions of an app for both Windows and Windows Phone.


  1. I think the difference between a Windows PC and a Phone is a lot bigger than the difference between an iPhone and an iPad. So it stands to reason you actually want the apps to differ even more between phone and PC.
    Building one app that scales and changes behavior, while taking fully advantage of the platform it's running on is pretty hard and convoluted if it's one binary you end up with. There'll be a lot more "if-else" code involved. The shared project seems to solve that pretty nicely by not hiding the fact that it's meant to run on two different platforms and the apps should be distinctively different.

    1. Absolutely.So saying you can build "a universal app" when actually building two separate apps, one for each platform just increases the confusion.


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