Universal Windows apps
110

What is a Universal Windows app?

Microsoft announced a lot of new features and opportunities for developers this month at their Build conference. One of those buzz terms was ‘universal Windows app’, which sure sounds remarkable. However, we’ve noticed some misunderstanding on exactly what that means. For instance, the impression by many is that if someone makes a Windows Phone app, developers can just hit a button to clone it for Windows and Windows RT devices. That leads to the ‘why isn’t this not a Universal app?’ question each time we mention a new release.

Microsoft is certainly on a unification kick. OneDrive, Xbox One, OneNote, mixing of Windows and Windows Phone developer registration, and expressions like ‘universal Windows app’ all suggest a merger of technology. It’s also a well-known secret that the Windows Phone OS and RT will eventually collide (starting with ‘Threshold’), leaving just two versions of ‘Windows’ for Microsoft.

Universal Windows apps Windows Phone

Universal Windows apps – What they are

Universal Windows apps are not yet the dream of ‘code once, run everywhere’ that many are clamoring for. In fact, that may not happen at all because different screens require different experiences. But Microsoft is certainly making it easier to overlap projects for developers, which can now share up to 90% of the code in certain cases. Here’s what else is ‘universal’ about these apps:

  • Pricing structure – Windows devs can now price apps at 99 cents and $1.29, matching Windows Phone pricing
  • Shared in-app purchases – Users can buy an IAP in a Windows Phone app, and have the same IAP unlocked in the Windows version and vice versa
  • Install across devices – Developers can let users download/buy an app on one platform and install it across their devices, without re-purchasing
  • Shared revenue model – Windows apps will get the same Windows Phone 70/30 split on revenue between developers and Microsoft
  • Unified ad-units for Windows Phone and Windows apps

Universal Windows apps – What they aren’t

Universal Windows apps involve a lot of backend improvements for developers that encourage development on Windows Phone and Windows 8. They are not, however, completely the same in terms of code; nor does it mean that developers can just push a button to make those apps on either platform (though it is close!). Developers will still need to code for one, share the code for another platform, and do some fine-tuning and optimization.

So app development across Windows and Windows Phone is easier, but it's not exactly the same either. We’ll skip the gory details about app development, coding, shared libraries and such things, but that’s the take away here.

For instance, the new app Movie Maker 8.1 is a universal app. That means for those who bought the Windows Phone version, the Windows 8.1 app will be ‘free’ because Venetasoft can now enable such a feature through shared publishing resources. But if you noticed, the Windows 8.1 version is not yet live, because it needs some final polish before going to the Store. If it were ‘the same app’, you could get it now.

Likewise for Movie Moments and Reading List, which are both universal Windows apps that were just released today.

Universal Windows apps Store

Universal Windows apps – How to tell?

Microsoft gave consumers a neat little icon to identify these Universal apps, represented as a computer and phone. All it means for now is a ‘shared experience’, notifying you that this app is available on Windows Phone and Windows 8. They’re not the same app, and they may not even talk to each other in anyway—yet.

As developers begin to code for Windows Phone 8.1 apps and take advantage of these tools, we’ll begin to see apps that can be purchased on one platform and unlocked on another more frequently. Same with universal logins, backing up of settings, and shared in-app purchases.

Universal Windows apps icon

This whole idea of a ‘shared experience’ for Windows and Windows Phone apps is a powerful tool. It basically means if you see the Windows Phone app with that icon, you know that you can get its corresponding companion on Windows 8.1, and vice versa. That’s important because many times we hear you folks comment that you had no idea there was a version on ‘X’ platform. Now, you’ll be able to tell right away.

Going forward

Remember, this unification of Stores, pricing points, purchasing models, shared libraries, etc. is just the first major step by Microsoft to bring all of their apps and services together. With each OS and SDK update, we expect more overlap to be announced, and even more sharing between platforms. How far it will go remains to be seen, but this is just the beginning.

8
loading...
0
loading...
0
loading...
0
loading...

Reader comments

What is a Universal Windows app?

110 Comments

Perfect explanation. And indeed, Dan's grammar is correct.

 

but it's understandable though that simply reading it without pronouncing it (in your mind at least), anyone can mistakenly assume that "a universal" is written incorrectly. Also take note that some people may not even pronounce it as YUniversal but as UHniversal especially if English isn't their first language.

