Over the past couple of weeks I’ve received questions and feedback from many of you who want to further understand what we’re doing. Many of those conversations fall into one of five general topics, so I thought I’d share those with the rest of you here today.
1. What exactly is a universal Windows app?
A universal Windows app is created from a single Visual Studio project to target Windows phones, Windows tablets and PCs, and eventually even Xbox. Although this currently creates physically separate packages for each Store, they are built from fundamentally the same source code.
We support three UI frameworks for universal Windows apps – XAML, HTML and DirectX – giving you the choice of writing the app in C#, JavaScript, and C++. The main API set for these apps is WinRT. We also support the use of some Win32, COM, and .NET APIs. Over time, more and more capabilities will be built into WinRT and at the same time we plan to make more Win32, COM and .NET APIs available for use in universal Windows apps to facilitate code reuse from your desktop apps.
The vast majority of APIs that can be used across the platforms supported by universal Windows apps are the same, but we do also allow specialization on a particular device type to take advantage of device-specific capabilities or special tailoring to the device type. For example, Bluetooth scenarios are typically richer on phones than they are on tablets or desktops.
Packaging for universal Windows apps is the APPX format used on Windows. When you build a universal Windows app, you will still have two packages – one for phone and one for Windows – but they’re built from essentially the same source code modulo any tailoring you’ve added. By default, the Store identity is exactly the same for both packages, so they appear as the same app in the Windows Store and the Windows Phone Store. This means that buying one entitles the user to install the other also. It also allows entitlements (such as in-app purchases) to be shared. This is an optional first step to being a true universal app.
Note that the Store does allow for the linking of existing apps that are not universal Windows apps– you can link the identities of two separate apps with the same effects.
There are some important things to note about the requirements and effects of app linking:
a. You can still charge different prices for your linked apps in each store; however, once the user has purchased one, they own the other, and can download it from the other store for free.
b. Linking apps gets you additional benefits, including the ability to share in the data roaming and backup APIs across form factor, as well as a single push notification channel across form factor. In this manner, your users truly get a unified experience across these two versions of your app. More detail on data storage, roaming, and backup is available in Sean McKenna’s session at //build/: Dealing with Data: Storage, Roaming, and Backup on Windows and Windows Phone. More detail on the unified notification platform is available in Thomas Fennel’s session, Notification Platform Development on Windows.
As time goes by, we’ll add support for universal Windows apps on Xbox, and we’ll make it easier to port existing Windows Phone and Win32 desktop apps to universal Windows apps as it’s important to grow this ecosystem.
At //build/, Andrew Clinick described the changes in Windows Phone 8.1’s application model to support universal Windows apps in his breakout session, The New Windows Phone Application Model. You can also get a lot of detail on application linking from Abhijat Kanade’s session, Windows Phone and Windows: Dev Center and App Submission Deep Dive (specifically, starting at 08:05).
2. What did you add in Visual Studio?
With the release of Visual Studio 2013 Update 2 RC, we’ve added support for “Universal App” project templates. These are templates designed to make it easy to deliver outstanding apps across Windows Phone and Windows. They’re available for C#, C++ and JavaScript app development, as shown below:
Visual Studio’s Universal App templates provide you with a starting point from which you can easily share common code in a single node and customize tailored UI in individual nodes specific to the device type:
For a lot more detail on using Visual Studio to build universal Windows apps, see these two //build/ breakout sessions: Using Visual Studio to Build XAML Converged Apps presented by Navit Saxena, and Building a Converged Phone and PC App Using HTML and JavaScriptpresented by Josh Williams and Ryan Salva.
3. Are there any new investments in .NET or WPF?
Most of our focus right now is on universal Windows apps and making them great across all Windows devices. Nevertheless, we are continuing to invest in our more mature technologies and we’ll talk more about this in future posts.
4. What are the top features you added in Windows Phone 8.1 and what do I do with them?
We added a ton of features to Windows Phone 8.1 and that means a large set of new APIs. Many of these were universal Windows app features, such as far greater WinRT support and the addition of HTML-based apps. We also added APIs for things like geo-fencing, more comprehensive Bluetooth support, better multi-tasking, triggers to wake up tasks based on a wide variety of events, more tile options, better push notifications, and so forth. David Treadwell’s portion of the keynoteon the first day contained a slide with just a subset of the new additions listed, and that slide was dense.
As far as what you can do now, there are really two things:
a. Move your app to one of the new universal Windows app frameworks and get the benefit of working on Windows and Windows Phone
b. If you’re not up for that yet, take advantage of some of the new features we introduced by upgrading your existing app and linking it in the Windows and Windows Phone Stores
5. How do I upgrade an existing Windows Phone 8.0 app?
If you’re currently targeting Windows Phone 8, bringing your apps to the new universal frameworks may require more significant porting work than you want to invest initially. To enable you to take advantage of Windows Phone 8.1 functionality with your existing Windows Phone apps, we created an upgrade path which we are calling Silverlight for Windows Phone 8.1.
You’ll find a lot of detail in Sam Jarawan’s session from //build/, What’s New with Windows Phone Silverlight Apps.
I hope this helps others out there with similar questions.
If you haven’t already, please go check out the developer tools, (you can download either the VS 2013 update 2 RC alone, if you have VS 2013 already, or a fully updated version of VS 2013 Express for Windows Update 2 RC, if you don’t).
And then check out our //publish/ global event and contest. We’re conducting events simultaneously at locations around the world, where you can bring your code over the finish line and publish to the Windows Store and Windows Phone Store with the assistance of regional experts.
I’m excited to have all of this work in your hands. For us it is all about making, you, our developers, more and more successful.