Microsoft has begun to encourage developers to migrate their apps over to Universal apps, yet some developers are still not convinced. I wrote an editorial quoting developers a while ago about the feasibility of universal apps and why they aren’t setting the world on fire yet. Today, another developer published a piece on his experiences with universal apps (which we shall reproduce here with permission)
Windows Phone 8.1 XAML and Universal Apps included WinRT APIs that have many problems, including some that there is no solution for. But first, let us just talk about the “Universal Apps” name. I think it is quite arrogant, calling universal something that targets two platforms, that frankly not so many users use or care about. Also if you only think about the Windows platforms, these apps are also not universal, because they cannot target the most commonly used Windows versions (7 and XP). But I am digressing.
He makes the point here, which I made a while ago. Neither WP8.1 nor W8.1 provide enough value for developers to develop for either of them yet because, like I said “Windows HAS users, but those users don’t necessarily want apps. Windows Phone users want apps, but there aren’t very many of them” .
Users are however, not the only thing that prevent devs from moving to 8.1 WinPRT apps. There are technical issues as well:
More messed up APIs
So background audio playback API for Windows Phone 8.1 is messed up, anything else? Sure. BackgroundDownloader is another example. In Silverlight, there was a BackgroundDownloader that was quite limited, but it worked. In Universal Apps, there is a new BackgroundDownloader with some new features, and some essential ones missing. For example, in Silverlight, each download could have a Tag, where you can store any data so you know something about the download when it finishes (to what business entity it belongs, etc.). Not any more in Universal Apps. There is no Tag, so you have to build and manage you own kind of index for all the downloads, so you can actually match them to your business entities. An annoyance, but nothing you cannot manage, right.
A commenter on the blog also added that the Camera apis were not as good as Silverlight ones and I have been told that the 8.1 apis lack lens integration.
The Camera API on WP8.1 is also horribly f****d up. There’s no way to get preview frames. With the Silverlight API you can simply subscribe to an event and push the low-res frames through ZXing at multiple fps. In WinRT the best you can do is take many pictures after another, with flash sometimes and scan about 0.8 frames per second.
Performance also takes a hit with the amount of work needed to get smooth scrolling having increased in 8.1 vs 8.0.
In Silverlight, I commonly used the LongListSelector to display data, using it with a WrapPanel when I needed to create a two column layout. The LongListSelector is gone, in Universal Apps you have to use GridView also on Windows Phone. Or you can use the ListView with a custom wrap panel you write yourself or download somewhere, but it takes some effort to make it do virtualization properly.
So you use GridView on both Windows Phone 8.1 and Windows 8.1 to make it consistent. Add tens of of items with images to it and the performance starts to really suffer. Gray placeholders will show up and more importantly, never disappears. You do not event need images, just add about 300 text only items to the GridView and the gray placeholders will starts to show when scrolling
The point of this post is not to bash Microsoft, it’s to explain why developers may not be willing to create universal apps just yet. They aren’t an absolutely better method, they are an upgrade in some areas and a downgrade in others (Windows Phone users know this feeling well). If Microsoft is to attract developers, they need to work faster than they are doing right now, “soon” and “in the coming months” aren’t attractive to people whose livelihoods depend on “soon” being “yesterday”. Thankfully, there are signs that this may be changing. WP 8.1.1 brought some new apis (though restricted) and 8.1.2 is said to (in a now hidden post) allow developers to create new awesome apps. Microsoft may be changing in the future and that is great. For many devs who are being pressured to make universal apps now though, the future can’t get here soon enough.