Ha ha ha...  You're spot on about "reading it without pronouncing it".  I actually did a double take when I first read Daniel's tweet about this article!  That's the reason why I responded, not just because I'm a "grammar nazi".  :)

Wow. Purchase once, use on multiple devices! So why do I still have to purchase Microsoft products multiple times to use on ONE device if its a PC? I'd like to run multiple virtual W8 PCs on my desktop but I can't afford the $100+ a pop for the same device. And hundreds more for copies of other MS products running in the virtual machine.

Good move by MS. Will it help developers in porting those apps in windows 8 to our phones like dropbox, Facebook, flipboard etc.

As a developer, the documentation on universal apps isn't too good at the moment. Also bit vague on the current design guidelines:\.

Oh, I'm sorry. Those pesky folk at Microsoft must be playing practical jokes, having default templates for universal applications written in Javascript.

The Javascript universal application system is far more universal than the XAML/C# method. 

Well, if it's that way, how come most of the WinRT examples I've looked at regarding GPS is not working as expected in my WinRT app for windows phone, basically crashes the app most of the time. And for some awful reason they removed the creatable type GeoCoordinate (System. Device. Location. GeoCoordinate), the Windows. Devices. Geolocation one does not have a creator at all. Also when an SDK says it's compatible with WP 8, it breaks due to missing reference to some System. Device types, but only at runtime, Parse SDK is a great example, and they don't seem to be interested in updating the SDK either.

This article isn't really that accurate. It regrets mainly to existing apps. For new apps you can actually share 99% of code that most apps would use. You can even share the UI code in most areas because it adapts depending on whether it's on phone or tablet/desktop.

This article is geared towards consumers, not developers. The development details are not important for consumers, just what the term and Store icon mean as a front-facing feature. If you want to hash it out between 90 and 99% shared code, be my guest, but it's not important for those who just want to download an app or game.

Agreed, I just feel that the clarification is important because the article comes across like Universal Apps are still not possible (and makes it sound difficult referring to using libraries and linked code, etc), rather than saying that it's primarily an issue for existing apps.

As far as I can see from MSDN it's pretty straight forward to make existing applications universal.

The main reason for my comment is that I feel we would see a much larger stream of universal applications if the documentation for them was a bit clearer.

It's super simple to port a tablet app to Universal now (because Windows Phone 8.1 supports all the WinRT code). Porting from Silverlight to Universal is still just as challenging as phone to tablet was, except for any new APIs in Silverlight 8.1 which match their equivalent calls in WinRT.

That depends on well the application design is. Using abstraction, DI and MVVM principles when building an application would require only changes in the UI and a few alternative components.

Yeah, I'm working on a win32 app right now and if I was to port it to WinRT I would just throw in a few of the platform conditional tags in the Universal App sytem and I think about 80% of my code would probably port over.  I'm using OpenGL so I would need to port that to DX--but it's pretty simple stuff. 

The hard stuff is always application logic and I don't see any need to rewrite my classes and methods. 

Yes, all the existing Silverlight apps can fairly easily be moved to Silverlight 8.1, and the skills acquired by developers is just reused. But MS of course are very interested in moving everything to store apps and getting devs to kill 2 birds with one stone, creating both a Windows and a phone app. Problem is, it's yet a new set of leanings for targeting a new API (good example is background tasks are totally different), which although would not be difficult is just a pain, and many devs may not be interested in a Windows store app. The documentation is definitely geared towards store apps, even when you are trying to utilize Silverlight 8.1, and it's a pretty bad mix I think, with poor coverage of the differences in behavior. My hope is it will improve.

and just because for cunsumers are not important the development details they can consider the version for WP and for Windows of an Universal App the same app.

In the first keynote of the Build Kevin Gallo showed an example where he "push a button to make those apps on either platform"

 

99% is somewhat ambitious. I have been re-writing 11 apps from SilverLight to Universal and am saving a lot of code via use of " #if WINDOWS_PHONE_APP " Instead of writing separate userControls. There is is no way 99% is sharable in any scenario and I don't use Phone specific codes in general.

BUT...

I would be glad to see a sample where that is possible so that if it is, I could learn by seeing how someone else has done it.

My experience has been 85% max. Everything else is platform specific. Which is not bad at all.

 

 

