Extension SDKs
UI and universal input
Here are some considerations to help you decide which device family to target:
Maximizing your app's reach
To reach the maximum range of devices with your app, and to have it run on as many kinds of devices as possible,
your app will target the universal device family. By doing so, the app automatically targets every device family
that's based on universal (in the diagram, all the children of universal). That means that the app runs on every OS
based on those device families, and on all the devices that run those operating systems. The only APIs that are
guaranteed to be available on all those devices is the set defined by the particular version of the universal device
family that you target. To find out how an app can call APIs outside of its target device family version, see Writing
Code later in this topic.
Limiting your app to one kind of device
You may not want your app to run on a wide range of devices; perhaps it's specialized for a desktop PC or for an
Xbox console. In that case you can choose to target your app at one of the child device families. For example, if you
target the desktop device family, the APIs guaranteed to be available to your app include the APIs inherited from
the universal device family plus the APIs that are particular to the desktop device family.
Limiting your app to a subset of all possible devices
Instead of targeting the universal device family, or targeting one of the child device families, you can instead target
two (or more) child device families. Targeting desktop and mobile might make sense for your app. Or desktop and
HoloLens. Or desktop, Xbox and Surface Hub, and so on.
Excluding support for a particular version of a device family
In rare cases you may want your app to run everywhere except on devices with a particular version of a particular
device family. For example, let's say your app targets version 10.0.x.0 of the universal device family. When the
operating system version changes in the future, say to 10.0.x.2, at that point you can specify that your app runs
everywhere except version 10.0.x.1 of Xbox by targeting your app to 10.0.x.0 of universal and 10.0.x.2 of Xbox. Your
app will then be unavailable to the set of device family versions within Xbox 10.0.x.1 (inclusive) and earlier.
By default, Microsoft Visual Studio specifies Windows.Universal as the target device family in the app package
manifest file. To specify the device family or device families that your app is offered to from within the Store,
manually configure the TargetDeviceFamily element in your Package.appxmanifest file.
Once you have decided on the device family that your app will target, add a reference to the Extension SDK(s) that
implements the APIs for that device family. If you are targeting the Universal device family, you don't need to
reference an extension SDK. But if you are targeting a device family besides Universal, in Visual Studio you will add
a reference to the extension SDK that matches the device family you have chosen. For example, if you are targeting
the mobile device family, you would add a reference to the Windows Mobile Extensions for the UWP in Visual
Studio's Reference Manager.
Selecting a device family does not prohibit you from adding extension SDKs for other types of devices. You will just
need to ensure that you test for the presence of APIs not included in the device family you have chosen as
described below in Writing Code.
A UWP app can run on many different kinds of devices that have different forms of input, screen resolutions, DPI
density, and other unique characteristics. Windows 10 provides new universal controls, layout panels, and tooling
to help you adapt your UI to the devices your app may run on. For example, you can tailor the UI to take advantage
of the difference in screen resolution when your app is running on a desktop computer versus on a mobile device.