I'm working on a media centre companion app at the moment with at least 99%. In not counting the existing ifdefs that come with the template, just what I have had to do. So far I've only needed to provide some different UI paradigms for how to get to settings.

EDIT: it does depend on which APIs you are using. Some are not yet quite converged. But the ones that probably 80% of apps would use are consolidated.

That is awesome that you are able to Utilize 99% of the code. My apps are highly geared towards WP which I am porting to Universal and am @ ~85% shared.

I bought Halo and Skulls of the Shogun on WP8 months ago, but it doesn't appear that I "own" it when I look at it on the Windows 8.1 store. Afraid to click buy and get charged again...

AFAIK that is because the Windows 8.1 store has not been updated yet to support universal apps. Remember that we are in a 'Preview' for WP8.1. 

This is the case for everyone. For some reason when they switched to universal, purchases flowed from the Win8 store down to the WP store, but not vice versa. If you bought it on Win8, but not on WP, you were able to download it for free on WP. If you bought it on WP, but not on Win8, it says you don't own it.

Only moving forward is what I was told. Apparently we're all cheap ingrates for expecting the Universal app purchases to be retroactive... Even though I paid more for Halo months ago than what the universal app costs now

You should have said even that Windows Phone apps are of two types: Silverlight and W. Runtime. The first one is the classic approach, and the second one is the one that allows the creation of an universal app, but not necessarily :) Many apps will use Windows Runtime and new cool APIs without being an universal app.

 

;)

I'm not sure consumers need to know the difference between Silverlight/WRT apps. That's important for devs, but this article was written for consumers and they should not have to know such details ;)

There are three kind of apps:

 - Silverllight 8.0 that are the apps targeted to Windows Phone 8.0 and are the apps that we use every day on WP8;

 - Silverlight 8.1 that are apps taht use some of the old API and most of the new WinRT APIs;

- Windows Phone Store Apps that use all the WinRT APIs but this apps can't use some of the APIs that, for now, are only available in Silverlight 8.0/8.1 apps and some API are available only in Silvelight 8.0.

Only Windows Phone Store Apps can be Universal App

Right. And 3 different splits is just too much if you want a nice streamlined dev community.. It's become rather a mess.

The "misunderstanding" comes from people who can't be bothered to read past a headline. They just saw "Universal app" and made their own assumptions.

Well to be honest what you're talking about in the article are 'Unified Store Apps', not Universal Apps. Universal Apps created in Visual Studio really can share 99-100% of the code for most types of apps. Even the UI code adapts between phone and tablet, eg if you use a Hub control you'll get a Hub layout on tablet and a Panorama layout on phone with exactly the same code.

I feel this article is misleading because it's referring to Unified Store Apps but calling them Universal Apps.

I'm not aware of the phrase 'Unified Store Apps' from Microsoft. They use the phrase 'universal Windows apps' to refer to the coding/development, sharing of Store resources and consumer-facing features e.g. the Store icon.

The icon you see in the store refers to "Unified Store Apps" and the only thing they have in common is the dev flagged it on the back end meaning the app on both stores is "related" (pricing is still up to the dev on how they want to monetize each).

"Unified Windows apps will be identified with a new symbol (example below), which will be visible to users in the coming weeks. I want to point out that the decision to charge per-app or per-device for a universal Windows app is entirely up to the developer."

http://blogs.windows.com/windows/b/buildingapps/archive/2014/04/02/windows-store-universal-windows-app-opportunity.aspx

Universal apps are type of app that are designed using WinRT and have nearly 99% the same code, you can often even just use templates that require little to no UI reworking. You can split some of your code up if you want it to work slightly different for each platform including if you want to adjust how one UI looks on Phone vs Windows.

Universal apps by nature of are "unified apps" but not vice versa. For example you can have "unified apps" that are related between the store but basically have 0 common code between the  two. Do to some of the lack of convergence with APIs on WP8.1 some apps have to remain Silverlight 8.1 and *cannot* be built using the Universal app API of WinRT. VOIP apps for example are one of these limitations currently (which might explain why Skype doesn't seem to be improving much lately?)

As for making a blog post and incorrectly calling "Unified apps" as "Universal apps"... well you're not the first and definitely not the last to do so. I'm sure people will continue to misconstrue what a Universal app is for a long time to come, but I would value a correction to be more accurate to what each means as there are distinct differences which could cause confusion when incorrectly interchanging them.

Again, to repeat myself, the icon just means "Unified Windows apps" and means nothing more than a dev flagging two apps on the backend and saying they are "related" regardless of code.

"Universal apps" on the other hand are a specific API set that targets all of Microsoft's platforms Windows, Windows Phone and Xbox One, allowing little to no extra coding needed to run the app on each platform. Universal apps are Unified by nature.

Not all apps for WP8.1 can use the Universal APIs and have to use Silverlight 8.1/8.0 instead. A Silverlight 8.0/8.1 can be "tied" to a Windows 8 Store app despite using different API's, doing so will add the "Icon" and thus makes them "Unified apps" again... not "Universal apps".

Hope that clears it up. :)

Oh and of course some of these new apps that were Windows 8 store apps before "could" be Universal apps; Microsoft could have taken the Store app versions put them into a new Universal app and viola you now have a Windows Phone 8.1 version, which you can then develop side by side going forward. BUT... the icon is no assurance that is the case, only they they are "unified" according to the store.

The only real way to know if an app is truly a "Universal app" is to ask the dev. I suppose looking at the app you might be able to infer if it is or not, but really that's just up to how well the dev ported the app before Universal apps exists (or in the case of an app that still requires Silverlight APIs).

P.S. Is there any way to enable the system wide Windows spellchecker into these text boxes? Makes me sad that it doesn't work. :(

Ha, I want to see that app with 99-100% code sharing ;-)

And no, it's not misleading, as Microsoft announced this as "Universal Apps" at build, while referencing both code-sharing AND app-linking.

I mean, to a certain extent they COULD "press one button" to spit out the app on another platform. They demoed that in the new version of Visual Studio at the 3 hour BUILD keynote. They did mention as they were doing it though, that you would likely want to make some "tweaks" once it spit out the code.

So in terms of it being from the same code base, yes, that actually is currently possible, sort of. But for the most part right now it just means they're available on both platforms and in the currently rare case of paid apps like Halo: Spartan Assault, if you buy it on one you can download it on the other at no additional cost (think Playstation Cross-Buy).
 

Correct and going forward for new projects, we should hopefully see more dual-apps becoming available. But up until now, it's been a little more effort. Things are certainly getting easier though.

Very well explained, thanks. By the way, the Windows Store doesn't show the universal app icon when I opened it to install Movie Moments and Reading List on my Desktop, is that why you included a picture of the app webpage in the article?

Since you said that you didn't want to get into the gory details in this article about universal apps, can we have a "technical" rundown on what they are/aren't?

I'm going to nitpick and say that the icon that's appearing in the store isn't technically representing a Universal app. Universal apps are a specific project model that share code and may have optimized UI for different form factors (ie. phone vs tablets/PCs) running on WinRT. I'm not aware of an official term for the icon but the best way to describe it is as a "linked" app. Its Windows Store and Windows Phone Store entries are linked so purchases are shared.

I'm quoting Microsoft here:

"Unified Windows apps will be identified with a new symbol (example below), which will be visible to users in the coming weeks."

So although I know what you mean, I think once again this is where developers are getting technical about a consumer facing feature that unnecessarily complicates things.

Ah that's the term I'm looking for: Unified. I think that's a much better term than universal just by the definition of the word but like I said, I was nitpicking.

From the developer side there are many concepts, "Windows Store app", "Universal App", "unified app", "WinRT app", but not for the user. On the Store you only see apps with the icon and apps without the icon, and apps with the icon are "universal apps" because you could find the "same" app in WP, Windows (RT and 8.1) and Xbox One (soon).

 

 

Understood I thought was exactly same app, good to know how things are cooking before go in your plate (ehem windows phone/windows device)

I just hope one day I can download Pandora on my phone, and when i go on my tablet and xbox i will see pandora on that screen. Will that ever be possible? All the same apps in the exact same store?

What im more curious about is the development of smartglass. Does anyone else remember when MS showed off Halo 4 on Windows and WP? Being able to play an online match of CoD, Titanfall or Halo on the go?!?! That is my dream.

So how difficult is it to go from WP8 Silverlight to WinRT (universal)?  Because there are way more useful apps with more features (IMO) on WP8 currently than Windows RT.  I'm wondering if a lot of the big developers who made apps for WP8 will be willing to change to WinRT so we can get a lot of the WP8 apps onto Windows RT.  Also don't you have to code for WinRT to be able to use the new video APIs and other features.  If that's the case that means Instagram and I suppose Whatsapp among others 6snap or if snapchat ever comes would need to recode or code in WinRT.  I guess I'm wondering how hard it is to do that, and if it is hard whether some of these devs will put out the effort or will we get some abandoned/gimped first party apps?

It is not as easy as that as some developers like myself use third party controls like Telerik etc. that are not yet fully compatible with WinRT at the moment. So it may be a while before some apps move from Silverlight.

Interesting, I didn't think about that.  Thanks for mentioning that.  I guess let's hope WinRT gets better support and we don't have a mess of platforms and compatibility

The biggest, glaring hurdle for us is the fact that Universal Apps do not currently support the Service Model namespace, which means you can't add or use Service References. This is a huge issue for business-centric apps. For example, the only way we can use all of our awesome Azure Cloud Services is to "wrap" and expose them with REST endpoints. Tall order.

You need to code with WinRT to do Universal Apps!

WinRT is a framework that must be used to make Universal Apps

I have a question on this.

The windows store shows Halo: Spartan Assault to be a universal app. I bought it on my Windows Phone a couple of months back (before it was declared as universal). Now when I want to install it on my PC, it asks me to purchase the app.

Any suggestions anyone?

It being a Universal App does not automatically qualify the buyer to be able to Install in both platforms, It is the developer's Prerogative to enable it to be either Purchase once and download anywhere or purchase for each platform. In this instance, you might want to contact the developer on what their intentions are.

Also unless if I am mistaken if you are running Windows phone 8 then you may not have the universal version of the app. That you only see on 8.1. So that could explain your problem.

I guess because Windows Phone 8.1 is still a Preview, you will be able to sync your purchases from Phone to PC only after 8.1 officially arrives.

Only suggestion is wait. I took the chance and ended up paying for it again... Which isn't such a big deal to me, and the price to pay for testing it. However, I can install Halo on any Win8 PC/tablet I log into at least.

Well halo is supposed to be universal but it still wants to charger me on windows even though I bought the WP version

Yeah, me too.
So, I was bought HALO for $1.99 on WP and $4.99 on Win8.1 ...

Posted via the WPC App for Android!

Well I hope misery devs convert as a lot of my stops on my phone I would like on my tablet. I have bought a lot of apps, so it will be good hopefully..

Convergence is definitely a long term vision for them. I'm glad they are making progress.  Obviously there will be limits, but it does make things easier for users and developers and general acceptance and penetration of the overall ecosystem.

Super article !!
Just to explain to not-developers, every "screen" of an app is composed by two files, one contains the UI (tipically XAML, a sort of html) the other contains the "code" bound to the UI elements in the xaml. With Universal App a developer can share only one "code" file to two xaml file, one for WP and one for W8, once for different screens.
Strange Ms not allowed us an option to "scale" a wp8 app to W8 like on iPad. Not the best solution, but acceptable in the meantime every dev begins to familiarize with the new SDK and create a W8 optimized UI...

My understanding is that you just have to create your own script, hook it into the default script for both platforms and create a separate structural markup page.
Like make your own game engine, have it talk to default.js, and based on platform use a different .html and .css file for each screen. Not too hard

I hope the term "universal app" and the accompanying store icon, showing multiple devices, is standardized in the future to without a doubt mean the app can be purchased 1X and be installed and used on all devices associated with said account.

I've got Halo: Spartan Assault on my Windows Phone, I have had it since it was first released. I heard that now Spartan Assault is a Universal app, but when I come to download it on my Surface or Window 8.1 laptop, it still wants me to buy it... shouldn't it 'know' that I already have purchased in on my phone?

Well written Daniel. Your subject choices and article contents are always great! Keep up the good work!

Dan,
I do get the point about its not just a global write once.

But it really never will be...
even if you had 3 different platforms you would be(hopefully) making minor changes to the interface to optimize the experience. Everything I have seen this is a basic adding of this customization in the vast majority of cases.
all other platforms are not that easy. and for bugs its a single code fix in the back-end for all?